-
Notifications
You must be signed in to change notification settings - Fork 7
Maintenance
Dependencies are managed with pip-compile, and CI is set up to update them regularly. See .github/workflows/dependencies.yaml. It will open PRs once in a while to keep dependencies updated. The workflow can also manually be triggered from the GitHub actions page at https://github.com/xsuite/xplt/actions/workflows/dependencies.yaml
Never push changes to the generated requirements/*.txt and .python-version files manually, they will be overwritten during the next CI run!
- Add package dependencies in
pyproject.toml(consider using optional-dependencies) - Add further dependencies for the example notebooks in
requirements/examples.in(package dependencies are added by default) - Add further dependencies for testing in
requirements/tests.in(package and example dependencies are added by default) - Add further dependencies for building the sphinx docs in
requirements/sphinx.in(package and example dependencies are added by default)
Push it to the dev branch, this will trigger CI to update the generated *.txt files for you.
- Add python version in
.github/workflows/dependencies.yamland push to a new branchdeps/add-python-3.XX - Run the workflow manually at https://github.com/xsuite/xplt/actions/workflows/dependencies.yaml against the
deps/add-python-3.XXbranch - This will generate requirements files for the new python version and open a PR against main (!)
- Change the target of that PR to the
deps/add-python-3.XXbranch and merge it - In the
deps/add-python-3.XXbranch, also add the python version to.github/workflows/test.yaml, push and wait for CI to pass - If all looks good, merge the
deps/add-python-3.XXbranch - Edit the GitHub project settings > Branches > Branch protection rules > main and add "pytest (3.XX)" to the required status checks
- Remove the python version from
.github/workflows/dependencies.yamland.github/workflows/test.yaml, and delete therequirements/*-requirements-pyX.XX.txtfiles - Edit the GitHub project settings > Branches > Branch protection rules > main and remove "pytest (3.XX)" from the required status checks
In case the PR opened by the automatic dependency update action fails some of the tests, a manual checkout and debugging is required.
If resolving the issue requires changes to the dependency definitions in requirements/*.in or pyproject.toml, those changes first have to be pushed to main. This will trigger the dependency update workflow to make sure all requirements files are synched properly and updated the PR.
In any case, you can then work on the deps/dependency-updates branch, debug the error or simply rerun the example jupyter notebooks. If it's just visual differences, committing the new reference outputs might be sufficient to resolve the issue.
git checkout deps/dependency-updates
git pull
source .venv/bin/activate
pip install -r requirements/tests-requirements-py3.13.txt # adjust python version
pip install -e .
pytest -v -W error::RuntimeWarning
# resolve issues, commit and push ...