Development
-----------
| Insall `pip`
.. code-block:: shell
python3 -m pip install
| Clone the repository
.. code-block:: shell
git clone git@github.com:alanmehio/rf-analysis-engine.git
cd rf-analysis-engine
| Make the project in edit mode
.. code-block:: shell
pip install -e .
Then, for any changes in the code you can execute it from command line
.. code-block:: shell
rfserver setting.json -vvv -ld /home/alan/tmp
-----------------
Development 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 `flask` 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 `__