Closed
Description
Hi,
it seems that upgrading to pyroute2 0.6.0+ might break code using "old" exception classes:
Python 3.9.6 (default, Sep 11 2021, 18:42:03)
[GCC 10.3.1 20210625] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyroute2 import IPRoute
>>> ipr = IPRoute()
>>> ipr.get_links(42)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.9/site-packages/pr2modules/iproute/linux.py", line 286, in get_links
result.extend(self.link(cmd, **kwarg))
File "/usr/lib/python3.9/site-packages/pr2modules/iproute/linux.py", line 1393, in link
ret = self.nlm_request(msg,
File "/usr/lib/python3.9/site-packages/pr2modules/netlink/nlsocket.py", line 391, in nlm_request
return tuple(self._genlm_request(*argv, **kwarg))
File "/usr/lib/python3.9/site-packages/pr2modules/netlink/nlsocket.py", line 882, in nlm_request
for msg in self.get(msg_seq=msg_seq,
File "/usr/lib/python3.9/site-packages/pr2modules/netlink/nlsocket.py", line 394, in get
return tuple(self._genlm_get(*argv, **kwarg))
File "/usr/lib/python3.9/site-packages/pr2modules/netlink/nlsocket.py", line 719, in get
raise msg['header']['error']
pr2modules.netlink.exceptions.NetlinkError: (19, 'No such device')
Code written for older versions of pyroute2 may have this exception handling:
from pyroute2.netlink.exceptions import NetlinkError
#...
try:
foo = ipr.get_links(42)
except NetlinkError as err:
print("Oops!")
But the exception is not catched unless NetlinkError
is imported from pr2modules.netlink.exceptions
instead of pyroute2.netlink.exceptions
. This is not intentional, isn't it?
Activity