Contributing to scargo

This guide assumes working on Linux with apt package manager.

All shell commands should be executed in the scargo repository root, unless stated otherwise.

Install dependencies

While scargo can run in a docker container with all its dependencies, for testing and debugging it’s often beneficial to have it working without docker. In order to use scargo without docker in a new project, you need to pass the --no-docker option to scargo new.

Look through the ci/Dockerfile and install all packages from apt install and apt-get install lines.

Install scargo in editable mode with dev dependencies enabled:

pip install -e .[dev]

It’s also strongly recommended to install pre-commit:

pip install pre-commit
pre-commit install

Dev setup for docker

In some cases it’s not possible to avoid working with a docker setup. By default, scargo is installed in docker from the PyPI repository, which makes it impossible to include local changes. You can override it by setting the SCARGO_DOCKER_INSTALL_LOCAL environment variable to the location of the wheel package (which can be generated with flit build). e.g.:

export SCARGO_DOCKER_INSTALL_LOCAL=dist/scargo-1.1.0-py3-none-any.whl

With this variable in the environment, any new or updated project will use the local wheel package.

Running tests

To run tests you can use the run.py script:

./run.py -u  # run unit tests
./run.py -t  # run integration tests

You can also run them directly with pytest:

pytest tests/ut  # run unit tests
pytest tests/it  # run integration tests