diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa27210..67f9839 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,7 +67,7 @@ jobs: - name: Install project dependencies run: | uv lock - uv sync --all-extras + uv sync - name: Run mypy run: uv run mypy src/ diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index b0a46f6..fd98e0e 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -84,7 +84,7 @@ jobs: - name: Install project dependencies run: | uv lock - uv sync --all-extras + uv sync - name: Run ruff linter run: uv run ruff check src/ tests/ @@ -115,7 +115,7 @@ jobs: - name: Install project dependencies run: | uv lock - uv sync --all-extras + uv sync - name: Run mypy run: uv run mypy src/ @@ -143,7 +143,7 @@ jobs: - name: Install project dependencies run: | uv lock - uv sync --all-extras + uv sync - name: Run tests with coverage run: | diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index cd5a6ad..9eb89bb 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -42,7 +42,7 @@ jobs: - name: Install project dependencies run: | - uv sync --all-extras + uv sync - name: Export dependencies for Snyk run: | @@ -112,7 +112,7 @@ jobs: - name: Install project dependencies run: | uv lock - uv sync --all-extras + uv sync - name: Run Bandit security linter run: uv run bandit -r src/ -f json -o bandit-report.json diff --git a/README.md b/README.md index 6d379e4..f2df665 100644 --- a/README.md +++ b/README.md @@ -134,13 +134,13 @@ This ensures a consistent, repeatable setup across teams and projects. Install the project in editable mode with development dependencies: ```bash # with pip -pip install -e ".[dev]" +pip install -e . --group dev # with uv -uv sync --extra dev +uv sync # with poetry -poetry install --extras dev +poetry install ``` > **Note:** *You may use any package manager you prefer (pip, uv, poetry).* diff --git a/docs/CHECKLIST.md b/docs/CHECKLIST.md index 3f3a0f3..0878b93 100644 --- a/docs/CHECKLIST.md +++ b/docs/CHECKLIST.md @@ -56,9 +56,9 @@ After cloning the new repository to your local development machine and creating install your project using the package manager of your choice: - [ ] **USER:** Install dependencies using **pip**, **uv**, or **poetry**: - - `pip install -e ".[dev]"`. - - `uv sync --extra dev`. - - `poetry install --extras dev`. + - `pip install -e . --group dev`. + - `uv sync`. + - `poetry install`. - [ ] **USER:** Run `prek install`. - [ ] **USER:** Run the application `python -m .main`. diff --git a/pyproject.toml b/pyproject.toml index b5172e4..66b7668 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,19 +14,17 @@ classifiers = [ ] dependencies = [ - "pydantic-settings>=2.12.0", # Managing environment variables - "structlog>=25.5.0" # Managing logging + "pydantic-settings>=2.12.0", + "structlog>=25.5.0", ] -[project.optional-dependencies] +[dependency-groups] +test = ["pytest>=9.0.0", "pytest-cov>=7.0.0"] +quality = ["prek>=0.3.1", "bandit[toml]>=1.7.6", "ruff>=0.14.7", "mypy>=1.19.0"] dev = [ - "pytest>=9.0.0", # Testing framework - "pytest-cov>=7.0.0", # Coverage plugin for pytest - "ruff>=0.14.7", # Code formatter, Linter, Import sorter - "prek>=0.3.1", # Pre-commit hooks - "mypy>=1.19.0", # Type checker - "python-dotenv>=1.2.1", # Managing environment variables - "bandit[toml]>=1.7.6", # Bandit security linter with toml support + {include-group = "test"}, + {include-group = "quality"}, + "python-dotenv>=1.2.1", ] [project.urls] @@ -44,7 +42,7 @@ build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] -where = ["src"] # Essential for the src-layout to find 'package_name' +where = ["src"] [tool.pytest.ini_options] pythonpath = ["src"]