Skip to content

Latest commit

 

History

History
126 lines (99 loc) · 3.16 KB

CONTRIBUTING.md

File metadata and controls

126 lines (99 loc) · 3.16 KB

GenossGPT

Project requirements

Python 3.11

Install with pyenv

  • Install pyenv to manage your Python versions and virtual environments:

    curl -sSL https://pyenv.run | bash
    • If you are on MacOS and experiencing errors on python install with pyenv, follow this comment
    • Add these lines to your ~/.bashrc or ~/.zshrc to be able to activate pyenv virtualenv:
      eval "$(pyenv init -)"
      eval "$(pyenv virtualenv-init -)"
      eval "$(pyenv init --path)"
    • Restart your shell
  • Install the right version of Python with pyenv:

    pyenv install 3.11.3

Poetry

  • Install Poetry to manage your dependencies and tooling configs:
    curl -sSL https://install.python-poetry.org | python - --version 1.5.1
    If you have not previously installed any Python version, you may need to set your global Python version before installing Poetry:
    pyenv global 3.11.3

Docker Engine

Install Docker Engine to build and run the API's Docker image locally.

Installation

Create a virtual environment

Create your virtual environment and link it to your project folder:

pyenv virtualenv 3.11.3 genoss-gpt
pyenv local genoss-gpt

Now, every time you are in your project directory your virtualenv will be activated thanks to pyenv!

Install Python dependencies through poetry

poetry install --no-root

Install git hooks (running before commit and push commands)

poetry run pre-commit install

Testing

To run unit tests, run pytest with:

pytest tests --cov genoss

or

make test

Formatting and static analysis

Code formatting with black and isort

To check code formatting, run black with:

black . --check

or

make black_isort

You can also integrate it to your IDE to reformat your code each time you save a file. Isort which handles imports formatting can be run in the same way.

Static analysis with ruff

To run static analysis, run ruff with:

ruff check genoss tests

or

make ruff

To run static analysis and to apply auto-fixes, run ruff with:

make fix-ruff

Type checking with mypy

To type check your code, run mypy with:

mypy genoss --explicit-package-bases --namespace-packages

or

make mypy

API

The project includes an API built with FastAPI. Its code can be found at genoss.

The API is containerized using a Docker image, built from the Dockerfile and docker-compose.yml at the root.

To build and start the API, use the following Makefile command:

make start-api

For more details on the API routes, check the automatically generated swagger at the /docs url.