Skip to content

Commit b710344

Browse files
committed
Fix compilation of padding and names combination.
1 parent 0a2a393 commit b710344

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

bitstruct.py

+15-15
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import binascii
77

88

9-
__version__ = "5.2.0"
9+
__version__ = "5.2.1"
1010

1111

1212
class Error(Exception):
@@ -15,16 +15,16 @@ class Error(Exception):
1515

1616
class _Info(object):
1717

18-
def __init__(self, name, size):
19-
self.name = name
18+
def __init__(self, size, name=None):
2019
self.size = size
20+
self.name = name
2121
self.endianness = None
2222

2323

2424
class _SignedInteger(_Info):
2525

26-
def __init__(self, name, size):
27-
super(_SignedInteger, self).__init__(name, size)
26+
def __init__(self, size, name):
27+
super(_SignedInteger, self).__init__(size, name)
2828
self.minimum = -2 ** (size - 1)
2929
self.maximum = -self.minimum - 1
3030

@@ -57,8 +57,8 @@ def unpack(self, bits):
5757

5858
class _UnsignedInteger(_Info):
5959

60-
def __init__(self, name, size):
61-
super(_UnsignedInteger, self).__init__(name, size)
60+
def __init__(self, size, name):
61+
super(_UnsignedInteger, self).__init__(size, name)
6262
self.maximum = 2 ** size - 1
6363

6464
def pack(self, arg):
@@ -202,27 +202,27 @@ def _parse_format(fmt, names):
202202
name = names[i]
203203

204204
if type_ == 's':
205-
info = _SignedInteger(name, size)
205+
info = _SignedInteger(size, name)
206206
i += 1
207207
elif type_ == 'u':
208-
info = _UnsignedInteger(name, size)
208+
info = _UnsignedInteger(size, name)
209209
i += 1
210210
elif type_ == 'f':
211-
info = _Float(name, size)
211+
info = _Float(size, name)
212212
i += 1
213213
elif type_ == 'b':
214-
info = _Boolean(name, size)
214+
info = _Boolean(size, name)
215215
i += 1
216216
elif type_ == 't':
217-
info = _Text(name, size)
217+
info = _Text(size, name)
218218
i += 1
219219
elif type_ == 'r':
220-
info = _Raw(name, size)
220+
info = _Raw(size, name)
221221
i += 1
222222
elif type_ == 'p':
223-
info = _ZeroPadding(name, size)
223+
info = _ZeroPadding(size)
224224
elif type_ == 'P':
225-
info = _OnePadding(name, size)
225+
info = _OnePadding(size)
226226
else:
227227
raise Error("bad char '{}' in format".format(type_))
228228

tests/test_bitstruct.py

+4
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,10 @@ def test_compile_pack_unpack_formats(self):
733733
self.assertEqual(packed_1, b'\xe0')
734734
self.assertEqual(packed_2, b'\xe0')
735735

736+
def test_compile_formats(self):
737+
bitstruct.compile('p1u1')
738+
bitstruct.compile('p1u1', ['a'])
739+
736740

737741
if __name__ == '__main__':
738742
unittest.main()

0 commit comments

Comments
 (0)