diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index df34c0e..c9453c4 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -33,10 +33,9 @@ jobs: run: uv sync --locked shell: bash - - name: Pre-commit - uses: pre-commit/action@v3.0.1 - with: - extra_args: --all-files + - name: Check code + run: uv run --frozen -- poe check-code + shell: bash - name: Unit tests run: uv run --frozen -- pytest -m unit diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 38fade7..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,23 +0,0 @@ -repos: - - repo: local - hooks: - - id: ruff-linter - name: Linter - entry: uv run -- ruff check - language: system - types: [python] - fail_fast: true - - - id: ruff-formatter - name: Formatter - entry: uv run -- ruff format --diff - language: system - types: [python] - fail_fast: true - - - id: pyright - name: Type checker - entry: uv run -- pyright - language: system - types: [python] - fail_fast: true diff --git a/README.md b/README.md index 6762da6..e1b9994 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ docker compose --file docker-compose-dev.yaml up --detach ``` ```bash -uv run -- fastapi dev api/src/api/main.py +uv run -- poe start-api-dev ``` ```bash diff --git a/pyproject.toml b/pyproject.toml index ae317fe..0f6db49 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,7 @@ dependencies = [ "common", "domain", "fastapi[standard]==0.115.12", + "poethepoet==0.34.0", "pydantic==2.11.4", "pydantic-settings[azure-key-vault]==2.9.1", ] @@ -60,3 +61,8 @@ ignore = [ asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" markers = ["unit: Unit tests", "integration: Integration tests"] + +[tool.poe.tasks] +check-code.shell = "ruff check && ruff format --diff && pyright" +start-api-dev = "fastapi dev api/src/api/main.py" +start-api-pro.shell = "workers=$(nproc) && fastapi run --workers $workers api/src/api/main.py" diff --git a/uv.lock b/uv.lock index 695aa84..62af6c4 100644 --- a/uv.lock +++ b/uv.lock @@ -1235,6 +1235,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, ] +[[package]] +name = "pastel" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555, upload-time = "2020-09-16T19:21:12.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955, upload-time = "2020-09-16T19:21:11.409Z" }, +] + [[package]] name = "pexpect" version = "4.9.0" @@ -1265,6 +1274,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, ] +[[package]] +name = "poethepoet" +version = "0.34.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pastel" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/f2/3853d6a9a0dac08aa680895839eeab8ec0ed63db375e1f782e623c9309b6/poethepoet-0.34.0.tar.gz", hash = "sha256:86203acce555bbfe45cb6ccac61ba8b16a5784264484195874da457ddabf5850", size = 64474, upload-time = "2025-04-21T13:38:20.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/d1/61431afe22577083fcb50614bc5e5aa73aa0ab35e3fc2ae49708a59ff70b/poethepoet-0.34.0-py3-none-any.whl", hash = "sha256:c472d6f0fdb341b48d346f4ccd49779840c15b30dfd6bc6347a80d6274b5e34e", size = 85851, upload-time = "2025-04-21T13:38:18.257Z" }, +] + [[package]] name = "prometheus-client" version = "0.21.0" @@ -1506,6 +1528,7 @@ dependencies = [ { name = "common" }, { name = "domain" }, { name = "fastapi", extra = ["standard"] }, + { name = "poethepoet" }, { name = "pydantic" }, { name = "pydantic-settings", extra = ["azure-key-vault"] }, ] @@ -1529,6 +1552,7 @@ requires-dist = [ { name = "common", editable = "common" }, { name = "domain", editable = "domain" }, { name = "fastapi", extras = ["standard"], specifier = "==0.115.12" }, + { name = "poethepoet", specifier = "==0.34.0" }, { name = "pydantic", specifier = "==2.11.4" }, { name = "pydantic-settings", extras = ["azure-key-vault"], specifier = "==2.9.1" }, ]