style: ruff format and ruff check --fix with the standard's rule set (E, F, I, UP, B, line length 100, Python 3.10). Mechanical.
fix: logger after the imports (E402); the lazy paramiko client annotated Any like _node_ssh (F821); unused locals removed; long command lines split into adjacent literals (unchanged on the wire); get_vm_status re-raises from e; the two except Exception: pass (closing the SSH session, the is_alive probe) log at debug level (bandit B110); justified nosec B105 for the empty password field of NAPALM's get_users shape and the ssh_password_auth flag; tests: unused loop variables.
chore: CI moves to .gitea/workflows/ci.yml (shared driver workflow) with pre-install of napalm-device-types from git until 4.22.0 is on PyPI (the floor stays at 4.22.0), .github/ removed; requires-python >=3.10, SPDX license, py.typed, dev extra, git.netork.io links, CHANGELOG entry; strict mypy with eleven modules exempt for now (204 errors), quality baseline, coverage floor 68 %.
## Summary
napalm-proxmox adopts the NAPALM driver standard (https://git.netork.io/NAPALM/driver-standard).
Epic: NAPALM/driver-standard#2.
## Changes
- **style**: ruff format and `ruff check --fix` with the standard's rule set (E, F, I, UP, B, line length 100, Python 3.10). Mechanical.
- **fix**: logger after the imports (E402); the lazy paramiko client annotated `Any` like `_node_ssh` (F821); unused locals removed; long command lines split into adjacent literals (unchanged on the wire); `get_vm_status` re-raises `from e`; the two `except Exception: pass` (closing the SSH session, the `is_alive` probe) log at debug level (bandit B110); justified `nosec B105` for the empty `password` field of NAPALM's `get_users` shape and the `ssh_password_auth` flag; tests: unused loop variables.
- **chore**: CI moves to `.gitea/workflows/ci.yml` (shared driver workflow) with `pre-install` of napalm-device-types from git until 4.22.0 is on PyPI (the floor stays at 4.22.0), `.github/` removed; `requires-python >=3.10`, SPDX license, `py.typed`, dev extra, git.netork.io links, CHANGELOG entry; strict mypy with eleven modules exempt for now (204 errors), quality baseline, coverage floor 68 %.
## Related Issue
Closes #32
## Testing
Locally: 343 tests, coverage 68.94 %, ruff, mypy, bandit clean; `napalm-standard check` and `ratchet` clean; build + `twine check --strict` pass. Fixtures only; napalm-device-types 4.22.0 from git.
Mechanical: ruff format, and ruff check --fix with the rule set every NAPALM
driver uses (E, F, I, UP, B at line length 100, Python 3.10). What ruff
cannot fix comes in the next commit.
- driver.py: the logger is defined after the imports (E402). The lazy
paramiko client is annotated Any, as _node_ssh already is; the quoted
paramiko.SSHClient named a module that is never imported there (F821).
- Unused locals are gone: get_facts' hostname, get_users' groups (both
read a value nobody used), the ARP flags column is _flags; the output is
unchanged.
- Long lines are wrapped: the apt-get and snmpd.conf commands are split
into adjacent string literals, the power-action error message and the
system mixin's docstring are wrapped; the text is unchanged.
- get_vm_status re-raises with raise ... from e (B904).
- The two except Exception: pass (closing the SSH session, the is_alive
probe) now log at debug level (B110), so a swallowed failure leaves a
trace.
- nosec for the empty "password" field of NAPALM's get_users shape and
the ssh_password_auth flag (B105); all three are false positives.
- tests: unused loop variables.
- CI moves to .gitea/workflows/ci.yml and calls the shared driver workflow
of NAPALM/driver-standard; .github/ is gone. napalm-device-types comes
from git until 4.22.0 (AptProxyMixin) is on PyPI; the floor stays at
4.22.0.
- requires-python >=3.10 (napalm-device-types needs it), py.typed, SPDX
license string, a dev extra with floors (pytest-mock and responses are
dropped: no test uses them), links to git.netork.io (README included).
pytest no longer adds --cov by itself; CI passes it.
- mypy strict for the package; exempt for now, with 204 errors between
them: napalm_proxmox.config_mixin, .driver, .interfaces_mixin,
.lldp_mixin, .routing_mixin, .sdn_mixin, .system_mixin, .utils,
.vm_contract_mixin, .vm_mixin and .vm_provision_mixin. They are recorded
in the quality baseline with the long and complex functions and the two
unannotated public methods.
- Coverage floor 68 % (measured 68.94 %).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
napalm-proxmox adopts the NAPALM driver standard (https://git.netork.io/NAPALM/driver-standard).
Epic: NAPALM/driver-standard#2.
Changes
ruff check --fixwith the standard's rule set (E, F, I, UP, B, line length 100, Python 3.10). Mechanical.Anylike_node_ssh(F821); unused locals removed; long command lines split into adjacent literals (unchanged on the wire);get_vm_statusre-raisesfrom e; the twoexcept Exception: pass(closing the SSH session, theis_aliveprobe) log at debug level (bandit B110); justifiednosec B105for the emptypasswordfield of NAPALM'sget_usersshape and thessh_password_authflag; tests: unused loop variables..gitea/workflows/ci.yml(shared driver workflow) withpre-installof napalm-device-types from git until 4.22.0 is on PyPI (the floor stays at 4.22.0),.github/removed;requires-python >=3.10, SPDX license,py.typed, dev extra, git.netork.io links, CHANGELOG entry; strict mypy with eleven modules exempt for now (204 errors), quality baseline, coverage floor 68 %.Related Issue
Closes #32
Testing
Locally: 343 tests, coverage 68.94 %, ruff, mypy, bandit clean;
napalm-standard checkandratchetclean; build +twine check --strictpass. Fixtures only; napalm-device-types 4.22.0 from git.