mirror of
https://github.com/apache/impala.git
synced 2026-01-15 15:00:36 -05:00
This is needed for python3 compatibility. Tested by running gerrit-verify-dryrun. Change-Id: I0641b03e880314a424d9d5a0651945c4f51273bc Reviewed-on: http://gerrit.cloudera.org:8080/15858 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
92 lines
3.2 KiB
Python
92 lines
3.2 KiB
Python
"""
|
|
This package defines an object type which can efficiently represent
|
|
a bitarray. Bitarrays are sequence types and behave very much like lists.
|
|
|
|
Please find a description of this package at:
|
|
|
|
http://pypi.python.org/pypi/bitarray/
|
|
|
|
Author: Ilan Schnell
|
|
"""
|
|
from bitarray._bitarray import _bitarray, bitdiff, bits2bytes, _sysinfo
|
|
|
|
__version__ = '1.2.1'
|
|
|
|
|
|
class bitarray(_bitarray):
|
|
"""bitarray(initial=0, /, endian='big')
|
|
|
|
Return a new bitarray object whose items are bits initialized from
|
|
the optional initial object, and endianness.
|
|
If no initial object is provided, an empty bitarray (length zero) is created.
|
|
The initial object may be of the following types:
|
|
|
|
`int`: Create a bitarray of given integer length. The initial values are
|
|
arbitrary. If you want all values to be set, use the .setall() method.
|
|
|
|
`str`: Create bitarray from a string of `0` and `1`.
|
|
|
|
`list`, `tuple`, `iterable`: Create bitarray from a sequence, each
|
|
element in the sequence is converted to a bit using its truth value.
|
|
|
|
`bitarray`: Create bitarray from another bitarray. This is done by
|
|
copying the memory holding the bitarray data, and is hence very fast.
|
|
|
|
The optional keyword arguments `endian` specifies the bit endianness of the
|
|
created bitarray object.
|
|
Allowed values are the strings `big` and `little` (default is `big`).
|
|
|
|
Note that setting the bit endianness only has an effect when accessing the
|
|
machine representation of the bitarray, i.e. when using the methods: tofile,
|
|
fromfile, tobytes, frombytes."""
|
|
|
|
def fromstring(self, string):
|
|
"""fromstring(str)
|
|
|
|
Append from a string, interpreting the string as machine values.
|
|
Deprecated since version 0.4.0, use `.frombytes()` instead."""
|
|
return self.frombytes(string.encode())
|
|
|
|
def tostring(self):
|
|
"""tostring() -> str
|
|
|
|
Return the string representing (machine values) of the bitarray.
|
|
When the length of the bitarray is not a multiple of 8, the few remaining
|
|
bits (1..7) are set to 0.
|
|
Deprecated since version 0.4.0, use `.tobytes()` instead."""
|
|
return self.tobytes().decode()
|
|
|
|
|
|
class frozenbitarray(_bitarray):
|
|
"""frozenbitarray(initial=0, /, endian='big')
|
|
|
|
Return a frozenbitarray object, which is initialized the same way a bitarray
|
|
object is initialized. A frozenbitarray is immutable and hashable.
|
|
Its contents cannot be altered after is created; however, it can be used as
|
|
a dictionary key.
|
|
"""
|
|
def __repr__(self):
|
|
return 'frozen' + _bitarray.__repr__(self)
|
|
|
|
def __hash__(self):
|
|
if getattr(self, '_hash', None) is None:
|
|
self._hash = hash((self.length(), self.tobytes()))
|
|
return self._hash
|
|
|
|
def __delitem__(self, *args, **kwargs):
|
|
raise TypeError("'frozenbitarray' is immutable")
|
|
|
|
append = bytereverse = extend = encode = fill = __delitem__
|
|
frombytes = fromfile = insert = invert = pack = pop = __delitem__
|
|
remove = reverse = setall = sort = __setitem__ = __delitem__
|
|
__iand__ = __iadd__ = __imul__ = __ior__ = __ixor__ = __delitem__
|
|
|
|
|
|
def test(verbosity=1, repeat=1):
|
|
"""test(verbosity=1, repeat=1) -> TextTestResult
|
|
|
|
Run self-test, and return unittest.runner.TextTestResult object.
|
|
"""
|
|
from bitarray import test_bitarray
|
|
return test_bitarray.run(verbosity=verbosity, repeat=repeat)
|