Skip to content

Commit 081c93d

Browse files
authored
Merge pull request #42 from rtzoeller/dir_support
Calling dir() on a Structure includes Fields
2 parents 1912bca + 7c915fb commit 081c93d

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

suitcase/structure.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ def __setattr__(self, key, value):
293293
return field.setval(value)
294294
return object.__setattr__(self, key, value)
295295

296+
def __dir__(self):
297+
return dir(type(self)) + [str(k) for k, v in self._sorted_fields]
298+
296299
def __iter__(self):
297300
return iter(self._sorted_fields)
298301

suitcase/test/test_fields.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1189,5 +1189,14 @@ def test_unpack_greedy_after(self):
11891189
self.assertEqual(m.last.value, b"Doe")
11901190
self.assertEqual(m.greedy, b"Hello World!")
11911191

1192+
1193+
class TestDiscoverableFields(unittest.TestCase):
1194+
def test_dir(self):
1195+
m = PascalString16()
1196+
attrs = dir(m)
1197+
self.assertTrue("length" in attrs)
1198+
self.assertTrue("value" in attrs)
1199+
1200+
11921201
if __name__ == "__main__":
11931202
unittest.main()

0 commit comments

Comments
 (0)