[build-system] build-backend = "hatchling.build" requires = [ "hatchling" ] [project] name = "unifi-access" version = "0.1.0" description = "Typed wrapper for the Unifi Access Public API" readme = "README.md" license = { text = "ISC" } authors = [ { name = "Adam Goldsmith", email = "contact@adamgoldsmith.name" }, ] requires-python = ">=3.11" classifiers = [ "License :: OSI Approved :: ISC License (ISCL)", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] dependencies = [ "pydantic>=2.10.1", "requests>=2.32.3", ] [dependency-groups] dev = [ "mypy>=1.13", "pytest>=8.3.3", "responses>=0.25.3", "ruff>=0.7.1", "types-requests>=2.32.0.20241016", ] docs = [ "mkdocs-material>=9.5.42", "mkdocstrings[python]>=0.26.2", ] [tool.ruff] line-length = 88 lint.select = [ "A", "B", "C4", "E4", "E7", "E9", "F", "FIX003", "FURB", "I", "INP", "ISC", "LOG", "PERF", "PIE", "PL", "PT", "PTH", "Q", "RSE", "RUF", "SIM", "T20", "TCH", "UP", ] lint.ignore = [ "ISC001" ] [tool.pyproject-fmt] indent = 4 [tool.pytest.ini_options] filterwarnings = [ "ignore::urllib3.exceptions.InsecureRequestWarning" ] [tool.mypy] plugins = [ "pydantic.mypy" ] follow_imports = "silent" warn_redundant_casts = true warn_unused_ignores = true disallow_any_generics = true check_untyped_defs = true no_implicit_reexport = true disallow_untyped_defs = true [tool.pydantic-mypy] init_forbid_extra = true init_typed = true warn_required_dynamic_aliases = true [tool.uv] default-groups = [ "dev", "docs" ]