Skip to content

Contributing to the project

Changelog

You can find the complete changelog here.

Reporting

If you have suggestions, ideas, feature requests, or if you have identified a malfunction or error, then please post an issue.

Contributions

The S2GOS client project welcomes contributions of any form as long as you respect our code of conduct and follow our contribution guide.

If you'd like to submit code or documentation changes, we ask you to provide a pull request (PR) here. For code and configuration changes, your PR must be linked to a corresponding issue.

Development

Setup

Before you start, make sure you have pixi installed.

Checkout sources

git clone https://github.com/s2gos-dev/s2gos-controller.git
cd ./s2gos-controller

Create a new Python environment and activate it:

pixi install 
pixi shell

Running the S2GOS controller tools

Run local test server

s2gos-server run -- s2gos_server.services.local.testing:service

The dev mode is useful if you are changing server code:

s2gos-server dev s2gos_server.services.local.testing:service

Run client API

from s2gos_client import Client

client = Client()
client.get_processes()
client.get_jobs()

Run client GUI (in Jupyter notebooks)

from s2gos_client.gui import Client

client = Client()
client.show()
client.show_jobs()

Run client CLI

$ s2gos-client --help

Formatting & Linting

pixi run isort .
pixi run ruff format 
pixi run ruff check

Testing & Coverage

pixi run test
pixi run coverage

Version syncing

Before a release increase version number in root pyproject.toml then synchronize versions in workspaces tools/pyproject.toml using

pixi run sync-versions

Code generation

Some code is generated (see respective file headers) from an OpenAPI specification in tools/openapi.yaml. If this file is changed, code need to be regenerated:

pixi run generate

This will generate S2GOS'

  • pydantic models in s2gos-common/src/s2gos_common/models.py (uses datamodel-code-generator)
  • client implementation in s2gos-client/src/s2gos_client/client.py and CLI documentation docs/cli.md
  • server routes in s2gos-server/src/s2gos_server/routes.py and the service interface in s2gos-server/src/s2gos_server/service.py

Documentation

The S2GOS client's documentation is built using the mkdocs tool.

With repository root as current working directory:

mkdocs build
mkdocs serve
mkdocs gh-deploy

After changing the CLI code, always update its documentation docs/cli.md by running

pixi run gen-client

License

The S2GOS client is open source made available under the terms and conditions of the Apache 2.0 license.