Developer Documentation
#######################
This document provides information for developers who want to contribute to the development of ``ucc``, as well as for maintainers.
Creating a release
==================
.. important::
This section is intended for maintainers of the :code:`ucc` repository.
To release a new version of ``ucc`` on GitHub, follow the steps below.
1. **Bump the Version:**
- Increment the version in ``pyproject.toml`` according to `semantic versioning `_.
1. **Draft a New Release on GitHub:**
- You can generate an initial set of release notes using GitHub's `draft a release `_. Update them as desired.
- In the Choose a Tag dropdown, manually type the new version in the box, which will create the new tag upon publishing.
- Do NOT publish the release yet! Wait until step 4 below.
2. **Update the CHANGELOG.md:**
- Copy your draft release notes to the `CHANGELOG.md` file.
3. **Commit and Merge in Changes:**
- Make sure you've committed the version bump to `pyproject.toml` and updates to `CHANGELOG.md`
- Open a PR to get the changes reviewed.
- **Merge the PR after approval.**
4. **Publish the New Release on GitHub:**
- Navigate back to your Release draft from step 1.
- Scroll down and check the box labeled "Create a discussion for this release".
- Click the Publish the Release.
.. tip::
Ensure that all changes pass the tests, and the documentation builds correctly before creating a release.
Publishing a new version of UCC to PyPI (maintainers only)
==========================================================
1. Follow the steps above for creating a new release.
2. The deployment to TestPyPI should trigger automatically (only maintainers will have access).
3. Run a test of the TestPyPI deployment on your local machine:
a. Create a new Python environment ≥ our latest required version, e.g. ``python3.13 -m venv ~/.venvs/test_ucc``
b. Activate the new environment with ``source ~/.venvs/test_ucc/bin/activate``.
c. Run ``pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ucc``
to install from the TestPyPI deployment
d. Run ``python -c "import ucc; print(ucc.__version__)"``.
This should run successfully and show the latest version of UCC.
4. If all went well in the TestPyPI step, you (as a maintainer) can go to the GH Actions and approve the deployment to real PyPI.
If for some reason this does not work, or fails to trigger on a release, you can also manually trigger the workflow in the Github Actions tab:
.. image:: ./img/pypi_workflow.png
:height: 300
:width: 600
:alt: screenshot of pypi publishing workflow on GitHub