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
|
[build-system]
requires = ["setuptools==80.9.0"]
build-backend = "setuptools.build_meta"
[project]
name = "asusrouter"
version = "1.21.3"
license = "Apache-2.0"
requires-python = ">=3.11.0"
readme = "README.md"
description = "API wrapper for communication with ASUSWRT-powered routers using HTTP protocol"
authors = [
{ name="Yevhenii Vaskivskyi", email="yevhenii@vaskivskyi.com" },
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Libraries",
]
dependencies = [
"aiohttp >=3.8.1",
"urllib3 >=1.26.14",
"xmltodict >=0.12.0",
]
[project.urls]
"Homepage" = "https://asusrouter.vaskivskyi.com/"
"Source Code" = "https://github.com/Vaskivskyi/asusrouter"
"Bug Reports" = "https://github.com/Vaskivskyi/asusrouter/issues"
[tool.setuptools.packages.find]
include = ["asusrouter*"]
[tool.setuptools.package-data]
"asusrouter" = ["py.typed"]
[dependency-groups]
dev = [
"mypy>=1.15.0",
"pydantic>=2.10.6",
"ruff>=0.13.0",
"pre-commit>=4.3.0",
]
test = [
"pytest>=8.3.5",
"pytest-asyncio>=0.25.3",
"pytest-cov>=6.0.0",
]
[tool.pytest.ini_options]
testpaths = [
"tests",
]
[tool.mypy]
python_version = "3.11"
strict = true
ignore_missing_imports = true
show_error_codes = true
exclude = "tests/.*"
[tool.ruff]
line-length = 79
required-version = ">=0.12.8"
src = ["asusrouter"]
target-version = "py311"
[tool.ruff.lint]
select = [
"A001", # Variable {name} is shadowing a Python builtin
"ASYNC", # flake8-async
"BLE", # flake8-blind-except
"C", # complexity
"D", # docstrings
"E", # pycodestyle / error
"F", # pyflakes
"I", # isort
"ICN001", # {name} should be imported as {asname}
"INP", # flake8-no-pep420
"ISC", # flake8-implicit-str-concat
"LOG", # flake8-logging
"N", # pep8-naming
"PERF", # Perflint
"PGH", # pygrep-hooks
"PIE", # flake8-pie
"PL", # pylint
"PT", # flake8-pytest-style
"PTH", # flake8-pathlib
"PYI", # flake8-pyi
"RET", # flake8-return
"RSE", # flake8-raise
"S", # flake8-bandit
"SIM", # flake8-simplify
"T20", # flake8-print
"UP", # pyupgrade
"W", # pycodestyle / warning
]
ignore = [
"D202", # No blank lines allowed after function docstring (found {num_lines})
"D203", # 1 blank line required before class docstring
"D213", # Multi-line docstring summary should start at the second line
]
[tool.ruff.lint.flake8-import-conventions.extend-aliases]
"asusrouter.config.ARConfigKey" = "ARConfKey"
"asusrouter.connection_config.ARConnectionConfigKey" = "ARCCKey"
"asusrouter.registry.ARCallableRegistry" = "ARCallReg"
[tool.ruff.lint.isort]
force-sort-within-sections = true
known-first-party = ["asusrouter"]
combine-as-imports = true
split-on-trailing-comma = false
[tool.ruff.lint.per-file-ignores]
"tests/*" = [
"S101", # Use of `assert` detected
"S105", # Possible hardcoded password assigned to: "{}"
"S106", # Possible hardcoded password assigned to argument: "{}"
"PLR0913", # Too many arguments in function definition ({c_args} > {max_args})
]
[tool.ruff.lint.pydocstyle]
convention = "pep257"
|