pyproject.toml (150 lines of code) (raw):

[project] name = "tooling-trusted-release" version = "0.0.1" description = "Apache Trusted Release Platform" authors = [ { name = "ASF Tooling", email = "dev@tooling.apache.org" } ] license = "Apache-2.0" readme = "README.md" requires-python = "~=3.13" # https://bugs.launchpad.net/dkimpy/+bug/2024461 dependencies = [ "aiofiles>=24.1.0,<25.0.0", "aiohttp>=3.11.14", "aioshutil (>=1.5,<2.0)", "aiosmtplib (>=4.0.0,<5.0.0)", "aiosqlite>=0.21.0,<0.22.0", "aiozipstream (>=0.4,<0.5)", "alembic~=1.14", "asfquart @ git+https://github.com/apache/infrastructure-asfquart.git@main", "asyncssh>=2.20.0,<3.0.0", "blockbuster>=1.5.23,<2.0.0", "cryptography~=44.0", "dkimpy @ git+https://github.com/sbp/dkimpy.git@main", "dnspython>=2.7.0,<3.0.0", "dunamai>=1.23.0", "email-validator~=2.2.0", "greenlet>=3.1.1,<4.0.0", "httpx~=0.27", "hypercorn~=0.17", "python-decouple~=3.8", "python-gnupg~=0.5", "quart-schema[pydantic]~=0.21", "quart-wtforms~=1.0.3", "rich~=14.0.0", "sqlmodel~=0.0.24", ] [dependency-groups] dev = [ "decouple-types>=1.0", "djlint>=1.36.4", "mypy>=1.15.0", "pre-commit>=2.20.0", "pyright>=1.1.393", "ruff>=0.9.4", "types-aiofiles>=24.1.0.20241221,<25.0.0.0", ] test = [ "netifaces>=0.11.0", "playwright>=1.51.0", "pytest-asyncio>=0.24", "pytest>=8.0", ] # Other configuration # Poetry specific config [tool.poetry] package-mode = false [tool.poetry.group.test.dependencies] netifaces = "^0.11.0" playwright = "^1.51.0" pytest = ">=8.0" pytest-asyncio = ">=0.24" [tool.poetry.group.dev.dependencies] decouple-types = ">=1.0" djlint = "^1.36.4" mypy = "^1.15.0" pre-commit = ">=2.20.0" pyright = ">=1.1.393" ruff = ">=0.9.4" types-aiofiles = ">=24.1.0.20241221,<25.0.0.0" # Additional tools [tool.pyright] include = ["atr", "playwright"] exclude = [ "**/node_modules", "**/__pycache__", ".venv*", "tests", "atr/util.py" ] ignore = [] defineConstant = { DEBUG = true } stubPath = "typestubs" reportMissingImports = "error" reportMissingTypeStubs = false pythonVersion = "3.13" executionEnvironments = [ { root = ".", pythonVersion = "3.13" } ] [tool.ruff] line-length = 120 [tool.ruff.lint] ignore = [] select = [ "I", # isort "E", "W", "F", "N", # pep8-naming "RUF", # ruff-checks "C90", "TID", # flake8-tidy-imports "TC", # flake8-type-checking "UP" # pyupgrade ] [tool.ruff.lint.per-file-ignores] "atr/analysis.py" = ["RUF001"] "atr/apache.py" = ["N815", "TC003"] "atr/db/__init__.py" = ["C901"] "atr/routes/modules.py" = ["F401"] "migrations/env.py" = ["E402"] "scripts/release_path_parse.py" = ["C901", "RUF001"] [tool.mypy] python_version = "3.13" exclude = ["tests"] mypy_path = "typestubs" check_untyped_defs = false disallow_incomplete_defs = true disallow_untyped_decorators = true disallow_untyped_defs = true ignore_missing_imports = true no_implicit_optional = true strict_optional = true warn_redundant_casts = true warn_return_any = true # warn_unreachable = true warn_unused_ignores = true [[tool.mypy.overrides]] module = "asfquart.*" ignore_errors = true [[tool.mypy.overrides]] module = "tests.*" ignore_errors = true [tool.djlint] profile = "jinja" extension = "html" indent = 2 blank_line_after_tag = "load,extends,include,html" close_void_tags = true format_css = true format_js = true max_line_length = 120 use_gitignore = true preserve_blank_lines = true ignore = "H006,H031" include = "atr/templates" [tool.pytest.ini_options] minversion = "8.0" testpaths = ["tests"] asyncio_mode = "auto"