Merge pull request 'chore: Python 3.12 is the floor (NAPALM/driver-standard#6)' (#9) from chore/python-312-floor into main
driver / standard (push) Successful in 18s
driver / lint (push) Successful in 12s
driver / types (push) Successful in 1m36s
driver / test (3.12) (push) Successful in 1m34s
driver / test (3.13) (push) Successful in 1m13s
driver / lowest (push) Successful in 29s
driver / build (push) Successful in 35s
driver / security (push) Successful in 1m13s
CI / driver (push) Successful in 3m18s
driver / publish (push) Skipped
driver / standard (push) Successful in 18s
driver / lint (push) Successful in 12s
driver / types (push) Successful in 1m36s
driver / test (3.12) (push) Successful in 1m34s
driver / test (3.13) (push) Successful in 1m13s
driver / lowest (push) Successful in 29s
driver / build (push) Successful in 35s
driver / security (push) Successful in 1m13s
CI / driver (push) Successful in 3m18s
driver / publish (push) Skipped
This commit was merged in pull request #9.
This commit is contained in:
commit
1bf8de4c23
5 files changed
+16
-13
No files matched your search
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
- Python 3.12 is the floor (`requires-python = ">=3.12"`): netOrk runs every driver
|
||||
on 3.12, so 3.10 and 3.11 are no longer tested (NAPALM/driver-standard#6).
|
||||
- The floor on napalm is 5.1: older releases import `pkg_resources`, which a Python
|
||||
3.12 venv no longer has.
|
||||
- The floor on PyYAML is 6.0.1: 6.0 has no Python 3.12 wheel and does not build there.
|
||||
|
||||
## [0.3.0] - 2026-10-23
|
||||
|
||||
The first release on PyPI.
|
||||
|
||||
@@ -57,7 +57,7 @@ Unverified assumptions, to be checked against real hardware:
|
||||
|
||||
## Install
|
||||
|
||||
Python 3.10 or later.
|
||||
Python 3.12 or later.
|
||||
|
||||
```bash
|
||||
pip install napalm-vmware
|
||||
|
||||
@@ -9,14 +9,12 @@ from __future__ import annotations
|
||||
|
||||
import time
|
||||
from collections.abc import Callable
|
||||
from typing import Any, TypeVar
|
||||
from typing import Any
|
||||
|
||||
from pyVmomi import vmodl
|
||||
|
||||
from napalm_vmware._plain import to_plain
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
_POLL_SECONDS = 0.5
|
||||
_FREE_LICENSE = (
|
||||
"the host runs the free vSphere Hypervisor license, which makes the "
|
||||
@@ -31,7 +29,7 @@ def fault_message(fault: dict[str, Any]) -> str:
|
||||
return fault.get("localizedMessage") or fault.get("msg") or fault.get("_type", "unknown fault")
|
||||
|
||||
|
||||
def invoke(call: Callable[..., T], *args: Any, **kwargs: Any) -> T:
|
||||
def invoke[T](call: Callable[..., T], *args: Any, **kwargs: Any) -> T:
|
||||
"""Run a vSphere call, re-raising any ``MethodFault`` as ``RuntimeError``."""
|
||||
try:
|
||||
return call(*args, **kwargs)
|
||||
|
||||
+5
-7
@@ -7,7 +7,7 @@ name = "napalm-vmware"
|
||||
version = "0.3.0"
|
||||
description = "NAPALM drivers for VMware ESXi hosts and vCenter Server (vSphere API via pyVmomi)"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
requires-python = ">=3.12"
|
||||
license = "Apache-2.0"
|
||||
authors = [
|
||||
{ name = "Christian Manivong", email = "christian@manivong.de" },
|
||||
@@ -19,8 +19,6 @@ classifiers = [
|
||||
"Intended Audience :: System Administrators",
|
||||
"Operating System :: OS Independent",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Topic :: System :: Networking",
|
||||
@@ -28,13 +26,13 @@ classifiers = [
|
||||
"Typing :: Typed",
|
||||
]
|
||||
dependencies = [
|
||||
"napalm>=5.0.0",
|
||||
"napalm>=5.1", # older releases import pkg_resources, which a 3.12 venv lacks
|
||||
"napalm-device-types>=4.21.1",
|
||||
"pyvmomi>=8.0.1",
|
||||
# Provisioning: download the image, write the NoCloud seed ISO and its YAML.
|
||||
"requests>=2.31",
|
||||
"pycdlib>=1.14",
|
||||
"PyYAML>=6.0",
|
||||
"PyYAML>=6.0.1", # 6.0 has no Python 3.12 wheel and does not build there
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
@@ -69,7 +67,7 @@ markers = [
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 100
|
||||
target-version = "py310"
|
||||
target-version = "py312"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "UP", "B"]
|
||||
@@ -79,7 +77,7 @@ select = ["E", "F", "I", "UP", "B"]
|
||||
"tests/**" = ["E501"]
|
||||
|
||||
[tool.mypy]
|
||||
python_version = "3.10"
|
||||
python_version = "3.12"
|
||||
strict = true
|
||||
# napalm itself is untyped, so every driver subclasses Any.
|
||||
disallow_subclassing_any = false
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ def test_lists_are_converted_elementwise():
|
||||
|
||||
|
||||
def test_datetime_becomes_epoch_seconds():
|
||||
when = datetime.datetime(2026, 1, 1, tzinfo=datetime.timezone.utc)
|
||||
when = datetime.datetime(2026, 1, 1, tzinfo=datetime.UTC)
|
||||
assert to_plain(when) == 1767225600.0
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user