Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
name: linters
strategy:
matrix:
python-version: [ '3.9' ]
python-version: [ '3.13' ]
platform: [ubuntu-latest]
runs-on: ${{ matrix.platform }}
steps:
Expand Down Expand Up @@ -35,7 +35,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [ '3.9', '3.10', '3.11', '3.12' ]
python-version: [ '3.10', '3.11', '3.12', '3.13' ]
platform: [ubuntu-latest, macos-13, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
Expand All @@ -61,7 +61,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [ '3.9', '3.10', '3.11', '3.12' ]
python-version: [ '3.10', '3.11', '3.12', '3.13' ]
platform: [ubuntu-latest, macos-13, windows-latest]
extra: [ 'jinja', 'ttp', 'jsonpatch']
runs-on: ${{ matrix.platform }}
Expand Down Expand Up @@ -92,7 +92,7 @@ jobs:
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
python-version: "3.9"
python-version: "3.13"

- name: prepare release
run: make fiximageurls
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ARG PYTHON
FROM python:3.9
FROM python:3.13

WORKDIR /workspace

Expand Down
95 changes: 51 additions & 44 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,19 @@ authors = [{ name = "ubaumann", email = "github@m.ubaumann.ch" }]
license = { text = "Apache 2.0" }
classifiers = [
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
requires-python = ">=3.8"
requires-python = ">=3.10"
dependencies = [
"typer>=0.9",
"typer>=0.16",
"rich>=12,>=13",
"ruamel.yaml>=0.18",
"qrcode>=7.3.1",
"qrcode>=8",
"python-dotenv>=1",
"requests>=2.27.1",
"requests>=2",
]

[project.urls]
Expand All @@ -35,46 +34,46 @@ nettowel = "nettowel.cli.main:run"
nt = "nettowel.cli.main:run"

[project.optional-dependencies]
jinja = ["jinja2>=3.1.6", "jinja2schema>=0.1.4"]
ttp = ["ttp>=0.9.5"]
textfsm = ["textfsm>=2.1.0"]
napalm = ["napalm>=3.4.1"]
netmiko = ["netmiko>=3.4.0"]
scrapli = ["scrapli>=2024.7.30.post1"]
jinja = ["jinja2>=3", "jinja2schema>=0.1"]
ttp = ["ttp>=0.9"]
textfsm = ["textfsm>=1"]
napalm = ["napalm>=5"]
netmiko = ["netmiko>=4"]
scrapli = ["scrapli>=2025.1"]
nornir = [
"nornir>=3.4.1",
"nornir-http>=0.1.3",
"nornir-jinja2>=0.2.0",
"nornir-napalm>=0.2.0",
"nornir-netmiko>=0.1.2",
"nornir-pyxl>=1.0.1",
"nornir-rich>=0.2.0",
"nornir-scrapli>=2024.7.30",
"nornir-utils>=0.2.0",
"nornir>=3.5",
"nornir-http",
"nornir-jinja2",
"nornir-napalm",
"nornir-netmiko",
"nornir-pyxl",
"nornir-rich",
"nornir-scrapli",
"nornir-utils",
]
pandas = ["pandas>=2.0.3"]
tui = ["trogon>=0.5.0"]
jsonpatch = ["jsonpatch>=1.33"]
pandas = ["pandas>=2"]
tui = ["trogon>=0.6"]
jsonpatch = ["jsonpatch>=1"]
full = [
"jinja2>=3.1.6",
"jinja2schema>=0.1.4",
"jsonpatch>=1.33",
"napalm>=3.4.1",
"netmiko>=3.4.0",
"nornir>=3.4.1",
"nornir-http>=0.1.3",
"nornir-jinja2>=0.2.0",
"nornir-napalm>=0.2.0",
"nornir-netmiko>=0.1.2",
"nornir-pyxl>=1.0.1",
"nornir-rich>=0.2.0",
"nornir-scrapli>=2024.7.30",
"nornir-utils>=0.2.0",
"pandas>=2.0.3",
"scrapli>=2024.7.30.post1",
"textfsm>=2.1.0",
"trogon>=0.5.0",
"ttp>=0.9.5",
"jinja2",
"jinja2schema",
"jsonpatch",
"napalm",
"netmiko",
"nornir",
"nornir-http",
"nornir-jinja2",
"nornir-napalm",
"nornir-netmiko",
"nornir-pyxl",
"nornir-rich",
"nornir-scrapli",
"nornir-utils",
"pandas",
"scrapli",
"textfsm",
"trogon",
"ttp",
]

[build-system]
Expand All @@ -90,7 +89,7 @@ dev = [
]

[tool.mypy]
python_version = "3.8"
python_version = "3.13"
check_untyped_defs = true
disallow_any_generics = true
disallow_untyped_calls = true
Expand All @@ -108,3 +107,11 @@ warn_redundant_casts = true
[[tool.mypy.overrides]]
module = "nornir.core"
ignore_errors = true

[tool.pytest.ini_options]
markers = [
"jinja",
"jsonpatch",
"ttp",
"yaml",
]
2 changes: 1 addition & 1 deletion tests/test_ipaddress_cli.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typer.testing import CliRunner
from nettowel.cli.ip import app

runner = CliRunner(mix_stderr=False)
runner = CliRunner()


def test_help() -> None:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_jinja_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from nettowel.cli.jinja import app

pytestmark = pytest.mark.jinja
runner = CliRunner(mix_stderr=False)
runner = CliRunner()


def test_help() -> None:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_jsonpatch.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from nettowel.cli.jsonpatch import app

pytestmark = pytest.mark.jsonpatch
runner = CliRunner(mix_stderr=False)
runner = CliRunner()


def test_help() -> None:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_main_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from typer.testing import CliRunner
from nettowel.cli.main import app

runner = CliRunner(mix_stderr=False)
runner = CliRunner()


def test_help() -> None:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_ttp_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from nettowel.cli.ttp import app

pytestmark = pytest.mark.ttp
runner = CliRunner(mix_stderr=False)
runner = CliRunner()


def test_help() -> None:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_yaml_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from nettowel.cli.yaml import app

pytestmark = pytest.mark.yaml
runner = CliRunner(mix_stderr=False)
runner = CliRunner()


def test_help() -> None:
Expand Down
Loading
Loading