[project] name = "FindMy" version = "0.9.8" description = "Query the location of your FindMy devices with Python!" readme = "README.md" authors = [{ name = "Mike Almeloo", email = "git@mikealmel.ooo" }] license-files = ["LICENSE.md"] requires-python = ">=3.10,<3.15" dependencies = [ "srp>=1.0.21,<2.0.0", "cryptography>=42.0.0,<47.0.0", "beautifulsoup4>=4.12.3,<5.0.0", "aiohttp>=3.9.5,<4.0.0", "bleak>=2.0.0,<3.0.0", "typing-extensions>=4.12.2,<5.0.0", "anisette>=1.2.4,<2.0.0", ] [dependency-groups] dev = [ "pre-commit>=4.0.0,<5.0.0", "basedpyright>=1.31.1,<2.0.0", "ruff>=0.8.4,<1.0.0", "tomli>=2.0.1,<3.0.0", "packaging>=25.0,<26.0", ] test = ["pytest>=8.3.2,<9.0.0"] docs = [ "furo>=2025.7.19", "myst-parser>=4.0.1; python_full_version >= '3.10'", "sphinx>=8.2.3,<8.3.0; python_full_version >= '3.11'", "sphinx-autoapi==3.6.1", "sphinx-book-theme>=1.1.4", "sphinx-design>=0.6.1", "sphinx-togglebutton>=0.3.2", ] [tool.pyright] venvPath = "." venv = ".venv" # rule overrides typeCheckingMode = "standard" reportImplicitOverride = true [tool.ruff] line-length = 100 exclude = ["docs/", "tests/"] [tool.ruff.lint] select = ["ALL"] ignore = [ "FIX002", # resolving TODOs "D203", # one blank line before class docstring "D212", # multi-line docstring start at first line "D105", # docstrings in magic methods "S101", # assert statements "S603", # false-positive subprocess call (https://github.com/astral-sh/ruff/issues/4045) "PLR2004", # "magic" values >.> "FBT", # boolean "traps" "COM812", # trailing commas ] [tool.ruff.lint.per-file-ignores] "docs/*" = [ "INP001", # implicit namespaces ] "examples/*" = [ "T201", # use of "print" "S101", # use of "assert" "D", # documentation "INP001", # namespacing "ERA001", # commented out code ] "scripts/*" = [ "T201", # use of "print" "D", # documentation ] "tests/*" = [ "INP001", # implicit namespaces "PLC0415", # import not on top of file ] [tool.setuptools] packages = ["findmy"] [build-system] requires = ["setuptools", "setuptools-scm"] build-backend = "setuptools.build_meta"