Bitstring

Latest version: v4.2.2

Safety actively analyzes 629004 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 5

3.1.2

---

April 18th 2013: version 3.1.2 released

This is another bug fix release.
- Fix for problem where unpacking bytes would by eight times too long


bitstring.3.1.1
---

March 21st 2013: version 3.1.1 released

This is a bug fix release.
- Fix for problem where concatenating bitstrings sometimes modified method's arguments

3.1.0

---

February 26th 2013: version 3.1.0 released

This is a minor release with a couple of new features and some bug fixes.

New 'pad' token

This token can be used in reads and when packing/unpacking to indicate that
you don't care about the contents of these bits. Any padding bits will just
be skipped over when reading/unpacking or zero-filled when packing.


>>> a, b = s.readlist('pad:5, uint:3, pad:1, uint:3')


Here only two items are returned in the list - the padding bits are ignored.

New clear and copy convenience methods

These methods have been introduced in Python 3.3 for lists and bytearrays,
as more obvious ways of clearing and copying, and we mirror that change here.

`t = s.copy()` is equivalent to `t = s[:]`, and `s.clear()` is equivalent to `del s[:]`.

Other changes
- Some bug fixes.

3.0.2b

---

February 7th 2012: version 3.0.2 released

This is a minor update that fixes a few bugs.
- Fix for subclasses of bitstring classes behaving strangely (Issue 121).
- Fix for excessive memory usage in rare cases (Issue 120).
- Fixes for slicing edge cases.

There has also been a reorganisation of the code to return it to a single
'bitstring.py' file rather than the package that has been used for the past
several releases. This change shouldn't affect users directly.

3.0.1

---

November 21st 2011: version 3.0.1 released

This release fixed a small but very visible bug in bitstring printing.

3.0.0

---

November 21st 2011: version 3.0.0 released

This is a major release which breaks backward compatibility in a few places.

Backwardly incompatible changes

Hex, oct and bin properties don't have leading `0x`, `0o` and `0b`

If you ask for the hex, octal or binary representations of a bitstring then
they will no longer be prefixed with `0x`, `0o` or `0b`. This was done as it
was noticed that the first thing a lot of user code does after getting these
representations was to cut off the first two characters before further
processing.


>>> a = BitArray('0x123')
>>> a.hex, a.oct, a.bin
('123', '0443', '000100100011')


Previously this would have returned `('0x123', '0o0443', '0b000100100011')`

This change might require some recoding, but it should all be simplifications.

ConstBitArray renamed to Bits

Previously Bits was an alias for ConstBitStream (for backward compatibility).
This has now changed so that Bits and BitArray loosely correspond to the
built-in types `bytes` and `bytearray`.

If you were using streaming/reading methods on a Bits object then you will
have to change it to a ConstBitStream.

The ConstBitArray name is kept as an alias for Bits.

Stepping in slices has conventional meaning

The step parameter in `__getitem__`, `__setitem__` and `__delitem__` used to act
as a multiplier for the start and stop parameters. No one seemed to use it
though and so it has now reverted to the conventional meaning for containers.

If you are using step then recoding is simple: `s[a:b:c]` becomes `s[a*c:b*c]`.

Some examples of the new usage:


>>> s = BitArray('0x0000')
s[::4] = [1, 1, 1, 1]
>>> s.hex
'8888'
>>> del s[8::2]
>>> s.hex
'880'


New features

New `readto` method

This method is a mix between a find and a read - it searches for a bitstring
and then reads up to and including it. For example:


>>> s = ConstBitStream('0x47000102034704050647')
>>> s.readto('0x47', bytealigned=True)
BitStream('0x47')
>>> s.readto('0x47', bytealigned=True)
BitStream('0x0001020347')
>>> s.readto('0x47', bytealigned=True)
BitStream('0x04050647')


`pack` function accepts an iterable as its format

Previously only a string was accepted as the format in the pack function.
This was an oversight as it broke the symmetry between pack and unpack.
Now you can use formats like this:


fmt = ['hex:8', 'bin:3']
a = pack(fmt, '47', '001')
a.unpack(fmt)

2.2.0

---

June 18th 2011: version 2.2.0 released

This is a minor upgrade with a couple of new features.

New interleaved exponential-Golomb interpretations

New bit interpretations for interleaved exponential-Golomb (as used in the
Dirac video codec) are supplied via 'uie' and 'sie':


>>> s = BitArray(uie=41)
>>> s.uie
41
>>> s.bin
'0b00010001001'


These are pretty similar to the non-interleaved versions - see the manual
for more details. Credit goes to Paul Sargent for the patch.

New package-level bytealigned variable

A number of methods take a 'bytealigned' parameter to indicate that they
should only work on byte boundaries (e.g. find, replace, split). Previously
this parameter defaulted to 'False'. Instead it now defaults to
'bitstring.bytealigned', which itself defaults to 'False', but can be changed
to modify the default behaviour of the methods. For example:


>>> a = BitArray('0x00 ff 0f ff')
>>> a.find('0x0f')
(4,) found first not on a byte boundary
>>> a.find('0x0f', bytealigned=True)
(16,) forced looking only on byte boundaries
>>> bitstring.bytealigned = True Change default behaviour
>>> a.find('0x0f')
(16,)
>>> a.find('0x0f', bytealigned=False)
(4,)


If you're only working with bytes then this can help avoid some errors and
save some typing!

Other changes
- Fix for Python 3.2, correcting for a change to the binascii module.
- Fix for bool initialisation from 0 or 1.
- Efficiency improvements, including interning strategy.

Page 4 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.