From 507d322cd6d5438af45c5399953b3245afebf4ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Susana=20V=C3=A1zquez?= <3016283+svazquezco@users.noreply.github.com> Date: Wed, 7 Jan 2026 17:30:32 +0100 Subject: [PATCH] feat: add CodeRabbit config and copilot-instructions --- .coderabbit.yaml | 3 ++ .github/workflows/copilot-instructions.md | 43 +++++++++++++++++++++++ .github/workflows/danger.yml | 22 ------------ 3 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 .coderabbit.yaml create mode 100644 .github/workflows/copilot-instructions.md delete mode 100644 .github/workflows/danger.yml diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..76095a5 --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,3 @@ +# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json +remote_config: + url: "https://raw.githubusercontent.com/softwareone-platform/swo-extension-playground/refs/heads/main/.coderabbit.yaml" diff --git a/.github/workflows/copilot-instructions.md b/.github/workflows/copilot-instructions.md new file mode 100644 index 0000000..665cbcc --- /dev/null +++ b/.github/workflows/copilot-instructions.md @@ -0,0 +1,43 @@ +--- +description: 'Python coding conventions and guidelines' +applyTo: '**/*.py' +--- + +# Python Coding Conventions + +## General Instructions +- All configuration **must be provided via environment variables**. +- Do not hardcode configuration values. +- Write maintainable, readable, and predictable code. +- In `pyproject.toml`: + - Use `*` for **minor versions only** + ✅ `django==4.2.*` + ❌ `django==^4.2.2` + +- Use consistent naming conventions and follow language-specific best practices. + +## Python Instructions +- Use type annotations (PEP 484) - except in the `tests/` folder. +- All public functions, methods, and classes **must include [Google-style docstrings](https://google.github.io/styleguide/pyguide.html)**. +- **Do not add inline comments**; rely on clear code and docstrings instead. +- Function and variable names must be explicit and intention-revealing. +- `pyproject.toml` is the source of truth for code quality rules. Generated code must not violate any configured rules. +- **ruff** is the primary linter for general Python style and best practices. +- **flake8** is used exclusively to run: + - `wemake-python-styleguide` - Enforces strict Python coding standards ([docs](https://wemake-python-styleguide.readthedocs.io/en/latest/)) + - `flake8-aaa` - Validates the AAA pattern in tests +- Follow PEP 8 unless explicitly overridden by ruff. +- Prefer simple, explicit code over clever or compact implementations. + +## Testing +- Use pytest only. +- Tests must be written as **functions**, not classes. +- Test files and functions must use the `test_` prefix. +- Follow ***AAA(Arrange - Act - Assert)*** strictly. See the [flake8-aaa documentation](https://flake8-aaa.readthedocs.io/en/stable/index.html). +- Do **not** use `if` statements or branching logic inside tests. +- Prefer fixtures over mocks whenever possible. +- Avoid duplicating test logic; extract shared setup into fixtures. +- Use `mocker` only when mocking is unavoidable. +- Never use `unittest.mock` directly. +- Always use `spec` or `autospec` when mocking. +- Use `@pytest.mark.parametrize` tests when testing permutations of the same behavior. diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml deleted file mode 100644 index 021aa34..0000000 --- a/.github/workflows/danger.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Danger - -on: - pull_request: - types: [opened, synchronize, reopened, edited] - -permissions: - contents: read - pull-requests: write - -jobs: - danger: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - with: - ref: ${{ github.event.pull_request.head.sha }} - fetch-depth: 0 - - - uses: softwareone-platform/one-danger@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }}