[](https://lambdaphoenix.github.io/cbits/)
[](https://pypi.org/project/cbits/)
[](https://pypi.org/project/cbits/)
[](https://pypi.org/project/cbits/#files)
[](https://pypi.org/project/cbits/)
[](https://github.com/lambdaphoenix/cbits/blob/main/CHANGELOG.md)
[](https://github.com/lambdaphoenix/cbits/blob/main/LICENSE)
# cbits
> High-performance BitVector for Python.
## Description
cbits implements a powerful bit vector type in C that is accessible via a Python API. It stores bits contiguously in memory and minimizes overhead compared to a list of Boolean values. Core operations such as setting, clearing, flipping and counting bits run in constant or near-constant time per word, making it ideal for extensive bit manipulation.
## Installation
```bash
pip install cbits
```
## Quick Start
```python
from cbits import BitVector
# Create a 64-bit vector
bv = BitVector(64)
# Set bits, clear, flip, query
bv.set(3)
bv.clear(3)
bv.flip(0)
print(bv.get(0)) # → True or False
print(len(bv), bv.bits)
# Range operations
bv.set_range(10, 5) # set bits 10..14
bv.clear_range(12, 2) # clear bits 12..13
bv.flip_range(0, 64) # toggle all bits
# Negative indexing
bv.set(-1)
print(bv.get(63))
# Boolean test & rank
print(bool(bv))
print(bv.rank(32)) # count of set bits up to index 32
# Copy & deepcopy
import copy
bv2 = bv.copy()
bv3 = copy.deepcopy(bv)
# Bitwise operations
a = BitVector(8); b = BitVector(8)
a.set(0); a.set(2)
b.set(1); b.set(2)
print((a & b)[0], (a | b)[0], (a ^ b)[0], (~a)[0])
# Sequence & iteration
bv[5] = True
print(bv[5])
print([i for i, bit in enumerate(bv) if bit])
# Slicing
sv = bv[2:10] # positions 2..9
print([sv.get(i) for i in range(len(sv))])
sv2 = bv[:5] # first five bits
sv3 = bv[5:] # bits from 5 to end
sv4 = bv[::2] # every other bit
sv_rev = bv[::-1] # reversed vector
print([sv4.get(i) for i in range(len(sv4))])
print([sv_rev.get(i) for i in range(len(sv_rev))])
# Slice assignment from iterables or BitVector
bv[0:4] = [True, False, True, False]
print([bv.get(i) for i in range(4)])
bv[4:8] = BitVector(4) # assign via another BitVector
print([bv.get(i) for i in range(4, 8)])
# Negative-step assignment
bv[9:5:-1] = (i % 2 == 0 for i in range(4))
print([bv.get(i) for i in range(9, 5, -1)])
# Contains
a = BitVector(8); b = BitVector(4)
a.set(0); a.set(2); a.set(5) # 10100100
b.set(0); b.set(3) # 1001
print(b in a)
```
## API Reference
### Class: BitVector
```python
class BitVector:
def __init__(self, size: int)
@property
def bits(self) -> int
def get(self, index: int) -> bool
def set(self, index: int) -> None
def clear(self, index: int) -> None
def flip(self, index: int) -> None
def set_range(self, start: int, length: int) -> None
def clear_range(self, start: int, length: int) -> None
def flip_range(self, start: int, length: int) -> None
def rank(self, index: int) -> int
def copy(self) -> BitVector
def __copy__(self) -> BitVector
def __deepcopy__(self, memo) -> BitVector
# Sequence protocol
def __len__(self) -> int
# Single-index access
def __getitem__(self, index: int) -> bool
def __setitem__(self, index: int, value: bool) -> None
# Slicing access & assignment
def __getitem__(self, s: slice) -> BitVector
def __setitem__(self, s: slice, value: Iterable[bool]) -> None
def __contains__(self, other: BitVector) -> bool
def __iter__(self) -> Iterator[bool]
# Numeric & bitwise protocol
def __and__(self, other: BitVector) -> BitVector
def __iand__(self, other: BitVector) -> BitVector
def __or__(self, other: BitVector) -> BitVector
def __ior__(self, other: BitVector) -> BitVector
def __xor__(self, other: BitVector) -> BitVector
def __ixor__(self, other: BitVector) -> BitVector
def __invert__(self) -> BitVector
def __bool__(self) -> bool
def __repr__(self) -> str
def __str__(self) -> str
```
## License
Apache License 2.0 See [LICENSE](https://github.com/lambdaphoenix/cbits/blob/main/LICENSE) for details.
## Project Links
- [📖 Documentation & Source](https://github.com/lambdaphoenix/cbits)
- [🐛 Issues](https://github.com/lambdaphoenix/cbits/issues)
- [📋 Changelog](https://github.com/lambdaphoenix/cbits/blob/main/CHANGELOG.md)
- [📦 PyPI](https://pypi.org/project/cbits/)
Raw data
{
"_id": null,
"home_page": null,
"name": "cbits",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "bitvector, c-extension, python, bits",
"author": "lambdaphoenix",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/b2/ae/0918b7e4a7f29254215f82f88d6a62a5d1f63a30f2fabaa6c42f8d3c41cf/cbits-0.2.0.tar.gz",
"platform": null,
"description": "[](https://lambdaphoenix.github.io/cbits/)\n[](https://pypi.org/project/cbits/)\n[](https://pypi.org/project/cbits/)\n[](https://pypi.org/project/cbits/#files)\n[](https://pypi.org/project/cbits/)\n[](https://github.com/lambdaphoenix/cbits/blob/main/CHANGELOG.md)\n[](https://github.com/lambdaphoenix/cbits/blob/main/LICENSE)\n\n# cbits\n\n> High-performance BitVector for Python.\n\n\n## Description\ncbits implements a powerful bit vector type in C that is accessible via a Python API. It stores bits contiguously in memory and minimizes overhead compared to a list of Boolean values. Core operations such as setting, clearing, flipping and counting bits run in constant or near-constant time per word, making it ideal for extensive bit manipulation.\n\n\n## Installation\n\n```bash\npip install cbits\n```\n\n## Quick Start\n```python\nfrom cbits import BitVector\n\n# Create a 64-bit vector\nbv = BitVector(64)\n\n# Set bits, clear, flip, query\nbv.set(3)\nbv.clear(3)\nbv.flip(0)\nprint(bv.get(0)) # \u2192 True or False\nprint(len(bv), bv.bits)\n\n# Range operations\nbv.set_range(10, 5) # set bits 10..14\nbv.clear_range(12, 2) # clear bits 12..13\nbv.flip_range(0, 64) # toggle all bits\n\n# Negative indexing\nbv.set(-1)\nprint(bv.get(63))\n\n# Boolean test & rank\nprint(bool(bv))\nprint(bv.rank(32)) # count of set bits up to index 32\n\n# Copy & deepcopy\nimport copy\nbv2 = bv.copy()\nbv3 = copy.deepcopy(bv)\n\n# Bitwise operations\na = BitVector(8); b = BitVector(8)\na.set(0); a.set(2)\nb.set(1); b.set(2)\nprint((a & b)[0], (a | b)[0], (a ^ b)[0], (~a)[0])\n\n# Sequence & iteration\nbv[5] = True\nprint(bv[5])\nprint([i for i, bit in enumerate(bv) if bit])\n\n# Slicing\nsv = bv[2:10] # positions 2..9\nprint([sv.get(i) for i in range(len(sv))])\nsv2 = bv[:5] # first five bits\nsv3 = bv[5:] # bits from 5 to end\nsv4 = bv[::2] # every other bit\nsv_rev = bv[::-1] # reversed vector\nprint([sv4.get(i) for i in range(len(sv4))])\nprint([sv_rev.get(i) for i in range(len(sv_rev))])\n\n# Slice assignment from iterables or BitVector\nbv[0:4] = [True, False, True, False]\nprint([bv.get(i) for i in range(4)])\n\nbv[4:8] = BitVector(4) # assign via another BitVector\nprint([bv.get(i) for i in range(4, 8)])\n\n# Negative-step assignment\nbv[9:5:-1] = (i % 2 == 0 for i in range(4))\nprint([bv.get(i) for i in range(9, 5, -1)])\n\n# Contains\na = BitVector(8); b = BitVector(4)\na.set(0); a.set(2); a.set(5) # 10100100\nb.set(0); b.set(3) # 1001\nprint(b in a)\n```\n\n## API Reference\n### Class: BitVector\n```python\nclass BitVector:\n def __init__(self, size: int)\n\n @property\n def bits(self) -> int\n\n def get(self, index: int) -> bool\n def set(self, index: int) -> None\n def clear(self, index: int) -> None\n def flip(self, index: int) -> None\n def set_range(self, start: int, length: int) -> None\n def clear_range(self, start: int, length: int) -> None\n def flip_range(self, start: int, length: int) -> None\n def rank(self, index: int) -> int\n\n def copy(self) -> BitVector\n def __copy__(self) -> BitVector\n def __deepcopy__(self, memo) -> BitVector\n\n # Sequence protocol\n def __len__(self) -> int\n\n # Single-index access\n def __getitem__(self, index: int) -> bool\n def __setitem__(self, index: int, value: bool) -> None\n\n # Slicing access & assignment\n def __getitem__(self, s: slice) -> BitVector\n def __setitem__(self, s: slice, value: Iterable[bool]) -> None\n\n def __contains__(self, other: BitVector) -> bool\n def __iter__(self) -> Iterator[bool]\n\n # Numeric & bitwise protocol\n def __and__(self, other: BitVector) -> BitVector\n def __iand__(self, other: BitVector) -> BitVector\n def __or__(self, other: BitVector) -> BitVector\n def __ior__(self, other: BitVector) -> BitVector\n def __xor__(self, other: BitVector) -> BitVector\n def __ixor__(self, other: BitVector) -> BitVector\n def __invert__(self) -> BitVector\n def __bool__(self) -> bool\n\n def __repr__(self) -> str\n def __str__(self) -> str\n```\n\n## License\nApache License 2.0 See [LICENSE](https://github.com/lambdaphoenix/cbits/blob/main/LICENSE) for details.\n\n## Project Links\n- [\ud83d\udcd6 Documentation & Source](https://github.com/lambdaphoenix/cbits)\n- [\ud83d\udc1b Issues](https://github.com/lambdaphoenix/cbits/issues)\n- [\ud83d\udccb Changelog](https://github.com/lambdaphoenix/cbits/blob/main/CHANGELOG.md)\n- [\ud83d\udce6 PyPI](https://pypi.org/project/cbits/)\n",
"bugtrack_url": null,
"license": null,
"summary": "High-performance BitVector with C backend.",
"version": "0.2.0",
"project_urls": {
"Documentation": "https://lambdaphoenix.github.io/cbits/",
"Homepage": "https://github.com/lambdaphoenix/cbits",
"Issue Tracker": "https://github.com/lambdaphoenix/cbits/issues",
"Source": "https://github.com/lambdaphoenix/cbits.git"
},
"split_keywords": [
"bitvector",
" c-extension",
" python",
" bits"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "5237b9022edb1f7b320731bfa6f52e14856912439fe6560d932b32e3245f4ebc",
"md5": "1ea1cc2ea8f6e58019a5a506439c37bc",
"sha256": "02fb8b67e954225b2950209fc8de5e3ed93d9596bdf957e0b6d4215212c7a9e1"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "1ea1cc2ea8f6e58019a5a506439c37bc",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 17970,
"upload_time": "2025-10-10T13:35:00",
"upload_time_iso_8601": "2025-10-10T13:35:00.522503Z",
"url": "https://files.pythonhosted.org/packages/52/37/b9022edb1f7b320731bfa6f52e14856912439fe6560d932b32e3245f4ebc/cbits-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d50e343ca1970e4506b5fa950d40cd867a5c5b1b9a2baad08a0662fe94c5b2f3",
"md5": "58bb78cfa3c2bb7cecd1432ad8e22314",
"sha256": "508b0cc776a1481b515e68abd7085aa57ddd92dd222f66499bb8a9c7e91bfcbd"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "58bb78cfa3c2bb7cecd1432ad8e22314",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 25082,
"upload_time": "2025-10-10T13:35:01",
"upload_time_iso_8601": "2025-10-10T13:35:01.893529Z",
"url": "https://files.pythonhosted.org/packages/d5/0e/343ca1970e4506b5fa950d40cd867a5c5b1b9a2baad08a0662fe94c5b2f3/cbits-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4e3858acd364f9d412e397b31da109fad0ecef22b9c28cec473a5fc9481a73f0",
"md5": "6d20c2c88b1bbea32af8f82ed2692eca",
"sha256": "95023cf39d5ec7860eadb03d0a7d215c7e82fc9ccfd34ace24e2b246eb35541d"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "6d20c2c88b1bbea32af8f82ed2692eca",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 25083,
"upload_time": "2025-10-10T13:35:02",
"upload_time_iso_8601": "2025-10-10T13:35:02.920703Z",
"url": "https://files.pythonhosted.org/packages/4e/38/58acd364f9d412e397b31da109fad0ecef22b9c28cec473a5fc9481a73f0/cbits-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "787e8f057088c3fcdedbd7507ed718b797e57ad81f006252e01b1cf840afba75",
"md5": "65b0a3c3d5c7a9b17082db629b875b3e",
"sha256": "02d1984eaa33dbb4056f33ee59c4f880b5c72fb789c967efd58ef7bef29d14d1"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "65b0a3c3d5c7a9b17082db629b875b3e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 20209,
"upload_time": "2025-10-10T13:35:04",
"upload_time_iso_8601": "2025-10-10T13:35:04.162820Z",
"url": "https://files.pythonhosted.org/packages/78/7e/8f057088c3fcdedbd7507ed718b797e57ad81f006252e01b1cf840afba75/cbits-0.2.0-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f221a50fe0318a83b4df89273554deecc6e460ae452efb74d7af040aa5c53186",
"md5": "ad6d6fdceabc585067a0bc7bd1c717f7",
"sha256": "898114b797a7a3697d0ae47a6fe2135bdafc34d6949497682995f19bf7849049"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "ad6d6fdceabc585067a0bc7bd1c717f7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 21128,
"upload_time": "2025-10-10T13:35:05",
"upload_time_iso_8601": "2025-10-10T13:35:05.904315Z",
"url": "https://files.pythonhosted.org/packages/f2/21/a50fe0318a83b4df89273554deecc6e460ae452efb74d7af040aa5c53186/cbits-0.2.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "511b6a363c11a729eae9940d7262438500bc29ddd055119e2b3a91e6ef2ae823",
"md5": "697ff5c4051b60e94bd6abda144e4031",
"sha256": "06781e6fadbff3afadcad290c68e67716d1c0981497850c92d6b1e47dc87e0d2"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "697ff5c4051b60e94bd6abda144e4031",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 17942,
"upload_time": "2025-10-10T13:35:07",
"upload_time_iso_8601": "2025-10-10T13:35:07.383454Z",
"url": "https://files.pythonhosted.org/packages/51/1b/6a363c11a729eae9940d7262438500bc29ddd055119e2b3a91e6ef2ae823/cbits-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e1dd1446164864ecb0d0b2bd9adc4fccf60c80ae1fc680e93638959550cb2bd6",
"md5": "ff74db1b715f31deebc3623b551f4187",
"sha256": "d9641f6ceae91ad1dc44062b06533bc116c06f70b14bfc7e8c0b9c179b1a1809"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "ff74db1b715f31deebc3623b551f4187",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 25046,
"upload_time": "2025-10-10T13:35:08",
"upload_time_iso_8601": "2025-10-10T13:35:08.683758Z",
"url": "https://files.pythonhosted.org/packages/e1/dd/1446164864ecb0d0b2bd9adc4fccf60c80ae1fc680e93638959550cb2bd6/cbits-0.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "545eef129f98429a8f9bc4e53311aa96b4eba4183b49bc10f606c3c35c45f397",
"md5": "97a1a17ac3968d41b1435f3bf06bc747",
"sha256": "8d22272344c8c7f4a4f9423b94d927c32e612f7f960ba416cda4031296302dd3"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "97a1a17ac3968d41b1435f3bf06bc747",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 25071,
"upload_time": "2025-10-10T13:35:09",
"upload_time_iso_8601": "2025-10-10T13:35:09.941397Z",
"url": "https://files.pythonhosted.org/packages/54/5e/ef129f98429a8f9bc4e53311aa96b4eba4183b49bc10f606c3c35c45f397/cbits-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ec8c0fa9002d16799f26037e9b1784353b3aa2d60f37d6ebb4b86bbca1a5ba32",
"md5": "b2c36a4272f7dc1754d6179f14f9327c",
"sha256": "6637be8172377f8a42fc5a8b099b0a35ef0517c9079f307b7238a4c540a3b8c8"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "b2c36a4272f7dc1754d6179f14f9327c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 20167,
"upload_time": "2025-10-10T13:35:11",
"upload_time_iso_8601": "2025-10-10T13:35:11.197585Z",
"url": "https://files.pythonhosted.org/packages/ec/8c/0fa9002d16799f26037e9b1784353b3aa2d60f37d6ebb4b86bbca1a5ba32/cbits-0.2.0-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f6081ac4df0043467757b4cd42dc8afd4d11e850b8894a4093741745891956e6",
"md5": "4cfc15d05c6738d7c1b2c816b19884fa",
"sha256": "854a728281e5b26ad58d9086f324a2defc148560c4c508abfad892aa46683325"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "4cfc15d05c6738d7c1b2c816b19884fa",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 21109,
"upload_time": "2025-10-10T13:35:12",
"upload_time_iso_8601": "2025-10-10T13:35:12.369736Z",
"url": "https://files.pythonhosted.org/packages/f6/08/1ac4df0043467757b4cd42dc8afd4d11e850b8894a4093741745891956e6/cbits-0.2.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2faa30cd713cb3ec7d282935816c588b6748918e9865819146d23a7c3a6dc435",
"md5": "b9d5f00f316a068eb8ba579b80878d1e",
"sha256": "8d7acf4e8abf8b74fc4613250032bb26c05939cefe328edcfec4df4465e3f8e6"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "b9d5f00f316a068eb8ba579b80878d1e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 17954,
"upload_time": "2025-10-10T13:35:13",
"upload_time_iso_8601": "2025-10-10T13:35:13.601721Z",
"url": "https://files.pythonhosted.org/packages/2f/aa/30cd713cb3ec7d282935816c588b6748918e9865819146d23a7c3a6dc435/cbits-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b67ddb5c4916ce8390945c55ad1dc435788ca40940bcb9d1aa34673a8a2a3f72",
"md5": "0e92347aaf6144c9615edfd8e5001b81",
"sha256": "420057d9ab67209cf4efa28b35438249f4c532ab05261ebf5c3b00baf165cd30"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "0e92347aaf6144c9615edfd8e5001b81",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 24961,
"upload_time": "2025-10-10T13:35:14",
"upload_time_iso_8601": "2025-10-10T13:35:14.564560Z",
"url": "https://files.pythonhosted.org/packages/b6/7d/db5c4916ce8390945c55ad1dc435788ca40940bcb9d1aa34673a8a2a3f72/cbits-0.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "82f173c01a5aae2694199b461260ac9c6d009f714c44f4dfc0696b79fe4b4de0",
"md5": "90852e831d32b93b77d47378eaf0701e",
"sha256": "b0ca0b1d776f95432a4d595f81aa133d5ca9583a7a3cf735a8d0fdd849d6e230"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "90852e831d32b93b77d47378eaf0701e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 24995,
"upload_time": "2025-10-10T13:35:15",
"upload_time_iso_8601": "2025-10-10T13:35:15.870568Z",
"url": "https://files.pythonhosted.org/packages/82/f1/73c01a5aae2694199b461260ac9c6d009f714c44f4dfc0696b79fe4b4de0/cbits-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8a7de7d5f689ee44831fdaf848f693e98570834915d30a92cc0e0cf4be4f7d62",
"md5": "42d803566f9506f4a253d5631fb42585",
"sha256": "8b81f0e7bd1fdd661d1db812c5e47bfcf8b9be43e750eb089ad3eace367d1521"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "42d803566f9506f4a253d5631fb42585",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 20207,
"upload_time": "2025-10-10T13:35:16",
"upload_time_iso_8601": "2025-10-10T13:35:16.804025Z",
"url": "https://files.pythonhosted.org/packages/8a/7d/e7d5f689ee44831fdaf848f693e98570834915d30a92cc0e0cf4be4f7d62/cbits-0.2.0-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d7acd5157d4c1131f1ffec7673153c9ff1aa5d711c3d14db02dd7276e7f0da2e",
"md5": "16378f244281116fdbc2bd0ae8fd78d5",
"sha256": "20fca8de9d26444b3db98913267df03dc06a3e2919e778bc1f25d9997ca7ec3b"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "16378f244281116fdbc2bd0ae8fd78d5",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 21021,
"upload_time": "2025-10-10T13:35:18",
"upload_time_iso_8601": "2025-10-10T13:35:18.213838Z",
"url": "https://files.pythonhosted.org/packages/d7/ac/d5157d4c1131f1ffec7673153c9ff1aa5d711c3d14db02dd7276e7f0da2e/cbits-0.2.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "605ee0161e17c2b8b31ed19785966370bd08bea9d1aa8b26ba32ede5646e4b1c",
"md5": "9516250965bfb31f43f2753f26cbc63b",
"sha256": "41821ccb43c967912c49a67ede62567ddb4a584d5d92927eaab39760f487649e"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9516250965bfb31f43f2753f26cbc63b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 17952,
"upload_time": "2025-10-10T13:35:19",
"upload_time_iso_8601": "2025-10-10T13:35:19.414571Z",
"url": "https://files.pythonhosted.org/packages/60/5e/e0161e17c2b8b31ed19785966370bd08bea9d1aa8b26ba32ede5646e4b1c/cbits-0.2.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ecce3612c19798de3bfcd64f9a3d7673ace80c6a2559ecaa1c1fc6547e840a51",
"md5": "fa19f88b476c304de65d237bbecab9e3",
"sha256": "dd3461f103b1d9f2cea53e52e20bd14af8f0c640f319b70738de58d5cf688410"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "fa19f88b476c304de65d237bbecab9e3",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 24947,
"upload_time": "2025-10-10T13:35:20",
"upload_time_iso_8601": "2025-10-10T13:35:20.344090Z",
"url": "https://files.pythonhosted.org/packages/ec/ce/3612c19798de3bfcd64f9a3d7673ace80c6a2559ecaa1c1fc6547e840a51/cbits-0.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d11db0e555cea0b24d25c0aa504530b022a47ca561324d82c007cfb40b3728e4",
"md5": "44141178bcd7109b1b555a77f428e732",
"sha256": "37edbe31501db10e98e1e0cd8ac8c787f3ffbfddae4e9cd38da9309b083299b1"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "44141178bcd7109b1b555a77f428e732",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 24992,
"upload_time": "2025-10-10T13:35:21",
"upload_time_iso_8601": "2025-10-10T13:35:21.261235Z",
"url": "https://files.pythonhosted.org/packages/d1/1d/b0e555cea0b24d25c0aa504530b022a47ca561324d82c007cfb40b3728e4/cbits-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "46b08668f522e0b4c9e771b981a66e5446c8e26d59976eb595bc84484fc5aa3e",
"md5": "ef5c2632034252482196a2dbc0d59608",
"sha256": "82810bf52a0d67a4df8d49429eb1a2cbb0d1647df97841e0d3474a1f09f01b53"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "ef5c2632034252482196a2dbc0d59608",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 20197,
"upload_time": "2025-10-10T13:35:23",
"upload_time_iso_8601": "2025-10-10T13:35:23.427982Z",
"url": "https://files.pythonhosted.org/packages/46/b0/8668f522e0b4c9e771b981a66e5446c8e26d59976eb595bc84484fc5aa3e/cbits-0.2.0-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "81ec95b1e9cb0804e3ace6538916a7fbf1b64fec578d37ebb967366eae01e9f9",
"md5": "06caba4e1e9edcd62edbb2c89146d758",
"sha256": "fff38d71640cfbdacf92d352fc307a0dde44afb494e644399706170969977193"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "06caba4e1e9edcd62edbb2c89146d758",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 21016,
"upload_time": "2025-10-10T13:35:24",
"upload_time_iso_8601": "2025-10-10T13:35:24.385209Z",
"url": "https://files.pythonhosted.org/packages/81/ec/95b1e9cb0804e3ace6538916a7fbf1b64fec578d37ebb967366eae01e9f9/cbits-0.2.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dc545b0f19d372e6f3808a34d239023e52ba9e4c490f7a458a27ead4194021bd",
"md5": "068eb44983ddd21151346bfa161d1d4c",
"sha256": "6cd3b0a70bc7a869da8ff5ba20120307a6f2e481df15a036e28d8314529eda69"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "068eb44983ddd21151346bfa161d1d4c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 25020,
"upload_time": "2025-10-10T13:35:25",
"upload_time_iso_8601": "2025-10-10T13:35:25.516911Z",
"url": "https://files.pythonhosted.org/packages/dc/54/5b0f19d372e6f3808a34d239023e52ba9e4c490f7a458a27ead4194021bd/cbits-0.2.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e1293d7026665b2afe00e2ee1dd49693a34ce05ea643a840ff1cb2d75b3dc866",
"md5": "a144c1cfde1337620d4bcfb14656887c",
"sha256": "39198425972714e8848e41138edf9b54ac602b37ec5b07742a24662c3f2c95b0"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "a144c1cfde1337620d4bcfb14656887c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 25071,
"upload_time": "2025-10-10T13:35:26",
"upload_time_iso_8601": "2025-10-10T13:35:26.833742Z",
"url": "https://files.pythonhosted.org/packages/e1/29/3d7026665b2afe00e2ee1dd49693a34ce05ea643a840ff1cb2d75b3dc866/cbits-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fa3a042ebc5c3fcd7dfc49a4ecc9044e73a5f562b14650c43700ef600ffc287d",
"md5": "80203743c24620a5894ab54785c2d238",
"sha256": "45364fc56ee33735883e667be0e347fc86f82ce306a4a59ac5e06428d8b6d27b"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "80203743c24620a5894ab54785c2d238",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 20284,
"upload_time": "2025-10-10T13:35:27",
"upload_time_iso_8601": "2025-10-10T13:35:27.782602Z",
"url": "https://files.pythonhosted.org/packages/fa/3a/042ebc5c3fcd7dfc49a4ecc9044e73a5f562b14650c43700ef600ffc287d/cbits-0.2.0-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "23d4f5c97cb355e2948d62f74f6a77bb410404d02273729b9ae44d3b01515367",
"md5": "f41ce29c80b9a7be52f1eba733c26c7a",
"sha256": "cc06f11a98a8c6b7f8dd9684507d9f408d8c4976b430321004810b9df302778d"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "f41ce29c80b9a7be52f1eba733c26c7a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 21178,
"upload_time": "2025-10-10T13:35:29",
"upload_time_iso_8601": "2025-10-10T13:35:29.219127Z",
"url": "https://files.pythonhosted.org/packages/23/d4/f5c97cb355e2948d62f74f6a77bb410404d02273729b9ae44d3b01515367/cbits-0.2.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "517e0d062c55d6c4ec6d90a52baf8678c23a2139346ecc5acf6dc616b27b8138",
"md5": "f1ca68dbbd011da8095a3ad643f9a902",
"sha256": "4ed225800da0b85599f44db9193f1c087e561ec4513ef83ea779caf24feb3316"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f1ca68dbbd011da8095a3ad643f9a902",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 17972,
"upload_time": "2025-10-10T13:35:30",
"upload_time_iso_8601": "2025-10-10T13:35:30.475846Z",
"url": "https://files.pythonhosted.org/packages/51/7e/0d062c55d6c4ec6d90a52baf8678c23a2139346ecc5acf6dc616b27b8138/cbits-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fa733711e31601643c5a7bb23005056086dde05c2553f06432baa89fb0b0a08b",
"md5": "ca1a7dd485aaae1885d5c5cfedac541c",
"sha256": "7d638dbed842b4f59584f1c43edf1b31f60cca1924caf10ed5cf66556b25d426"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "ca1a7dd485aaae1885d5c5cfedac541c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 25095,
"upload_time": "2025-10-10T13:35:31",
"upload_time_iso_8601": "2025-10-10T13:35:31.431052Z",
"url": "https://files.pythonhosted.org/packages/fa/73/3711e31601643c5a7bb23005056086dde05c2553f06432baa89fb0b0a08b/cbits-0.2.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b96ea82eb3be36c453a9ff93f4db4ee04706af9eefae35f4922fa5adbffaf054",
"md5": "847ab60fbf82e2a022f33fd67ff6e927",
"sha256": "a7b12026f26cfb283a804e864b1f050f10e25de17ac857bb87b65764d8658b3b"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "847ab60fbf82e2a022f33fd67ff6e927",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 25102,
"upload_time": "2025-10-10T13:35:32",
"upload_time_iso_8601": "2025-10-10T13:35:32.416977Z",
"url": "https://files.pythonhosted.org/packages/b9/6e/a82eb3be36c453a9ff93f4db4ee04706af9eefae35f4922fa5adbffaf054/cbits-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5951f8edc6b0637203135a3f024a3e74fa1a7037ad61c8eb725e8fa4ab8a91de",
"md5": "306bbafba9f63feadfcf52f51373b611",
"sha256": "f7993f9097c9a91af21276f91aa40b7b2ac927f0bc7330466906743f9a27d63d"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "306bbafba9f63feadfcf52f51373b611",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 20271,
"upload_time": "2025-10-10T13:35:33",
"upload_time_iso_8601": "2025-10-10T13:35:33.372364Z",
"url": "https://files.pythonhosted.org/packages/59/51/f8edc6b0637203135a3f024a3e74fa1a7037ad61c8eb725e8fa4ab8a91de/cbits-0.2.0-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9881ca9a797e10bab995125d438beb86099aac43fdface546954a002fcf5a20b",
"md5": "8b123442f7c972ef51e72972b8c4a735",
"sha256": "a6cd273f261de1054cd794cc14d7a5fa13f82eb4a827c9a4f574fe38a43a3cb4"
},
"downloads": -1,
"filename": "cbits-0.2.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "8b123442f7c972ef51e72972b8c4a735",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 21191,
"upload_time": "2025-10-10T13:35:34",
"upload_time_iso_8601": "2025-10-10T13:35:34.321238Z",
"url": "https://files.pythonhosted.org/packages/98/81/ca9a797e10bab995125d438beb86099aac43fdface546954a002fcf5a20b/cbits-0.2.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b2ae0918b7e4a7f29254215f82f88d6a62a5d1f63a30f2fabaa6c42f8d3c41cf",
"md5": "8126677ba10d5b8a487b2417e6413c5c",
"sha256": "0e5168d91c26c92ec349c801eba654b548644be34a35648152d333e51fa92cca"
},
"downloads": -1,
"filename": "cbits-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "8126677ba10d5b8a487b2417e6413c5c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 58458,
"upload_time": "2025-10-10T13:35:35",
"upload_time_iso_8601": "2025-10-10T13:35:35.234724Z",
"url": "https://files.pythonhosted.org/packages/b2/ae/0918b7e4a7f29254215f82f88d6a62a5d1f63a30f2fabaa6c42f8d3c41cf/cbits-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-10 13:35:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lambdaphoenix",
"github_project": "cbits",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cbits"
}