Skip to main content

build Documentation Status PyPI

PyBNesian

  • PyBNesian is a Python package that implements Bayesian networks. Currently, it is mainly dedicated to learning Bayesian networks.

  • PyBNesian is implemented in C++, to achieve significant performance gains. It uses Apache Arrow to enable fast interoperability between Python and C++. In addition, some parts are implemented in OpenCL to achieve GPU acceleration.

  • PyBNesian allows extending its functionality using Python code, so new research can be easily developed.

Implementation

Currently PyBNesian implements the following features:

Models

  • Bayesian networks.

  • Conditional Bayesian networks (see section 5.6 of [4]).

  • Dynamic Bayesian networks.

which can have different types of CPDs:

  • Multinomial.

  • Linear Gaussian.

  • Conditional kernel density estimation (ratio of two kernel density estimation models). Accelerated with OpenCL.

with this combinations of CPDs, we implement the following types of networks (which can also be Conditional or Dynamic):

  • Discrete networks.

  • Gaussian networks.

  • Semiparametric networks [2].

  • Hybrid networks (conditional linear Gaussian networks and semiparametric networks) [3].

Graphs

  • DAGs.

  • Directed graphs.

  • Undirected graphs.

  • Partially directed graphs.

Graph classes implement useful functionalities for probabilistic graphical models, such as moving between DAG-PDAG representation or fast access to root and leaves.

Learning

It implements different structure learning algorithms:

  • Greedy hill-climbing (for Bayesian networks and Conditional Bayesian networks).

  • PC-stable (for Bayesian networks and Conditional Bayesian networks).

  • MMPC (for Bayesian networks and Conditional Bayesian networks).

  • MMHC (for Bayesian networks and conditional Bayesian networks).

  • DMMHC (for dynamic Bayesian networks).

The score and search algorithms can be used with the following scores:

  • BIC.

  • BGe.

  • BDe.

  • Cross-validation likelihood.

  • Holdout likelihood.

  • Cross-validated likelihood with validation dataset. This score combines the cross-validation likelihood with a validation dataset to control the overfitting.

and the following the following learning operators:

  • Arc operations: add arc, remove arc, flip arc.

  • Change Node Type (for semiparametric Bayesian networks).

The following independence tests are implemented for the constraint-based algorithms:

  • Chi-square test.

  • partial correlation test t-test.

  • A likelihood-ratio test based on mutual information assuming a Gaussian distribution for the continuous data.

  • CMIknn [5].

  • RCoT [6].

It also implements the parameter learning:

  • Maximum Likelihood Estimator.

Inference

Not implemented right now, as the priority is the learning algorithms. However, all the CPDs and models have a sample() method, which can be used to create easily an approximate inference engine based on sampling.

Serialization

All relevant objects (graphs, CPDs, Bayesian networks, etc) can be saved/loaded using the pickle format.

Other implementations

PyBNesian exposes the implementation of other models or techniques used within the library.

  • Apply cross-validation to a dataset.

  • Apply holdout to a dataset.

  • Kernel Density Estimation. Accelerated with OpenCL.

  • K-d Tree. (implemented but not exposed yet).

Weighted sums of chi-squared random variables:

  • Hall-Buckley-Eagleson approximation. (implemented but not exposed yet).

  • Lindsay-Pilla-Basak approximation. (implemented but not exposed yet).

Usage example

>>> from pybnesian import GaussianNetwork, LinearGaussianCPD
>>> # Create a GaussianNetwork with 4 nodes and no arcs.
>>> gbn = GaussianNetwork(['a', 'b', 'c', 'd'])
>>> # Create a GaussianNetwork with 4 nodes and 3 arcs.
>>> gbn = GaussianNetwork(['a', 'b', 'c', 'd'], [('a', 'c'), ('b', 'c'), ('c', 'd')])

>>> # Return the nodes of the network.
>>> print("Nodes: " + str(gbn.nodes()))
Nodes: ['a', 'b', 'c', 'd']
>>> # Return the arcs of the network.
>>> print("Arcs: " + str(gbn.nodes()))
Arcs: ['a', 'b', 'c', 'd']
>>> # Return the parents of c.
>>> print("Parents of c: " + str(gbn.parents('c')))
Parents of c: ['b', 'a']
>>> # Return the children of c.
>>> print("Children of c: " + str(gbn.children('c')))
Children of c: ['d']

>>> # You can access to the graph of the network.
>>> graph = gbn.graph()
>>> # Return the roots of the graph.
>>> print("Roots: " + str(sorted(graph.roots())))
Roots: ['a', 'b']
>>> # Return the leaves of the graph.
>>> print("Leaves: " + str(sorted(graph.leaves())))
Leaves: ['d']
>>> # Return the topological sort.
>>> print("Topological sort: " + str(graph.topological_sort()))
Topological sort: ['a', 'b', 'c', 'd']

>>> # Add an arc.
>>> gbn.add_arc('a', 'b')
>>> # Flip (reverse) an arc.
>>> gbn.flip_arc('a', 'b')
>>> # Remove an arc.
>>> gbn.remove_arc('b', 'a')

>>> # We can also add nodes.
>>> gbn.add_node('e')
4
>>> # We can get the number of nodes
>>> assert gbn.num_nodes() == 5
>>> # ... and the number of arcs
>>> assert gbn.num_arcs() == 3
>>> # Remove a node.
>>> gbn.remove_node('b')

>>> # Each node has an unique index to identify it
>>> print("Indices: " + str(gbn.indices()))
Indices: {'e': 4, 'c': 2, 'd': 3, 'a': 0}
>>> idx_a = gbn.index('a')

>>> # And we can get the node name from the index
>>> print("Node 2: " + str(gbn.name(2)))
Node 2: c

>>> # The model is not fitted right now.
>>> assert gbn.fitted() == False

>>> # Create a LinearGaussianCPD (variable, parents, betas, variance)
>>> d_cpd = LinearGaussianCPD("d", ["c"], [3, 1.2], 0.5)

>>> # Add the CPD to the GaussianNetwork
>>> gbn.add_cpds([d_cpd])

>>> # The CPD is still not fitted because there are 3 nodes without CPD.
>>> assert gbn.fitted() == False

>>> # Let's generate some random data to fit the model.
>>> import numpy as np
>>> np.random.seed(1)
>>> import pandas as pd
>>> DATA_SIZE = 100
>>> a_array = np.random.normal(3, np.sqrt(0.5), size=DATA_SIZE)
>>> c_array = -4.2 - 1.2*a_array + np.random.normal(0, np.sqrt(0.75), size=DATA_SIZE)
>>> d_array = 3 + 1.2 * c_array + np.random.normal(0, np.sqrt(0.5), size=DATA_SIZE)
>>> e_array = np.random.normal(0, 1, size=DATA_SIZE)
>>> df = pd.DataFrame({'a': a_array,
...                    'c': c_array,
...                    'd': d_array,
...                    'e': e_array
...                })

>>> # Fit the model. You can pass a pandas.DataFrame or a pyarrow.RecordBatch as argument.
>>> # This fits the remaining CPDs
>>> gbn.fit(df)
>>> assert gbn.fitted() == True

>>> # Check the learned CPDs.
>>> print(gbn.cpd('a'))
[LinearGaussianCPD] P(a) = N(3.043, 0.396)
>>> print(gbn.cpd('c'))
[LinearGaussianCPD] P(c | a) = N(-4.423 + -1.083*a, 0.659)
>>> print(gbn.cpd('d'))
[LinearGaussianCPD] P(d | c) = N(3.000 + 1.200*c, 0.500)
>>> print(gbn.cpd('e'))
[LinearGaussianCPD] P(e) = N(-0.020, 1.144)

>>> # You can sample some data
>>> sample = gbn.sample(50)

>>> # Compute the log-likelihood of each instance
>>> ll = gbn.logl(sample)
>>> # or the sum of log-likelihoods.
>>> sll = gbn.slogl(sample)
>>> assert np.isclose(ll.sum(), sll)

>>> # Save the model, include the CPDs in the file.
>>> gbn.save('test', include_cpd=True)

>>> # Load the model
>>> from pybnesian import load
>>> loaded_gbn = load('test.pickle')

>>> # Learn the structure using greedy hill-climbing.
>>> from pybnesian import hc, GaussianNetworkType
>>> # Learn a Gaussian network.
>>> learned = hc(df, bn_type=GaussianNetworkType())
>>> learned.num_arcs()
2

Dependencies

  • Python 3.8, 3.9, 3.10, 3.11 and 3.12.

The library has been tested on Ubuntu 16.04/20.04/22.04 and Windows 10/11, but should be compatible with other operating systems.

Libraries

The library depends on NumPy, Apache Arrow, pybind11, NLopt, libfort and Boost.

Installation

PyBNesian can be installed with pip:

pip install pybnesian

Build from Source

Prerequisites

  • Python 3.8, 3.9, 3.10, 3.11 or 3.12.
  • C++17 compatible compiler.
  • CMake.
  • Git.
  • OpenCL drivers installed.

Building

Clone the repository:

git clone https://github.com/davenza/PyBNesian.git
cd PyBNesian
git checkout v0.5.1 # You can checkout a specific version if you want
pip install .

Testing

The library contains tests that can be executed using pytest. They also require scipy and pandas installed.

pip install pytest scipy pandas

Run the tests with:

pytest

How to cite?

@article{Atienza2022Pybnesian,
    author = {David Atienza and Concha Bielza and Pedro Larrañaga},
    title = {PyBNesian: An extensible Python package for Bayesian networks},
    journal = {Neurocomputing},
    volume = {504},
    pages = {204-209},
    year = {2022}
}

References

[1] D. Atienza and C. Bielza and P. Larrañaga. PyBNesian: An extensible python package for Bayesian networks. Neurocomputing, 504, 2022, pp 204-209.

[2] D. Atienza and C. Bielza and P. Larrañaga. Semiparametric Bayesian networks. Information Sciences, 584, 2022, pp 564-582.

[3] D. Atienza and P. Larrañaga and C. Bielza. Hybrid Semiparametric Bayesian networks. TEST, 31(2), 2022, pp 299-327.

[4] D. Koller and N. Friedman, Probabilistic Graphical Models: Principles and Techniques, The MIT Press, 2009.

[5] J. Runge, Conditional independence testing based on a nearest-neighbor estimator of conditional mutual information. International Conference on Artificial Intelligence and Statistics, AISTATS 2018, 84, 2018, pp. 938–947.

[6] E. V. Strobl and K. Zhang and S., Visweswaran. Approximate kernel-based conditional independence tests for fast non-parametric causal discovery. Journal of Causal Inference, 7(1), 2019, pp 1-24.

Metadata

Release files for pybnesian 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pybnesian 0.5.1
File Size Uploaded Provenance Actions
pybnesian-0.5.1.tar.gz 2.4 MB Without provenance Details for pybnesian-0.5.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for pybnesian 0.5.1
File Actions
pybnesian-0.5.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pybnesian-0.5.1-cp313-cp313-win_amd64.whl
pybnesian-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for pybnesian-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pybnesian-0.5.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for pybnesian-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
pybnesian-0.5.1-cp313-cp313-macosx_10_14_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.14+ x86-64 Details for pybnesian-0.5.1-cp313-cp313-macosx_10_14_x86_64.whl
pybnesian-0.5.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pybnesian-0.5.1-cp312-cp312-win_amd64.whl
pybnesian-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for pybnesian-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pybnesian-0.5.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for pybnesian-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
pybnesian-0.5.1-cp312-cp312-macosx_10_14_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.14+ x86-64 Details for pybnesian-0.5.1-cp312-cp312-macosx_10_14_x86_64.whl
pybnesian-0.5.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pybnesian-0.5.1-cp311-cp311-win_amd64.whl
pybnesian-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for pybnesian-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pybnesian-0.5.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for pybnesian-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
pybnesian-0.5.1-cp311-cp311-macosx_10_14_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.14+ x86-64 Details for pybnesian-0.5.1-cp311-cp311-macosx_10_14_x86_64.whl
pybnesian-0.5.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pybnesian-0.5.1-cp310-cp310-win_amd64.whl
pybnesian-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for pybnesian-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pybnesian-0.5.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for pybnesian-0.5.1-cp310-cp310-macosx_11_0_arm64.whl
pybnesian-0.5.1-cp310-cp310-macosx_10_14_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.14+ x86-64 Details for pybnesian-0.5.1-cp310-cp310-macosx_10_14_x86_64.whl
pybnesian-0.5.1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details for pybnesian-0.5.1-cp39-cp39-win_amd64.whl
pybnesian-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details for pybnesian-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pybnesian-0.5.1-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details for pybnesian-0.5.1-cp39-cp39-macosx_11_0_arm64.whl
pybnesian-0.5.1-cp39-cp39-macosx_10_14_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.14+ x86-64 Details for pybnesian-0.5.1-cp39-cp39-macosx_10_14_x86_64.whl
pybnesian-0.5.1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details for pybnesian-0.5.1-cp38-cp38-win_amd64.whl
pybnesian-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details for pybnesian-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pybnesian-0.5.1-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details for pybnesian-0.5.1-cp38-cp38-macosx_11_0_arm64.whl
pybnesian-0.5.1-cp38-cp38-macosx_10_14_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.14+ x86-64 Details for pybnesian-0.5.1-cp38-cp38-macosx_10_14_x86_64.whl

Total release size: 109.4 MB

Release files / pybnesian-0.5.1.tar.gz

Download URL pybnesian-0.5.1.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
d2c56480457b33246aa4de4fa49339b5a4123f718c4e9c913f35fb7e0f7b72dc
BLAKE2b-256 checksum
How to use checksums
c9c1efd4a2b2f96272e46a48b70805be2e3ce7bf18c1a2a1e60794f359648aa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp313-cp313-win_amd64.whl

Download URL pybnesian-0.5.1-cp313-cp313-win_amd64.whl
Size 3.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
c7a1eab9ed7e7f2ce3284b32ca510c1f3a8059bf211cf4a6c36efdabe093300d
BLAKE2b-256 checksum
How to use checksums
28a98b1ea411041bac5fb33501f22bcd7caa57c44fa692ccf49c89e48633483a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pybnesian-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
59bb97f1ca11e0e4a2a66881717d926d2208ceb568f4d9e8747a235464ae9625
BLAKE2b-256 checksum
How to use checksums
6a2a45e5559462159bc0f56af8c38a1a59578fbee3eb66879686ba6df0323a6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL pybnesian-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1e919c10edbf05c8489acfb8d31e1613620ad6aa5f16aa200447b19bf731368c
BLAKE2b-256 checksum
How to use checksums
3ceb963df9cbb958425fed2a334732deae745a3adad05140f6d41804986701e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp313-cp313-macosx_10_14_x86_64.whl

Download URL pybnesian-0.5.1-cp313-cp313-macosx_10_14_x86_64.whl
Size 4.8 MB
Tags CPython 3.13 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
75b4f4c431185430e7546efb9ed6dcb3b35f99687b2d4c14f23300bcf3842912
BLAKE2b-256 checksum
How to use checksums
bdea9be76990f9378bbe19992637ca53cb0448dcb385ca7f73d8f75436d15734
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp312-cp312-win_amd64.whl

Download URL pybnesian-0.5.1-cp312-cp312-win_amd64.whl
Size 3.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
bc5615fb0eaaa65ba546818cee26f975ad9677d6e28a08d95e8cb669504fd6a6
BLAKE2b-256 checksum
How to use checksums
c83f99f4ea4847417607ad9735024bd83165b861265a7f1ab2f2ba4c2fa890fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pybnesian-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
da3287b183121f345919ca6a56877ca8734064a7c1013c54caaa8da3df6025d9
BLAKE2b-256 checksum
How to use checksums
48f8e4df3676db4744e95d45b9c4a6faebfd30a4eac6375497adaaa796944b67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL pybnesian-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
56addb8b4c80a3d989b57246932a3cb42345daa052316f06f78047470b4e428f
BLAKE2b-256 checksum
How to use checksums
7d278bc82bf979c54bad0c126dcf50b5828475ab1468d2ddfe7f54e44fc169b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp312-cp312-macosx_10_14_x86_64.whl

Download URL pybnesian-0.5.1-cp312-cp312-macosx_10_14_x86_64.whl
Size 4.8 MB
Tags CPython 3.12 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
65ac37808e743b3db3a8343aa3c0f00ea248de982509a4a39f849ebe74e701d8
BLAKE2b-256 checksum
How to use checksums
c283ba981f26db8b2e4159a33e83502709c7782a5b3ef6e721f6585e737a4bf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp311-cp311-win_amd64.whl

Download URL pybnesian-0.5.1-cp311-cp311-win_amd64.whl
Size 3.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
db8628295af53c117a311558022f54edffca3069e1b7f812304aa7ed2087da83
BLAKE2b-256 checksum
How to use checksums
dfb092525882f01428413e4fa205a9fe2ca71d8596125d618058b2d32ae65c79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pybnesian-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
481cc0887e5c67600ec62b9c2ea2e020d1c6d6c509307856d78fd936186dd17c
BLAKE2b-256 checksum
How to use checksums
26d13ab534bbe4d31e06a1f1898aea095dad050f9de1ca4b6084dc8edc7458cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL pybnesian-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
45d8b40d50d28a63a9afb251edc16218b11cef972e597f9a032e96e6d1edc3bc
BLAKE2b-256 checksum
How to use checksums
6f2cdb88460a5c1f7763bdfef2ffe8b32afc1b2ccdb7808e2032bc01d97b63c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp311-cp311-macosx_10_14_x86_64.whl

Download URL pybnesian-0.5.1-cp311-cp311-macosx_10_14_x86_64.whl
Size 4.8 MB
Tags CPython 3.11 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
5da6b44589be649ee581f118d4c6584b8b7cd94ca03a29a6ce04c1a804e24284
BLAKE2b-256 checksum
How to use checksums
865260c3980e731d37b04244ff367643fe3040ba343ef4bdbe39237ba2c595d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp310-cp310-win_amd64.whl

Download URL pybnesian-0.5.1-cp310-cp310-win_amd64.whl
Size 3.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
29e47d2824c00d32eabe70cbb787ec6107e31144d01cfdc4a665961fe1f20392
BLAKE2b-256 checksum
How to use checksums
135516ec4b84a68fe8aebd73610d94dba3288fad5f5bb5c8178f83f4fbdf5ac2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pybnesian-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
aa251fbf4c8f601306892a8c9fc65d1dcbf660ccfdb2a0b79d05ad8f0c7f3584
BLAKE2b-256 checksum
How to use checksums
226401978a27e4f83a761b110956b865b4593446c9eb257ff77c15eccbac9c71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL pybnesian-0.5.1-cp310-cp310-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0685b546915ec89ed590de8b48485ee68a2e4f664def4fcbf6cd4163ac45b5c0
BLAKE2b-256 checksum
How to use checksums
4fab00917f541241fc6389e53247d3e24ea19350580a25709edc1fe5296246c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp310-cp310-macosx_10_14_x86_64.whl

Download URL pybnesian-0.5.1-cp310-cp310-macosx_10_14_x86_64.whl
Size 4.8 MB
Tags CPython 3.10 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
d7986f3cbf6071dd7707fef65468482cbcea8856e1296f9cf33b14f68a61effb
BLAKE2b-256 checksum
How to use checksums
6f5bc88e294212a77cb2936157d04ffbcf70fa86420412906a699fc04b161a83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp39-cp39-win_amd64.whl

Download URL pybnesian-0.5.1-cp39-cp39-win_amd64.whl
Size 3.6 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
870504202509fa3c9829a699fe70b45f26b9bbd447a5b16621a9d4e682079ef5
BLAKE2b-256 checksum
How to use checksums
b05d5651c63bd5f4456f50c778265114f00b35dfee1562974466c66be10d67b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pybnesian-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0a5394d4b5640d0ef8d33e11197f1b481b5823484da20942262eb40956e41b65
BLAKE2b-256 checksum
How to use checksums
2d173f883ecd9b0c404e96d8a135bca045c344a18fc8bb92bdd0a718034bf876
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp39-cp39-macosx_11_0_arm64.whl

Download URL pybnesian-0.5.1-cp39-cp39-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
94b3198adf42eca79dfb01cbab9e2d1ea6d33902294a3e57f2bc02e4bd3c4f84
BLAKE2b-256 checksum
How to use checksums
00e2704ae4d005f53ef9de179dbf8f760f1921d126285658120b72f903c54d02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp39-cp39-macosx_10_14_x86_64.whl

Download URL pybnesian-0.5.1-cp39-cp39-macosx_10_14_x86_64.whl
Size 4.8 MB
Tags CPython 3.9 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
78c83d3455b9e3648f188b5645c20b2c69e8c9b3f1477cf0639360b963064563
BLAKE2b-256 checksum
How to use checksums
7dcc6af31d88cb008c8ea09042a01fa82b90fe82acfad5b8f0265b4bd18fbfbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp38-cp38-win_amd64.whl

Download URL pybnesian-0.5.1-cp38-cp38-win_amd64.whl
Size 3.5 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
f7e89120639737b77d99780bbcd092b5f716e0294795a33ddd0eff1395a4349d
BLAKE2b-256 checksum
How to use checksums
bab1b83cfff043c3061385b468acd840b0c38bd8471112ab6a51d9ff7fc35d3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pybnesian-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a25429dc619a1cbed0eeb91ac2386f0da66e7b80110ddb14b621cbbed371f3b0
BLAKE2b-256 checksum
How to use checksums
08cdbca17dbf3b12fd6552d6371cfc4f93e020c4471b1947ff15d3157d94930e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp38-cp38-macosx_11_0_arm64.whl

Download URL pybnesian-0.5.1-cp38-cp38-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ca82af5afac41f8d1c288e417c0f7c03a96066fc88c0d4da741fc95e5ca41c4e
BLAKE2b-256 checksum
How to use checksums
3f3ee1b5fed9cd212b075267c5984f7d580d43c80120ba8317cec11f4a5345ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / pybnesian-0.5.1-cp38-cp38-macosx_10_14_x86_64.whl

Download URL pybnesian-0.5.1-cp38-cp38-macosx_10_14_x86_64.whl
Size 4.8 MB
Tags CPython 3.8 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
f45ace628774c5ba955ba5d5870702273d35e977a2ec9eba69a072edd9b3a30b
BLAKE2b-256 checksum
How to use checksums
157f3065c18ff263909180a3ae02145c18a64f6cf5e04f50873972417b77aaa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.6

Security for pybnesian 0.5.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page