Files
sync-protocol/pyproject.toml
T

104 lines
2.3 KiB
TOML

[project]
name = "sync-protocol"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
authors = [
{ name = "Alireza Rabie", email = "alireza@aazerra.dev" }
]
requires-python = ">=3.12"
dependencies = [
"click>=8.4.2",
"jinja2>=3.1.6",
"pydantic>=2.13.4",
"pydantic-settings>=2.15.0",
]
[project.scripts]
schema= "generator.main:cli"
sync-server = "server.main:main"
sync-client = "client.main:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/generator"]
[tool.pytest.ini_options]
pythonpath = ["src"]
testpaths = ["tests"]
# ---------------------------------------------------------------------------
# Black
# ---------------------------------------------------------------------------
[tool.black]
line-length = 88
target-version = ["py312"]
# ---------------------------------------------------------------------------
# Ruff
# ---------------------------------------------------------------------------
[tool.ruff]
line-length = 88
target-version = "py312"
src = ["src"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
"UP", # pyupgrade
"C4", # flake8-comprehensions
"SIM", # flake8-simplify
"ANN", # flake8-annotations
"RUF", # ruff-specific rules
]
ignore = [
"ANN401", # allow Any in some places
]
[tool.ruff.lint.isort]
known-first-party = ["engine", "server", "client", "generator", "utils"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["ANN"] # don't require annotations in tests
# ---------------------------------------------------------------------------
# Mypy
# ---------------------------------------------------------------------------
[tool.mypy]
python_version = "3.12"
mypy_path = "src"
strict = true
# Pydantic plugin for correct model field inference
plugins = ["pydantic.mypy"]
[[tool.mypy.overrides]]
module = "protocol.*"
ignore_errors = true
[tool.pydantic-mypy]
init_forbid_extra = true
warn_required_dynamic_aliases = true
[dependency-groups]
dev = [
"black>=26.5.1",
"mypy>=2.3.1",
"pre-commit>=4.6.2",
"rope>=1.14.0",
"ruff>=0.16.4",
]
test = [
"pytest>=9.1.1",
]