diff --git a/tests/test_git_history_branches.py b/tests/test_git_history_branches.py new file mode 100644 index 0000000..bfd7c5b --- /dev/null +++ b/tests/test_git_history_branches.py @@ -0,0 +1,42 @@ +"""Additional branch-coverage tests for git_history defensive paths. + +These target lines the main test_git_history.py does not exercise: +- GitPython-absent guard (_require_gitpython raises) +- _push_repo warning path when no remote is configured + +NOTE: the bare-repo working-tree-None guards in save_config_snapshot / +rollback_config (git_history.py:255, :445) are NOT covered here. They are +currently unreachable: init_git_repo(bare=True) itself raises inside GitPython +before returning, so those guards are effectively dead code (see flagged bug). +""" + +from pathlib import Path + +import pytest + +from audnet.exceptions import GitHistoryError +from audnet import git_history +from audnet.git_history import _push_repo, init_git_repo + + +class TestRequireGitPython: + def test_raises_when_gitpython_missing(self, monkeypatch: pytest.MonkeyPatch) -> None: + # Simulate GitPython not being importable. + monkeypatch.setattr(git_history, "gitpython", None) + # Every public entrypoint goes through _require_gitpython(). + with pytest.raises(GitHistoryError, match="GitPython is not installed"): + git_history.init_git_repo(Path("/tmp/should-not-be-created")) + + +class TestPushRepoWarning: + def test_push_without_remote_logs_warning( + self, tmp_path: Path, caplog: pytest.LogCaptureFixture + ) -> None: + import logging + + repo_path = tmp_path / "git-repo" + repo = init_git_repo(repo_path) + # No remote configured -> _push_repo should swallow the error and warn. + with caplog.at_level(logging.WARNING, logger="audnet.git_history"): + _push_repo(repo, "origin") + assert any("Failed to push" in rec.message for rec in caplog.records) diff --git a/tests/test_netbox_inventory_branches.py b/tests/test_netbox_inventory_branches.py new file mode 100644 index 0000000..cf936ea --- /dev/null +++ b/tests/test_netbox_inventory_branches.py @@ -0,0 +1,185 @@ +"""Additional branch-coverage tests for the NetBox inventory source. + +Targets defensive branches not exercised by test_netbox_inventory.py: +- _same_origin mismatch paths (scheme / host) +- _normalize_device edge types (primary_ip weird type, audnet_ctx not a dict) +- pagination guards (_MAX_PAGES cap, off-origin next URL) +- non-JSON response body +- list-shaped response body +- "no valid devices could be built" error +""" + +import json +from typing import Any +from unittest.mock import MagicMock, patch + +import pytest + +from audnet.exceptions import ConfigError +from audnet.inventory_sources.netbox import ( + _normalize_device, + _same_origin, + fetch_netbox_devices, +) + + +def _resp(body: bytes) -> MagicMock: + mock_resp = MagicMock() + mock_resp.read.return_value = body + mock_resp.__enter__ = MagicMock(return_value=mock_resp) + mock_resp.__exit__ = MagicMock(return_value=False) + cm = MagicMock() + cm.return_value = mock_resp + return cm + + +def _page(devices: list[dict[str, Any]], next_url: str | None = None) -> bytes: + return json.dumps({"count": len(devices), "results": devices, "next": next_url}).encode() + + +# --------------------------------------------------------------------------- +# _same_origin +# --------------------------------------------------------------------------- + + +class TestSameOrigin: + def test_non_http_scheme_returns_false(self) -> None: + assert _same_origin("https://nb.example.com", "ftp://nb.example.com") is False + + def test_scheme_mismatch_returns_false(self) -> None: + assert _same_origin("https://nb.example.com", "http://nb.example.com") is False + + def test_host_mismatch_returns_false(self) -> None: + assert _same_origin("https://nb.example.com", "https://other.example.com") is False + + def test_port_mismatch_returns_false(self) -> None: + assert _same_origin("https://nb.example.com:8443", "https://nb.example.com") is False + + def test_same_origin_returns_true(self) -> None: + assert _same_origin("https://nb.example.com", "https://nb.example.com/api/") is True + + +# --------------------------------------------------------------------------- +# _normalize_device edge types +# --------------------------------------------------------------------------- + + +class TestNormalizeDeviceEdges: + def test_weird_primary_ip_type_yields_empty_host(self) -> None: + raw = { + "name": "rtr01", + "primary_ip": 12345, # neither dict nor str + "platform": {"slug": "ios"}, + } + kw = _normalize_device(raw) + assert kw["host"] == "" + + def test_audnet_ctx_not_a_dict_falls_back(self) -> None: + raw = { + "name": "rtr01", + "primary_ip": {"address": "10.0.0.1/24"}, + "platform": {"slug": "ios"}, + "config_context": {"audnet": "not-a-dict"}, + } + kw = _normalize_device(raw) + # Without a real audnet dict, username falls back to default "admin". + assert kw["username"] == "admin" + + +# --------------------------------------------------------------------------- +# fetch_netbox_devices defensive paths +# --------------------------------------------------------------------------- + + +class TestFetchNetboxBranches: + @patch("audnet.inventory_sources.netbox.urlopen") + def test_non_json_response_raises(self, mock_urlopen: MagicMock) -> None: + mock_urlopen.side_effect = _resp(b"oops") + with pytest.raises(ConfigError, match="non-JSON"): + fetch_netbox_devices("https://nb.example.com", token="t") + + @patch("audnet.inventory_sources.netbox.urlopen") + def test_list_shaped_body_extends(self, mock_urlopen: MagicMock) -> None: + # NetBox can return a bare list instead of an envelope. + body = json.dumps( + [ + { + "name": "rtr01", + "primary_ip": {"address": "10.0.0.1/24"}, + "platform": {"slug": "ios"}, + } + ] + ).encode() + mock_urlopen.side_effect = _resp(body) + devices = fetch_netbox_devices("https://nb.example.com", token="t") + assert len(devices) == 1 + assert devices[0].name == "rtr01" + + @patch("audnet.inventory_sources.netbox.urlopen") + def test_no_valid_devices_raises(self, mock_urlopen: MagicMock) -> None: + # All returned devices are invalid -> "No valid devices" error. + bad = [ + {"name": "x", "primary_ip": None, "platform": None}, + {"name": "y", "primary_ip": None, "platform": None}, + ] + mock_urlopen.side_effect = _resp(_page(bad)) + with pytest.raises(ConfigError, match="No valid devices"): + fetch_netbox_devices("https://nb.example.com", token="t") + + @patch("audnet.inventory_sources.netbox.urlopen") + def test_off_origin_next_url_rejected(self, mock_urlopen: MagicMock) -> None: + first = _page( + [ + { + "name": "rtr01", + "primary_ip": {"address": "10.0.0.1/24"}, + "platform": {"slug": "ios"}, + } + ], + next_url="https://evil.example.com/api/dcim/devices/?limit=50", + ) + mock_urlopen.side_effect = _resp(first) + with pytest.raises(ConfigError, match="off-origin"): + fetch_netbox_devices("https://nb.example.com", token="t") + + @patch("audnet.inventory_sources.netbox.urlopen") + def test_pagination_exceeds_max_pages(self, mock_urlopen: MagicMock) -> None: + # Every page points back to the same on-origin URL -> loops until the + # _MAX_PAGES cap is hit. + body = _page( + [ + { + "name": "rtr01", + "primary_ip": {"address": "10.0.0.1/24"}, + "platform": {"slug": "ios"}, + } + ], + next_url="https://nb.example.com/api/dcim/devices/?limit=50&offset=50", + ) + mock_urlopen.side_effect = _resp(body) + with pytest.raises(ConfigError, match="pagination exceeded"): + fetch_netbox_devices("https://nb.example.com", token="t") + + @patch("audnet.inventory_sources.netbox.urlopen") + def test_allow_http_env_flag_suppresses_warning_path(self, mock_urlopen: MagicMock) -> None: + # http:// URL with AUDNET_NETBOX_ALLOW_HTTP set should fetch without + # raising (exercises the env-flag branch instead of the warning branch). + mock_urlopen.side_effect = _resp( + _page( + [ + { + "name": "rtr01", + "primary_ip": {"address": "10.0.0.1/24"}, + "platform": {"slug": "ios"}, + } + ] + ) + ) + import os + + os.environ["AUDNET_NETBOX_ALLOW_HTTP"] = "1" + try: + devices = fetch_netbox_devices("http://nb.example.com", token="t") + assert len(devices) == 1 + finally: + del os.environ["AUDNET_NETBOX_ALLOW_HTTP"] diff --git a/tests/test_realtime_branches.py b/tests/test_realtime_branches.py new file mode 100644 index 0000000..7768fbd --- /dev/null +++ b/tests/test_realtime_branches.py @@ -0,0 +1,165 @@ +"""Additional branch-coverage tests for the real-time listener module. + +Targets defensive / branch paths not exercised by test_realtime.py: +- AlertManager.send_alert dry_run suppression +- AlertManager._get_client lazy creation + close() +- aiosmtplib-unavailable guard in _send_email +- pysnmp-unavailable guard in SnmpTrapReceiver +- _on_snmp_trap callback (sync + async on_trap) +- _handle_change baseline-enrichment path (pass + fail compliance) +""" + +from typing import Any +from unittest.mock import AsyncMock, MagicMock, patch + +import asyncio +import pytest + +from audnet.models import Device +from audnet.realtime import ( + AlertConfig, + AlertManager, + ChangeEvent, + RealtimeListener, + SnmpTrapReceiver, +) + + +def _event(**kw: Any) -> ChangeEvent: + base = dict( + device_name="rtr01", + source_ip="10.0.0.1", + event_type="syslog", + timestamp=1234567890.0, + raw_message="%SYS-5-CONFIG: changed", + change_summary="config changed", + ) + base.update(kw) + return ChangeEvent(**base) + + +class TestSendAlertDryRun: + @pytest.mark.asyncio + async def test_dry_run_suppresses_alert(self) -> None: + config = AlertConfig(dry_run=True) + manager = AlertManager(config) + await manager.send_alert(_event()) + # dry_run returns before incrementing the counter + assert manager._alert_count == 0 + + +class TestClientLifecycle: + @pytest.mark.asyncio + async def test_get_client_lazy_creation_and_close(self) -> None: + config = AlertConfig(webhook_url="https://hooks.example.com/audit") + manager = AlertManager(config) + # _get_client creates the httpx client on first call (line 146) + client = await manager._get_client() + assert client is not None + assert manager._httpx_client is client + # close() releases it (lines 159-160) + await manager.close() + assert manager._httpx_client is None + + +class TestSendEmailGuards: + @pytest.mark.asyncio + async def test_email_skipped_without_from(self) -> None: + config = AlertConfig(smtp_host="smtp.example.com", email_to=["ops@example.com"]) + manager = AlertManager(config) + # No email_from -> returns immediately (line 287-288) + await manager._send_email(_event()) + + @pytest.mark.asyncio + async def test_email_skipped_when_aiosmtplib_unavailable(self) -> None: + config = AlertConfig( + smtp_host="smtp.example.com", + email_from="audnet@example.com", + email_to=["ops@example.com"], + ) + manager = AlertManager(config) + with patch("audnet.realtime._AIOSMTPLIB_AVAILABLE", False): + # Should log error and return without raising (lines 290-292) + await manager._send_email(_event()) + + +class TestSnmpTrapReceiverGuard: + def test_raises_when_pysnmp_unavailable(self) -> None: + config = AlertConfig() + with patch("audnet.realtime._PYSNMP_AVAILABLE", False): + with pytest.raises(ImportError, match="pysnmp"): + SnmpTrapReceiver(config, lambda *a: None, {}) + + +class TestOnSnmpTrap: + @pytest.mark.asyncio + async def test_on_snmp_trap_schedules_alert(self) -> None: + config = AlertConfig() + manager = AlertManager(config) + listener = RealtimeListener(config, manager, {}) + # _on_snmp_trap builds a ChangeEvent and schedules _handle_change, + # which (no baseline) forwards to send_alert -> alert counter bumps. + listener._on_snmp_trap("rtr01", "10.0.0.1", "linkDown") + await asyncio.sleep(0.1) + assert manager._alert_count == 1 + + @pytest.mark.asyncio + async def test_on_snmp_trap_runs_with_baseline(self) -> None: + config = AlertConfig() + manager = AlertManager(config) + device = Device(name="rtr01", host="10.0.0.1", username="admin", password="x") + listener = RealtimeListener(config, manager, {"rtr01": device}, baseline={"rtr01": {}}) + fake_snapshot = MagicMock() + fake_snapshot.collection_error = None + with patch( + "audnet.collector_async.collect_device_async", + new=AsyncMock(return_value=fake_snapshot), + ): + listener._on_snmp_trap("rtr01", "10.0.0.1", "linkDown") + await asyncio.sleep(0.1) + assert manager._alert_count == 1 + + +async def _await_pending() -> None: + import asyncio + + await asyncio.sleep(0.05) + + +class TestHandleChangeBaseline: + @pytest.mark.asyncio + async def test_enriches_with_compliance_results(self) -> None: + config = AlertConfig() + manager = AlertManager(config) + device = Device(name="rtr01", host="10.0.0.1", username="admin", password="x") + listener = RealtimeListener(config, manager, {"rtr01": device}, baseline={"rtr01": {}}) + + fake_snapshot = MagicMock() + fake_snapshot.collection_error = None + fake_results = [ + MagicMock(check_name="ssh_v2_only", passed=True, severity="high", detail="ok"), + MagicMock(check_name="strong_crypto", passed=False, severity="high", detail="weak"), + ] + with patch( + "audnet.collector_async.collect_device_async", + new=AsyncMock(return_value=fake_snapshot), + ): + with patch("audnet.compliance.run_checks", return_value=fake_results): + event = _event() + await listener._handle_change(event) + + assert event.compliance_results # enriched + # At least one failing check -> severity escalated to high + assert event.severity == "high" + await manager.send_alert(event) + assert manager._alert_count == 1 + + @pytest.mark.asyncio + async def test_skips_enrichment_when_device_unknown(self) -> None: + config = AlertConfig() + manager = AlertManager(config) + listener = RealtimeListener(config, manager, {}, baseline={"rtr01": {}}) + event = _event(device_name="unknown-rtr") + # device not in inventory -> baseline enrichment branch skipped + await listener._handle_change(event) + assert event.compliance_results == [] diff --git a/tests/test_vendor_registry_snmp.py b/tests/test_vendor_registry_snmp.py new file mode 100644 index 0000000..10ced1d --- /dev/null +++ b/tests/test_vendor_registry_snmp.py @@ -0,0 +1,106 @@ +"""Tests for the SNMP-based vendor auto-detection path in vendor_registry. + +NOTE: these unit tests isolate the external SNMP transport +(``pysnmp.hlapi.asyncio.UdpTransportTarget``) because the project's current +call signature is incompatible with pysnmp 7.x (see flagged issue). The tests +exercise ``detect_vendor_snmp``'s branching logic, not the live transport. +""" + +from typing import Any + +import pysnmp.hlapi.asyncio as _asyncio_hlapi +from _pytest.monkeypatch import MonkeyPatch + +from audnet.vendor_registry import detect_vendor_snmp + +# A pysnmp hlapi 4-tuple: (errorIndication, errorStatus, errorIndex, varBinds). +_SnmpResult = tuple[Any, Any, Any, list[tuple[Any, Any]]] + + +class _DummyTransportTarget: + """Stand-in for UdpTransportTarget so the code under test can run without + hitting the pysnmp 7.x constructor incompatibility. Accepts the same + call shape the project uses: ``UdpTransportTarget((host, port), timeout=, retries=)``.""" + + def __init__(self, address: Any, timeout: float = 1, retries: int = 5, **_kwargs: Any) -> None: + self.address = address + + +def _patch_snmp( + monkeypatch: MonkeyPatch, + get_cmd_result: _SnmpResult | None = None, + raise_exc: Exception | None = None, +) -> None: + """Patch the in-function imports used by ``detect_vendor_snmp``. + + Either ``get_cmd_result`` (a pysnmp 4-tuple) is returned when awaited, or + ``raise_exc`` is raised when the (mocked) get_cmd is invoked. + """ + + async def _fake_get_cmd(*_args: Any, **_kwargs: Any) -> _SnmpResult: + if raise_exc is not None: + raise raise_exc + assert get_cmd_result is not None + return get_cmd_result + + monkeypatch.setattr(_asyncio_hlapi, "get_cmd", _fake_get_cmd) + monkeypatch.setattr(_asyncio_hlapi, "UdpTransportTarget", _DummyTransportTarget) + + +class TestDetectVendorSnmp: + async def test_detects_cisco_ios_from_sys_descr(self, monkeypatch: MonkeyPatch) -> None: + var_binds: list[tuple[Any, Any]] = [(object(), "Cisco IOS Software, Version 15.2")] + _patch_snmp(monkeypatch, get_cmd_result=(None, 0, 0, var_binds)) + assert await detect_vendor_snmp("10.0.0.1") == "cisco_ios" + + async def test_detects_arista_eos_from_sys_descr(self, monkeypatch: MonkeyPatch) -> None: + var_binds = [(object(), "Arista Networks EOS")] + _patch_snmp(monkeypatch, get_cmd_result=(None, 0, 0, var_binds)) + assert await detect_vendor_snmp("10.0.0.1") == "arista_eos" + + async def test_detects_juniper_from_sys_descr(self, monkeypatch: MonkeyPatch) -> None: + var_binds = [(object(), "Juniper Networks, Inc. JUNOS")] + _patch_snmp(monkeypatch, get_cmd_result=(None, 0, 0, var_binds)) + assert await detect_vendor_snmp("10.0.0.1") == "juniper_junos" + + async def test_falls_back_on_error_indication(self, monkeypatch: MonkeyPatch) -> None: + _patch_snmp(monkeypatch, get_cmd_result=("timeout", 0, 0, [])) + assert await detect_vendor_snmp("10.0.0.1") == "cisco_ios" + + async def test_falls_back_on_error_status(self, monkeypatch: MonkeyPatch) -> None: + _patch_snmp(monkeypatch, get_cmd_result=(None, 1, 1, [])) + assert await detect_vendor_snmp("10.0.0.1") == "cisco_ios" + + async def test_empty_var_binds_falls_back(self, monkeypatch: MonkeyPatch) -> None: + # var_binds list present but empty -> for-loop body never runs -> + # trailing `return _DEFAULT_VENDOR` (line 380) is covered. + _patch_snmp(monkeypatch, get_cmd_result=(None, 0, 0, [])) + assert await detect_vendor_snmp("10.0.0.1") == "cisco_ios" + + async def test_falls_back_when_get_cmd_raises(self, monkeypatch: MonkeyPatch) -> None: + _patch_snmp(monkeypatch, raise_exc=RuntimeError("transport down")) + assert await detect_vendor_snmp("10.0.0.1") == "cisco_ios" + + async def test_falls_back_when_pysnmp_unavailable(self, monkeypatch: MonkeyPatch) -> None: + # The top-level `from pysnmp.hlapi.asyncio import (...)` ImportError + # branch (lines 343-348) -> returns _DEFAULT_VENDOR. + real_import = __import__ + + def _blocked_import(name: str, *args: Any, **kwargs: Any) -> Any: + if name == "pysnmp.hlapi.asyncio": + raise ImportError("no pysnmp") + return real_import(name, *args, **kwargs) + + monkeypatch.setattr("builtins.__import__", _blocked_import) + assert await detect_vendor_snmp("10.0.0.1") == "cisco_ios" + + async def test_pysnmp_4x_getcmd_fallback(self, monkeypatch: MonkeyPatch) -> None: + # Remove `get_cmd` so `from ... import get_cmd` raises ImportError, + # exercising the pysnmp 4.x `getCmd` fallback branch (lines 350-353). + async def _fake_getCmd(*_args: Any, **_kwargs: Any) -> _SnmpResult: + return (None, 0, 0, [(object(), "Cisco IOS Software")]) + + monkeypatch.delattr(_asyncio_hlapi, "get_cmd", raising=False) + monkeypatch.setattr(_asyncio_hlapi, "getCmd", _fake_getCmd, raising=False) + monkeypatch.setattr(_asyncio_hlapi, "UdpTransportTarget", _DummyTransportTarget) + assert await detect_vendor_snmp("10.0.0.1") == "cisco_ios" diff --git a/tests/test_version.py b/tests/test_version.py index 201f81d..69effea 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,5 +1,8 @@ """Tests for the version module.""" +import importlib + +import audnet from audnet import __version__ @@ -9,3 +12,23 @@ def test_version_is_string(self): def test_version_not_empty(self): assert len(__version__) > 0 + + def test_version_falls_back_when_package_missing(self, monkeypatch): + """When audnet is not installed (PackageNotFoundError), __init__ falls + back to a sentinel version instead of raising at import time.""" + + import importlib.metadata as importlib_metadata + + def _boom(_name): + from importlib.metadata import PackageNotFoundError + + raise PackageNotFoundError("audnet") + + monkeypatch.setattr(importlib_metadata, "version", _boom) + reloaded = importlib.reload(audnet) + try: + assert reloaded.__version__ == "0.0.0+unknown" + finally: + # Restore the real version so other tests are unaffected. + monkeypatch.undo() + importlib.reload(audnet) diff --git a/uv.lock b/uv.lock index 370dd8d..b6c8e2a 100644 --- a/uv.lock +++ b/uv.lock @@ -29,14 +29,14 @@ name = "aiohttp" version = "3.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aiohappyeyeballs", marker = "python_full_version < '3.15'" }, - { name = "aiosignal", marker = "python_full_version < '3.15'" }, - { name = "attrs", marker = "python_full_version < '3.15'" }, - { name = "frozenlist", marker = "python_full_version < '3.15'" }, - { name = "multidict", marker = "python_full_version < '3.15'" }, - { name = "propcache", marker = "python_full_version < '3.15'" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, - { name = "yarl", marker = "python_full_version < '3.15'" }, + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "typing-extensions" }, + { name = "yarl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/82/78/8ea7308cac6934de8c74a14f3d5f65d1c89287426688be79538d0e5c013d/aiohttp-3.14.1.tar.gz", hash = "sha256:307f2cff90a764d329e77040603fa032db89c5c24fdad50c4c15334cba744035", size = 7955794, upload-time = "2026-06-07T21:09:35.529Z" } wheels = [ @@ -117,8 +117,8 @@ name = "aiosignal" version = "1.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "frozenlist", marker = "python_full_version < '3.15'" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "frozenlist" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } wheels = [ @@ -589,10 +589,10 @@ name = "ciscoisesdk" version = "0.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "fastjsonschema", marker = "python_full_version < '3.15'" }, - { name = "future", marker = "python_full_version < '3.15'" }, - { name = "requests", marker = "python_full_version < '3.15'" }, - { name = "requests-toolbelt", marker = "python_full_version < '3.15'" }, + { name = "fastjsonschema" }, + { name = "future" }, + { name = "requests" }, + { name = "requests-toolbelt" }, ] sdist = { url = "https://files.pythonhosted.org/packages/65/bf/73f555de43c3b10b83d67f95a82c2401792ae40a882b52652a90c75ca931/ciscoisesdk-0.1.1.tar.gz", hash = "sha256:6664e83739443badc2f2b13a4cc8c794a44376b6fee5fb76222274e7da2b07b6", size = 165026, upload-time = "2021-05-10T16:04:47.886Z" } wheels = [ @@ -811,7 +811,7 @@ name = "f5-icontrol-rest" version = "1.3.13" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "requests", marker = "python_full_version < '3.15'" }, + { name = "requests" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e0/44/91979de0a81253d025a0814f16f53df46d3ed3edd5b9fd7181f28a9dd0bb/f5-icontrol-rest-1.3.13.tar.gz", hash = "sha256:49fffd999fb4971d6754beb0e066051175db9d9baeb8a76fca6c801dacc89359", size = 12950, upload-time = "2019-04-10T21:47:57.02Z" } @@ -918,18 +918,18 @@ name = "genie" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "dill", marker = "python_full_version < '3.15'" }, - { name = "genie-libs-clean", marker = "python_full_version < '3.15'" }, - { name = "genie-libs-conf", marker = "python_full_version < '3.15'" }, - { name = "genie-libs-filetransferutils", marker = "python_full_version < '3.15'" }, - { name = "genie-libs-health", marker = "python_full_version < '3.15'" }, - { name = "genie-libs-ops", marker = "python_full_version < '3.15'" }, - { name = "genie-libs-parser", marker = "python_full_version < '3.15'" }, - { name = "genie-libs-sdk", marker = "python_full_version < '3.15'" }, - { name = "jsonpickle", marker = "python_full_version < '3.15'" }, - { name = "netaddr", marker = "python_full_version < '3.15'" }, - { name = "prettytable", marker = "python_full_version < '3.15'" }, - { name = "tqdm", marker = "python_full_version < '3.15'" }, + { name = "dill" }, + { name = "genie-libs-clean" }, + { name = "genie-libs-conf" }, + { name = "genie-libs-filetransferutils" }, + { name = "genie-libs-health" }, + { name = "genie-libs-ops" }, + { name = "genie-libs-parser" }, + { name = "genie-libs-sdk" }, + { name = "jsonpickle" }, + { name = "netaddr" }, + { name = "prettytable" }, + { name = "tqdm" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/7d/98/e1109ccba4d852d7d0f64276940368addccb3c061e549c719af6692236f4/genie-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:fb53f642154f70bb51ded8ec60a3b810e5412716a1a83213bdaf5e3e248f3bc5", size = 10200518, upload-time = "2026-05-28T20:12:49.755Z" }, @@ -948,9 +948,9 @@ name = "genie-libs-clean" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "genie", marker = "python_full_version < '3.15'" }, - { name = "setuptools", marker = "python_full_version < '3.15'" }, - { name = "wheel", marker = "python_full_version < '3.15'" }, + { name = "genie" }, + { name = "setuptools" }, + { name = "wheel" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/d8/2d/600819f478707a0e15aa6379c4c083e5ed0e42bc066f70c897d43e0bd240/genie_libs_clean-26.5-py3-none-any.whl", hash = "sha256:16e1c09918203c98f3ae2c4775c2e5a20d27a8143799c00e124496c1f8483d4d", size = 531714, upload-time = "2026-05-28T19:34:56.138Z" }, @@ -969,10 +969,10 @@ name = "genie-libs-filetransferutils" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "asyncssh", marker = "python_full_version < '3.15'" }, - { name = "pyftpdlib", marker = "python_full_version < '3.15'" }, - { name = "tftpy", marker = "python_full_version < '3.15'" }, - { name = "unicon", marker = "python_full_version < '3.15'" }, + { name = "asyncssh" }, + { name = "pyftpdlib" }, + { name = "tftpy" }, + { name = "unicon" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/4f/ed/7c93e5067cb6bbea248eceaeee7d540b4eb1775a63a3365555580cf110b2/genie_libs_filetransferutils-26.5-py3-none-any.whl", hash = "sha256:0b35a6c8fa3de690f50013ea289e34f812d43298c4548f22aa51b8a21802ef97", size = 116074, upload-time = "2026-05-28T19:34:58.763Z" }, @@ -983,9 +983,9 @@ name = "genie-libs-health" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "genie", marker = "python_full_version < '3.15'" }, - { name = "setuptools", marker = "python_full_version < '3.15'" }, - { name = "wheel", marker = "python_full_version < '3.15'" }, + { name = "genie" }, + { name = "setuptools" }, + { name = "wheel" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/63/c3/061f0f11898d0a46c37b7e9ac260aa166944dc595081688cb36a7c41de49/genie_libs_health-26.5-py3-none-any.whl", hash = "sha256:7ae9b9f17ee316cd7e2814a2e07d4f4fb8f63252eaf2899395810a4637c94002", size = 21870, upload-time = "2026-05-28T19:34:59.837Z" }, @@ -1004,7 +1004,7 @@ name = "genie-libs-parser" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "xmltodict", marker = "python_full_version < '3.15'" }, + { name = "xmltodict" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/52/a2/0fdc233e265361539af59a4aaac32107a7613c06f0109eb29062b92b7e6b/genie_libs_parser-26.5-py3-none-any.whl", hash = "sha256:2e7bae659c58ef6ce4225395b1aefc35861435dc26154f6ab8bee8ddcc63fcb7", size = 13268286, upload-time = "2026-05-28T19:35:02.57Z" }, @@ -1015,13 +1015,13 @@ name = "genie-libs-sdk" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyasn1", version = "0.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.15'" }, - { name = "pysnmp", version = "7.1.22", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.15'" }, - { name = "pyvmomi", marker = "python_full_version < '3.15'" }, - { name = "rest-connector", marker = "python_full_version < '3.15'" }, - { name = "ruamel-yaml", marker = "python_full_version < '3.15'" }, - { name = "ruamel-yaml-clib", marker = "python_full_version < '3.15'" }, - { name = "yang-connector", marker = "python_full_version < '3.15'" }, + { name = "pyasn1", version = "0.6.0", source = { registry = "https://pypi.org/simple" } }, + { name = "pysnmp", version = "7.1.22", source = { registry = "https://pypi.org/simple" } }, + { name = "pyvmomi" }, + { name = "rest-connector" }, + { name = "ruamel-yaml" }, + { name = "ruamel-yaml-clib" }, + { name = "yang-connector" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/4e/1c/78efd2a9955a11f717e590d577934ff791edb18a149d0d57464692836983/genie_libs_sdk-26.5-py3-none-any.whl", hash = "sha256:11bcf131d8bc72c9b401fe507ba1e0579b8839b9dbee8a4e0cea2a8be156e78e", size = 6590598, upload-time = "2026-05-28T19:35:07.237Z" }, @@ -1056,7 +1056,7 @@ name = "grpcio" version = "1.81.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.15'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b0/b5/1ff353970a87eda4c98251e34d2dfd214abd4982dc89119c9252a2a482d2/grpcio-1.81.1.tar.gz", hash = "sha256:6fa10a767143a5e82e8eaab53918af0cd8909a57a27f8cb2288b80a613ac671b", size = 13026582, upload-time = "2026-06-11T12:46:51.673Z" } wheels = [ @@ -1185,7 +1185,7 @@ name = "junit-xml" version = "1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "six", marker = "python_full_version < '3.15'" }, + { name = "six" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/af/bc988c914dd1ea2bc7540ecc6a0265c2b6faccc6d9cdb82f20e2094a8229/junit-xml-1.9.tar.gz", hash = "sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f", size = 7349, upload-time = "2023-01-24T18:42:00.836Z" } wheels = [ @@ -1418,54 +1418,54 @@ wheels = [ [[package]] name = "msgpack" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/92/23/6139781ca7aadf656fa8e384fa84693ffb13f299e6931b6526427fe5e297/msgpack-1.2.0.tar.gz", hash = "sha256:8e17af38197bf58e7e819041678f6178f4491493f5b8c8580414f40f7c2c3c41", size = 183017, upload-time = "2026-06-11T04:16:10.775Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/07/dcb13f37e670257c8d0e944f116c799c34ac6968ecb48c83619f7e91d8b5/msgpack-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2d6047ccd11a12c96a69f2bfe026471abef67334c3d0494a93e5310e45140a2", size = 82888, upload-time = "2026-06-11T04:15:08.992Z" }, - { url = "https://files.pythonhosted.org/packages/84/5f/6643b2a6a36ca4bc73c7674831be1d4d581cceecc7eb019dba1915951739/msgpack-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0347e3ac0dfee99086d3b68fe959da3f5f657c0019ddbaeaaa259a85f8603422", size = 82223, upload-time = "2026-06-11T04:15:10.182Z" }, - { url = "https://files.pythonhosted.org/packages/2c/c8/9e1668b9897358e5ab39a18142e38be3cf15807e643757782da9f4a53cb3/msgpack-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25552ff1f2ff3dc8333e27eabb94f702da5929ed0e07969688194a3e9f12e151", size = 409700, upload-time = "2026-06-11T04:15:11.441Z" }, - { url = "https://files.pythonhosted.org/packages/38/ed/b7728573156d70b6b094233b0f38d876fc37340826cf852347ec2c7ca8ca/msgpack-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0d94420d9d52c56568159a69200af7e45eadb29615fa9d09fada140de1c38c7", size = 420090, upload-time = "2026-06-11T04:15:12.868Z" }, - { url = "https://files.pythonhosted.org/packages/3f/f7/5ea755a89868c04f9cdf6d96d2d99da4b3d198af10e76a6082dd0fceccc0/msgpack-1.2.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d16e1f2db4a9eebc07b7cc91898d71e710f2eed8358711a605fee802caff8923", size = 378538, upload-time = "2026-06-11T04:15:14.511Z" }, - { url = "https://files.pythonhosted.org/packages/80/2d/126e59332a439c94ffd682c38ca0102b23480e2784b3dac48d8959b0bbac/msgpack-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9cb2e700e85f1e27bbb5c9de6cc1c9a4bc5ac64d5404bdcbcb37a0dc7a947a3", size = 399468, upload-time = "2026-06-11T04:15:16.133Z" }, - { url = "https://files.pythonhosted.org/packages/da/f9/7abcef683a0ad2e5ab3a4940344aad9f20cdf1f42057ecb0982cf55085d6/msgpack-1.2.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:717d0b166dd176a5f786aeafff081f6439680acf5af193eb63e6266c12b04d3d", size = 374212, upload-time = "2026-06-11T04:15:17.536Z" }, - { url = "https://files.pythonhosted.org/packages/27/23/2d62cf0e971678e96f8a3cfa9bd77fb719ddb98da73790f63c53fd847ad8/msgpack-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e87c7a21654d18111eb1a89bd5c42baba42e61887365d9e89585e112b4203f9e", size = 414361, upload-time = "2026-06-11T04:15:18.99Z" }, - { url = "https://files.pythonhosted.org/packages/32/fb/f5c153f614037aaf802d291a4653ba1bb731f56feacba886f7c21c109e56/msgpack-1.2.0-cp312-cp312-win32.whl", hash = "sha256:967e0c891f5f23ab65762f2e5dc95922759c79f1ef99ef4c7e1fdd863e0d0af9", size = 64389, upload-time = "2026-06-11T04:15:20.237Z" }, - { url = "https://files.pythonhosted.org/packages/90/af/8aafce6e5544b43b84cb670aca40c8bea7eb5ae8f42bfcbdc7098739987a/msgpack-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:6c23e33cee28dcffa112ae205661da4636fd7b06bd9ad1559a890623b92d060b", size = 71185, upload-time = "2026-06-11T04:15:21.51Z" }, - { url = "https://files.pythonhosted.org/packages/ba/08/9cc94be1fc1fe3d1379d439326259aef0344274f64623a8138feb54dff68/msgpack-1.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:6eeb771571f63f68045433b1a35c0256b946f31ed62f006997e40b8ad8b735af", size = 64481, upload-time = "2026-06-11T04:15:22.639Z" }, - { url = "https://files.pythonhosted.org/packages/7d/26/2902c6946ab5c8fe1e46e40842dfc32b8824464ad5cd4725364fd83f7a58/msgpack-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3a1d30df1f302f2b7a7404afbac2ab76d510036c34cf34dffb01f704a7288e45", size = 82621, upload-time = "2026-06-11T04:15:23.844Z" }, - { url = "https://files.pythonhosted.org/packages/c9/59/7e6b812629d2f919e586041bffc130e1af32079f71bb20699eed54ed6d92/msgpack-1.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:581e317112260d8ca488d490cad9290a5682276f309c41c7de237a85ed8799c8", size = 81866, upload-time = "2026-06-11T04:15:25.032Z" }, - { url = "https://files.pythonhosted.org/packages/31/13/8c291196e60aafdbae38f482205d79432297749ac5d412fe638154fb6f1d/msgpack-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6827d12eacc16873eba62408a1b7bbe8ecfb4a8f7ed78a631ae9bae6ad43cf2", size = 405618, upload-time = "2026-06-11T04:15:26.235Z" }, - { url = "https://files.pythonhosted.org/packages/fb/63/68f5d0ea81e167db5f59ddb94dc6f837667062113feff1c73fabf8907061/msgpack-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a186027e4279efa4c8bf06ce30605498d7d0d3af0fba0b9799dce85a3fd4a93c", size = 416468, upload-time = "2026-06-11T04:15:27.732Z" }, - { url = "https://files.pythonhosted.org/packages/73/58/567dddf5c5a2790f673bcd7d80c83466d68e5ee9a9674ebca3db8101c0c8/msgpack-1.2.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a96142c14a11cf1a509e8b9aaf72858a3b742b7613e095ce646913e88ce7bd99", size = 374464, upload-time = "2026-06-11T04:15:29.286Z" }, - { url = "https://files.pythonhosted.org/packages/0d/30/0c2342fc9092e4498045f5f60bca6ccbe4f4d87789778c2300e6fd6efe82/msgpack-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:50c220579b68a6085b95408b2eaa486b259520f55d8e363ddc9b5d7ba5a6ac6d", size = 395879, upload-time = "2026-06-11T04:15:30.973Z" }, - { url = "https://files.pythonhosted.org/packages/b9/11/9565b29b58ce3c33e177b490478b7aaeb8f726ecaaeda26d815893c1db5a/msgpack-1.2.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:4dcb9d12ab100ecacdfaaf37a3d72fe8392eacc7054afc1916b12d1b747c8446", size = 371749, upload-time = "2026-06-11T04:15:32.418Z" }, - { url = "https://files.pythonhosted.org/packages/f2/da/7bade19d60b73e2ef73fb76aaf4504c112a70cb760951b7202a0c64b5111/msgpack-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a804727188ab0ebb237fadb303b743f04925a69d8c3247292d1e33e679767c15", size = 410416, upload-time = "2026-06-11T04:15:34.053Z" }, - { url = "https://files.pythonhosted.org/packages/6d/14/c0c619571c02432208a5977a8dbdd3fc65fe1369f8226ca4b6d08cca87d8/msgpack-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1a1ac6ae1fe23298f79380e7b144c8a454e5d05616b0096584f353ba2d750114", size = 64357, upload-time = "2026-06-11T04:15:35.535Z" }, - { url = "https://files.pythonhosted.org/packages/50/a5/de06718460909aa965737fec4cfe8a15dedc6544a8c55feeb6956fa0d6e3/msgpack-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:1c3c80949d79578f9dc85fd9fb91edfe6694e8a729cd5744634d59d8455fdde3", size = 71057, upload-time = "2026-06-11T04:15:36.83Z" }, - { url = "https://files.pythonhosted.org/packages/c7/52/73446b0141c94a856e22b787c56709c0815fc34f185326577e15b26d8cfe/msgpack-1.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:fcf8f76fa587c2395fd0057c7232dbf071241f9ad280b235adb7ab585289989e", size = 64490, upload-time = "2026-06-11T04:15:38.001Z" }, - { url = "https://files.pythonhosted.org/packages/35/3d/a7e3cdafa8c0cf36c81e2fa848ec4d30cf089459af45b390ad03f9ce6f49/msgpack-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f854fa1a8b55d75d82ef9a905d9cdbeffdf7897c088f6020bd221867da5e56a5", size = 83032, upload-time = "2026-06-11T04:15:39.38Z" }, - { url = "https://files.pythonhosted.org/packages/ca/aa/53ddfba0e347cc4b484e95f629c5850b9e800ca8390c91ffc604407acf87/msgpack-1.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e90df581f80f53b372d5d9d9349078d729851a3a0d0bd74f53ccb598d01e45b8", size = 82600, upload-time = "2026-06-11T04:15:40.609Z" }, - { url = "https://files.pythonhosted.org/packages/59/fd/e64c2c776e6dbad0af3c963fe0c0dd1ee1ba09efac478b233ab1db41868f/msgpack-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b276ed50d8ac75d1f134a433ae79af8557d0fa25ee5b4737da533dfc2ce382e8", size = 404342, upload-time = "2026-06-11T04:15:41.87Z" }, - { url = "https://files.pythonhosted.org/packages/1b/60/fb9a08e6ccba882dfd370a5837fe3a07572938fdfe954f0f17fdf3e574b9/msgpack-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:544d972459c92aa32e63b800d07c2d9cf2734a3be29cee3a0b478a622850e9f5", size = 412351, upload-time = "2026-06-11T04:15:43.253Z" }, - { url = "https://files.pythonhosted.org/packages/37/4d/df5c575c274fedc68ac9c6c61d045161899efad2afcdc25138efa7edde69/msgpack-1.2.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a070147cc2cf6b8a891734e0f5c8fe8f70ed8739ab30ba140b058005a6e86af4", size = 373331, upload-time = "2026-06-11T04:15:44.754Z" }, - { url = "https://files.pythonhosted.org/packages/7d/a4/c8b98f8191e985ed2003d87664ce3c95cca41db5d0cf6bf4f54327d32ec8/msgpack-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7685e23b0f51745a751629c31713fbefdef8896b31b2bb38299dfa4ae6c0740c", size = 394654, upload-time = "2026-06-11T04:15:46.423Z" }, - { url = "https://files.pythonhosted.org/packages/d4/49/76f036720a602ea24428cfec5ec806f2487c0380b1bff0a2aa3094e15f87/msgpack-1.2.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:b9204daeee8d91a7ae5acf2d2a8e3983be9a3025f38aa21bfaefbd7eea84a7dc", size = 370624, upload-time = "2026-06-11T04:15:48.062Z" }, - { url = "https://files.pythonhosted.org/packages/9f/38/40af3d29232833705a43b0fce0d07425cc280a7b92ab2b29932425b40df4/msgpack-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bfc057248609742ebbabf6bcd27fea4fd99c4980584e613c168c9b002318298f", size = 408038, upload-time = "2026-06-11T04:15:49.669Z" }, - { url = "https://files.pythonhosted.org/packages/30/b2/f140ca450524dff4d8d0eb81eb9ed75f8f3e0b1f12e49c5b01617cfa0b1c/msgpack-1.2.0-cp314-cp314-win32.whl", hash = "sha256:a3faa7edf2388337ae849239878e92f0298b4dab4488e4f1834062f9d0c410c9", size = 65823, upload-time = "2026-06-11T04:15:51.062Z" }, - { url = "https://files.pythonhosted.org/packages/4d/13/6517bf966b841c7675ded30701a068ce141f3e698a27aaa35c702d8e078b/msgpack-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:1a3effc392a57744e4681e55d05f97d5ee7b598747d718340a9b4b8a970c40e1", size = 72484, upload-time = "2026-06-11T04:15:52.289Z" }, - { url = "https://files.pythonhosted.org/packages/45/8c/1d948420fdaa24de4efdb8012a6a5bebe09c82ee002b8c2ca745e9917f1f/msgpack-1.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:56a318f7df6bec7b40928d6b0519961f20a510d8baabf6baa393a70444588f0a", size = 66657, upload-time = "2026-06-11T04:15:53.583Z" }, - { url = "https://files.pythonhosted.org/packages/39/16/1674faa1b7bddc19e79b465fd8e88e2cf4e3f7cae90723740701e8541068/msgpack-1.2.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:afa4a65ab2097795e771a74a3a81ea49534aaeba874eaf426a3332268e045ae6", size = 86093, upload-time = "2026-06-11T04:15:54.98Z" }, - { url = "https://files.pythonhosted.org/packages/dd/24/f241bcfdd9e96b2246289357c5a5e5a496189fd41c5844bee802c116aac7/msgpack-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:409550770632bb28daa70a11d0ed5763f7db38f40b06f7db9f11dd2794d01102", size = 86372, upload-time = "2026-06-11T04:15:56.381Z" }, - { url = "https://files.pythonhosted.org/packages/94/c9/57f8ab98a1b21808c27b6dd6029053e0a796ffbb9b371e460dbe997011a9/msgpack-1.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf47e3cd11ce044965a9736a322afdd390b31ed602d1c1b10211d1a841f1d587", size = 428207, upload-time = "2026-06-11T04:15:57.739Z" }, - { url = "https://files.pythonhosted.org/packages/17/6b/4fd4aa739f131ded751ca7167c8ee87d2aab32506ebbeea893b60b51d343/msgpack-1.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:204bc9f5d6e59c1718c0a4a84fc8ff71b5b4562faac257c1a68bca611ecf9b72", size = 426082, upload-time = "2026-06-11T04:15:59.356Z" }, - { url = "https://files.pythonhosted.org/packages/f9/00/db88e9a08fcd6513decaad06cbd5c168142bc3e662fb2f1aca3a563b7aa1/msgpack-1.2.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:610154307b27267266368bc1d1c7bb8aeb71da7be9356d403cb2442d9e6399f5", size = 378355, upload-time = "2026-06-11T04:16:00.916Z" }, - { url = "https://files.pythonhosted.org/packages/54/84/eee4dd703d7a600cf46159d621c070b0b9468cf3dbade4ea8272bf5232a4/msgpack-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6799f157bb63e79f11e2e590cfdb28423fc18dd60c270c3914b5b4586ae36f7e", size = 410848, upload-time = "2026-06-11T04:16:02.745Z" }, - { url = "https://files.pythonhosted.org/packages/12/0a/195e2c549fd4631eb7f157d016ff15a10c4c1cf82b6d0a9b1edaef5174b1/msgpack-1.2.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:72bd844902cf0a5ac3af2ef742f253cd0b1e5bcd184f49b4fb9a6a1f7bf305e8", size = 376152, upload-time = "2026-06-11T04:16:04.041Z" }, - { url = "https://files.pythonhosted.org/packages/45/9b/bdd143fa79baec411dc658f5686fed680a18b36fcea5fccb6af1b8c7d832/msgpack-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3c0bd450f78d0d81722c80da6cdbf674a856967870a9db2f6c4debc4d8b3c67c", size = 417061, upload-time = "2026-06-11T04:16:05.63Z" }, - { url = "https://files.pythonhosted.org/packages/2d/ce/011ffcd8b919f55196ec53f12ae162e21c879d95afba226894314ff62c07/msgpack-1.2.0-cp314-cp314t-win32.whl", hash = "sha256:378caf74c4c718dfc17590ce68a6d710ed398ff6fcf08237de23b77755730b55", size = 70782, upload-time = "2026-06-11T04:16:07.105Z" }, - { url = "https://files.pythonhosted.org/packages/57/a8/9b8791ca96b1be6b9f659c718271e2cb7f99f73f58aad2dd0b30f750f6c0/msgpack-1.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:553b42598165c4dd3235994fd6e4b0dfb1ce5f3fd33d94ba9609442643015f38", size = 77899, upload-time = "2026-06-11T04:16:08.353Z" }, - { url = "https://files.pythonhosted.org/packages/5b/04/3fa2dffb87bf598696b86bde7cd642d0a7590520c3fa24cd19611dfebeb7/msgpack-1.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2825bb1da548d214ab8a810906b7dd69a10f3838b615a2cc46e5172d3cb44f6e", size = 71004, upload-time = "2026-06-11T04:16:09.556Z" }, +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/f9/c0a1c127f9049db9155afc316952ea571720dd01833ff5e4d7e8e6352dbb/msgpack-1.2.1.tar.gz", hash = "sha256:04c721c2c7448767e9e3f2520a475663d8ee0f09c31890f6d2bd70fd636a9647", size = 183960, upload-time = "2026-06-18T16:13:52.594Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/dd/9e8cbd8f5582ca4b590336f2b91ee5662f6a6ca562b565abaf696a0f81ff/msgpack-1.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2ef59c659f289eddf8aa6623823f19fa2f40a4029266889eac7a2505dd210c35", size = 83531, upload-time = "2026-06-18T16:12:58.249Z" }, + { url = "https://files.pythonhosted.org/packages/50/2e/ebdb85a8da151397a2790363676b7ed7c125924fe618e4c6d8befb0cc62c/msgpack-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d3567748a5107cb40cdf66a275430c2f87c07777698f4bfd25c35f44d533258c", size = 82657, upload-time = "2026-06-18T16:12:59.396Z" }, + { url = "https://files.pythonhosted.org/packages/26/aa/753ad8b007b464e1d8aa0c8e650b9c5f4f725e658fc5ac8a7635c55b7f6e/msgpack-1.2.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60926b75d00c8e816ef98f3034f484a8bc64242d66839cef4cf7e503142316a0", size = 410634, upload-time = "2026-06-18T16:13:00.383Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/6adabd4f6d5e686f97dd02ce7fce3fe4cf672cbac36b8f67ff4040e8ad8b/msgpack-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:020e881a764b20d8d7ca1a54fc01b8175519d108e3c3f194fddc200bda95951a", size = 419989, upload-time = "2026-06-18T16:13:01.776Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cc/85039b7b0eb168aaad7383a23c97e291a11f08351cb45a606ce865e4e3f1/msgpack-1.2.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4202c74688ca06591f78cb18988228bd4cca2cc75d57b60008372892d2f1e6e6", size = 377544, upload-time = "2026-06-18T16:13:03.637Z" }, + { url = "https://files.pythonhosted.org/packages/ed/bf/35963899493b32030c85fc513b723ae66144ac70c11ebc52e889e16e3d99/msgpack-1.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8b267ce94efb76fbd1b3373511420074ee3187f0f7811bf394531de13294735a", size = 400842, upload-time = "2026-06-18T16:13:05.012Z" }, + { url = "https://files.pythonhosted.org/packages/a6/df/8e2ac970c8f99264cd9997d1c73df5466bc19da3301d7dc5500862a9b089/msgpack-1.2.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:e4f1d0f8f98ade9634e01fb704a408f9336c0a8f1117b369f5db83dc7551d8b1", size = 374108, upload-time = "2026-06-18T16:13:06.232Z" }, + { url = "https://files.pythonhosted.org/packages/17/dd/fa8bd265110dfa51c20cb529f9e6d240a16fafe7e645004c6af2d01353ba/msgpack-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f02cf17a6ca1abe29b5f980644f7551f94d71f2011509b26d8625ce038f0df64", size = 414939, upload-time = "2026-06-18T16:13:07.478Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b9/8377a5ad8953fc0437c70cc98d9ae29f27fe5ac5109fbec0812085865735/msgpack-1.2.1-cp312-cp312-win32.whl", hash = "sha256:0c0d9802354507bcba62af19c17918e3eb437cc25e6f50657d511b5856a77aac", size = 64504, upload-time = "2026-06-18T16:13:08.822Z" }, + { url = "https://files.pythonhosted.org/packages/57/7f/ce1e377df7e62461fefd9eb23bfb93a4a523f40a517b377b8f844d836828/msgpack-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:5c24aa15d5963051e1a5c62b12c50cd705992502b5ec1f3bece6046f33c9fc24", size = 71421, upload-time = "2026-06-18T16:13:09.828Z" }, + { url = "https://files.pythonhosted.org/packages/8f/32/ebfe84c9929f08f188d56c7a2fd913406a9ddad76a634697c1c43b8112e6/msgpack-1.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:4227224aaec8f7fbcbfbd4272319347b2bb4030366502600f8c45588c5187b07", size = 64775, upload-time = "2026-06-18T16:13:11.056Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ac/dcddcab6f6c20ecb387ca5e980371cdb3f87ff69aeca388be97eebc4c074/msgpack-1.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0a70e3cf2804a300d921bb0940426e35f4e489a23adfb77a808892241db0a064", size = 83151, upload-time = "2026-06-18T16:13:12.173Z" }, + { url = "https://files.pythonhosted.org/packages/64/71/fbcfa83a1d6a9c6091942d1cfd070962244664b87427a9a49a6897b1b219/msgpack-1.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:491cc39455ca765fad51fb451bf2915eb2cf41192ab5801ce8d67c1d614fe056", size = 82351, upload-time = "2026-06-18T16:13:13.194Z" }, + { url = "https://files.pythonhosted.org/packages/e3/10/ddf7b06db879e8792d13934ddda09ff20bd2a583fd84c9b59aae9b0e650b/msgpack-1.2.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f310233ef7fb9c14e201c93639fe5f5260b005f56f0b29048e999c30935596cc", size = 407518, upload-time = "2026-06-18T16:13:14.233Z" }, + { url = "https://files.pythonhosted.org/packages/79/d3/36a46a8ed992b781acbc05928bd5bee3c810cb0c3563bf81a7b0c04a1a76/msgpack-1.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:787c9bebb5833e8f6fc8abca3c0597683d8d87f56a8842b6b89c75a5f3176e2d", size = 416405, upload-time = "2026-06-18T16:13:15.435Z" }, + { url = "https://files.pythonhosted.org/packages/f9/84/e8e9598b557c0ba6ddae901a73780a4c75ac667dddf59414b1e56a42fb34/msgpack-1.2.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dc871b997a9370d855b7394465f2f350e847a5b806dd38dcc9c989e7d87da155", size = 376257, upload-time = "2026-06-18T16:13:17.022Z" }, + { url = "https://files.pythonhosted.org/packages/40/16/738fe6d875ad7e2a9429c165322a4ec088f4f273cdfae63d96a89c467961/msgpack-1.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:85f57e960d877f2977f6430896191b04a21f8901b3b4baf2e4604329f4db5402", size = 397469, upload-time = "2026-06-18T16:13:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/ca/be/6d5952df75a7f24f35833af764c3a6860780364cb3a0030beb8099e1b2b4/msgpack-1.2.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:1233ee2dd0cefba127583de50ea654677277047d238303521db35def3d7b2e7c", size = 372802, upload-time = "2026-06-18T16:13:19.685Z" }, + { url = "https://files.pythonhosted.org/packages/e1/39/e2ef7dbf0473bcb8dc7c50bf782a892d67414877b63e47fc88eb189ef5e6/msgpack-1.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e3dc2feb0876209d9c38aa56cb1de169bd6c4348f1aa48271f241226590993e6", size = 411273, upload-time = "2026-06-18T16:13:21.028Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c5/133f4512a56e983a93445c836c9d94d88f3bc2e0980ff4b9e577bd8416ce/msgpack-1.2.1-cp313-cp313-win32.whl", hash = "sha256:6d09badf350af2be9d189184e04e64cf54ad93569ab3d96fca58bd3e84aad707", size = 64471, upload-time = "2026-06-18T16:13:22.293Z" }, + { url = "https://files.pythonhosted.org/packages/e2/98/577e10b055096a7dd40732358cabaf7180a20c79ed1dcdbb618e4b9deac7/msgpack-1.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:33f14fba63278b714efe6ad07e50ea5f03d91537aa6a1c5f1ceca4cf44013ca9", size = 71274, upload-time = "2026-06-18T16:13:23.455Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ee/0c0048e7cfbef23c6a94791b8959ab28155232e7956de8a305b5ff588f05/msgpack-1.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:afc5febcd4c99effbc02b528e49d6fd0760b2b7d48c05239e345a5fa6e743d9a", size = 64795, upload-time = "2026-06-18T16:13:24.687Z" }, + { url = "https://files.pythonhosted.org/packages/77/58/cce442852c6b9e1639c7c8ac8fd9143121cb32dab0f308df4d1426a8eb9c/msgpack-1.2.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:05f340e47e7e47d2da8db9b53e1bb1d294369e9ef45a747441309f6650b8351d", size = 83610, upload-time = "2026-06-18T16:13:25.724Z" }, + { url = "https://files.pythonhosted.org/packages/60/5c/15b4c7a0182f75ffa90751958ba36a9c01cafee367d49a3edc10ed140b01/msgpack-1.2.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:810b916696c86ef0deb3b74588480224df4c1b071136c34183e4a2a4284d7ac7", size = 83138, upload-time = "2026-06-18T16:13:26.781Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a6/99e58722feaffc5f2fbcc0c8c0d1451ab9f84097f7af87291b46af2390f4/msgpack-1.2.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ca0dacff965c47afdc3749a8469d7302a8f801d6a28758d55120d75e66ce6889", size = 406090, upload-time = "2026-06-18T16:13:28.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/03/8c63e8cf52958534ef688625965ab04c269a6cadd8caef16758b380a821a/msgpack-1.2.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e2bf9280bceb5efca998435904b5d3e9fdbcc11d90dc9df30aec7973252b720", size = 412106, upload-time = "2026-06-18T16:13:29.427Z" }, + { url = "https://files.pythonhosted.org/packages/63/d2/155d9e71b40e41fd934bc0c48b9b2770f22263e1ac20aad8e29fdca7be3f/msgpack-1.2.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aa6c4be5d1c02a42b066ca6ddb71adf36432868fdcdb6ee87e634e86e0674190", size = 374851, upload-time = "2026-06-18T16:13:30.631Z" }, + { url = "https://files.pythonhosted.org/packages/98/48/deaf2326262a8d5ea3295ce9649912ecd3f551ba7ec8e33c665d2ba583f3/msgpack-1.2.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec0e675d59150a6269ddc9139087c722292664a37d071a849c05c473350f1f2d", size = 396168, upload-time = "2026-06-18T16:13:31.977Z" }, + { url = "https://files.pythonhosted.org/packages/10/2a/b4410f906c2ec0008f1608d3ab5143afc3ad3f4e6da0fed3ea2231d0bef4/msgpack-1.2.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:dd3bfe82d53edfe4b7fc9a7ec9761e23a7a5b1dac22264505af428253c29ed24", size = 371959, upload-time = "2026-06-18T16:13:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/59/86/1edc67270099a528fa2093ea60fe191233cd238e4bd30cfacf7db79fc959/msgpack-1.2.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5ad5467fc3f68b5468e06c5f788d712e9f8ffc8b0cd1bcb160c105c1ee92dae7", size = 408457, upload-time = "2026-06-18T16:13:34.567Z" }, + { url = "https://files.pythonhosted.org/packages/82/90/8b630fef07d8c5ab457b71ff2c217910c83d333c7a68472c186e87cc504a/msgpack-1.2.1-cp314-cp314-win32.whl", hash = "sha256:98b58bdb89c46190e4609bb36abe17c6d4105ad13f9c5f8f6f64d320f8ced3fb", size = 65942, upload-time = "2026-06-18T16:13:36.056Z" }, + { url = "https://files.pythonhosted.org/packages/16/f1/467b81e98b24dd3885d7b1857728797b4ffc76a7a7483af4fb321a07de3c/msgpack-1.2.1-cp314-cp314-win_amd64.whl", hash = "sha256:74847557e28ce71bd3c438a447ca90e4b507e997ddbdef8a12a7b283b86c156b", size = 72627, upload-time = "2026-06-18T16:13:37.079Z" }, + { url = "https://files.pythonhosted.org/packages/a7/1d/5d8c4c89985feb6acefb82a09e501c60392261856d2408d20bfe4f0360b1/msgpack-1.2.1-cp314-cp314-win_arm64.whl", hash = "sha256:b50b727bd652bdc37d950336c848ef20ec54a4cafc38dce19b1cd86ad625d0f7", size = 66908, upload-time = "2026-06-18T16:13:38.23Z" }, + { url = "https://files.pythonhosted.org/packages/1b/02/ad2afb678b4de94496cd432b581759b756a92c1192d8c767edd6b132efdc/msgpack-1.2.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:8d00f177ca88a77c1cf848d204a38f249751650b601cb6532acc68805d8a8273", size = 86000, upload-time = "2026-06-18T16:13:39.44Z" }, + { url = "https://files.pythonhosted.org/packages/54/74/0b797484013128837f3b1cbb6cea019277c4de4e377dc512b4d9a0f92940/msgpack-1.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5bb9c386f0a329c035ddbab4b72d1028bf9627add8dda41070288563d57ed1b1", size = 86544, upload-time = "2026-06-18T16:13:40.447Z" }, + { url = "https://files.pythonhosted.org/packages/a9/b4/b774d7eb95561739907fec675582f83203cf41c597a418c2589b4bfb8e9d/msgpack-1.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:20466cca18c49c7292a8984bc15d65857b171e7264bdcb5f96baf8be238791fc", size = 427661, upload-time = "2026-06-18T16:13:41.574Z" }, + { url = "https://files.pythonhosted.org/packages/b2/f9/3243191dc9937e00756c8bc1b0272fed8f23758e43df2a3b46f533e5090f/msgpack-1.2.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:196300e7e5d6e74d50f1607ab9c06c4a1484c383cd22defd727902591f7e8dde", size = 426375, upload-time = "2026-06-18T16:13:42.936Z" }, + { url = "https://files.pythonhosted.org/packages/23/c7/1693111db9944ba4ad4b67a1e788400d78a0b6af7a6523dc7e4e58f8274b/msgpack-1.2.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:575957e79cd51903a4e8495a242442949641e08f1efd5197b43bebd3ea7682b4", size = 380495, upload-time = "2026-06-18T16:13:44.306Z" }, + { url = "https://files.pythonhosted.org/packages/3e/2b/92f86956a0c13e8662f7e2ad630c4eb4db07497b967589bd5245e018b2c1/msgpack-1.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8c2ed1e48cc0f460bf3c7780e7137ff21a4e18433451916f2442c1b21036cd7d", size = 410897, upload-time = "2026-06-18T16:13:45.629Z" }, + { url = "https://files.pythonhosted.org/packages/da/ea/1479f72d200313a76fc2f823a79d1e07ed052ab7b8a0280640aa7b95de42/msgpack-1.2.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5f6277e5f783c36786a145e0247fc189a03f35f84b251646e53592d2bc12b355", size = 378519, upload-time = "2026-06-18T16:13:46.998Z" }, + { url = "https://files.pythonhosted.org/packages/f5/4d/fa006060ffa1011d32bfae826fe766fe73e02982183601633b7121058ab3/msgpack-1.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9389552ecf4784886345ead0647e4edc96bee37cbab05b75540f542f766c48c", size = 419815, upload-time = "2026-06-18T16:13:48.205Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/aab6c946570496b78e67804721f3d5e2d62a93081b9b37df77764ef56347/msgpack-1.2.1-cp314-cp314t-win32.whl", hash = "sha256:c1c79a604a2969a868a78b6ebd27a887e00c624f14f66b3038e0590cb23332d1", size = 70914, upload-time = "2026-06-18T16:13:49.385Z" }, + { url = "https://files.pythonhosted.org/packages/13/0a/e608956488a2af014cfe6e3d665e090b8ee42aa14b07f8f95b8880d66b09/msgpack-1.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:f12038a35fabd52e56a3547bab42401af49a45caa6dd00b34c44de235bc93ee2", size = 77999, upload-time = "2026-06-18T16:13:50.467Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8a/27e2e57055176e366a46b85d02d68e7a5bcfbdd8474c9706375d965f24d3/msgpack-1.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:0adcf06ffde0777c0e1a9b771a2b1c4226ba1bbf748c8efcc02fcdeca3299107", size = 71160, upload-time = "2026-06-18T16:13:51.498Z" }, ] [[package]] @@ -1610,8 +1610,8 @@ name = "ncclient" version = "0.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "lxml", marker = "python_full_version < '3.15'" }, - { name = "paramiko", marker = "python_full_version < '3.15'" }, + { name = "lxml" }, + { name = "paramiko" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ef/92/e36995ee7ce151814335583571bed95f1a5a491b7ea4d5487cb67377800a/ncclient-0.7.1.tar.gz", hash = "sha256:60dabb6ac1a2d84fbc3349cb104ef7d0c5d12cf8eee43fefc715410d70410ddc", size = 123086, upload-time = "2026-03-15T16:05:49.317Z" } wheels = [ @@ -1803,7 +1803,7 @@ name = "prettytable" version = "3.17.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "wcwidth", marker = "python_full_version < '3.15'" }, + { name = "wcwidth" }, ] sdist = { url = "https://files.pythonhosted.org/packages/79/45/b0847d88d6cfeb4413566738c8bbf1e1995fad3d42515327ff32cc1eb578/prettytable-3.17.0.tar.gz", hash = "sha256:59f2590776527f3c9e8cf9fe7b66dd215837cca96a9c39567414cbc632e8ddb0", size = 67892, upload-time = "2025-11-14T17:33:20.212Z" } wheels = [ @@ -1965,7 +1965,7 @@ name = "pyasynchat" version = "1.0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyasyncore", marker = "python_full_version < '3.15'" }, + { name = "pyasyncore" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ec/d2/b41df9021c12ca314146abcde7bdd3d9d37d44cc01559d7f13df459ee586/pyasynchat-1.0.5.tar.gz", hash = "sha256:36665473ae730dac51e6d7dad70f8295962120c830ab692f0a31efba32687e24", size = 9959, upload-time = "2026-01-05T20:05:27.712Z" } wheels = [ @@ -1986,20 +1986,20 @@ name = "pyats" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "packaging", marker = "python_full_version < '3.15'" }, - { name = "pyats-aereport", marker = "python_full_version < '3.15'" }, - { name = "pyats-aetest", marker = "python_full_version < '3.15'" }, - { name = "pyats-async", marker = "python_full_version < '3.15'" }, - { name = "pyats-connections", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "pyats-easypy", marker = "python_full_version < '3.15'" }, - { name = "pyats-kleenex", marker = "python_full_version < '3.15'" }, - { name = "pyats-log", marker = "python_full_version < '3.15'" }, - { name = "pyats-reporter", marker = "python_full_version < '3.15'" }, - { name = "pyats-results", marker = "python_full_version < '3.15'" }, - { name = "pyats-tcl", marker = "python_full_version < '3.15'" }, - { name = "pyats-topology", marker = "python_full_version < '3.15'" }, - { name = "pyats-utils", marker = "python_full_version < '3.15'" }, + { name = "packaging" }, + { name = "pyats-aereport" }, + { name = "pyats-aetest" }, + { name = "pyats-async" }, + { name = "pyats-connections" }, + { name = "pyats-datastructures" }, + { name = "pyats-easypy" }, + { name = "pyats-kleenex" }, + { name = "pyats-log" }, + { name = "pyats-reporter" }, + { name = "pyats-results" }, + { name = "pyats-tcl" }, + { name = "pyats-topology" }, + { name = "pyats-utils" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/dc/8f/91b41cc485c2db3d67e5180750f58c7d63da8266d8b6b40125bd85489846/pyats-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3476d31c073aa5d8ee816a8738aebc7852d4d50328472ddd20374df2d026f8bf", size = 1840436, upload-time = "2026-05-28T20:18:10.311Z" }, @@ -2018,11 +2018,11 @@ name = "pyats-aereport" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "jinja2", marker = "python_full_version < '3.15'" }, - { name = "junit-xml", marker = "python_full_version < '3.15'" }, - { name = "psutil", marker = "python_full_version < '3.15'" }, - { name = "pyats-log", marker = "python_full_version < '3.15'" }, - { name = "pyats-results", marker = "python_full_version < '3.15'" }, + { name = "jinja2" }, + { name = "junit-xml" }, + { name = "psutil" }, + { name = "pyats-log" }, + { name = "pyats-results" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/29/e3/c25f9be1ab65900e8ea283ec421b024ffde11b21c59f1bf7d4259ee11a3d/pyats_aereport-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:2f27ee46641ae4b9561ec6fe621da39396af3c1df9d1677fa7c59dcbeddd4d53", size = 3715063, upload-time = "2026-05-28T20:13:20.76Z" }, @@ -2041,14 +2041,14 @@ name = "pyats-aetest" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "jinja2", marker = "python_full_version < '3.15'" }, - { name = "prettytable", marker = "python_full_version < '3.15'" }, - { name = "pyats-aereport", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "pyats-log", marker = "python_full_version < '3.15'" }, - { name = "pyats-results", marker = "python_full_version < '3.15'" }, - { name = "pyats-utils", marker = "python_full_version < '3.15'" }, - { name = "pyyaml", marker = "python_full_version < '3.15'" }, + { name = "jinja2" }, + { name = "prettytable" }, + { name = "pyats-aereport" }, + { name = "pyats-datastructures" }, + { name = "pyats-log" }, + { name = "pyats-results" }, + { name = "pyats-utils" }, + { name = "pyyaml" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/6b/59/0fa0021df22f2132793e53e89da8197b84e9bc3f9ec04c26337cdc154fb9/pyats_aetest-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:370d46edb2a4c9133e8377306a820ba662ea5199ac1d7c2396539bd0afb7820d", size = 3203178, upload-time = "2026-05-28T20:13:45.662Z" }, @@ -2067,7 +2067,7 @@ name = "pyats-async" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyats-log", marker = "python_full_version < '3.15'" }, + { name = "pyats-log" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/96/ee/d839195e150a4b7db57d2c77a259b86bc65b412dea09a454bcd1cf7b922f/pyats_async-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:422f3293731938e62e2be7b0103458e3ba5d99cf73ff932e21128bbb525a2b97", size = 282828, upload-time = "2026-05-28T20:14:07.9Z" }, @@ -2086,9 +2086,9 @@ name = "pyats-connections" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyats-async", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "unicon", marker = "python_full_version < '3.15'" }, + { name = "pyats-async" }, + { name = "pyats-datastructures" }, + { name = "unicon" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/5e/c0/fb6c98263c928248e7f8a0365b63a925f8e03f21eed0c61db9c4c92c693b/pyats_connections-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:116167f3d609c85f3a3960f098909d31ed782aa8067254222100fc9c803f0f10", size = 606520, upload-time = "2026-05-28T20:14:26.752Z" }, @@ -2123,17 +2123,17 @@ name = "pyats-easypy" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "distro", marker = "python_full_version < '3.15'" }, - { name = "jinja2", marker = "python_full_version < '3.15'" }, - { name = "psutil", marker = "python_full_version < '3.15'" }, - { name = "pyats-aereport", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "pyats-kleenex", marker = "python_full_version < '3.15'" }, - { name = "pyats-log", marker = "python_full_version < '3.15'" }, - { name = "pyats-results", marker = "python_full_version < '3.15'" }, - { name = "pyats-topology", marker = "python_full_version < '3.15'" }, - { name = "pyats-utils", marker = "python_full_version < '3.15'" }, - { name = "setuptools", marker = "python_full_version < '3.15'" }, + { name = "distro" }, + { name = "jinja2" }, + { name = "psutil" }, + { name = "pyats-aereport" }, + { name = "pyats-datastructures" }, + { name = "pyats-kleenex" }, + { name = "pyats-log" }, + { name = "pyats-results" }, + { name = "pyats-topology" }, + { name = "pyats-utils" }, + { name = "setuptools" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/f5/7f/1b721caac6885808b629ff1fdf2c765f9eb1762fd4fb9b4257fbc687333e/pyats_easypy-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:c3f5ce42ff2429b7a4d62e4bcad424d9424d59043fb95d3e1f74d174617bac73", size = 2906571, upload-time = "2026-05-28T20:15:07.909Z" }, @@ -2152,14 +2152,14 @@ name = "pyats-kleenex" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "distro", marker = "python_full_version < '3.15'" }, - { name = "pyats-aetest", marker = "python_full_version < '3.15'" }, - { name = "pyats-async", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "pyats-log", marker = "python_full_version < '3.15'" }, - { name = "pyats-topology", marker = "python_full_version < '3.15'" }, - { name = "pyats-utils", marker = "python_full_version < '3.15'" }, - { name = "requests", marker = "python_full_version < '3.15'" }, + { name = "distro" }, + { name = "pyats-aetest" }, + { name = "pyats-async" }, + { name = "pyats-datastructures" }, + { name = "pyats-log" }, + { name = "pyats-topology" }, + { name = "pyats-utils" }, + { name = "requests" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/36/5c/ccc24a5779045834c2149d306e859ecb4575dde973fbbcb11761de379f15/pyats_kleenex-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:b3415b9861fa2c44489a685f4b48a27eff002738baa4d16d4812b15d91c9a98e", size = 2283438, upload-time = "2026-05-28T20:15:32.082Z" }, @@ -2178,15 +2178,15 @@ name = "pyats-log" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aiofiles", marker = "python_full_version < '3.15'" }, - { name = "aiohttp", marker = "python_full_version < '3.15'" }, - { name = "async-lru", marker = "python_full_version < '3.15'" }, - { name = "chardet", marker = "python_full_version < '3.15'" }, - { name = "jinja2", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "python-engineio", marker = "python_full_version < '3.15'" }, - { name = "python-socketio", marker = "python_full_version < '3.15'" }, - { name = "pyyaml", marker = "python_full_version < '3.15'" }, + { name = "aiofiles" }, + { name = "aiohttp" }, + { name = "async-lru" }, + { name = "chardet" }, + { name = "jinja2" }, + { name = "pyats-datastructures" }, + { name = "python-engineio" }, + { name = "python-socketio" }, + { name = "pyyaml" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/94/fa/3f66ae4d60a40d215361c76f51d2194c0e0f327d2a7e6d6a0f7930d2c715/pyats_log-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:5337cd7f8a7428c143ca2dcb06635148128015923f9da812415026d18d60cda5", size = 9327778, upload-time = "2026-05-28T20:15:59.987Z" }, @@ -2205,12 +2205,12 @@ name = "pyats-reporter" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "gitpython", marker = "python_full_version < '3.15'" }, - { name = "pyats-aereport", marker = "python_full_version < '3.15'" }, - { name = "pyats-log", marker = "python_full_version < '3.15'" }, - { name = "pyats-results", marker = "python_full_version < '3.15'" }, - { name = "pyats-utils", marker = "python_full_version < '3.15'" }, - { name = "pyyaml", marker = "python_full_version < '3.15'" }, + { name = "gitpython" }, + { name = "pyats-aereport" }, + { name = "pyats-log" }, + { name = "pyats-results" }, + { name = "pyats-utils" }, + { name = "pyyaml" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/8896f7bbb59de16cab1508c0a869ba3bb12573a067d1da7873f3b2d0a8bf/pyats_reporter-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:2e21b1ccc3fd95819b120ecbdf286f068b28777ffc2fb6f4214191a362f63931", size = 1286538, upload-time = "2026-05-28T20:16:27.313Z" }, @@ -2245,8 +2245,8 @@ name = "pyats-tcl" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "pyats-log", marker = "python_full_version < '3.15'" }, + { name = "pyats-datastructures" }, + { name = "pyats-log" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/14/e0/72a8615b75b0b7d575c2c89c926a9c0d8061d31d2a827ae3e8d22e515194/pyats_tcl-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:51d263bbc3240568c5329aedfb3b5fe5233b502dedbd5ebdce8397e6770d3e86", size = 985523, upload-time = "2026-05-28T20:17:06.816Z" }, @@ -2265,11 +2265,11 @@ name = "pyats-topology" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyats-connections", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "pyats-utils", marker = "python_full_version < '3.15'" }, - { name = "pyyaml", marker = "python_full_version < '3.15'" }, - { name = "yamllint", marker = "python_full_version < '3.15'" }, + { name = "pyats-connections" }, + { name = "pyats-datastructures" }, + { name = "pyats-utils" }, + { name = "pyyaml" }, + { name = "yamllint" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/26/76/ac02b48596f0cc0945ac2806bd83265e772c50d9d2e8f35658ea228e946d/pyats_topology-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:e016a1414b3033afcd1bb8445c0f1f88037296f8244376175b36019969699d0e", size = 1262410, upload-time = "2026-05-28T20:17:27.504Z" }, @@ -2288,10 +2288,10 @@ name = "pyats-utils" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography", marker = "python_full_version < '3.15'" }, - { name = "distro", marker = "python_full_version < '3.15'" }, - { name = "pyats-datastructures", marker = "python_full_version < '3.15'" }, - { name = "pyats-topology", marker = "python_full_version < '3.15'" }, + { name = "cryptography" }, + { name = "distro" }, + { name = "pyats-datastructures" }, + { name = "pyats-topology" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/ba/97/4adbf296785e65ab78f94f8c4b9140669d078467aa6df8bfbc95f8bc2ad9/pyats_utils-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:f3f93cf58f6826d28807b5e1293ed878183131e858c01a328c86b516c9144b1d", size = 2341555, upload-time = "2026-05-28T20:17:48.544Z" }, @@ -2409,8 +2409,8 @@ name = "pyftpdlib" version = "2.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyasynchat", marker = "python_full_version < '3.15'" }, - { name = "pyasyncore", marker = "python_full_version < '3.15'" }, + { name = "pyasynchat" }, + { name = "pyasyncore" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f9/42/8751c5f58ae59b09e070da4fa322ae9693a340d2cc456b5a380b2c1ee47a/pyftpdlib-2.2.0.tar.gz", hash = "sha256:4ba0642078792df63dd3b2e9c8f838f2a3ecf428c7518d5921c0530d53512acf", size = 189150, upload-time = "2026-02-07T23:09:26.519Z" } @@ -2484,7 +2484,7 @@ resolution-markers = [ "python_full_version < '3.15'", ] dependencies = [ - { name = "pyasn1", version = "0.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.15'" }, + { name = "pyasn1", version = "0.6.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/c5/f7/63a4833b675f3f85296d85f2fddaed93d76799f29a813a2d5ca2bbe7fc50/pysnmp-7.1.22.tar.gz", hash = "sha256:37ac595c7f0c1c00514505939b4dcf5b4fd5a9ffe51b0349f60bb640c11b0f77", size = 259230, upload-time = "2025-10-26T22:09:56.413Z" } wheels = [ @@ -2499,7 +2499,7 @@ resolution-markers = [ "python_full_version >= '3.15'", ] dependencies = [ - { name = "pyasn1", version = "0.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.15'" }, + { name = "pyasn1", version = "0.6.3", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/8d/6e/0d9c8a59ff4d6cb9c2477fe4cd106cb20cd6bbf008a0bca0c45ebb17aaad/pysnmp-7.1.27.tar.gz", hash = "sha256:01ce32d1bb0a14e8e3410a43fb7a8a7b050ec06186dc9ec240fcefa4af8b963c", size = 260310, upload-time = "2026-05-16T07:01:39.64Z" } wheels = [ @@ -2567,7 +2567,7 @@ name = "python-engineio" version = "4.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "simple-websocket", marker = "python_full_version < '3.15'" }, + { name = "simple-websocket" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/01/94faf505820f1fb94133a456dad87a76df589f6999de563229a342e412fa/python_engineio-4.9.1.tar.gz", hash = "sha256:7631cf5563086076611e494c643b3fa93dd3a854634b5488be0bba0ef9b99709", size = 89549, upload-time = "2024-05-18T16:09:53.041Z" } wheels = [ @@ -2579,8 +2579,8 @@ name = "python-socketio" version = "5.11.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "bidict", marker = "python_full_version < '3.15'" }, - { name = "python-engineio", marker = "python_full_version < '3.15'" }, + { name = "bidict" }, + { name = "python-engineio" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a8/55/f24a0e5e29c9e344eb04a5d2483d756196b04ab1de3988a1242b9a13d1b6/python-socketio-5.11.2.tar.gz", hash = "sha256:ae6a1de5c5209ca859dc574dccc8931c4be17ee003e74ce3b8d1306162bb4a37", size = 116905, upload-time = "2024-03-24T09:55:59.217Z" } wheels = [ @@ -2661,7 +2661,7 @@ name = "requests-toolbelt" version = "0.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "requests", marker = "python_full_version < '3.15'" }, + { name = "requests" }, ] sdist = { url = "https://files.pythonhosted.org/packages/28/30/7bf7e5071081f761766d46820e52f4b16c8a08fef02d2eb4682ca7534310/requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0", size = 207286, upload-time = "2019-01-30T01:29:54.471Z" } wheels = [ @@ -2673,10 +2673,10 @@ name = "rest-connector" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "ciscoisesdk", marker = "python_full_version < '3.15'" }, - { name = "dict2xml", marker = "python_full_version < '3.15'" }, - { name = "f5-icontrol-rest", marker = "python_full_version < '3.15'" }, - { name = "requests", marker = "python_full_version < '3.15'" }, + { name = "ciscoisesdk" }, + { name = "dict2xml" }, + { name = "f5-icontrol-rest" }, + { name = "requests" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/87/fe/4e37d2813123a61484a14ce468cb4c1575b83a9a8a6b45ccdc2061223c1e/rest_connector-26.5-py3-none-any.whl", hash = "sha256:813b4f7906297568cc7a1a2d8df956aaab9108038fb3bda986388257e6d51569", size = 83357, upload-time = "2026-05-28T20:18:22.433Z" }, @@ -2807,7 +2807,7 @@ name = "simple-websocket" version = "1.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "wsproto", marker = "python_full_version < '3.15'" }, + { name = "wsproto" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b0/d4/bfa032f961103eba93de583b161f0e6a5b63cebb8f2c7d0c6e6efe1e3d2e/simple_websocket-1.1.0.tar.gz", hash = "sha256:7939234e7aa067c534abdab3a9ed933ec9ce4691b0713c78acb195560aa52ae4", size = 17300, upload-time = "2024-10-10T22:39:31.412Z" } wheels = [ @@ -2942,7 +2942,7 @@ name = "tqdm" version = "4.68.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "python_full_version < '3.15' and sys_platform == 'win32'" }, + { name = "colorama", marker = "python_version < '0'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/85/05/0d5260f1f1ca784f4a4a0def9cbe6affe587f5b4025328d446c3d67765f4/tqdm-4.68.2.tar.gz", hash = "sha256:89c230e8dbc67c7615c142487111222f878c77427ea09549960f62389e258add", size = 171923, upload-time = "2026-06-09T13:26:42.539Z" } wheels = [ @@ -2990,9 +2990,9 @@ name = "unicon" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "dill", marker = "python_full_version < '3.15'" }, - { name = "pyyaml", marker = "python_full_version < '3.15'" }, - { name = "unicon-plugins", marker = "python_full_version < '3.15'" }, + { name = "dill" }, + { name = "pyyaml" }, + { name = "unicon-plugins" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/2f/dd/0cc71b65d69811e962f421805cd9b0471378ed6747dd4785b648b77897f3/unicon-26.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:c367177954d36e62c961f587288de6149783e8f020c31a81b7bc4f37e36b8e16", size = 5006593, upload-time = "2026-05-28T20:18:39.001Z" }, @@ -3011,10 +3011,10 @@ name = "unicon-plugins" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography", marker = "python_full_version < '3.15'" }, - { name = "prettytable", marker = "python_full_version < '3.15'" }, - { name = "pyyaml", marker = "python_full_version < '3.15'" }, - { name = "unicon", marker = "python_full_version < '3.15'" }, + { name = "cryptography" }, + { name = "prettytable" }, + { name = "pyyaml" }, + { name = "unicon" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/5c/ed/842f09fa401cf003ea13ddb9b57abbab25afe71262442ef52fd387438803/unicon_plugins-26.5-py3-none-any.whl", hash = "sha256:1297e9df552062d113f02c0bbd1745f1636f060fffdebc26f51bfc74f8d9d991", size = 932843, upload-time = "2026-05-28T20:18:23.817Z" }, @@ -3058,7 +3058,7 @@ name = "wheel" version = "0.47.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "packaging", marker = "python_full_version < '3.15'" }, + { name = "packaging" }, ] sdist = { url = "https://files.pythonhosted.org/packages/39/62/75f18a0f03b4219c456652c7780e4d749b929eb605c098ce3a5b6b6bc081/wheel-0.47.0.tar.gz", hash = "sha256:cc72bd1009ba0cf63922e28f94d9d83b920aa2bb28f798a31d0691b02fa3c9b3", size = 63854, upload-time = "2026-04-22T15:51:27.727Z" } wheels = [ @@ -3070,7 +3070,7 @@ name = "wsproto" version = "1.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "h11", marker = "python_full_version < '3.15'" }, + { name = "h11" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c7/79/12135bdf8b9c9367b8701c2c19a14c913c120b882d50b014ca0d38083c2c/wsproto-1.3.2.tar.gz", hash = "sha256:b86885dcf294e15204919950f666e06ffc6c7c114ca900b060d6e16293528294", size = 50116, upload-time = "2025-11-20T18:18:01.871Z" } wheels = [ @@ -3091,8 +3091,8 @@ name = "yamllint" version = "1.38.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pathspec", marker = "python_full_version < '3.15'" }, - { name = "pyyaml", marker = "python_full_version < '3.15'" }, + { name = "pathspec" }, + { name = "pyyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/28/a0/8fc2d68e132cf918f18273fdc8a1b8432b60d75ac12fdae4b0ef5c9d2e8d/yamllint-1.38.0.tar.gz", hash = "sha256:09e5f29531daab93366bb061e76019d5e91691ef0a40328f04c927387d1d364d", size = 142446, upload-time = "2026-01-13T07:47:53.276Z" } wheels = [ @@ -3104,11 +3104,11 @@ name = "yang-connector" version = "26.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "grpcio", marker = "python_full_version < '3.15'" }, - { name = "lxml", marker = "python_full_version < '3.15'" }, - { name = "ncclient", marker = "python_full_version < '3.15'" }, - { name = "paramiko", marker = "python_full_version < '3.15'" }, - { name = "protobuf", marker = "python_full_version < '3.15'" }, + { name = "grpcio" }, + { name = "lxml" }, + { name = "ncclient" }, + { name = "paramiko" }, + { name = "protobuf" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/fc/b9/ef58935acf6e7da8a3638f40a80856ceba389d8339009bd821ab62f1d600/yang_connector-26.5-py3-none-any.whl", hash = "sha256:703965691ae51dda3a34b12947083a2a2693a96e6e7896266274296696b20323", size = 39683, upload-time = "2026-05-28T20:18:53.95Z" }, @@ -3119,9 +3119,9 @@ name = "yarl" version = "1.24.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "idna", marker = "python_full_version < '3.15'" }, - { name = "multidict", marker = "python_full_version < '3.15'" }, - { name = "propcache", marker = "python_full_version < '3.15'" }, + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, ] sdist = { url = "https://files.pythonhosted.org/packages/79/12/1e8f37460ea0f7eb59c221fdaf0ed75e7ac43e97f8093b9c6f411df50a78/yarl-1.24.2.tar.gz", hash = "sha256:9ac374123c6fd7abf64d1fec93962b0bd4ee2c19751755a762a72dd96c0378f8", size = 210798, upload-time = "2026-05-19T21:31:05.599Z" } wheels = [