# Build Instructions 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 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