Spaces:
Running
Running
| # Build Instructions | |
| <img src="../assets/nouns/api.png" alt="API by Adnen Kadri from the Noun Project" /> | |
| !!! note | |
| In most cases you won't need to build this package locally. | |
| Unless you're doing development work on the **textgraphs** library itself, | |
| simply install based on the instructions in | |
| ["Getting Started"](https://derwen.ai/docs/txg/start/). | |
| ## Setup | |
| To set up the build environment locally: | |
| ``` | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| python3 -m pip install -U pip wheel setuptools | |
| python3 -m pip install -e . | |
| python3 -m pip install -r requirements-dev.txt | |
| ``` | |
| We use *pre-commit hooks* based on [`pre-commit`](https://pre-commit.com/) | |
| and to configure that locally: | |
| ``` | |
| pre-commit install --hook-type pre-commit | |
| ``` | |
| ## Test Coverage | |
| This project uses | |
| [`pytest`](https://docs.pytest.org/) | |
| for *unit test* coverage. | |
| Source for unit tests is in the | |
| [`tests`](https://github.com/DerwenAI/textgraphs/tree/main/tests) | |
| subdirectory. | |
| To run the unit tests: | |
| ``` | |
| python3 -m pytest | |
| ``` | |
| Note that these tests run as part of the CI workflow | |
| whenever code is updated on the GitHub repo. | |
| ## Online Documentation | |
| To generate documentation pages, you will also need to download | |
| [`ChromeDriver`](https://googlechromelabs.github.io/chrome-for-testing/) | |
| for your version of the `Chrome` browser, saved as `chromedriver` in | |
| this directory. | |
| Source for the documentation is in the | |
| [`docs`](https://github.com/DerwenAI/textgraphs/tree/main/docs) | |
| subdirectory. | |
| To build the documentation: | |
| ``` | |
| ./bin/nb_md.sh | |
| ./pkg_doc.py docs/ref.md | |
| mkdocs build | |
| ``` | |
| Then run `./bin/preview.py` and load <http://127.0.0.1:8000/docs/> | |
| in your browser to preview the generated microsite locally. | |
| To package the generated microsite for deployment on a | |
| web server: | |
| ``` | |
| tar cvzf txg.tgz site/ | |
| ``` | |
| ## Remote Repo Updates | |
| To update source code repo on GitHub: | |
| ``` | |
| git remote set-url origin https://github.com/DerwenAI/textgraphs.git | |
| git push | |
| ``` | |
| Create new releases on GitHub then run `git pull` locally prior to | |
| updating Hugging Face or making a new package release. | |
| To update source code repo+demo on Hugging Face: | |
| ``` | |
| git remote set-url origin https://huggingface.co/spaces/DerwenAI/textgraphs | |
| git push | |
| ``` | |
| ## Package Release | |
| To update the [release on PyPi](https://pypi.org/project/textgraphs/): | |
| ``` | |
| ./bin/push_pypi.sh | |
| ``` | |
| ## Packaging | |
| Both the spaCy and PyPi teams induce packaging errors since they | |
| have "opinionated" views which conflict against each other and also | |
| don't quite follow the [Python packaging standards](https://peps.python.org/pep-0621/). | |
| Moreover, the various dependencies here use a wide range of approaches | |
| for model downloads: quite appropriately, the spaCy team does not want | |
| to package their language models on PyPi. | |
| However, they don't use more contemporary means of model download, | |
| such as HF transformers, either -- and that triggers logging problems. | |
| Overall, logging approaches used by the dependencies here for errors/warnings | |
| are mostly ad-hoc. | |
| These three issues (packaging, model downloads, logging) pose a small nightmare | |
| for managing Python library packaging downstream. | |
| To that point, this project implements several workarounds so that | |
| applications can download from PyPi. | |
| Meanwhile keep watch on developments of the following dependencies, | |
| if they introduce breaking changes or move toward more standard | |
| packaging practices: | |
| * `spaCy` -- model downloads, logging | |
| * `OpenNRE` -- PyPi packaging, logging | |
| * HF `transformers` and `tokenizers` -- logging | |
| * WikiMedia APIs -- SSL certificate expiry | |