# pybbi #

[](https://zenodo.org/doi/10.5281/zenodo.10382980)
Python interface to Jim Kent's Big Binary Indexed file (BBI) \[[1](#ref1)\] library from the [UCSC Genome Browser source tree](https://github.com/ucscGenomeBrowser/kent) using Cython.
This provides read-level access to local and remote bigWig and bigBed files but no write capabilitites. The main feature is fast retrieval of range queries into numpy arrays.
## Installation ##
Wheels for `pybbi` are available on PyPI for Python 3.8, 3.9, 3.10, 3.11 on Linux (x86_64 and aarch64) and Mac OSX (x86_64/Intel). Apple Silicon (arm64) wheels will be made available once M1 runners are available in GitHub Actions.
```
$ pip install pybbi
```
## API ##
The `bbi.open` function returns a `BBIFile` object.
```
bbi.open(path) -> BBIFile
```
`path` can be a local file path (bigWig or bigBed) or a URL. `BBIFile` objects are context managers and can be used in a `with` statement to clean up resources without calling `BBIFile.close()`.
```python
>>> with bbi.open('bigWigExample.bw') as f:
... x = f.fetch('chr21', 1000000, 2000000, bins=40)
```
### Introspection
```
BBIFile.is_bigwig -> bool
BBIFile.is_bigbed -> bool
BBIFile.chromsizes -> OrderedDict
BBIFile.zooms -> list
BBIFile.info -> dict
BBIFile.schema -> dict
BBIFile.read_autosql() -> str
```
Note: `BBIFile.schema['dtypes']` provides numpy data types for the fields in a bigWig or bigBed (matched from the autoSql definition).
### Interval output
The actual interval records in a bigWig or bigBed can be retrieved as a pandas dataframe or as an iterator over records as tuples. The pandas output is parsed according to the file's schema.
```
BBIFile.fetch_intervals(chrom, start, end) -> pandas.DataFrame
BBIFile.fetch_intervals(chrom, start, end, iterator=True) -> interval iterator
```
Summary bin records at each zoom level are also accessible.
```
BBIFile.fetch_summaries(chrom, start, end, zoom) -> pandas.DataFrame
```
### Array output
Retrieve quantitative signal as an array. The signal of a bigWig file is obtained from its "value" field. The signal of a bigBed file is obtained from the genomic coverage of its intervals.
For a single range query:
```
BBIFile.fetch(chrom, start, end, [bins [, missing [, oob, [, summary]]]]) -> 1D numpy array
```
To produce a stacked heatmap from a list of (1) equal-length intervals or (2) arbitrary-length intervals with `bins` specified:
```
BBIFile.stackup(chroms, starts, ends, [bins [, missing [, oob, [, summary]]]]) -> 2D numpy array
```
* **Summary** querying is supported by specifying the number of `bins` for coarsening. The `summary` statistic can be one of: 'mean', 'min', 'max', 'cov', 'std', 'or 'sum'. (default = 'mean'). Intervals need not have the same length, in which case the data from each interval will be interpolated to the same number of bins (e.g., gene bodies).
* **Missing** data can be filled with a custom fill value, `missing` (default = 0).
* **Out-of-bounds** ranges (i.e. `start` less than zero or `end` greater than the chromosome length) are permitted because of their utility e.g., for generating vertical heatmap stacks centered at specific genomic features. A separate custom fill value, `oob` can be provided for out-of-bounds positions (default = NaN).
### Function API
The original function-based API is still available:
```python
bbi.is_bbi(path: str) -> bool
bbi.is_bigwig(path: str) -> bool
bbi.is_bigbed(path:str) -> bool
bbi.chromsizes(path: str) -> OrderedDict
bbi.zooms(path: str) -> list
bbi.info(path: str) -> dict
bbi.fetch_intervals(path: str, chrom: str, start: int, end: int, iterator: bool) -> Union[Iterable, pd.DataFrame]
bbi.fetch(path: str, chrom: str, start: int, end: int, [bins: int [, missing: float [, oob: float, [, summary: str]]]]) -> np.array[1, 'float64']
bbi.stackup(path: str, chroms: np.array, starts: np.array, ends: np.array, [bins: int [, missing: float [, oob: float, [, summary: str]]]]) -> np.array[2, 'float64']
```
See the docstrings for complete documentation.
## Related projects ##
- [bigtools](https://github.com/jackh726/bigtools): Alternative BBI library written in Rust with Python bindings; by Jack Huey
- [libBigWig](https://github.com/dpryan79/libBigWig): Alternative BBI library written in C; by Devon Ryan
- [pyBigWig](https://github.com/dpryan79/pyBigWig): Python bindings for `libBigWig`
- [bw-python](https://github.com/brentp/bw-python): Alternative Python wrapper to `libBigWig` by Brent Pederson
- [bx-python](https://github.com/bxlab/bx-python): Python bioinformatics library from James Taylor's group that includes tools for bbi files.
This library provides bindings to the reference UCSC bbi library code. Check out [@dpryan79](https://github.com/dpryan79)'s [libBigWig](https://github.com/dpryan79/libBigWig) for an alternative and dedicated C library for big binary files. pyBigWig also provides numpy-based retrieval and bigBed support.
## References ##
<a id="ref1">[1]</a>: http://bioinformatics.oxfordjournals.org/content/26/17/2204.full
## From source ##
If wheels for your platform or Python version aren't available or you want to develop, you'll need to install `pybbi` from source. The source distribution on PyPI ships with (slightly modified) kent utils source, which will compile before the extension module is built.
Requires
- Platform: Linux or Darwin (Windows Subsystem for Linux seems to work too)
- pthreads, zlib, libpng, openssl, make, pkg-config
- Python 3.6+
- `numpy` and `cython`
For example, on a fresh Ubuntu instance, you'll need `build-essential`, `make`, `pkg-config`, `zlib1g-dev`, `libssl-dev`, `libpng16-dev`.
On a Centos/RedHat (rpm) system you'll need `gcc`, `make`, `pkg-config`, `zlib-devel`, `openssl-devel`, `libpng-devel`.
On a Mac, you'll need Xcode and to `brew install pkg-config openssl libpng`.
For development, clone the repo and install in editable mode:
```
$ git clone https://github.com/nvictus/pybbi.git
$ cd pybbi
$ pip install -e .
```
You can use the `ARCH` environment variable to specify a target architecture or `ARCHFLAGS` on a Mac.
### Notes
Unfortunately, Kent's C source is not well-behaved library code, as it is littered with error calls that call `exit()`. `pybbi` will catch and pre-empt common input errors, but if somehow an internal error does get raised, it will terminate your interpreter instance.
Raw data
{
"_id": null,
"home_page": null,
"name": "pybbi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "genomics, bioinformatics, bigwig, bigbed, bigbinaryindexed, bbi, ucsc",
"author": null,
"author_email": "Nezar Abdennur <nabdennur@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/f5/83/33a52ad666d93564e58986a78226dfb9dc7f52a75b36dcf8271f671f8eb1/pybbi-0.4.2.tar.gz",
"platform": null,
"description": "# pybbi #\n\n\n[](https://zenodo.org/doi/10.5281/zenodo.10382980)\n\nPython interface to Jim Kent's Big Binary Indexed file (BBI) \\[[1](#ref1)\\] library from the [UCSC Genome Browser source tree](https://github.com/ucscGenomeBrowser/kent) using Cython.\n\nThis provides read-level access to local and remote bigWig and bigBed files but no write capabilitites. The main feature is fast retrieval of range queries into numpy arrays.\n\n\n## Installation ##\n\nWheels for `pybbi` are available on PyPI for Python 3.8, 3.9, 3.10, 3.11 on Linux (x86_64 and aarch64) and Mac OSX (x86_64/Intel). Apple Silicon (arm64) wheels will be made available once M1 runners are available in GitHub Actions.\n\n```\n$ pip install pybbi\n```\n\n## API ##\n\nThe `bbi.open` function returns a `BBIFile` object.\n\n```\nbbi.open(path) -> BBIFile\n```\n\n`path` can be a local file path (bigWig or bigBed) or a URL. `BBIFile` objects are context managers and can be used in a `with` statement to clean up resources without calling `BBIFile.close()`.\n\n```python\n>>> with bbi.open('bigWigExample.bw') as f:\n... x = f.fetch('chr21', 1000000, 2000000, bins=40)\n```\n\n### Introspection\n\n```\nBBIFile.is_bigwig -> bool\nBBIFile.is_bigbed -> bool\nBBIFile.chromsizes -> OrderedDict\nBBIFile.zooms -> list\nBBIFile.info -> dict\nBBIFile.schema -> dict\nBBIFile.read_autosql() -> str\n```\n\nNote: `BBIFile.schema['dtypes']` provides numpy data types for the fields in a bigWig or bigBed (matched from the autoSql definition).\n\n\n### Interval output\n\nThe actual interval records in a bigWig or bigBed can be retrieved as a pandas dataframe or as an iterator over records as tuples. The pandas output is parsed according to the file's schema.\n\n```\nBBIFile.fetch_intervals(chrom, start, end) -> pandas.DataFrame\nBBIFile.fetch_intervals(chrom, start, end, iterator=True) -> interval iterator\n```\n\nSummary bin records at each zoom level are also accessible.\n\n```\nBBIFile.fetch_summaries(chrom, start, end, zoom) -> pandas.DataFrame\n```\n\n### Array output\n\nRetrieve quantitative signal as an array. The signal of a bigWig file is obtained from its \"value\" field. The signal of a bigBed file is obtained from the genomic coverage of its intervals.\n\nFor a single range query:\n```\nBBIFile.fetch(chrom, start, end, [bins [, missing [, oob, [, summary]]]]) -> 1D numpy array\n```\n\nTo produce a stacked heatmap from a list of (1) equal-length intervals or (2) arbitrary-length intervals with `bins` specified:\n```\nBBIFile.stackup(chroms, starts, ends, [bins [, missing [, oob, [, summary]]]]) -> 2D numpy array\n```\n\n* **Summary** querying is supported by specifying the number of `bins` for coarsening. The `summary` statistic can be one of: 'mean', 'min', 'max', 'cov', 'std', 'or 'sum'. (default = 'mean'). Intervals need not have the same length, in which case the data from each interval will be interpolated to the same number of bins (e.g., gene bodies).\n\n* **Missing** data can be filled with a custom fill value, `missing` (default = 0). \n\n* **Out-of-bounds** ranges (i.e. `start` less than zero or `end` greater than the chromosome length) are permitted because of their utility e.g., for generating vertical heatmap stacks centered at specific genomic features. A separate custom fill value, `oob` can be provided for out-of-bounds positions (default = NaN).\n\n### Function API\n\nThe original function-based API is still available:\n\n```python\nbbi.is_bbi(path: str) -> bool\nbbi.is_bigwig(path: str) -> bool\nbbi.is_bigbed(path:str) -> bool\nbbi.chromsizes(path: str) -> OrderedDict\nbbi.zooms(path: str) -> list\nbbi.info(path: str) -> dict\nbbi.fetch_intervals(path: str, chrom: str, start: int, end: int, iterator: bool) -> Union[Iterable, pd.DataFrame]\nbbi.fetch(path: str, chrom: str, start: int, end: int, [bins: int [, missing: float [, oob: float, [, summary: str]]]]) -> np.array[1, 'float64']\nbbi.stackup(path: str, chroms: np.array, starts: np.array, ends: np.array, [bins: int [, missing: float [, oob: float, [, summary: str]]]]) -> np.array[2, 'float64']\n```\n\nSee the docstrings for complete documentation.\n\n## Related projects ##\n\n- [bigtools](https://github.com/jackh726/bigtools): Alternative BBI library written in Rust with Python bindings; by Jack Huey\n- [libBigWig](https://github.com/dpryan79/libBigWig): Alternative BBI library written in C; by Devon Ryan\n- [pyBigWig](https://github.com/dpryan79/pyBigWig): Python bindings for `libBigWig`\n- [bw-python](https://github.com/brentp/bw-python): Alternative Python wrapper to `libBigWig` by Brent Pederson\n- [bx-python](https://github.com/bxlab/bx-python): Python bioinformatics library from James Taylor's group that includes tools for bbi files.\n\nThis library provides bindings to the reference UCSC bbi library code. Check out [@dpryan79](https://github.com/dpryan79)'s [libBigWig](https://github.com/dpryan79/libBigWig) for an alternative and dedicated C library for big binary files. pyBigWig also provides numpy-based retrieval and bigBed support.\n\n## References ##\n\n<a id=\"ref1\">[1]</a>: http://bioinformatics.oxfordjournals.org/content/26/17/2204.full\n\n## From source ##\n\nIf wheels for your platform or Python version aren't available or you want to develop, you'll need to install `pybbi` from source. The source distribution on PyPI ships with (slightly modified) kent utils source, which will compile before the extension module is built.\n\nRequires\n- Platform: Linux or Darwin (Windows Subsystem for Linux seems to work too)\n- pthreads, zlib, libpng, openssl, make, pkg-config\n- Python 3.6+\n- `numpy` and `cython`\n\nFor example, on a fresh Ubuntu instance, you'll need `build-essential`, `make`, `pkg-config`, `zlib1g-dev`, `libssl-dev`, `libpng16-dev`.\n\nOn a Centos/RedHat (rpm) system you'll need `gcc`, `make`, `pkg-config`, `zlib-devel`, `openssl-devel`, `libpng-devel`.\n\nOn a Mac, you'll need Xcode and to `brew install pkg-config openssl libpng`.\n\nFor development, clone the repo and install in editable mode:\n\n```\n$ git clone https://github.com/nvictus/pybbi.git\n$ cd pybbi\n$ pip install -e .\n```\n\nYou can use the `ARCH` environment variable to specify a target architecture or `ARCHFLAGS` on a Mac.\n\n### Notes\n\nUnfortunately, Kent's C source is not well-behaved library code, as it is littered with error calls that call `exit()`. `pybbi` will catch and pre-empt common input errors, but if somehow an internal error does get raised, it will terminate your interpreter instance.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python bindings to the UCSC source for Big Binary Indexed (bigWig/bigBed) files.",
"version": "0.4.2",
"project_urls": {
"documentation": "https://github.com/nvictus/pybbi#README.md",
"homepage": "https://github.com/nvictus/pybbi",
"repository": "https://github.com/nvictus/pybbi"
},
"split_keywords": [
"genomics",
" bioinformatics",
" bigwig",
" bigbed",
" bigbinaryindexed",
" bbi",
" ucsc"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e0a9c2d4dbcc80c5406ca0a532fe632e16b2eda194b1da1754b82bc7d7ca7248",
"md5": "732c8dd988ef3c4a053e8ae566aa1fad",
"sha256": "4893409bb7b51c81759d43f6b15e2b4dc6d3de20e5e39b9ea4b8ff1bbfcc17a0"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp310-cp310-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "732c8dd988ef3c4a053e8ae566aa1fad",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 2936500,
"upload_time": "2025-10-30T17:09:13",
"upload_time_iso_8601": "2025-10-30T17:09:13.405119Z",
"url": "https://files.pythonhosted.org/packages/e0/a9/c2d4dbcc80c5406ca0a532fe632e16b2eda194b1da1754b82bc7d7ca7248/pybbi-0.4.2-cp310-cp310-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "33aab6ae0e4fc80d5306a4180efb73d03413a5104953089d6e46b04cf6945b1c",
"md5": "0bcdd08c8e05ef5ddd25fbe76cb1b833",
"sha256": "684c76ef134ee2815f02ef8ba0fb5f270fe45a127a092c24204311cd6e45a2bb"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp310-cp310-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "0bcdd08c8e05ef5ddd25fbe76cb1b833",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 3225149,
"upload_time": "2025-10-30T17:09:15",
"upload_time_iso_8601": "2025-10-30T17:09:15.736193Z",
"url": "https://files.pythonhosted.org/packages/33/aa/b6ae0e4fc80d5306a4180efb73d03413a5104953089d6e46b04cf6945b1c/pybbi-0.4.2-cp310-cp310-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "40c1f7c95688e21d9c65717dc088945e31848b66bf904870b8fda1316b4e5490",
"md5": "0a9627a0f11aa6a74f2a9a04f6e3ff00",
"sha256": "20914802a4b3a9d46b2eed811ff77f8fb9d26d1bc4af9168ce3f33ffbd564518"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "0a9627a0f11aa6a74f2a9a04f6e3ff00",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 3081199,
"upload_time": "2025-10-30T17:09:17",
"upload_time_iso_8601": "2025-10-30T17:09:17.272971Z",
"url": "https://files.pythonhosted.org/packages/40/c1/f7c95688e21d9c65717dc088945e31848b66bf904870b8fda1316b4e5490/pybbi-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6d3a9b3fd6dcf58ead95c267fc819df9647700cc69200e992014b80e43f69b65",
"md5": "2ed5966638928de97908444f3da23e1f",
"sha256": "1965c3620f18546d65e85b1b99d5306303ffbc2fdbbeae93ab3a86dc96ac8669"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "2ed5966638928de97908444f3da23e1f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 3399481,
"upload_time": "2025-10-30T17:09:18",
"upload_time_iso_8601": "2025-10-30T17:09:18.944228Z",
"url": "https://files.pythonhosted.org/packages/6d/3a/9b3fd6dcf58ead95c267fc819df9647700cc69200e992014b80e43f69b65/pybbi-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8f50bfdfde6d757c3d986f23467131511350a9de71a766c0063930ff70bc46bf",
"md5": "f1af75c500f07df2b1ee87bf96f78efa",
"sha256": "145869f0c8e3ebca352df3477a43e15407b8dc1bf409081ea89d6498ace634de"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp311-cp311-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "f1af75c500f07df2b1ee87bf96f78efa",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 2933866,
"upload_time": "2025-10-30T17:09:21",
"upload_time_iso_8601": "2025-10-30T17:09:21.063352Z",
"url": "https://files.pythonhosted.org/packages/8f/50/bfdfde6d757c3d986f23467131511350a9de71a766c0063930ff70bc46bf/pybbi-0.4.2-cp311-cp311-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3f1e9c439b06647a84f769d8cf1ae35a54bfe0ad81c40bc26aea7c5130a1674c",
"md5": "81d847153238f54850f51f6df02e146b",
"sha256": "ad8546cd8871a6b112980b00bbcd31ad409e4a24e979a6cd3114cc645b433b91"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp311-cp311-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "81d847153238f54850f51f6df02e146b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 3223265,
"upload_time": "2025-10-30T17:09:23",
"upload_time_iso_8601": "2025-10-30T17:09:23.059709Z",
"url": "https://files.pythonhosted.org/packages/3f/1e/9c439b06647a84f769d8cf1ae35a54bfe0ad81c40bc26aea7c5130a1674c/pybbi-0.4.2-cp311-cp311-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8bc8589d044a3a1e63c772da4446d1d6f452225e45d9fe360eb5aa3f8efdd140",
"md5": "a3e77abdb5692e42b0ad8ac252cc6fc9",
"sha256": "7a7aeeb5a3d81a6331d19901e1a2c6cdcee9edb273b3aaa1b3e954e92d165030"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "a3e77abdb5692e42b0ad8ac252cc6fc9",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 3109825,
"upload_time": "2025-10-30T17:09:24",
"upload_time_iso_8601": "2025-10-30T17:09:24.620979Z",
"url": "https://files.pythonhosted.org/packages/8b/c8/589d044a3a1e63c772da4446d1d6f452225e45d9fe360eb5aa3f8efdd140/pybbi-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "86ceb296d5e51276d88a2e51070ed97f76eedba639767204987cc6a465ae564f",
"md5": "0192577135936fc5ffb22c320bafa149",
"sha256": "0a91937f82e3f6f0ae011711fc175d2b2ec1decce0af62435ae0bd297c5d3633"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "0192577135936fc5ffb22c320bafa149",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 3428525,
"upload_time": "2025-10-30T17:09:26",
"upload_time_iso_8601": "2025-10-30T17:09:26.293686Z",
"url": "https://files.pythonhosted.org/packages/86/ce/b296d5e51276d88a2e51070ed97f76eedba639767204987cc6a465ae564f/pybbi-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3f74af3bfdecdacb64e35bffea2513541d71f8ea7358f5004880e37a2414b5f2",
"md5": "ee876734be51cbd57adfc5f7fa14e188",
"sha256": "5d1fad3d46787ea5905e5f1080b16dfb83d67c8d83225efe3169d4dcf27eb612"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp312-cp312-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "ee876734be51cbd57adfc5f7fa14e188",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 2943529,
"upload_time": "2025-10-30T17:09:28",
"upload_time_iso_8601": "2025-10-30T17:09:28.849580Z",
"url": "https://files.pythonhosted.org/packages/3f/74/af3bfdecdacb64e35bffea2513541d71f8ea7358f5004880e37a2414b5f2/pybbi-0.4.2-cp312-cp312-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "026638380935e7d3856fe5daf0694880f8330631d09bf73b2b30d8e576eeb12b",
"md5": "29a8c20c618102f8954cae3a4f0cfa11",
"sha256": "37ed8946551a9a5efc9e426d7b86248e845c51b803d48016027a7c8a1a9fce33"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp312-cp312-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "29a8c20c618102f8954cae3a4f0cfa11",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 3232894,
"upload_time": "2025-10-30T17:09:31",
"upload_time_iso_8601": "2025-10-30T17:09:31.132587Z",
"url": "https://files.pythonhosted.org/packages/02/66/38380935e7d3856fe5daf0694880f8330631d09bf73b2b30d8e576eeb12b/pybbi-0.4.2-cp312-cp312-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "361fabbe9be6b0f501a7ff182f1c6534b8f83b69c97630776d8e482a2d4d9bf7",
"md5": "e0e4fceb1589061d5282f6e1a478ce65",
"sha256": "36dc0add6f54d1763bf247b2cff87eaf2c81a26da18d49ac33de164d6baec2df"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "e0e4fceb1589061d5282f6e1a478ce65",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 3099983,
"upload_time": "2025-10-30T17:09:32",
"upload_time_iso_8601": "2025-10-30T17:09:32.928966Z",
"url": "https://files.pythonhosted.org/packages/36/1f/abbe9be6b0f501a7ff182f1c6534b8f83b69c97630776d8e482a2d4d9bf7/pybbi-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b0e735195b5292b6ccdcaaa655a2dad615b9217f52ac18b9dfdf8afec82521a6",
"md5": "d89c0ded3d5f5fb4503645ed3c4cf306",
"sha256": "7d587a05d7eed4d1fb92e3f62ad52e8389c7a6b315bc430a6eb678760106740e"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d89c0ded3d5f5fb4503645ed3c4cf306",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 3420434,
"upload_time": "2025-10-30T17:09:34",
"upload_time_iso_8601": "2025-10-30T17:09:34.693682Z",
"url": "https://files.pythonhosted.org/packages/b0/e7/35195b5292b6ccdcaaa655a2dad615b9217f52ac18b9dfdf8afec82521a6/pybbi-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5372ac475ad1726f132fc272882b43defddfe09a831815a741850d2c510d7f0e",
"md5": "d364d6b01da4112496a6777b4134a0c2",
"sha256": "54b9e541bb455aeb30f88f09c70b7a4b72f6a0ae0e2e7f2bc9798f2e647b3d16"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp313-cp313-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "d364d6b01da4112496a6777b4134a0c2",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.7",
"size": 2943356,
"upload_time": "2025-10-30T17:09:36",
"upload_time_iso_8601": "2025-10-30T17:09:36.180136Z",
"url": "https://files.pythonhosted.org/packages/53/72/ac475ad1726f132fc272882b43defddfe09a831815a741850d2c510d7f0e/pybbi-0.4.2-cp313-cp313-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1bd34e27f36ae7f0fc933330239d7b76debf6ef67dbd7fef722f3ba1e7cfb9cc",
"md5": "c9af7d6f869389a7fda784098033d066",
"sha256": "2c6472900a6688d604ccfd406138337e5d5b9db442a13715ce7abbf2cb98b841"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp313-cp313-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "c9af7d6f869389a7fda784098033d066",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.7",
"size": 3232770,
"upload_time": "2025-10-30T17:09:37",
"upload_time_iso_8601": "2025-10-30T17:09:37.803684Z",
"url": "https://files.pythonhosted.org/packages/1b/d3/4e27f36ae7f0fc933330239d7b76debf6ef67dbd7fef722f3ba1e7cfb9cc/pybbi-0.4.2-cp313-cp313-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8e252cbcd423c16ceb6eaedc39d797ff8b31119fcb5d71910b5336dbefb942d5",
"md5": "ca07c7ceb8a551e5352ba8d4f8a997dc",
"sha256": "20ee599e318238b177b2c31dbe7789034ea0bfa9716e0aa06d387d7cc9f78938"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "ca07c7ceb8a551e5352ba8d4f8a997dc",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.7",
"size": 3095788,
"upload_time": "2025-10-30T17:09:39",
"upload_time_iso_8601": "2025-10-30T17:09:39.523300Z",
"url": "https://files.pythonhosted.org/packages/8e/25/2cbcd423c16ceb6eaedc39d797ff8b31119fcb5d71910b5336dbefb942d5/pybbi-0.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "15b2dbaaaa0901785caad9317c0eedf97eaa3d841e1c05589a9388ce67c9d53f",
"md5": "d21ae2f5cc4b38fd9dae86589e1db97d",
"sha256": "ce9afaf149c89b01dfa2926febe53b73b174be0cc5febfd4cfee9f1e72083f50"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d21ae2f5cc4b38fd9dae86589e1db97d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.7",
"size": 3414507,
"upload_time": "2025-10-30T17:09:41",
"upload_time_iso_8601": "2025-10-30T17:09:41.605062Z",
"url": "https://files.pythonhosted.org/packages/15/b2/dbaaaa0901785caad9317c0eedf97eaa3d841e1c05589a9388ce67c9d53f/pybbi-0.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0e14183e404d9015b880fde46e452190b6efe6c95dd6bf1cef28265abeba92b8",
"md5": "0d0139795b97415ea8d018cc0db549f6",
"sha256": "b685fc3c72a64672e87cc590146ee91bb97b1b5cb061a85fbe5ade679ef7b5fb"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp39-cp39-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "0d0139795b97415ea8d018cc0db549f6",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 2936711,
"upload_time": "2025-10-30T17:09:43",
"upload_time_iso_8601": "2025-10-30T17:09:43.377148Z",
"url": "https://files.pythonhosted.org/packages/0e/14/183e404d9015b880fde46e452190b6efe6c95dd6bf1cef28265abeba92b8/pybbi-0.4.2-cp39-cp39-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f6cc27c610695e6e746021d3ae311f9572aa7cd57796806fd54328ae67a8d5ec",
"md5": "fc42f84a009daa24b77337a30ae28586",
"sha256": "093c3efb6a6454397be6ffbcd37f8719107300ea02f4ec3066583a0bf87f16b3"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp39-cp39-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "fc42f84a009daa24b77337a30ae28586",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 3225304,
"upload_time": "2025-10-30T17:09:45",
"upload_time_iso_8601": "2025-10-30T17:09:45.117392Z",
"url": "https://files.pythonhosted.org/packages/f6/cc/27c610695e6e746021d3ae311f9572aa7cd57796806fd54328ae67a8d5ec/pybbi-0.4.2-cp39-cp39-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a6c2d73f53bcf6605e8c0740fb486838d1750da2e2091dae4e7b8733aa004110",
"md5": "c07773e671d5f4d9a0baf64c951868c8",
"sha256": "31ac2493b598a4568c5a16c0a575e41633afbe5da3084d0ef2cdcbed1b26031b"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "c07773e671d5f4d9a0baf64c951868c8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 3077589,
"upload_time": "2025-10-30T17:09:46",
"upload_time_iso_8601": "2025-10-30T17:09:46.863177Z",
"url": "https://files.pythonhosted.org/packages/a6/c2/d73f53bcf6605e8c0740fb486838d1750da2e2091dae4e7b8733aa004110/pybbi-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a6cac3af682d723805a06868f5d3cb00fe5b4d7f7452db4a672b7526f87285f7",
"md5": "234bf13e7096d24db30b371b3277fec5",
"sha256": "be8bf199a520b75c4708b90d3245d183138728895fad0a145eb36bc038d39b3b"
},
"downloads": -1,
"filename": "pybbi-0.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "234bf13e7096d24db30b371b3277fec5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 3396498,
"upload_time": "2025-10-30T17:09:48",
"upload_time_iso_8601": "2025-10-30T17:09:48.549263Z",
"url": "https://files.pythonhosted.org/packages/a6/ca/c3af682d723805a06868f5d3cb00fe5b4d7f7452db4a672b7526f87285f7/pybbi-0.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f58333a52ad666d93564e58986a78226dfb9dc7f52a75b36dcf8271f671f8eb1",
"md5": "702cf695e2831cc6e66d6b8b97a7a275",
"sha256": "b9daa5f04cf5641c3addd729737d649c439f440082fe783c28be3353d2aa444b"
},
"downloads": -1,
"filename": "pybbi-0.4.2.tar.gz",
"has_sig": false,
"md5_digest": "702cf695e2831cc6e66d6b8b97a7a275",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 34725029,
"upload_time": "2025-10-30T17:09:51",
"upload_time_iso_8601": "2025-10-30T17:09:51.165692Z",
"url": "https://files.pythonhosted.org/packages/f5/83/33a52ad666d93564e58986a78226dfb9dc7f52a75b36dcf8271f671f8eb1/pybbi-0.4.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-30 17:09:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nvictus",
"github_project": "pybbi#README.md",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pybbi"
}