Developer Guide =============== | Insall `pip` .. code-block:: shell python3 -m pip install | Clone the repository .. code-block:: shell git clone git@github.com:Issamricin/dmc-view.git cd dmc-view | Make the project in edit mode .. code-block:: shell pip install -e . Publish Notes ------------- Steps to test the publish on pypi see workflow files for publish on pypi test server (release_test.yaml) | If you do update for the README.rst , please copy and paste into `RST-Check `__ .. code-block:: shell git clone git@github.com:Issamricin/dmc-view.git python -m venv .venv You need to install tox on to run the workflow tox task or env run task | **tox check list before you push to remote repo** .. code-block:: shell python -m pip install tox tox -v -s false -e pin-deps tox -e type -v -s false tox -v -s false | tee test_output.log tox -e coverage --sitepackages -v -s false tox -e wheel-test -s false tox -e check -v -s false tox -e isort -vv -s false tox -e black -vv -s false tox -e ruff -vv -s false tox -e prospector -vv -s false | Below is to build and check the twine for pypi publish in case an error in the markup you need to check rst online `Making Friendly PyPi Package `__ .. code-block:: shell python -m pip install build python -m build -s python -m build --wheel python -m pip install --upgrade twine twine check dist/* Now you need to have your test project setup on testpypi `Publishing `__ so to trigger the workflow you need to create a test tag and push it so it triggers the release_test.yaml Before you do that update your package version in the toml, tox and __init__.py file | suppose my package release is 0.3.3 | Test tag is **test-0.3.3** | Prod tag is **release-0.3.3** | To trigger the release into test pypi | $ git tag test-0.3.3 | $ git push origin --tags `Git Basic Tag Commands `__ Developer Notes --------------- Testing, Documentation Building, Scripts, CI/CD, Static Code Analysis for this project. 1. **Test Suite**, using `pytest`_, located in `tests` dir 2. **Parallel Execution** of Unit Tests, on multiple cpu's 3. **Documentation Pages**, hosted on `readthedocs` server, located in `docs` dir 4. **CI(Continuous Integration)/CD(Continuous Delivery) Pipeline**, running on `Github Actions`, defined in `.github/` a. **Test Job Matrix**, spanning different `platform`'s and `python version`'s 1. Platforms: `ubuntu-latest` 2. Python Interpreters: `3.13` b. **Continuous Deployment** `Production` 1. **Python Distristribution** to `pypi.org`_, on `tags` **v***, pushed to `main` branch 2. **Docker Image** to `Dockerhub`_, on every push, with automatic `Image Tagging` `Staging` 3. **Python Distristribution** to `test.pypi.org`_, on "pre-release" `tags` **v*-rc**, pushed to `release` branch c. **Configurable Policies** for `Docker`, and `Static Code Analysis` Workflows 5. **Automation**, using `tox`_, driven by single `tox.ini` file a. **Code Coverage** measuring b. **Build Command**, using the `build`_ python package c. **Pypi Deploy Command**, supporting upload to both `pypi.org`_ and `test.pypi.org`_ servers d. **Type Check Command**, using `mypy`_ e. **Lint** *Check* and `Apply` commands, using the fast `Ruff`_ linter, along with `isort`_ and `black`_ Prerequisites ------------- You need to have `Python` and `PySide6` installed for Development API Documentation ----------------- We follow Google style documentation for packages, modules, classes, methods .. LINKS | `Tox `__ | `Pytest `__ | `Build `__ | `Docker `__ | `pypi.org `__ | `test.pypi.org `__ | `mypy `__ | `Ruff `__ | `Isort `__ | `Black `__ | `Google API docs `__