Skip to content

Regression: exception classes have changed (0.5.x => 0.6.0+) #845

Closed
@liske

Description

@liske

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions