1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools>=77", "setuptools_scm>=8"]
[project]
name = "pyatmo"
description = "Simple API to access Netatmo weather station data from any Python 3 script. Designed for Home Assistant (but not only)"
readme = "README.md"
authors = [{ email = "jabesq@gmail.com", name = "Hugo Dupras" }]
maintainers = [
{ email = "cgtobi@gmail.com", name = "Tobias Sauerwein" },
{ email = "jabesq@gmail.com", name = "Hugo Dupras" },
]
license = "MIT"
license-files = ["LICENSE.txt"]
requires-python = ">=3.11"
dependencies = [
"aiohttp>=3.7.4,<4.0.0",
"oauthlib~=3.1",
"requests-oauthlib>=1.3,<3.0",
"requests~=2.24",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Home Automation",
]
dynamic = ["version"]
[project.urls]
Changelog = "https://github.com/jabesq-org/pyatmo/blob/development/CHANGELOG.md"
Homepage = "https://github.com/jabesq-org/pyatmo"
Issues = "https://github.com/jabesq-org/pyatmo/issues"
Repository = "https://github.com/jabesq-org/pyatmo.git"
[tool.mypy]
explicit_package_bases = true
namespace_packages = true
show_error_context = true
show_error_codes = true
pretty = true
check_untyped_defs = true
strict_equality = true
implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_unreachable = true
warn_no_return = true
disallow_incomplete_defs = true
[tool.pytest.ini_options]
asyncio_default_fixture_loop_scope = "function"
asyncio_mode = "auto"
minversion = "8.0"
[tool.ruff]
fix = true
line-length = 88
[tool.ruff.lint]
select = ["ALL"]
ignore = [
"COM812", # missing-trailing-comma (COM812) - Handled by formatter
"D202", # blank-line-after-function (D202)
"D203", # incorrect-blank-line-before-class (D203)
"D213", # multi-line-summary-second-line (D213)
"DTZ005", # call-datetime-now-without-tzinfo (DTZ005)
"DTZ006", # call-datetime-fromtimestamp (DTZ006)
"E501", # line-too-long (E501)
"FBT001", # Boolean-typed positional argument in function definition (FBT001)
"FBT002", # Boolean default positional argument in function definition (FBT002)
"FBT003", # Boolean positional value in function call (FBT003)
"PLR0913", # Too many arguments in function definition (PLR0913)
"PLW2901", # redefined-loop-name (PLW2901)
]
[tool.ruff.lint.flake8-pytest-style]
fixture-parentheses = false
[tool.ruff.lint.flake8-tidy-imports.banned-api.pytz]
msg = "use zoneinfo instead"
[tool.ruff.lint.isort]
combine-as-imports = true
force-sort-within-sections = true
split-on-trailing-comma = false
[tool.ruff.lint.mccabe]
max-complexity = 12
[tool.ruff.lint.per-file-ignores]
"tests/*" = [
"ANN001",
"ANN002",
"ANN003",
"ANN201",
"ANN202",
"ANN204",
"D10",
"DTZ001",
"N802",
"PLR2004",
"S101",
"S105",
]
[tool.setuptools_scm]
local_scheme = "no-local-version"
[tool.uv]
dev-dependencies = [
"anyio>=4.9.0",
"build>=1.3.0",
"codespell>=2.4.1",
"docutils>=0.21.2",
"mypy>=1.16.1",
"pre-commit>=4.2.0",
"pytest-asyncio>=1.0.0",
"pytest-cov>=6.2.1",
"pytest>=8.4.1",
"ruff>=0.12.9",
"time-machine>=2.15.0",
"tox-uv>=1.26.1",
"twine>=6.1.0",
]
|