Skip to content
This repository was archived by the owner on Apr 22, 2024. It is now read-only.

Commit 8250e1a

Browse files
authored
Merge pull request #536 from hdiogenes/object-reprs
Easier debugging with repr's
2 parents 0301472 + 1117caf commit 8250e1a

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed

pyof/foundation/base.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,11 @@ def __init__(self, xid=None):
750750
super().__init__()
751751
self.header.xid = randint(0, MAXID) if xid is None else xid
752752

753+
def __repr__(self):
754+
"""Show a full representation of the object."""
755+
return "%s(xid=%r)" % (self.__class__.__name__,
756+
self.header.xid if self.header else None)
757+
753758
def __init_subclass__(cls, **kwargs):
754759
if cls.header is None or cls.header.__class__.__name__ != 'Header':
755760
msg = "The header attribute must be implemented on the class "

pyof/v0x01/common/header.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,13 @@ def __init__(self, message_type=None, length=None, xid=None):
8383
self.message_type = message_type
8484
self.length = length
8585
self.xid = xid
86+
87+
def __str__(self):
88+
"""Get just the header type. Eg.: 'OFPT_SET_CONFIG'."""
89+
return self.message_type.name
90+
91+
def __repr__(self):
92+
"""Show a full representation of the Header, including version."""
93+
return "%s(message_type=%s, length=%r, xid=%r, version=%r)" \
94+
% (self.__class__.__name__, self.message_type, self.length,
95+
self.xid, self.version)

pyof/v0x01/controller2switch/common.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ def __init__(self, xid=None, flags=None, miss_send_len=None):
8686
self.flags = flags
8787
self.miss_send_len = miss_send_len
8888

89+
def __repr__(self):
90+
"""Show a full representation of the object."""
91+
return "%s(xid=%r, flags=%s, miss_send_len=%r)" \
92+
% (self.__class__.__name__, self.header.xid, self.flags,
93+
self.miss_send_len)
94+
8995

9096
class AggregateStatsReply(GenericStruct):
9197
"""Body of reply to OFPST_AGGREGATE request."""

tests/raw_dump.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ def __init__(self, version, basename):
2222
"""
2323
self._path = 'raw/{}/{}.dat'.format(version, basename)
2424

25+
def __repr__(self):
26+
return repr(self.unpack())
27+
28+
def __bytes__(self):
29+
return self.read()
30+
2531
def read(self):
2632
"""Read the raw file.
2733
@@ -35,8 +41,8 @@ def unpack(self):
3541
"""Unpack header and message from a byte sequence.
3642
3743
Returns:
38-
The object type specified in the header with the coresponding
39-
header.
44+
The object type specified in the header with the corresponding
45+
header.
4046
"""
4147
content = self.read()
4248
raw_header = content[:self._HEADER_BYTES]

0 commit comments

Comments
 (0)