Skip to main content

efficient arrays of booleans -- C extension

Project description

https://dev.azure.com/hardbyte/bitarray/_apis/build/status/hardbyte.bitarray?branchName=master

bitarray: efficient arrays of booleans

This module provides an object type which efficiently represents an array of booleans. Bitarrays are sequence types and behave very much like usual lists. Eight bits are represented by one byte in a contiguous block of memory. The user can select between two representations: little-endian and big-endian. All of the functionality is implemented in C. Methods for accessing the machine representation are provided. This can be useful when bit level access to binary files is required, such as portable bitmap image files (.pbm). Also, when dealing with compressed data which uses variable bit length encoding, you may find this module useful.

Key features

  • All functionality implemented in C.

  • Bitarray objects behave very much like a list object, in particular slicing (including slice assignment and deletion) is supported.

  • The bit endianness can be specified for each bitarray object, see below.

  • Packing and unpacking to other binary data formats, e.g. numpy.ndarray, is possible.

  • Fast methods for encoding and decoding variable bit length prefix codes

  • Bitwise operations: &, |, ^, &=, |=, ^=, ~

  • Sequential search

  • Pickling and unpickling of bitarray objects possible.

  • Bitarray objects support the buffer protocol (Python 2.7 and above)

  • On 32-bit systems, a bitarray object can contain up to 2^34 elements, that is 16 Gbits (on 64-bit machines up to 2^63 elements in theory).

Installation

bitarray can be installed from PyPi:

pip install bitarray-hardbyte

Alternatively bitarray can be installed from source:

$ tar xzf bitarray-1.0.1.tar.gz
$ cd bitarray-1.0.1
$ python setup.py install

On Unix systems, the latter command may have to be executed with root privileges. You can also pip install bitarray. Once you have installed the package, you may want to test it:

$ python -c 'import bitarray; bitarray.test()'
bitarray is installed in: /usr/local/lib/python2.7/site-packages/bitarray
bitarray version: 1.0.1
2.7.2 (r271:86832, Nov 29 2010) [GCC 4.2.1 (SUSE Linux)]
.........................................................................
.................................................
----------------------------------------------------------------------
Ran 146 tests in 2.164s

OK

You can always import the function test, and test().wasSuccessful() will return True when the test went well.

Using the module

As mentioned above, bitarray objects behave very much like lists, so there is not too much to learn. The biggest difference from list objects is the ability to access the machine representation of the object. When doing so, the bit endianness is of importance; this issue is explained in detail in the section below. Here, we demonstrate the basic usage of bitarray objects:

>>> from bitarray import bitarray
>>> a = bitarray()            # create empty bitarray
>>> a.append(True)
>>> a.extend([False, True, True])
>>> a
bitarray('1011')

Bitarray objects can be instantiated in different ways:

>>> a = bitarray(2**20)       # bitarray of length 1048576 (uninitialized)
>>> bitarray('1001011')       # from a string
bitarray('1001011')
>>> lst = [True, False, False, True, False, True, True]
>>> bitarray(lst)             # from list, tuple, iterable
bitarray('1001011')

Bits can be assigned from any Python object, if the value can be interpreted as a truth value. You can think of this as Python’s built-in function bool() being applied, whenever casting an object:

>>> a = bitarray([42, '', True, {}, 'foo', None])
>>> a
bitarray('101010')
>>> a.append(a)      # note that bool(a) is True
>>> a.count(42)      # counts occurrences of True (not 42)
4L
>>> a.remove('')     # removes first occurrence of False
>>> a
bitarray('110101')

Like lists, bitarray objects support slice assignment and deletion:

>>> a = bitarray(50)
>>> a.setall(False)
>>> a[11:37:3] = 9 * bitarray([True])
>>> a
bitarray('00000000000100100100100100100100100100000000000000')
>>> del a[12::3]
>>> a
bitarray('0000000000010101010101010101000000000')
>>> a[-6:] = bitarray('10011')
>>> a
bitarray('000000000001010101010101010100010011')
>>> a += bitarray('000111')
>>> a[9:]
bitarray('001010101010101010100010011000111')

In addition, slices can be assigned to booleans, which is easier (and faster) than assigning to a bitarray in which all values are the same:

>>> a = 20 * bitarray('0')
>>> a[1:15:3] = True
>>> a
bitarray('01001001001001000000')

This is easier and faster than:

>>> a = 20 * bitarray('0')
>>> a[1:15:3] = 5 * bitarray('1')
>>> a
bitarray('01001001001001000000')

Note that in the latter we have to create a temporary bitarray whose length must be known or calculated.

Bit endianness

Since a bitarray allows addressing of individual bits, where the machine represents 8 bits in one byte, there are two obvious choices for this mapping: little- and big-endian. When creating a new bitarray object, the endianness can always be specified explicitly:

>>> a = bitarray(endian='little')
>>> a.frombytes(b'A')
>>> a
bitarray('10000010')
>>> b = bitarray('11000010', endian='little')
>>> b.tobytes()
'C'

Here, the low-bit comes first because little-endian means that increasing numeric significance corresponds to an increasing address (index). So a[0] is the lowest and least significant bit, and a[7] is the highest and most significant bit.

>>> a = bitarray(endian='big')
>>> a.frombytes(b'A')
>>> a
bitarray('01000001')
>>> a[6] = 1
>>> a.tobytes()
'C'

Here, the high-bit comes first because big-endian means “most-significant first”. So a[0] is now the lowest and most significant bit, and a[7] is the highest and least significant bit.

The bit endianness is a property attached to each bitarray object. When comparing bitarray objects, the endianness (and hence the machine representation) is irrelevant; what matters is the mapping from indices to bits:

>>> bitarray('11001', endian='big') == bitarray('11001', endian='little')
True

Bitwise operations (&, |, ^, &=, |=, ^=, ~) are implemented efficiently using the corresponding byte operations in C, i.e. the operators act on the machine representation of the bitarray objects. Therefore, one has to be cautious when applying the operation to bitarrays with different endianness.

When converting to and from machine representation, using the tobytes, frombytes, tofile and fromfile methods, the endianness matters:

>>> a = bitarray(endian='little')
>>> a.frombytes(b'\x01')
>>> a
bitarray('10000000')
>>> b = bitarray(endian='big')
>>> b.frombytes(b'\x80')
>>> b
bitarray('10000000')
>>> a == b
True
>>> a.tobytes() == b.tobytes()
False

The endianness can not be changed once an object is created. However, since creating a bitarray from another bitarray just copies the memory representing the data, you can create a new bitarray with different endianness:

>>> a = bitarray('11100000', endian='little')
>>> a
bitarray('11100000')
>>> b = bitarray(a, endian='big')
>>> b
bitarray('00000111')
>>> a == b
False
>>> a.tobytes() == b.tobytes()
True

The default bit endianness is currently big-endian; however, this may change in the future, and when dealing with the machine representation of bitarray objects, it is recommended to always explicitly specify the endianness.

Unless explicitly converting to machine representation, using the tobytes, frombytes, tofile and fromfile methods, the bit endianness will have no effect on any computation, and one can safely ignore setting the endianness, and other details of this section.

Buffer protocol

Python 2.7 provides memoryview objects, which allow Python code to access the internal data of an object that supports the buffer protocol without copying. Bitarray objects support this protocol, with the memory being interpreted as simple bytes.

>>> a = bitarray('01000001' '01000010' '01000011', endian='big')
>>> v = memoryview(a)
>>> len(v)
3
>>> v[-1]
'C'
>>> v[:2].tobytes()
'AB'
>>> v.readonly  # changing a bitarray's memory is also possible
False
>>> v[1] = 'o'
>>> a
bitarray('010000010110111101000011')

Variable bit length prefix codes

The method encode takes a dictionary mapping symbols to bitarrays and an iterable, and extends the bitarray object with the encoded symbols found while iterating. For example:

>>> d = {'H':bitarray('111'), 'e':bitarray('0'),
...      'l':bitarray('110'), 'o':bitarray('10')}
...
>>> a = bitarray()
>>> a.encode(d, 'Hello')
>>> a
bitarray('111011011010')

Note that the string 'Hello' is an iterable, but the symbols are not limited to characters, in fact any immutable Python object can be a symbol. Taking the same dictionary, we can apply the decode method which will return a list of the symbols:

>>> a.decode(d)
['H', 'e', 'l', 'l', 'o']
>>> ''.join(a.decode(d))
'Hello'

Since symbols are not limited to being characters, it is necessary to return them as elements of a list, rather than simply returning the joined string.

Reference

The bitarray class:

bitarray([initial], [endian=string])

Return a new bitarray object whose items are bits initialized from the optional initial, and endianness. If no object is provided, the bitarray is initialized to have length zero. The initial object may be of the following types:

int, long

Create bitarray of length given by the integer. The initial values in the array are random, because only the memory allocated.

string

Create bitarray from a string of ‘0’s and ‘1’s.

list, tuple, iterable

Create bitarray from a sequence, each element in the sequence is converted to a bit using truth value 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 ‘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.

A bitarray object supports the following methods:

all() -> bool

Returns True when all bits in the array are True.

any() -> bool

Returns True when any bit in the array is True.

append(item)

Append the value bool(item) to the end of the bitarray.

buffer_info() -> tuple

Return a tuple (address, size, endianness, unused, allocated) giving the current memory address, the size (in bytes) used to hold the bitarray’s contents, the bit endianness as a string, the number of unused bits (e.g. a bitarray of length 11 will have a buffer size of 2 bytes and 5 unused bits), and the size (in bytes) of the allocated memory.

bytereverse()

For all bytes representing the bitarray, reverse the bit order (in-place). Note: This method changes the actual machine values representing the bitarray; it does not change the endianness of the bitarray object.

copy() -> bitarray

Return a copy of the bitarray.

count([value]) -> int

Return number of occurrences of value (defaults to True) in the bitarray.

decode(code) -> list

Given a prefix code (a dict mapping symbols to bitarrays), decode the content of the bitarray and return it as a list of symbols.

encode(code, iterable)

Given a prefix code (a dict mapping symbols to bitarrays), iterate over the iterable object with symbols, and extend the bitarray with the corresponding bitarray for each symbols.

endian() -> str

Return the bit endianness as a string (either ‘little’ or ‘big’).

extend(object)

Append bits to the end of the bitarray. The objects which can be passed to this method are the same iterable objects which can given to a bitarray object upon initialization.

fill() -> int

Adds zeros to the end of the bitarray, such that the length of the bitarray will be a multiple of 8. Returns the number of bits added (0..7).

frombytes(bytes)

Append from a byte string, interpreted as machine values.

fromfile(f, [n])

Read n bytes from the file object f and append them to the bitarray interpreted as machine values. When n is omitted, as many bytes are read until EOF is reached.

fromstring(str)

Append from a string, interpreting the string as machine values. Deprecated since version 0.4.0, use frombytes() instead.

index(value, [start, [stop]]) -> int

Return index of the first occurrence of bool(value) in the bitarray. Raises ValueError if the value is not present.

insert(i, item)

Insert bool(item) into the bitarray before position i.

invert()

Invert all bits in the array (in-place), i.e. convert each 1-bit into a 0-bit and vice versa.

iterdecode(code) -> iterator

Given a prefix code (a dict mapping symbols to bitarrays), decode the content of the bitarray and return an iterator over the symbols.

itersearch(bitarray) -> iterator

Searches for the given a bitarray in self, and return an iterator over the start positions where bitarray matches self.

length() -> int

Return the length, i.e. number of bits stored in the bitarray. This method is preferred over __len__ (used when typing len(a)), since __len__ will fail for a bitarray object with 2^31 or more elements on a 32bit machine, whereas this method will return the correct value, on 32bit and 64bit machines.

pack(bytes)

Extend the bitarray from a byte string, where each characters corresponds to a single bit. The character b’x00’ maps to bit 0 and all other characters map to bit 1. This method, as well as the unpack method, are meant for efficient transfer of data between bitarray objects to other python objects (for example NumPy’s ndarray object) which have a different view of memory.

pop([i]) -> item

Return the i-th (default last) element and delete it from the bitarray. Raises IndexError if bitarray is empty or index is out of range.

remove(item)

Remove the first occurrence of bool(item) in the bitarray. Raises ValueError if item is not present.

reverse()

Reverse the order of bits in the array (in-place).

search(bitarray, [limit]) -> list

Searches for the given bitarray in self, and return the list of start positions. The optional argument limits the number of search results to the integer specified. By default, all search results are returned.

setall(value)

Set all bits in the bitarray to bool(value).

sort(reverse=False)

Sort the bits in the array (in-place).

to01() -> str

Return a string containing ‘0’s and ‘1’s, representing the bits in the bitarray object. Note: To extend a bitarray from a string containing ‘0’s and ‘1’s, use the extend method.

tobytes() -> bytes

Return the byte representation 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.

tofile(f)

Write all bits (as machine values) to the file object f. When the length of the bitarray is not a multiple of 8, the remaining bits (1..7) are set to 0.

tolist() -> list

Return an ordinary list with the items in the bitarray. Note that the list object being created will require 32 or 64 times more memory than the bitarray object, which may cause a memory error if the bitarray is very large. Also note that to extend a bitarray with elements from a list, use the extend method.

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.

unpack(zero=b'\x00', one=b'\xff') -> bytes

Return a byte string containing one character for each bit in the bitarray, using the specified mapping. See also the pack method.

Functions defined in the module:

test(verbosity=1, repeat=1) -> TextTestResult

Run self-test, and return unittest.runner.TextTestResult object.

bitdiff(a, b) -> int

Return the difference between two bitarrays a and b. This is function does the same as (a ^ b).count(), but is more memory efficient, as no intermediate bitarray object gets created

bits2bytes(n) -> int

Return the number of bytes necessary to store n bits.

Change log

1.0.1 (2019-07-19):

  • fix readme to pass twine check

1.0.0 (2019-07-15):

  • fix bitarrays beings created from unicode in Python 2

  • use PyBytes_* in C code, treating the Py3k function names as default, which also removes all redefinitions of PyString_*

  • handle negative arguments of .index() method consistently with how they are treated for lists

  • add a few more comments to the C code

  • move imports outside tests: pickle, io, etc.

  • drop Python 2.5 support

0.9.3 (2019-05-20):

  • refactor resize() - only shrink allocated memory if new size falls lower than half the allocated size

  • improve error message when trying to initialize from float or complex

Please find the complete change log here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bitarray-hardbyte-1.1.0.tar.gz (38.7 kB view details)

Uploaded Source

Built Distributions

bitarray_hardbyte-1.1.0-cp37-cp37m-win_amd64.whl (64.7 kB view details)

Uploaded CPython 3.7m Windows x86-64

bitarray_hardbyte-1.1.0-cp37-cp37m-win32.whl (64.1 kB view details)

Uploaded CPython 3.7m Windows x86

bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_x86_64.whl (129.6 kB view details)

Uploaded CPython 3.7m

bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_i686.whl (134.0 kB view details)

Uploaded CPython 3.7m

bitarray_hardbyte-1.1.0-cp37-cp37m-macosx_10_6_intel.whl (94.8 kB view details)

Uploaded CPython 3.7m macOS 10.6+ intel

bitarray_hardbyte-1.1.0-cp36-cp36m-win_amd64.whl (64.7 kB view details)

Uploaded CPython 3.6m Windows x86-64

bitarray_hardbyte-1.1.0-cp36-cp36m-win32.whl (64.1 kB view details)

Uploaded CPython 3.6m Windows x86

bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_x86_64.whl (129.6 kB view details)

Uploaded CPython 3.6m

bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_i686.whl (134.0 kB view details)

Uploaded CPython 3.6m

bitarray_hardbyte-1.1.0-cp36-cp36m-macosx_10_6_intel.whl (94.8 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

bitarray_hardbyte-1.1.0-cp35-cp35m-win_amd64.whl (65.1 kB view details)

Uploaded CPython 3.5m Windows x86-64

bitarray_hardbyte-1.1.0-cp35-cp35m-win32.whl (63.7 kB view details)

Uploaded CPython 3.5m Windows x86

bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_x86_64.whl (129.6 kB view details)

Uploaded CPython 3.5m

bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_i686.whl (134.0 kB view details)

Uploaded CPython 3.5m

bitarray_hardbyte-1.1.0-cp35-cp35m-macosx_10_6_intel.whl (94.8 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_x86_64.whl (129.4 kB view details)

Uploaded CPython 3.4m

bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_i686.whl (133.8 kB view details)

Uploaded CPython 3.4m

bitarray_hardbyte-1.1.0-cp34-cp34m-macosx_10_6_intel.whl (94.8 kB view details)

Uploaded CPython 3.4m macOS 10.6+ intel

bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl (129.9 kB view details)

Uploaded CPython 2.7mu

bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_i686.whl (133.9 kB view details)

Uploaded CPython 2.7mu

bitarray_hardbyte-1.1.0-cp27-cp27m-win_amd64.whl (62.0 kB view details)

Uploaded CPython 2.7m Windows x86-64

bitarray_hardbyte-1.1.0-cp27-cp27m-win32.whl (62.0 kB view details)

Uploaded CPython 2.7m Windows x86

bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_x86_64.whl (129.9 kB view details)

Uploaded CPython 2.7m

bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_i686.whl (133.9 kB view details)

Uploaded CPython 2.7m

bitarray_hardbyte-1.1.0-cp27-cp27m-macosx_10_6_intel.whl (96.0 kB view details)

Uploaded CPython 2.7m macOS 10.6+ intel

File details

Details for the file bitarray-hardbyte-1.1.0.tar.gz.

File metadata

  • Download URL: bitarray-hardbyte-1.1.0.tar.gz
  • Upload date:
  • Size: 38.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray-hardbyte-1.1.0.tar.gz
Algorithm Hash digest
SHA256 b82b8fea6380eccf78c2ae60522912ad4a25a4b814ed584d7daeb6292dbf4501
MD5 9e6f1ba8fb7a85adeff3f78fdccfd12c
BLAKE2b-256 6828b65ced0dcfa4f28e3b52b194e2721707341ef093b67bec3faa8bd7733e3c

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 64.7 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b90dd48219c93d6fc729b82780965cdf3802baa945441f039d692a10ddad4b95
MD5 1a1f786e428f72959f8461ec216f71af
BLAKE2b-256 9a6d303cabec58162e7c97c6f5a5d9b8873ef72fdddf8121dccbbe9540dcbf41

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp37-cp37m-win32.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 64.1 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 bf6b99d25d9f63795306fe45730c501860e1c9953c38865ed98a66171dd3cc8c
MD5 6e2698d812602a2089bf1a1aa5dc5035
BLAKE2b-256 07088f8d8be2bd7fd6f06664a6f7609bb997dea077ed5a08937fec8619a6c52a

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 129.6 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0b243ded25d18610af38ea3d8e95063dd86a2bd768890818c0bfda69a0b0b9a8
MD5 9965b4f4523db5571afb4acde456c420
BLAKE2b-256 dd58da4db2ecf5aa42b77fd06ace66907198580ddf870b40cf0c083db9ec75ef

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 134.0 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 40ce122e81ea4d9b6bc8a2169ae7e2ce4369223150f17be77af209705f23a653
MD5 4670e8b6807a4ffac5856533c36e3d42
BLAKE2b-256 73ec7bcda4e734599a97c393c49e9c6763253de50876bb2d3329b5ab444402c9

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp37-cp37m-macosx_10_6_intel.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp37-cp37m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: CPython 3.7m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp37-cp37m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 3705ed024cf3fd58c7fca085cc310e771828cdc9652afced01873a178157dce2
MD5 64429c2458ccfea9d4d78034f1f4a06e
BLAKE2b-256 34c2ff8b193f9aa21524db74c94bfe7c0c29ceda5e700de8fd3c825bd2656ab2

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 64.7 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 cb53d3582b3ff68322762af8781ab0e3788d9b8c5f7357666a7af29cea95d8a8
MD5 d1bc96e8662a2d2c412533a806688b13
BLAKE2b-256 83eb4c6faede25e46b15b48fa06fdacdc57531eea23a6e237dfd7a38df0b9f81

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp36-cp36m-win32.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 64.1 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 f8ca84047dc923356062f6f44b799df8a77c42f25ad915240d410932b93808a6
MD5 93e4e4d240bc4eb7aede80cf717d178b
BLAKE2b-256 848047cb6b9070185eefadbc1e4e2e41cdb1be7607bfe3c7003dddb9ee6917d9

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 129.6 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c5fb02c460d83ae9e3731e9472ccd03fc4cbf2cdf2ab5a54209325ea33f70144
MD5 120158478373f2d3b8c1830351ac3303
BLAKE2b-256 c7d5bc7d298ebd4bf067b6d6de937da99d78960fe5ea770ffd31352e6483a8dd

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_i686.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 134.0 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 c5b62e76ced4f564eecb41ea3d912710997b01a1b3fe538ce0c271f03421ea2e
MD5 521bf3357b84b2f8da9189e9c5fdf21e
BLAKE2b-256 09bfdb9437b020f29d4375afe7c8364286307461c1a307cd15768f69631e0cf8

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp36-cp36m-macosx_10_6_intel.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp36-cp36m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: CPython 3.6m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 3de8bac4c433e7ca7a6da849f3c69056d548bc033cb3cfac2eb4d978f83f6faa
MD5 8a9d207ca6e56a6d22cf639525f9fb56
BLAKE2b-256 b13d328a1be16956e336043b54d93ff612cf065532f4e230756ffd986913484a

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 65.1 kB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 65663d6597b3692733d92341719ff03b62f48bcb075b37e78c93b9a8c83a552b
MD5 38ab0717bb590f920fb7f616f741db24
BLAKE2b-256 7e8967cd6fd15ad2054b83ae6cc767857641d85742836cf1e7979f458bdd638c

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp35-cp35m-win32.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 63.7 kB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 c86a949ca9d1a3959c54c1ba3e91157fbc32b7c872246533e0ff18a5784334a8
MD5 d36c8bbd5cc8ca88d616642ac530300d
BLAKE2b-256 0e3dd9a9e876a3e86239925788254fcd7e9ce72ab323f13fbabce93674d02f0f

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 129.6 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8473ca48d1bd2eefe0a7bd1ead974492660dc28c2bbbe9b8e61f3507ef0fecbe
MD5 0643e87137fd4ac2fb00506b96c618be
BLAKE2b-256 41db0677c156cd46dc6bd54ea8a6dc9244b22367571db67077f19ea9408b9ae6

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_i686.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_i686.whl
  • Upload date:
  • Size: 134.0 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 beb7deab498085350bb08085f462d90acdf09ec162c124de966b29348699584b
MD5 cc72a21131c38c771f82f9dfff7eafbb
BLAKE2b-256 84af1d4292e95a52185f080d63882540432a960b5b53366a29a76910cb82c434

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp35-cp35m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: CPython 3.5m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 944c4853d24cd116ab59dee3a9addc90428dc2d5c685608bd3df43abfb0fe6fe
MD5 bbc6f58edfcf4bfce09f2e45a0d8cdd4
BLAKE2b-256 458ec89f27744b7a6a54e7e6a0d456e2f4d168baec2cc6a5019b8a4c8b21f706

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 129.4 kB
  • Tags: CPython 3.4m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 97945051b8cd5178023433a7b6da7fae3004a73585802ba8b2218fdf0a53ce9a
MD5 c2f2f2a99e60febb18ea356681439117
BLAKE2b-256 8c70197360f2d498d6041d9996144f0f123028b6dbdf605e8427b21ceb485917

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_i686.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_i686.whl
  • Upload date:
  • Size: 133.8 kB
  • Tags: CPython 3.4m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 2e061542aad8709f8c29aae1c7022af291b665f56ade75e5324201d49761452e
MD5 9fb0be69ae31879d8eb87a93da251e64
BLAKE2b-256 f41f73111b121ea06eb1d17094a00748cc9d30b7244658481749323cdec531a1

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp34-cp34m-macosx_10_6_intel.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp34-cp34m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: CPython 3.4m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp34-cp34m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 077cc5a48a6a15a50e254dc400a8152f68fae2980f0b2243604479b172e5efd4
MD5 973e7590b34c75768af46f4acf9fc84a
BLAKE2b-256 3c8972a170498e51229dd56b0ac99ac240cbc96d6f469bd75ee0b3485ee850d0

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 129.9 kB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b339fecbaa950ecd20a5912be273c04f9e553eeb5740252de83e7accfba12b81
MD5 caf0844209f5da0d733547b02c13dc52
BLAKE2b-256 072964cddbab3e9c9210251505b510d7880f311076c1b4b8e98e6584607f2b8e

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_i686.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_i686.whl
  • Upload date:
  • Size: 133.9 kB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp27-cp27mu-manylinux1_i686.whl
Algorithm Hash digest
SHA256 3d54f3011f8ca2b2a14374575b487e77f83d2e5cef0b1a6e79ab37b784140f99
MD5 9a524e57ede3a38532aa9e759506787f
BLAKE2b-256 0f6bbe3dcc963657d8d3ad247a17269e70b936a6e3ea201376ced4081fc47424

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp27-cp27m-win_amd64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp27-cp27m-win_amd64.whl
  • Upload date:
  • Size: 62.0 kB
  • Tags: CPython 2.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 aca4a797710bb1811ed5660d039ad66abc59b3d232b074a39425b61da52d82cf
MD5 4fea90a078e4618834f476dd9092288b
BLAKE2b-256 3c2db83fa94f57326b6de4e4a507628eee5b1962f1e93d14dd77bbd624ab9515

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp27-cp27m-win32.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp27-cp27m-win32.whl
  • Upload date:
  • Size: 62.0 kB
  • Tags: CPython 2.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp27-cp27m-win32.whl
Algorithm Hash digest
SHA256 8b2f62f47295548ffc19e7a73847cb7e2de6848df6a5f6375e4271be6162b52c
MD5 f86d60905f61b5f2d6305c01471570f5
BLAKE2b-256 f062533de02e4693290667063cff968ce38a0408b1e95844e3223525b2ca9085

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 129.9 kB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a618a24eeac74162828ef95d9190827d1273f76b3dd0f0b490e64ab2098e4f75
MD5 b0229b7dedfe6f0c98433da6c925af37
BLAKE2b-256 f45cf283f68c867a1b9c2d0716af0b5ac40800cb966b406d9e72e7ef803356bc

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_i686.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_i686.whl
  • Upload date:
  • Size: 133.9 kB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp27-cp27m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 55422c6fc379c02df2c3f73d72b03d63b3e2b4a29f6212bd2bfd3696c9b86e99
MD5 9c5da9b0894b2596294aaca3f0c73334
BLAKE2b-256 4d5a7262f756d41d375bc48604df52f91693b6d1ab656c0c3c9002579db5cb81

See more details on using hashes here.

File details

Details for the file bitarray_hardbyte-1.1.0-cp27-cp27m-macosx_10_6_intel.whl.

File metadata

  • Download URL: bitarray_hardbyte-1.1.0-cp27-cp27m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 96.0 kB
  • Tags: CPython 2.7m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for bitarray_hardbyte-1.1.0-cp27-cp27m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 478b8a9fe9fb19a73e40eef5ce1be2a573278bcbcbef85927b66756b45ae89f4
MD5 ed7e5d1afa0f3b880949b180695cb211
BLAKE2b-256 a9ddbc655a2f51648a6637e5ca0293b1c25d851cbbfbc56256dc12d237dc528c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page