Skip to content

Commit e895a98

Browse files
committed
Added __repr__ and a helper function
1 parent c31ca97 commit e895a98

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

kaitaistruct.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import itertools
2-
import sys
2+
import sys, threading
33
import struct
44
from struct import unpack
55
from io import BytesIO # noqa
6+
from reprlib import Repr, recursive_repr
67

78
PY2 = sys.version_info[0] == 2
89

@@ -15,6 +16,16 @@
1516
#
1617
__version__ = '0.8'
1718

19+
reprer = Repr()
20+
21+
@recursive_repr()
22+
def repr_generator_for_all_props(self):
23+
"""Generator to use in own __repr__ functions."""
24+
return (
25+
"".join(( str(k), "=", reprer.repr(getattr(self, k)) ))
26+
for k in dir(self)
27+
if k[0] != "_" and not hasattr(KaitaiStruct, k) and not isinstance(getattr(self, k), type)
28+
)
1829

1930
class KaitaiStruct(object):
2031
def __init__(self, stream):
@@ -26,6 +37,16 @@ def __enter__(self):
2637
def __exit__(self, *args, **kwargs):
2738
self.close()
2839

40+
def __repr__(self):
41+
return "".join(
42+
(
43+
self.__class__.__name__,
44+
"(",
45+
", ".join( repr_generator_for_all_props(self) ),
46+
")"
47+
)
48+
)
49+
2950
def close(self):
3051
self._io.close()
3152

0 commit comments

Comments
 (0)