.. meta:: :google-site-verification: 3F2Jbz15v4TUv5j0vDJAA-mSyHmYIJq0okBoro3-WMY ============ Contributing ============ Contributors and contributions are welcome. Please read these guidelines first. .. _contributing.git: Git :fab:`github` ================= The project homepage is on `GitHub `_. Contributors can open pull requests from a fork targeting the parent `main branch `_. But it may be a good first step to create an `issue `_ or open a `discussion topic `_. .. _contributing.repo: Repo :fas:`folder` ================== Setting up the project should be straightforward once you have cloned the repository. A minimum of Python 3.11 is required (see ``requires-python`` in ``pyproject.toml``). To run examples or tests you will need an API username and key from the `FCA developer portal `_. .. _contributing.dependencies-and-pdm: Dependencies :fas:`cubes` ========================= Runtime dependencies are defined in the ``[project]`` section of ``pyproject.toml``. At the time of writing these are: * `httpx `_ for asynchronous HTTP communication. * `pydantic `_ for data validation and typed models. Development and tooling dependencies are specified under ``[tool.pdm.dev-dependencies]`` in the `project TOML `_. .. _contributing.tests: Tests :fas:`microscope` ======================= Tests are located in the ``tests`` folder and can be run directly with ``pytest`` or via the `Makefile `_, which provides the following targets: * ``make unittests`` - run the unit test suite with coverage reporting. * ``make lint`` - run Ruff over ``src`` and ``tests``. * ``make autoformat`` - apply Ruff formatting and autofix lint issues where possible. .. _contributing.documentation: Documentation :fas:`book` ========================= The documentation is written in `reStructuredText `_ and built with `Sphinx `_. HTML documentation is built locally with:: pdm run doc which invokes the ``docs`` target in the `Makefile `_ and outputs HTML into ``dist/docs/html``. The Sphinx theme in use is `pydata-sphinx-theme `_. .. _contributing.ci: CI :fas:`circle-play` ===================== The CI workflows are defined `here `_ and there is also a separate `CodeQL workflow `_. .. _contributing.versioning-and-releases: