Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Bootstrap, build, and test the repository:

**Interactive Development Shell:**

- `hatch shell [ENV_NAME]` - Enter an interactive shell environment with all dependencies installed. ENV_NAME is optional and defaults to the main environment. Use `hatch shell functional` for the functional test environment, `hatch shell lint` for the linting environment, etc.
- `hatch shell [ENV_NAME]` - Enter an interactive shell environment with all dependencies installed. ENV_NAME is optional and defaults to the main environment. Use `hatch shell functional` for the functional test environment.

Build documentation:

Expand Down Expand Up @@ -101,14 +101,14 @@ Modern development process using Hatch:
2. **Make your changes** to the codebase
3. **Run unit tests**: `hatch test` (≈30s) **All must pass - failures are never expected or allowed.**
4. **Run functional tests**: `hatch run functional:all -v` (≈10–15s)
5. **Run linting**: `hatch run lint:check` (5 seconds)
5. **Run linting**: `hatch fmt --check` (2 seconds)
6. **Auto-format code**: `hatch fmt` (2 seconds)
7. **Test documentation**: `hatch run docs:build` (2 seconds)
8. **Update documentation** when making changes to Python source code (required)
9. **Add changelog entry** for all significant changes (bug fixes, new features, breaking changes) to `CHANGELOG.md` under the "Unreleased" section.
10. **Lint the changelog** by running `python scripts/validate_changelog.py` (or inside any hatch shell) to ensure format correctness

Always run `hatch run lint:check` before committing. The CI (.github/workflows/build.yml) includes comprehensive checks across all supported Python/Django combinations.
Always run `hatch fmt --check` before committing. The CI (.github/workflows/ci.yml) includes comprehensive checks across all supported Python/Django combinations.

**IMPORTANT**: Documentation must be updated whenever changes are made to Python source code. This is enforced as part of the development workflow.

Expand Down Expand Up @@ -226,7 +226,7 @@ Development dependencies (managed by hatch):

## CI/CD Pipeline

Modern GitHub Actions workflow (.github/workflows/build.yml):
Modern GitHub Actions workflow (.github/workflows/ci.yml):

- **Lint Python**: Code quality checks (temporarily set to pass)
- **Test Python**: Matrix testing across Python 3.9-3.13 with coverage
Expand Down
128 changes: 64 additions & 64 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,66 +1,66 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: "v5.0.0"
hooks:
- id: check-merge-conflict
- id: end-of-file-fixer
exclude: ^docs/[^/]*\.svg$
- id: requirements-txt-fixer
- id: trailing-whitespace
types: [python]
- id: check-case-conflict
- id: check-json
- id: check-xml
- id: check-toml
- id: check-xml
- id: check-yaml
- id: debug-statements
- id: check-added-large-files
- id: check-symlinks
- id: debug-statements
- id: detect-aws-credentials
args: ["--allow-missing-credentials"]
- id: detect-private-key
exclude: ^examples|(?:tests/ssl)/
- repo: https://github.com/hadialqattan/pycln
rev: v2.5.0
hooks:
- id: pycln
args: ["--all"]
- repo: https://github.com/asottile/yesqa
rev: v1.5.0
hooks:
- id: yesqa
- repo: https://github.com/pycqa/isort
rev: "6.0.1"
hooks:
- id: isort
args: ["--profile", "black"]
- repo: https://github.com/psf/black
rev: "25.1.0"
hooks:
- id: black
- repo: https://github.com/asottile/pyupgrade
rev: "v3.20.0"
hooks:
- id: pyupgrade
args: ["--py39-plus", "--keep-mock"]
- repo: https://github.com/hhatto/autopep8
rev: "v2.3.2"
hooks:
- id: autopep8
- repo: https://github.com/PyCQA/flake8
rev: "7.2.0"
hooks:
- id: flake8
exclude: "^docs/"
- repo: https://github.com/Lucas-C/pre-commit-hooks-markup
rev: "v1.0.1"
hooks:
- id: rst-linter
files: ^[^/]+[.]rst$
- repo: https://github.com/adrienverge/yamllint
rev: "v1.37.1"
hooks:
- id: yamllint
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: "v5.0.0"
hooks:
- id: check-merge-conflict
- id: end-of-file-fixer
exclude: ^docs/[^/]*\.svg$
- id: requirements-txt-fixer
- id: trailing-whitespace
types: [python]
- id: check-case-conflict
- id: check-json
- id: check-xml
- id: check-toml
- id: check-xml
- id: check-yaml
- id: debug-statements
- id: check-added-large-files
- id: check-symlinks
- id: debug-statements
- id: detect-aws-credentials
args: ["--allow-missing-credentials"]
- id: detect-private-key
exclude: ^examples|(?:tests/ssl)/
- repo: https://github.com/hadialqattan/pycln
rev: v2.5.0
hooks:
- id: pycln
args: ["--all"]
- repo: https://github.com/asottile/yesqa
rev: v1.5.0
hooks:
- id: yesqa
- repo: https://github.com/pycqa/isort
rev: "6.0.1"
hooks:
- id: isort
args: ["--profile", "black"]
- repo: https://github.com/psf/black
rev: "25.1.0"
hooks:
- id: black
- repo: https://github.com/asottile/pyupgrade
rev: "v3.20.0"
hooks:
- id: pyupgrade
args: ["--py39-plus", "--keep-mock"]
- repo: https://github.com/hhatto/autopep8
rev: "v2.3.2"
hooks:
- id: autopep8
- repo: https://github.com/PyCQA/flake8
rev: "7.2.0"
hooks:
- id: flake8
exclude: "^docs/"
- repo: https://github.com/Lucas-C/pre-commit-hooks-markup
rev: "v1.0.1"
hooks:
- id: rst-linter
files: ^[^/]+[.]rst$
- repo: https://github.com/adrienverge/yamllint
rev: "v1.37.1"
hooks:
- id: yamllint
Loading