# Development Sandbox This walkthrough uses the `uv` package manager for performance reasons. You can also use different methods to set up your workbench environment. ## Install Acquire source code and set up virtualenv. ```shell git clone https://codeberg.org/sarcam/nauscopia.git cd nauscopia uv venv --python 3.12 source .venv/bin/activate ``` Install project in editable mode. ```shell uv pip install --editable='.[all]' ``` ## Tests Invoke linters and software tests. The same command will also be invoked on CI. ```shell poe check ``` ## Code Formatting The project exclusively uses `ruff` for linting and code formatting, for performance reasons. ```shell poe format ``` ## Packaging ### PyPI How to build and publish the PyPI package. ```shell # Update the changelog file. nano CHANGES.md git commit --message "Release v0.0.0" # Tag the repository. git tag v0.0.1 git push && git push --tags # Build and upload package. poe release ``` ### OCI How to build a local OCI image. ```shell export BUILDKIT_PROGRESS=plain docker build -t nauscopia:dev . ``` Validate OCI image. ```shell docker run --rm -it nauscopia:dev nauscopia --version ``` ## User Testing Before publishing GA packages, you can easily consume and distribute pre-release builds, both for Python packages, and OCI images. Those commands outline how to install / use code from the fictional `new-feature` branch. ```shell pip install git+https://codeberg.org/sarcam/nauscopia.git@new-feature ``` ```shell docker run --rm -it codeberg.org/sarcam/nauscopia:new-feature nauscopia --version ```