christianmanivong ba133d9de3
CI / test (3.12) (pull_request) Successful in 28s
CI / test (3.13) (pull_request) Successful in 26s
CI / test (3.11) (pull_request) Successful in 2m31s
fix(ci): audit the package's dependencies, not the tool venv
The device-types pilot failed pip-audit on pip 25.0.1 of the venv that also
held bandit and pip-audit. The package now goes into a venv of its own with
a current pip; its frozen set (URL installs left out) is what pip-audit
checks.
2026-10-22 19:14:55 +02:00

driver-standard

The rules every driver in the NAPALM org follows, and the tools that hold them.

STANDARDS.md Repository usage, the contract, TDD, clean code, the quality ratchet, packaging, releases
.gitea/workflows/driver.yml The CI every driver calls: conformance, lint, types, tests, lowest versions, security, build, publish
napalm-standard The command line that CI runs: check, ratchet, notes, release, package
template/ A new driver's starting point; it meets the standard as it is

Using it in a driver

.gitea/workflows/ci.yml:

name: CI

on:
  push:
    branches: [main]
    tags: ["v*"]
  pull_request:

jobs:
  driver:
    uses: NAPALM/driver-standard/.gitea/workflows/driver.yml@main
    with:
      standard-ref: main
    secrets:
      PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}

Inputs: pre-install (pip specs installed first, e.g. a dependency not on PyPI yet), python-versions (JSON list), pypi-url (https://test.pypi.org/legacy/ for a dry run), standard-ref (keep it equal to the @ref of the uses: line).

Locally:

pip install "napalm-standard @ git+https://git.netork.io/NAPALM/driver-standard.git"
napalm-standard check            # does this repo meet the standard?
napalm-standard ratchet          # is it within its quality baseline?
napalm-standard ratchet --write  # record the baseline after an improvement

Development

python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest
.venv/bin/ruff format --check . && .venv/bin/ruff check . && .venv/bin/mypy napalm_standard

License

Apache-2.0

S
Description
Rules, shared CI and release tooling for every NAPALM driver: TDD, clean code, repository usage, PyPI releases
Readme
104 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 100%