What's the problem? (If this is a feature request then feel free to delete
all the questions and just say what you want!)
According to the documentation at
https://pythonhosted.org/bitstring/creation.html#the-auto-initialiser, the
"auto" initialiser "can also be used to convert between the BitArray and Bits
classes". However, this only appears to work in one direction.
What is the expected output? What do you see instead?
Actual behavior (all but the last line are in the documentation linked above):
>>> immutable = Bits('0xabc')
>>> mutable = BitArray(immutable)
>>> mutable += '0xdef'
>>> immutable = Bits(mutable)
>>> set([immutable])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'BitArray'
>>> print type(immutable)
<class 'bitstring.BitArray'>
Expected behavior:
>>> immutable = Bits('0xabc')
>>> mutable = BitArray(immutable)
>>> mutable += '0xdef'
>>> immutable = Bits(mutable)
>>> set([immutable])
set([Bits('0xabcdef')])
>>> print type(immutable)
<class 'bitstring.Bits'>
Which version of bitstring are you using (bitstring.__version__), which
version of Python (e.g. 2.7, 3.2) and what platform
(Linux, Windows, etc.)
bitstring.__version__: '3.1.3'
sys.version: '2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit
(Intel)]'
platform: Windows 8.1 x64
Please provide any additional information below.
Line 791 of bitstring.py contains:
"""
if isinstance(auto, Bits):
return auto
"""
While this may be efficient when ``auto`` is an instance of Bits, the correct
behavior is to fall through to lines 795-796 when ``auto`` is an instance of a
subclass of Bits.
In the meantime I am working around this behavior using the following snippet:
>>> mutable=BitArray('0xabcdef')
>>> immutable=Bits()
>>> immutable._initialise(mutable,None,None)
>>> set([immutable])
set([Bits('0xabcdef')])
Original issue reported on code.google.com by david.ha...@gmail.com on 22 Sep 2014 at 1:17
Original issue reported on code.google.com by
david.ha...@gmail.com
on 22 Sep 2014 at 1:17