# pybbi #
![Build Status](https://github.com/nvictus/pybbi/actions/workflows/ci.yml/badge.svg)
[![DOI](https://zenodo.org/badge/58960207.svg)](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 ##
- [libBigWig](https://github.com/dpryan79/libBigWig): Alternative C library for bigWig and bigBed files by Devon Ryan
- [pyBigWig](https://github.com/dpryan79/pyBigWig): Python bindings for `libBigWig` by the same author
- [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/2d/ad/88f09f16490fdd24c48693bac891e788a31d6f0aa2955f8021dfc8df8a48/pybbi-0.4.0.tar.gz",
"platform": null,
"description": "# pybbi #\n\n![Build Status](https://github.com/nvictus/pybbi/actions/workflows/ci.yml/badge.svg)\n[![DOI](https://zenodo.org/badge/58960207.svg)](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- [libBigWig](https://github.com/dpryan79/libBigWig): Alternative C library for bigWig and bigBed files by Devon Ryan\n- [pyBigWig](https://github.com/dpryan79/pyBigWig): Python bindings for `libBigWig` by the same author\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.0",
"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": "",
"digests": {
"blake2b_256": "8b90caa02f2d97cff8707b33510058c3a168a53e73d217db52d15289c13f6315",
"md5": "170ade73f087b8a93004b3277830788c",
"sha256": "b90be7899be17ee67ab976d3092e5f4f60ebfb3cc80350aeacda7fa27340aa2b"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "170ade73f087b8a93004b3277830788c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 2712831,
"upload_time": "2024-04-14T11:55:29",
"upload_time_iso_8601": "2024-04-14T11:55:29.286638Z",
"url": "https://files.pythonhosted.org/packages/8b/90/caa02f2d97cff8707b33510058c3a168a53e73d217db52d15289c13f6315/pybbi-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3e5cab984a4ec769ec8fa850c2c22c290f4af7ba081f41eb6be959e942ebfb6a",
"md5": "c3e9b4c8d0e8d6116ddde726f32bc154",
"sha256": "a3d41cf57abe07cf881d8593388b2f80740797ee9289797cc6c436acb3f4500d"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c3e9b4c8d0e8d6116ddde726f32bc154",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 2977035,
"upload_time": "2024-04-14T11:55:31",
"upload_time_iso_8601": "2024-04-14T11:55:31.283335Z",
"url": "https://files.pythonhosted.org/packages/3e/5c/ab984a4ec769ec8fa850c2c22c290f4af7ba081f41eb6be959e942ebfb6a/pybbi-0.4.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0e618f08b95d0f8c2dadd4f68d1be2d59fa219257c754bfb81220fc7d76b2438",
"md5": "498ed4b9425f1312cfac553173b121df",
"sha256": "9eee59077696af1a58e7d87210cf354757b305f7b9fea1653d054bd245b382ed"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "498ed4b9425f1312cfac553173b121df",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 3061912,
"upload_time": "2024-04-14T11:55:33",
"upload_time_iso_8601": "2024-04-14T11:55:33.063850Z",
"url": "https://files.pythonhosted.org/packages/0e/61/8f08b95d0f8c2dadd4f68d1be2d59fa219257c754bfb81220fc7d76b2438/pybbi-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "665f4d281f439d41dfe2a035eb78e3a6957893525c4ce97ff48333a37c72d819",
"md5": "a01d64a7705d5343001297ba34082250",
"sha256": "9d1510879a23c88c9f462278861786d1fe23479bcf86c31216c9d46e1e342d68"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a01d64a7705d5343001297ba34082250",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 3385538,
"upload_time": "2024-04-14T11:55:34",
"upload_time_iso_8601": "2024-04-14T11:55:34.664542Z",
"url": "https://files.pythonhosted.org/packages/66/5f/4d281f439d41dfe2a035eb78e3a6957893525c4ce97ff48333a37c72d819/pybbi-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d556f1380ebc5fc4abd58ab499f0700a2380f3d6675ae511b6b8bc776bbfe453",
"md5": "acc0239404ef5f8fe25118d28aa629f5",
"sha256": "2f763d0297965ca10d1b7844c83a9a844398c897da3fde1cc03e606cfa5aecc3"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "acc0239404ef5f8fe25118d28aa629f5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 2713095,
"upload_time": "2024-04-14T11:55:36",
"upload_time_iso_8601": "2024-04-14T11:55:36.732892Z",
"url": "https://files.pythonhosted.org/packages/d5/56/f1380ebc5fc4abd58ab499f0700a2380f3d6675ae511b6b8bc776bbfe453/pybbi-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c2d2c4507e6b84d4f3dbb7e7b50824c021fb309f5f91ab5cf81c3ec4a32facf4",
"md5": "16379df50a9d9a0f47be9e39f1bdb214",
"sha256": "f9b5b4ed4a576aef050ec29bd4a482c13a0fd612cc97175fd1f2785b0ebe1d80"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "16379df50a9d9a0f47be9e39f1bdb214",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 2977200,
"upload_time": "2024-04-14T11:55:38",
"upload_time_iso_8601": "2024-04-14T11:55:38.319779Z",
"url": "https://files.pythonhosted.org/packages/c2/d2/c4507e6b84d4f3dbb7e7b50824c021fb309f5f91ab5cf81c3ec4a32facf4/pybbi-0.4.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "34a9c7625a5e9b32ab92d66c8f76a4d3fb0af0f7314bc8d5d039993492e438d8",
"md5": "8306e709e3776ee338478ac37518d5e1",
"sha256": "7274cb6700e1575036bbebc4718043057f534dd391a51eaab377f32c5b130c94"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "8306e709e3776ee338478ac37518d5e1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 3095303,
"upload_time": "2024-04-14T11:55:40",
"upload_time_iso_8601": "2024-04-14T11:55:40.366587Z",
"url": "https://files.pythonhosted.org/packages/34/a9/c7625a5e9b32ab92d66c8f76a4d3fb0af0f7314bc8d5d039993492e438d8/pybbi-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "37c1d01a39b9444b10c814f3b5f055210331f7f4a601dd54d5510664823fe064",
"md5": "13ad9484c70dbf15462ee56f75fa5dd5",
"sha256": "c76c35064825285024f38e132ea712a6da6b77284cb887ca8a8778e6774e7676"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "13ad9484c70dbf15462ee56f75fa5dd5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 3416863,
"upload_time": "2024-04-14T11:55:42",
"upload_time_iso_8601": "2024-04-14T11:55:42.321953Z",
"url": "https://files.pythonhosted.org/packages/37/c1/d01a39b9444b10c814f3b5f055210331f7f4a601dd54d5510664823fe064/pybbi-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fd974a606903bfb8af7a80dffcd7d49295998974ae42d3db23e4e2d775888948",
"md5": "cf910809e6288965a9e1c816675a9ee2",
"sha256": "4eb3ccb77ea0f90db8d3c6322e7c79952468ef56d65e43270b6466b37b97b260"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "cf910809e6288965a9e1c816675a9ee2",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 2712396,
"upload_time": "2024-04-14T11:55:44",
"upload_time_iso_8601": "2024-04-14T11:55:44.299461Z",
"url": "https://files.pythonhosted.org/packages/fd/97/4a606903bfb8af7a80dffcd7d49295998974ae42d3db23e4e2d775888948/pybbi-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5cb845d06937a2e5d8e269f23d244a1dfffc789d499fc231f0cfaed12ea10910",
"md5": "15c0d2a2fde8ac7deb3cb46ab91f8047",
"sha256": "64c8a5122eb6841736636c3a84d17183991201d200db405a79fd8da3aa898346"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "15c0d2a2fde8ac7deb3cb46ab91f8047",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 2977187,
"upload_time": "2024-04-14T11:55:46",
"upload_time_iso_8601": "2024-04-14T11:55:46.358260Z",
"url": "https://files.pythonhosted.org/packages/5c/b8/45d06937a2e5d8e269f23d244a1dfffc789d499fc231f0cfaed12ea10910/pybbi-0.4.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "60b93ee082c5215d2d397db565de99dbc6348fdc4bd3a3e7e15e593eb6c4849f",
"md5": "f574286a43366e402396c2639c6f9683",
"sha256": "08c3f42f1e9632de3b5dc49c75ee630e1382ae2622be45e09485f5d0c8d1496a"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "f574286a43366e402396c2639c6f9683",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 3061288,
"upload_time": "2024-04-14T11:55:48",
"upload_time_iso_8601": "2024-04-14T11:55:48.434065Z",
"url": "https://files.pythonhosted.org/packages/60/b9/3ee082c5215d2d397db565de99dbc6348fdc4bd3a3e7e15e593eb6c4849f/pybbi-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4ccaae2468fb169825a55a28aa3c9271661116b5310c210a01dbdc0b9518b1bb",
"md5": "8fc48746053803979f59354aa6307bc2",
"sha256": "70d1d9ee0649bd73b2c5ee88351d28880189cdfdab1a56e8304d0ae05d03eb51"
},
"downloads": -1,
"filename": "pybbi-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8fc48746053803979f59354aa6307bc2",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 3384521,
"upload_time": "2024-04-14T11:55:49",
"upload_time_iso_8601": "2024-04-14T11:55:49.807201Z",
"url": "https://files.pythonhosted.org/packages/4c/ca/ae2468fb169825a55a28aa3c9271661116b5310c210a01dbdc0b9518b1bb/pybbi-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2dad88f09f16490fdd24c48693bac891e788a31d6f0aa2955f8021dfc8df8a48",
"md5": "a9ae4e734cbff584986b0d1e21368a3a",
"sha256": "afafbc23f16f789344a454fce619af5556a67a2e11b7c36de8fc6f091e2478fc"
},
"downloads": -1,
"filename": "pybbi-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "a9ae4e734cbff584986b0d1e21368a3a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 34725031,
"upload_time": "2024-04-14T11:55:51",
"upload_time_iso_8601": "2024-04-14T11:55:51.843404Z",
"url": "https://files.pythonhosted.org/packages/2d/ad/88f09f16490fdd24c48693bac891e788a31d6f0aa2955f8021dfc8df8a48/pybbi-0.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-14 11:55: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"
}