Skip to content

Commit 32a4bfa

Browse files
authored
Merge pull request #44 from InfrastructureAsCode-ch/feature/remove_py3.8
Remove Python 3.8 and 3.9 support
2 parents 59c301d + ac5bbc5 commit 32a4bfa

10 files changed

Lines changed: 417 additions & 1478 deletions

File tree

.github/workflows/main.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ jobs:
77
name: linters
88
strategy:
99
matrix:
10-
python-version: [ '3.9' ]
10+
python-version: [ '3.13' ]
1111
platform: [ubuntu-latest]
1212
runs-on: ${{ matrix.platform }}
1313
steps:
@@ -35,7 +35,7 @@ jobs:
3535
strategy:
3636
fail-fast: false
3737
matrix:
38-
python-version: [ '3.9', '3.10', '3.11', '3.12' ]
38+
python-version: [ '3.10', '3.11', '3.12', '3.13' ]
3939
platform: [ubuntu-latest, macos-13, windows-latest]
4040
runs-on: ${{ matrix.platform }}
4141
steps:
@@ -61,7 +61,7 @@ jobs:
6161
strategy:
6262
fail-fast: false
6363
matrix:
64-
python-version: [ '3.9', '3.10', '3.11', '3.12' ]
64+
python-version: [ '3.10', '3.11', '3.12', '3.13' ]
6565
platform: [ubuntu-latest, macos-13, windows-latest]
6666
extra: [ 'jinja', 'ttp', 'jsonpatch']
6767
runs-on: ${{ matrix.platform }}
@@ -92,7 +92,7 @@ jobs:
9292
uses: astral-sh/setup-uv@v6
9393
with:
9494
enable-cache: true
95-
python-version: "3.9"
95+
python-version: "3.13"
9696

9797
- name: prepare release
9898
run: make fiximageurls

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ARG PYTHON
2-
FROM python:3.9
2+
FROM python:3.13
33

44
WORKDIR /workspace
55

pyproject.toml

Lines changed: 51 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,19 @@ authors = [{ name = "ubaumann", email = "github@m.ubaumann.ch" }]
77
license = { text = "Apache 2.0" }
88
classifiers = [
99
"License :: OSI Approved :: Apache Software License",
10-
"Programming Language :: Python :: 3.8",
11-
"Programming Language :: Python :: 3.9",
1210
"Programming Language :: Python :: 3.10",
1311
"Programming Language :: Python :: 3.11",
1412
"Programming Language :: Python :: 3.12",
13+
"Programming Language :: Python :: 3.13",
1514
]
16-
requires-python = ">=3.8"
15+
requires-python = ">=3.10"
1716
dependencies = [
18-
"typer>=0.9",
17+
"typer>=0.16",
1918
"rich>=12,>=13",
2019
"ruamel.yaml>=0.18",
21-
"qrcode>=7.3.1",
20+
"qrcode>=8",
2221
"python-dotenv>=1",
23-
"requests>=2.27.1",
22+
"requests>=2",
2423
]
2524

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

3736
[project.optional-dependencies]
38-
jinja = ["jinja2>=3.1.6", "jinja2schema>=0.1.4"]
39-
ttp = ["ttp>=0.9.5"]
40-
textfsm = ["textfsm>=2.1.0"]
41-
napalm = ["napalm>=3.4.1"]
42-
netmiko = ["netmiko>=3.4.0"]
43-
scrapli = ["scrapli>=2024.7.30.post1"]
37+
jinja = ["jinja2>=3", "jinja2schema>=0.1"]
38+
ttp = ["ttp>=0.9"]
39+
textfsm = ["textfsm>=1"]
40+
napalm = ["napalm>=5"]
41+
netmiko = ["netmiko>=4"]
42+
scrapli = ["scrapli>=2025.1"]
4443
nornir = [
45-
"nornir>=3.4.1",
46-
"nornir-http>=0.1.3",
47-
"nornir-jinja2>=0.2.0",
48-
"nornir-napalm>=0.2.0",
49-
"nornir-netmiko>=0.1.2",
50-
"nornir-pyxl>=1.0.1",
51-
"nornir-rich>=0.2.0",
52-
"nornir-scrapli>=2024.7.30",
53-
"nornir-utils>=0.2.0",
44+
"nornir>=3.5",
45+
"nornir-http",
46+
"nornir-jinja2",
47+
"nornir-napalm",
48+
"nornir-netmiko",
49+
"nornir-pyxl",
50+
"nornir-rich",
51+
"nornir-scrapli",
52+
"nornir-utils",
5453
]
55-
pandas = ["pandas>=2.0.3"]
56-
tui = ["trogon>=0.5.0"]
57-
jsonpatch = ["jsonpatch>=1.33"]
54+
pandas = ["pandas>=2"]
55+
tui = ["trogon>=0.6"]
56+
jsonpatch = ["jsonpatch>=1"]
5857
full = [
59-
"jinja2>=3.1.6",
60-
"jinja2schema>=0.1.4",
61-
"jsonpatch>=1.33",
62-
"napalm>=3.4.1",
63-
"netmiko>=3.4.0",
64-
"nornir>=3.4.1",
65-
"nornir-http>=0.1.3",
66-
"nornir-jinja2>=0.2.0",
67-
"nornir-napalm>=0.2.0",
68-
"nornir-netmiko>=0.1.2",
69-
"nornir-pyxl>=1.0.1",
70-
"nornir-rich>=0.2.0",
71-
"nornir-scrapli>=2024.7.30",
72-
"nornir-utils>=0.2.0",
73-
"pandas>=2.0.3",
74-
"scrapli>=2024.7.30.post1",
75-
"textfsm>=2.1.0",
76-
"trogon>=0.5.0",
77-
"ttp>=0.9.5",
58+
"jinja2",
59+
"jinja2schema",
60+
"jsonpatch",
61+
"napalm",
62+
"netmiko",
63+
"nornir",
64+
"nornir-http",
65+
"nornir-jinja2",
66+
"nornir-napalm",
67+
"nornir-netmiko",
68+
"nornir-pyxl",
69+
"nornir-rich",
70+
"nornir-scrapli",
71+
"nornir-utils",
72+
"pandas",
73+
"scrapli",
74+
"textfsm",
75+
"trogon",
76+
"ttp",
7877
]
7978

8079
[build-system]
@@ -90,7 +89,7 @@ dev = [
9089
]
9190

9291
[tool.mypy]
93-
python_version = "3.8"
92+
python_version = "3.13"
9493
check_untyped_defs = true
9594
disallow_any_generics = true
9695
disallow_untyped_calls = true
@@ -108,3 +107,11 @@ warn_redundant_casts = true
108107
[[tool.mypy.overrides]]
109108
module = "nornir.core"
110109
ignore_errors = true
110+
111+
[tool.pytest.ini_options]
112+
markers = [
113+
"jinja",
114+
"jsonpatch",
115+
"ttp",
116+
"yaml",
117+
]

tests/test_ipaddress_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typer.testing import CliRunner
22
from nettowel.cli.ip import app
33

4-
runner = CliRunner(mix_stderr=False)
4+
runner = CliRunner()
55

66

77
def test_help() -> None:

tests/test_jinja_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from nettowel.cli.jinja import app
44

55
pytestmark = pytest.mark.jinja
6-
runner = CliRunner(mix_stderr=False)
6+
runner = CliRunner()
77

88

99
def test_help() -> None:

tests/test_jsonpatch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from nettowel.cli.jsonpatch import app
77

88
pytestmark = pytest.mark.jsonpatch
9-
runner = CliRunner(mix_stderr=False)
9+
runner = CliRunner()
1010

1111

1212
def test_help() -> None:

tests/test_main_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typer.testing import CliRunner
33
from nettowel.cli.main import app
44

5-
runner = CliRunner(mix_stderr=False)
5+
runner = CliRunner()
66

77

88
def test_help() -> None:

tests/test_ttp_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from nettowel.cli.ttp import app
44

55
pytestmark = pytest.mark.ttp
6-
runner = CliRunner(mix_stderr=False)
6+
runner = CliRunner()
77

88

99
def test_help() -> None:

tests/test_yaml_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from nettowel.cli.yaml import app
44

55
pytestmark = pytest.mark.yaml
6-
runner = CliRunner(mix_stderr=False)
6+
runner = CliRunner()
77

88

99
def test_help() -> None:

0 commit comments

Comments
 (0)