driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 11s
driver / types (pull_request) Successful in 46s
driver / test (3.10) (pull_request) Successful in 51s
driver / test (3.11) (pull_request) Successful in 55s
driver / test (3.12) (pull_request) Successful in 49s
driver / test (3.13) (pull_request) Successful in 43s
driver / lowest (pull_request) Successful in 26s
driver / security (pull_request) Successful in 49s
driver / build (pull_request) Successful in 22s
CI / driver (pull_request) Successful in 6m5s
driver / publish (pull_request) Skipped
- CI arrives in .gitea/workflows/ci.yml and calls the shared driver workflow of NAPALM/driver-standard; the repo had none before. - setuptools>=77 and the SPDX license string PEP 639 wants, without the License classifier; py.typed; Repository, Issues and Changelog links on git.netork.io; napalm-device-types>=4.21.1 from PyPI. - True floors, found by running the tests at them: redfish>=3.4.1 (older releases return no response with max_retry=0) and pyghmi>=1.5.1 (1.5.0 imports python-dateutil without declaring it). - The test extra becomes the dev extra of the standard, plus responses, which the tests mock the BMC with. pytest puts the repo root on the path, so tests.conftest also imports under a bare pytest. - mypy strict; exempt for now (50 errors, most of them getters returning dicts where the role declares TypedDicts): napalm_redfish.bmc, .driver, .ipmi, .transport and parsers.common, .environment, .manager, .system. They are recorded in tests/quality_baseline.json with seven functions over complexity 10. - Coverage floor 94 % (measured 94.27 %). - The README's development steps install from PyPI.
91 lines
2.4 KiB
TOML
91 lines
2.4 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=77"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "napalm-redfish"
|
|
version = "0.5.0"
|
|
description = "NAPALM driver for server baseboard management controllers over DMTF Redfish"
|
|
readme = "README.md"
|
|
license = "Apache-2.0"
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"napalm>=5.0",
|
|
"napalm-device-types>=4.21.1",
|
|
# Before 3.4.1, max_retry=0 (retries=0) gets no response back at all.
|
|
"redfish>=3.4.1",
|
|
# 1.5.0 imports python-dateutil without declaring it.
|
|
"pyghmi>=1.5.1",
|
|
]
|
|
classifiers = [
|
|
"Programming Language :: Python :: 3",
|
|
"Topic :: System :: Hardware",
|
|
"Topic :: System :: Networking",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
# responses mocks the BMC's HTTP answers in the tests.
|
|
dev = ["pytest>=8", "pytest-cov>=5", "mypy>=1.11", "ruff>=0.6", "responses>=0.23"]
|
|
|
|
[project.urls]
|
|
Repository = "https://git.netork.io/NAPALM/napalm-redfish"
|
|
Issues = "https://git.netork.io/NAPALM/napalm-redfish/issues"
|
|
Changelog = "https://git.netork.io/NAPALM/napalm-redfish/src/branch/main/CHANGELOG.md"
|
|
|
|
[project.entry-points."napalm.drivers"]
|
|
redfish = "napalm_redfish:RedfishDriver"
|
|
ipmi = "napalm_redfish.ipmi:IpmiDriver"
|
|
bmc = "napalm_redfish.bmc:BmcDriver"
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["napalm_redfish*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
napalm_redfish = ["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.*", "redfish.*", "pyghmi.*", "requests.*"]
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# Not yet under strict mypy (quality baseline); may only shrink.
|
|
module = [
|
|
"napalm_redfish.bmc",
|
|
"napalm_redfish.driver",
|
|
"napalm_redfish.ipmi",
|
|
"napalm_redfish.parsers.common",
|
|
"napalm_redfish.parsers.environment",
|
|
"napalm_redfish.parsers.manager",
|
|
"napalm_redfish.parsers.system",
|
|
"napalm_redfish.transport",
|
|
]
|
|
ignore_errors = true
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
# The tests import their helpers as tests.conftest, also under a bare pytest.
|
|
pythonpath = ["."]
|
|
|
|
[tool.coverage.run]
|
|
source = ["napalm_redfish"]
|
|
|
|
[tool.coverage.report]
|
|
fail_under = 94
|