From 46ff971953edad544df7de4c8995c486e3fe8c99 Mon Sep 17 00:00:00 2001 From: Christian Manivong Date: Fri, 16 Oct 2026 12:03:38 +0200 Subject: [PATCH] fix: drop stubs that claim what a phone cannot do (0.1.1) get_health_metrics, get_ssids, get_radio_info and get_wireless_clients only raised NotImplementedError. They are left over from when the driver sat on AccessPointDriver, and a stub makes a capability check (callable(getattr(driver, name))) answer yes. The application polls SNMP itself (napalm-device-types docs/STRUCTURE.md); a phone has no profile to declare. Also stops tracking the .pyc and egg-info files .gitignore already lists. Closes #2 --- napalm_yealink.egg-info/PKG-INFO | 8 -------- napalm_yealink.egg-info/SOURCES.txt | 10 ---------- napalm_yealink.egg-info/dependency_links.txt | 1 - napalm_yealink.egg-info/entry_points.txt | 2 -- napalm_yealink.egg-info/requires.txt | 3 --- napalm_yealink.egg-info/top_level.txt | 1 - .../__pycache__/__init__.cpython-312.pyc | Bin 271 -> 0 bytes .../__pycache__/yealink.cpython-312.pyc | Bin 10971 -> 0 bytes napalm_yealink/yealink.py | 16 ---------------- pyproject.toml | 2 +- tests/__pycache__/__init__.cpython-312.pyc | Bin 171 -> 0 bytes tests/test_capabilities.py | 14 ++++++++++++++ 12 files changed, 15 insertions(+), 42 deletions(-) delete mode 100644 napalm_yealink.egg-info/PKG-INFO delete mode 100644 napalm_yealink.egg-info/SOURCES.txt delete mode 100644 napalm_yealink.egg-info/dependency_links.txt delete mode 100644 napalm_yealink.egg-info/entry_points.txt delete mode 100644 napalm_yealink.egg-info/requires.txt delete mode 100644 napalm_yealink.egg-info/top_level.txt delete mode 100644 napalm_yealink/__pycache__/__init__.cpython-312.pyc delete mode 100644 napalm_yealink/__pycache__/yealink.cpython-312.pyc delete mode 100644 tests/__pycache__/__init__.cpython-312.pyc create mode 100644 tests/test_capabilities.py diff --git a/napalm_yealink.egg-info/PKG-INFO b/napalm_yealink.egg-info/PKG-INFO deleted file mode 100644 index f80d5df..0000000 --- a/napalm_yealink.egg-info/PKG-INFO +++ /dev/null @@ -1,8 +0,0 @@ -Metadata-Version: 2.4 -Name: napalm-yealink -Version: 0.1.0 -Summary: NAPALM driver for Yealink IP phones and video endpoints -Requires-Python: >=3.10 -Requires-Dist: napalm -Requires-Dist: napalm-device-types -Requires-Dist: requests diff --git a/napalm_yealink.egg-info/SOURCES.txt b/napalm_yealink.egg-info/SOURCES.txt deleted file mode 100644 index 0377478..0000000 --- a/napalm_yealink.egg-info/SOURCES.txt +++ /dev/null @@ -1,10 +0,0 @@ -pyproject.toml -napalm_yealink/__init__.py -napalm_yealink/yealink.py -napalm_yealink.egg-info/PKG-INFO -napalm_yealink.egg-info/SOURCES.txt -napalm_yealink.egg-info/dependency_links.txt -napalm_yealink.egg-info/entry_points.txt -napalm_yealink.egg-info/requires.txt -napalm_yealink.egg-info/top_level.txt -tests/test_fingerprint.py \ No newline at end of file diff --git a/napalm_yealink.egg-info/dependency_links.txt b/napalm_yealink.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/napalm_yealink.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/napalm_yealink.egg-info/entry_points.txt b/napalm_yealink.egg-info/entry_points.txt deleted file mode 100644 index dfce953..0000000 --- a/napalm_yealink.egg-info/entry_points.txt +++ /dev/null @@ -1,2 +0,0 @@ -[napalm.drivers] -yealink = napalm_yealink:YealinkDriver diff --git a/napalm_yealink.egg-info/requires.txt b/napalm_yealink.egg-info/requires.txt deleted file mode 100644 index 2db9ac5..0000000 --- a/napalm_yealink.egg-info/requires.txt +++ /dev/null @@ -1,3 +0,0 @@ -napalm -napalm-device-types -requests diff --git a/napalm_yealink.egg-info/top_level.txt b/napalm_yealink.egg-info/top_level.txt deleted file mode 100644 index f0dc5ee..0000000 --- a/napalm_yealink.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -napalm_yealink diff --git a/napalm_yealink/__pycache__/__init__.cpython-312.pyc b/napalm_yealink/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index f367807fa9f7f56c916f23964369d35c85e6216f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmX@j%ge<81e32@XZZo?#~=<2FhLog#ej_I3@HpLj5!Rsj8Tk?3@J?Mj8ROL%$h7O zL5egPZ}CQ^Cgx=3WxEt*mZcUIF#|>YG?{OSL+IuWfqrYCg$ZP=4F=U=cVhXq?YOXrIz>?W$Txv=B4Bp=|haw zg&GIt!ferxkI&4@EQycTE2#X%VUwGmQks)$SHualgAs^}1%Si{W=2NFy9@>oxTP*| LNjI_=u>%DG2}(?j diff --git a/napalm_yealink/__pycache__/yealink.cpython-312.pyc b/napalm_yealink/__pycache__/yealink.cpython-312.pyc deleted file mode 100644 index 8da1279e52852452b6a44f1b111cca0596a5b85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10971 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 MYft@}V9BQaKSG%W*8l(j diff --git a/napalm_yealink/yealink.py b/napalm_yealink/yealink.py index 97f4237..91326cd 100644 --- a/napalm_yealink/yealink.py +++ b/napalm_yealink/yealink.py @@ -22,7 +22,6 @@ from requests.exceptions import RequestException from napalm.base.exceptions import ConnectionClosedException, ConnectionException from napalm_device_types import FingerprintRule, PhoneDriver -from napalm_device_types.models import HealthMetricsDict class YealinkDriver(PhoneDriver): @@ -210,18 +209,3 @@ class YealinkDriver(PhoneDriver): def rollback(self) -> None: raise NotImplementedError - - # AccessPointDriver stubs - - def get_wireless_clients(self) -> list: - raise NotImplementedError - - def get_ssids(self) -> dict: - raise NotImplementedError - - def get_radio_info(self) -> dict: - raise NotImplementedError - - @classmethod - async def get_health_metrics(cls, snmp_get, snmp_walk) -> HealthMetricsDict: - raise NotImplementedError diff --git a/pyproject.toml b/pyproject.toml index 2dc347b..cd19958 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "napalm-yealink" -version = "0.1.0" +version = "0.1.1" description = "NAPALM driver for Yealink IP phones and video endpoints" requires-python = ">=3.10" dependencies = [ diff --git a/tests/__pycache__/__init__.cpython-312.pyc b/tests/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 1e4997b1f41d569929c48d5f46bfef4a0eb59df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmX@j%ge<81a&v8vq1D?5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!^3u=9&rQ`&&M3+( zF3C*H%T3J7EX&VJ*H1|;)Avg)@h{5OFH6l!$uH8+ODsst$