[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "aquaportal-s2s-client" version = "0.1.0" description = "FastAPI integration and realtime proxy for the Vocero frontend" readme = "s2s-client/README.md" requires-python = ">=3.12,<3.13" dependencies = [ "fastapi==0.115.6", "uvicorn[standard]==0.34.0", "httpx==0.28.1", "python-dotenv==1.2.2", "pydantic==2.13.5", "websockets==17.2", ] [dependency-groups] dev = [ "mypy>=1.16,<2", "pre-commit>=4.4,<5", "pytest>=9,<10", "ruff>=0.12,<1", ] [tool.uv] required-version = "==0.12.5" [tool.setuptools.packages.find] include = ["s2s_client*"] [tool.ruff] target-version = "py312" line-length = 120 include = ["pyproject.toml", "s2s_client/**/*.py", "s2s-client/server.py", "tests/**/*.py", "scripts/**/*.py"] [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "I", "B", "UP"] ignore = ["UP040", "UP046"] [tool.ruff.format] quote-style = "double" indent-style = "space" line-ending = "auto" [tool.mypy] python_version = "3.12" plugins = ["pydantic.mypy"] files = ["s2s_client", "s2s-client/server.py"] check_untyped_defs = true disallow_untyped_defs = true no_implicit_optional = true strict_equality = true warn_redundant_casts = true warn_return_any = true warn_unused_configs = true warn_unused_ignores = true show_error_codes = true pretty = true [tool.pydantic-mypy] init_typed = true warn_untyped_fields = true [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = [".", "s2s-client"]