driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 12s
driver / types (pull_request) Successful in 42s
driver / test (3.10) (pull_request) Successful in 46s
driver / test (3.11) (pull_request) Successful in 46s
driver / test (3.12) (pull_request) Successful in 44s
driver / test (3.13) (pull_request) Successful in 38s
driver / lowest (pull_request) Successful in 23s
driver / security (pull_request) Successful in 45s
driver / build (pull_request) Successful in 22s
CI / driver (pull_request) Successful in 5m31s
driver / publish (pull_request) Skipped
Without one, uv's lowest-direct resolution installs netaddr 0.3.1, which has no IPAddress, and every test module fails to import. 0.7.19 has IPAddress, IPNetwork and AddrFormatError, and the tests pass at exactly the declared floors on Python 3.10.
92 lines
2.4 KiB
TOML
92 lines
2.4 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=77"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
# "napalm-netgear" on PyPI belongs to someone else (STANDARDS.md §8).
|
|
name = "napalm-netgear-switches"
|
|
version = "0.5.0"
|
|
description = "NAPALM driver for Netgear switches (Plus/Smart)"
|
|
readme = "README.md"
|
|
license = "Apache-2.0"
|
|
requires-python = ">=3.10"
|
|
authors = [
|
|
{ name = "Christian Manivong" },
|
|
]
|
|
classifiers = [
|
|
"Topic :: Utilities",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Operating System :: POSIX :: Linux",
|
|
"Operating System :: MacOS",
|
|
]
|
|
dependencies = [
|
|
"napalm>=4.0.0",
|
|
"napalm-device-types>=4.21.1",
|
|
"netmiko>=4.0.0",
|
|
"paramiko>=5.0.0", # CVE-2026-44405
|
|
"netaddr>=0.7.19",
|
|
"py-netgear-plus>=0.6.4",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest>=8", "pytest-cov>=5", "mypy>=1.11", "ruff>=0.6"]
|
|
|
|
[project.entry-points."napalm.drivers"]
|
|
netgear_smart = "napalm_netgear:NetgearSmartDriver"
|
|
netgear_plus = "napalm_netgear:NetgearPlusDriver"
|
|
|
|
[project.urls]
|
|
Repository = "https://git.netork.io/NAPALM/napalm-netgear"
|
|
Issues = "https://git.netork.io/NAPALM/napalm-netgear/issues"
|
|
Changelog = "https://git.netork.io/NAPALM/napalm-netgear/src/branch/main/CHANGELOG.md"
|
|
|
|
[tool.napalm-standard]
|
|
# The distribution name differs from the import package.
|
|
package = "napalm_netgear"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["napalm_netgear*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
napalm_netgear = ["py.typed"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py310"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP", "B"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# Recorded device output keeps its lines.
|
|
"tests/**" = ["E501"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
strict = true
|
|
# napalm itself is untyped, so every driver subclasses Any.
|
|
disallow_subclassing_any = false
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = ["napalm.*", "netaddr.*", "py_netgear_plus.*"]
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# Not yet under strict mypy (quality baseline); may only shrink.
|
|
module = ["napalm_netgear.netgear_plus", "napalm_netgear.netgear_smart"]
|
|
ignore_errors = true
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
|
|
[tool.coverage.run]
|
|
source = ["napalm_netgear"]
|
|
|
|
[tool.coverage.report]
|
|
fail_under = 48
|