Development

uv is a required package to develop.

Install and git and uv

Clone:

$ git clone https://github.com/tony/django-slugify-processor.git
$ cd django-slugify-processor

Install packages:

$ uv sync --all-extras --dev

Tests

uv run py.test

Helpers: just test

Automatically run tests on file save

  1. just start (via pytest-watcher)

  2. just watch-test (requires installing entr(1))

Documentation

Default preview server: http://localhost:8034

sphinx-autobuild will automatically build the docs, watch for file changes and launch a server.

From home directory: just start-docs From inside docs/: just start

Manual documentation (the hard way)

cd docs/ and just html to build. just serve to start http server.

Helpers: just build-docs, just serve-docs

Rebuild docs on file change: just watch-docs (requires entr(1))

Rebuild docs and run server via one terminal: just dev-docs

Formatting / Linting

ruff

The project uses ruff to handle formatting, sorting imports and linting.

uv:

$ uv run ruff

If you setup manually:

$ ruff check .
$ just ruff
$ just watch-ruff

requires entr(1).

uv:

$ uv run ruff check . --fix

If you setup manually:

$ ruff check . --fix

ruff format

ruff format is used for formatting.

uv:

$ uv run ruff format .

If you setup manually:

$ ruff format .
$ just ruff-format

mypy

mypy is used for static type checking.

uv:

$ uv run mypy .

If you setup manually:

$ mypy .
$ just mypy
$ just watch-mypy

requires entr(1).

Releasing

uv handles virtualenv creation, package requirements, versioning, building, and publishing. Therefore there is no setup.py or requirements files.

Update __version__ in __about__.py and pyproject.toml::

git commit -m 'build(django-slugify-processor): Tag v0.1.1'
git tag v0.1.1
git push
git push --tags