Set up development environment on Mac and Linux¶
Development environment¶
Set up development environment on Mac and Linux
This project uses uv for project development. This is not a runtime requirements but it is the primary development configuration so you will need to have uv installed to get the dependency locks.
user@DEVMACHINE123 % uv sync --group dev
user@DEVMACHINE123 % source .venv/bin/activate
(venv) user@DEVMACHINE123 % pre-commit install
Running tests¶
To run test, you need to have pytest installed. If you are using the development environment, it should already be installed. Tests are run by executing the pytest command.
(venv) user@DEVMACHINE123 galatea % pytest
========================= test session starts ==========================
platform darwin -- Python 3.11.10, pytest-8.4.1, pluggy-1.6.0
rootdir: /Users/user/PycharmProjects/UIUCLibrary/galatea
configfile: pyproject.toml
plugins: pyfakefs-5.9.2
collected 150 items
tests/test_clean_tsv.py ............. [ 8%]
tests/test_cli.py ........... [ 16%]
tests/test_config.py ......... [ 22%]
tests/test_merge_data.py ....................................... [ 48%]
.......... [ 54%]
tests/test_modifiers.py ........................ [ 70%]
tests/test_resolve_authorized_terms.py ................. [ 82%]
tests/test_tsv.py ............ [ 90%]
tests/test_validate_authorized_terms.py ............... [100%]
========================= 150 passed in 0.32s =========================
Build Documentation¶
The documentation for galatea contains both user and developer documentation. It is written in restructuredText format and built with the Sphinx tool.
Make sure that either the virtual environment is configure with the “dev” or “docs” dependency group
Either run uv sync with the full development dependencies group:
user@DEVMACHINE123 % uv sync --group dev Using CPython 3.11.10 Creating virtual environment at: .venv Resolved 82 packages in 12ms Prepared 53 packages in 3.97s Installed 53 packages in 260ms + alabaster==1.0.0 + argcomplete==3.6.2 + babel==2.17.0 + cachetools==6.2.0 + certifi==2025.8.3 + cfgv==3.4.0 + chardet==5.2.0 + charset-normalizer==3.4.3 ...
or run uv sync with only the dependencies needed to build the documentation:
user@DEVMACHINE123 % uv sync --no-dev --group docs Using CPython 3.11.10 Creating virtual environment at: .venv Resolved 82 packages in 13ms Prepared 27 packages in 4.35s Installed 27 packages in 348ms + alabaster==1.0.0 + argcomplete==3.6.2 + babel==2.17.0 + certifi==2025.8.3 + charset-normalizer==3.4.3 + docutils==0.21.2 + idna==3.10 + imagesize==1.4.1 + jinja2==3.1.6 ...
With your virtual environment active, run sphinx-build with the first argument being “docs” and the second argument being the location where to build to.
(.venv) user@DEVMACHINE123 % sphinx-build docs build/docs Running Sphinx v8.2.3 loading translations [en]... done loading pickled environment... done building [mo]: targets for 0 po files that are out of date writing output... building [html]: targets for 3 source files that are out of date updating environment: [new config] 3 added, 0 changed, 0 removed reading sources... [100%] development looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /Users/user/PythonProjects/UIUCLibrary/galatea/build/docs/_static/basic.css Writing evaluated template result to /Users/user/PythonProjects/UIUCLibrary/galatea/build/docs/_static/language_data.js Writing evaluated template result to /Users/user/PythonProjects/UIUCLibrary/galatea/build/docs/_static/documentation_options.js Writing evaluated template result to /Users/user/PythonProjects/UIUCLibrary/galatea/build/docs/_static/alabaster.css copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [100%] index generating indices... genindex done writing additional pages... search done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in build/docs.