Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pybnlearn

A Python port of bnlearn, Marco Scutari's R package for Bayesian network structure learning, parameter learning and inference.

Status: pre-release. 139 of bnlearn's 160 exported functions are ported and checked against R — see What works and Verified against R. Wheels build in CI for Linux (x86-64 and aarch64, manylinux and musllinux), macOS arm64 and Windows, and each one runs the whole parity suite before it is kept. Nobody outside this repository has used it yet, so expect the first releases to be alphas.

This is a port, not a drop-in replacement. Plotting (graphviz.*, strength.plot, the bn.fit.* lattice plots) and the conversions to igraph, gRain, graphNEL and lm are not here at all — they would be rewrites rather than ports. And direct_lingam reproduces R's causal ordering exactly but picks each node's parents with a score-based search where R uses glmnet's adaptive lasso: measured over eight cases it agrees on six and is less sparse on two, keeping arcs R prunes and never the reverse. Both are set out in full below.

What makes this a port rather than a reimplementation

The numerical core is bnlearn's C code. The sources under src/c/bnlearn/ are byte-identical to the CRAN 5.2.1 tarball; what makes them build without R is a compatibility layer (src/c/compat/) that reimplements the subset of the R C API bnlearn uses — the SEXP object model, attributes, allocVector, error() and about sixty other entry points. Forwarding headers let the vendored sources keep including <R.h> and friends by their usual names, so tracking a new bnlearn release means dropping in a new tarball.

One thing here is not a port: bnlearn has no exact inference over discrete networks of its own, so query() implements the junction tree directly rather than delegating to the gRain package as bnlearn does. Its tests compare numbers against gRain, which is a weaker claim than the rest of the suite makes, and src/pybnlearn/exact.py says why. Gaussian networks are a port: bnlearn turns those into a multivariate normal itself, and src/pybnlearn/mvnorm.py follows it.

R's own standalone maths library is vendored too (src/c/nmath/), along with R's Mersenne-Twister, so distribution functions and random streams agree with R bit for bit. That is what makes it meaningful to assert that results match rather than approximate: the parity suite compares against numbers generated by R itself, at a relative tolerance of 1e-11 — a bound set by measuring the worst disagreement across macOS and Linux (1.05e-12), not chosen for comfort. On one machine the agreement is 1e-12, which is what the fixtures were generated to. Where it cannot be that good, and why, is set out under what "matches R" does not cover.

Because bnlearn is GPL-2 | GPL-3, pybnlearn is distributed under the GPL v3 or later. See NOTICE for attribution.

Install

pip install bnlearn-port
import pybnlearn        # the install name and the import name differ

Installed as bnlearn-port, imported as pybnlearn. PyPI declines names too close to an existing project, and there is already a package called bnlearn there — a separate, MIT-licensed one built on pgmpy, unrelated to this and to Scutari's R package. The rule is doing its job: two Bayesian-network packages a prefix apart would be genuinely confusing. So the distribution took a name that says what it is, and the import name stayed put rather than churn every example. Python does this often enough to be unremarkable — scikit-learn imports as sklearn, Pillow as PIL.

Use

import pandas as pd
import pybnlearn

data = pd.read_csv("learning.test.csv", dtype="category")

# conditional independence testing
pybnlearn.ci_test(data, "A", "B", sx=["C"], test="mi")
# {'statistic': {'mi': 2347.258587894275}, 'parameter': {'df': 12.0}, ...}

# structure learning
net = pybnlearn.hc(data, score="bic")
net.modelstring()          # '[A][C][F][B|A][D|A:C][E|B:F]'
net.arcs                   # [('A', 'B'), ('A', 'D'), ...]
pybnlearn.score(net, data) # -24006.734232498

# constraint-based learning: these return a partially directed graph
pybnlearn.gs(data, test="mi", alpha=0.05).arcs
pybnlearn.iamb(data).arcs
pybnlearn.inter_iamb(data, undirected=True).arcs

# parameter learning
fitted = pybnlearn.fit(net, data)
fitted["B"].probabilities        # the conditional probability table
fitted["B"].as_frame()           # ... in long format

# inference: seeded sampling reproduces R's set.seed() exactly
pybnlearn.set_seed(1)
pybnlearn.cpquery(fitted, {"B": "a"}, {"A": "a"}, method="ls", n=10000)
pybnlearn.rbn(fitted, 100)       # sample from the network

# ... or compute it exactly, no sampling involved
pybnlearn.query(fitted, "B", {"A": "a"}).values

# resampling
pybnlearn.set_seed(1)
pybnlearn.boot_strength(data, algorithm="hc", replicates=200)
pybnlearn.bn_cv(data, "hc", k=10).mean

# constraints
pybnlearn.hc(data, whitelist=[("A", "F")], blacklist=[("A", "B")], maxp=3)

# graph priors: what you believe about the structure before seeing the data.
# A whitelist forces an arc; a prior only leans on it, so on data this
# decisive all three still land on the network above -- the scores differ.
pybnlearn.score(net, data, type="bde", prior="vsp", beta=0.1)
pybnlearn.score(net, data, type="bde", prior="marginal", beta=0.9)
pybnlearn.score(net, data, type="bde", prior="cs", beta=pd.DataFrame(
    {"from": ["A", "B"], "to": ["B", "C"], "prob": [0.9, 0.05]}))
pybnlearn.hc(data, score="bde", prior="vsp", beta=0.1)

# the whole graph at once, in and out
pybnlearn.amat(net)              # a labelled square frame of 0s and 1s
pybnlearn.set_amat(net, matrix)  # ... and back to a network

Two notes on pandas.read_csv and categorical data

Missing values. read_csv treats NA, None, N/A and similar strings as missing by default. bnlearn's own insurance data set has a category literally called "None", so the default reads 14681 of its rows as missing. Pass keep_default_na=False, na_values=[] when the labels are meant to be data. pybnlearn raises rather than letting missing values reach the C core, but it cannot tell that a category was lost before it ever saw the frame.

Level order. read_csv orders categories alphabetically. Most of the library does not care — mutual information and the network scores are invariant to it — but a conditional probability table is indexed by level, so fit() returns its axes in whatever order the categories are in. If the order matters to you, set it explicitly:

data["Species"] = data["Species"].cat.reorder_categories(["Sagrei", "Distichus"])

What works

Conditional independence tests mi, mi-adf, mi-sh, x2, x2-adf (discrete); cor, zf, mi-g, mi-g-sh (Gaussian)
Scores loglik, aic, bic, bde, bds, bdj, k2, fnml, qnml; loglik-g, aic-g, bic-g, bge; loglik-cg, aic-cg, bic-cg, ebic-cg
Structure learning (score-based) hc, tabu — whitelists, blacklists, maxp, arbitrary starting networks, random restarts
Structure learning (constraint-based) pc_stable, gs, iamb, inter_iamb, iamb_fdr, fast_iamb, mmpc, si_hiton_pc, hpc — whitelists, blacklists, alpha, max_sx, undirected
Structure learning (local) learn_mb, learn_nbr — one node's Markov blanket or neighbourhood, without the whole network
Structure learning (hybrid) mmhc, h2pc, rsmax2 — any ported restrict/maximize pair
Structure learning (pairwise) chow_liu, aracne
Causal discovery lingam_ordering — the causal ordering non-Gaussianity identifies; direct_lingam
Causal inference as_scm, intervention (mutilated), twin, counterfactual
Graphs cpdag, moral, skeleton, pdag2dag, subgraph, empty_graph, model2network, topological ordering
Comparison shd, hamming, compare, nparams, sid
Information H (entropy), KL (divergence), BF (Bayes factor), alpha_star
Graph properties acyclic, directed, valid_dag, valid_cpdag, valid_ug, path_exists, connected_components, node_ordering, dsep
Colliders and equivalence colliders, vstructs, shielded_colliders, unshielded_colliders, cextend, cextend_all
Generating graphs random_graph (ordered, ic-dag, melancon), complete_graph, empty_graph, perturb, count_graphs
Preprocessing discretize (quantile, interval, Hartemink), configs, dedup
Nodes and arcs amat, set_amat, parents, children, mb, nbr, spouses, ancestors, descendants, root_nodes, leaf_nodes, isolated_nodes, degree, in_degree, out_degree, arcs, narcs, nnodes, directed_arcs, undirected_arcs, incoming_arcs, outgoing_arcs, incident_arcs, compelled_arcs, reversible_arcs
Editing a graph set_amat (every arc at once), set_arc, drop_arc, reverse_arc, set_edge, drop_edge, add_node, remove_node, rename_nodes
Constraints from orderings ordering2blacklist, tiers2blacklist, set2blacklist
Parameter learning fit — mle and bayes for discrete networks, mle-g for Gaussian ones, mle-cg for mixtures of the two; custom_fit to supply parameters by hand; bn_net to drop them again
Incomplete data impute — from a node's parents, by likelihood weighting, or exactly; structural_em to learn a structure despite the gaps, latent variables included
Prediction predict — from a node's parents, by likelihood weighting, or exactly
Exact inference query — junction tree for discrete networks, multivariate normal for Gaussian ones; conditional and joint distributions, computed rather than sampled
Gaussian networks as distributions gbn2mvnorm, mvnorm2gbn — the global mean and covariance, and the factorisation back
Classifiers naive_bayes, tree_bayes, classify — exact class posteriors
Simulation and inference rbn, cpquery, cpdist — logic sampling and likelihood weighting; set_seed reproduces R's set.seed
Resampling boot_strength, bn_boot, bn_cv, loss — bootstrap arc strengths, a bootstrap distribution for any statistic, k-fold / hold-out / custom-fold cross-validation, all six losses
Arc strength arc_strength (p-value or score difference), bf_strength (Bayes factors), custom_strength, averaged_network, inclusion_threshold
Interchange formats read_bif, read_dsc, read_net, write_bif, write_dsc, write_net, write_dot
Graph priors uniform, vsp, marginal, cs (Castelo & Siebes) — passed to any Bayesian score as prior= and beta=
Utilities score, modelstring, identifiable, singular, whitelist, blacklist, ntests

139 of bnlearn's 160 exported functions are covered, and nothing of substance is left. Fifteen of the remaining twenty-one are deliberately out of scope -- the nine plotting functions and the six conversions to igraph, graphNEL, gRain and lm -- because they would be rewrites rather than ports, with nothing to check against. The other six are R's assignment forms (nodes<-, arcs<-, parents<-, children<-, modelstring<-, alst<-), whose effect is available here as ordinary functions.

Three things are deliberately not reproduced, and each is documented where it lives. direct_lingam gives R's causal ordering exactly, but picks the arcs with a score-based search rather than with glmnet's adaptive lasso, which is not vendored. tests/parity/test_lingam_arcs.py measures how far apart that leaves them -- six of eight cases identical, two differing only by arcs this keeps and R prunes -- and fails if the gap widens, narrows or changes direction. Porting glmnet would not close it cleanly: its lambda path stops when the gain in deviance falls below 1e-5 times the deviance, and that comparison came down to 7.865e-06 against 7.634e-06 on the first data set tried, so the number of lambdas -- and thus which one is selected -- flips with the convergence tolerance. Matching it needs glmnet's arithmetic rather than its method. mi = "gkernel" raises rather than returning a number: bnlearn builds its Gram matrix with a matrix product where it means an elementwise one, leaving a condition number around 1e20, so R's own answer is floating-point noise and cannot be reproduced by anything. And count_graphs("dags-with-r-arcs", r = 0) returns one rather than R's n: R's inner loop runs seq(from = 1, to = 0), which counts downwards, and the extra pass overwrites the count -- unlike the other two this one is checkable, and the counts for a given number of nodes only add up to the total with the corrected value. Exact inference covers discrete and Gaussian networks, but not mixtures of the two.

Three limits on how far "matches R" goes, all found by running the code somewhere new rather than reasoned about in advance.

The last digit belongs to the platform, not to this package. The vendored nmath and Mersenne-Twister make distributions and random streams agree with R exactly, but nmath itself calls log, exp and lgamma from the system maths library, and glibc and Apple's libm differ in the last unit in the last place. Nothing vendored can fix that. Measured across macOS and Linux the worst relative disagreement over the whole suite is 1.05e-12, so the parity tests compare at a relative tolerance of 1e-11 — ten-fold headroom over what was observed, tight enough that a real regression still fails. On a single machine agreement is far better, at the 1e-12 the fixtures were generated to.

BLAS is the suspect people reach for here, and it is the wrong one: building against scipy-openblas32 instead of Accelerate — a genuinely different BLAS on the same machine — changes nothing at all, and the whole suite passes unaltered.

Ill-conditioned data determine fewer digits than they appear to. For a data set built with two columns correlated to 1 − 5e-13, a partial correlation agrees with R only to about four digits — and measured against exact rational arithmetic, neither answer is better: R is wrong by 6.6e-5, this by 2.9e-4, against a forward error bound of 1.5e-3. The data do not determine those digits. test_the_ill_conditioned_disagreement_is_not_a_defect does that arithmetic rather than asserting it.

Some results are decided by ties, and those cannot be compared at all. Hartemink's discretization merges 30 initial bins over 88 observations on the marks data, so it chooses between differences that small — and a one-ulp change to a single observation, which is the same data by any reasonable reading, moves the answer in 4 of 12 trials. There the tests compare the levels and their number, which are reproducible, and not which side of a boundary each observation fell. test_hartemink_on_marks_really_is_decided_by_ties measures the sensitivity, so the exemption cannot quietly widen into covering a real disagreement.

One inconsistency is reproduced rather than smoothed over, because smoothing it over would be the divergence: bdj accepts prior and beta and then ignores them, scoring as if the prior were uniform -- while still being reported as non-decomposable under cs and marginal, which moves the search even though the score stands still. pybnlearn does the same, and the fixtures pin down both halves of it.

Verified against R

pytest runs 9381 checks, 8707 of which compare directly against values produced by R 4.6.1 with bnlearn 5.2.1:

  • 318 conditional independence tests across discrete and Gaussian data, each comparing the statistic, the degrees of freedom and the p-value;
  • 82 hill-climbing runs across 8 data sets, 13 scores, non-default hyperparameters, whitelists, blacklists and parent limits, each comparing the arc set, the model string and the per-node scores;
  • 231 constraint-based runs across pc_stable, gs, iamb, inter_iamb, iamb_fdr, mmpc and si_hiton_pc, 6 data sets, 7 independence tests, several significance levels, constraint sets and both directed and undirected output, comparing the arc set including direction;
  • 64 hybrid runs across mmhc and rsmax2, covering every ported restrict/maximize pair and arguments passed through to each phase;
  • 110 hpc and h2pc runs across 7 data sets -- including 37-node alarm, where the two superset stages earn their keep and an off-by-one in them would be least visible -- 6 independence tests, conditioning-set limits and constraints;
  • 63 tabu searches across 8 data sets, 9 scores, tabu list sizes from 1 to 30, constraints and parent limits — 13 of which R's tabu resolves differently from R's hc, so the tabu-specific paths are actually covered rather than incidentally agreeing with hill climbing;
  • 55 fitted networks, comparing every cell of every conditional probability table and every regression coefficient, over three structures per data set and both the maximum likelihood and Bayesian estimators;
  • 61 seeded simulation and inference results -- generated data compared observation by observation, and conditional probabilities compared exactly rather than statistically, since both implementations draw the same numbers in the same order from R's Mersenne-Twister;
  • 61 bootstrap and cross-validation results, again exact rather than statistical, including R's sample() itself -- everything here rests on drawing the same rows in the same order;
  • 48 predictions and prediction-based losses, covering both prediction methods and all five predictive cross-validation losses;
  • 42 classifier structures and class posteriors, over four data sets and several class variables, including the tree root that decides how a TAN's feature tree is oriented;
  • 40 exact inference results for discrete networks checked against gRain -- marginals, conditionals on up to three variables, joints, and exact prediction;
  • 82 Gaussian exact inference results, which unlike the discrete ones are genuine parity fixtures: global means and covariances, the factorisation back into a network, conditional expectations, and exact prediction of every node of every structure -- including a network with a deterministic node, whose covariance matrix is singular and which therefore exercises the diagonal patching R does rather than failing;
  • 70 conditional Gaussian results over two mixed data sets: structure learning with all four -cg scores under both hc and tabu, and parameter learning across all three of the estimators mle-cg dispatches to;
  • 138 arc-strength and network-averaging results: p-values and score differences for six data sets and thirteen criteria, bootstrap strengths with the inclusion threshold they carry, and the averaged network at four thresholds -- plus thirteen strength vectors of awkward shapes checking that R's optimiser is reproduced rather than approximated, since the threshold it finds is used as a cutoff;
  • 632 checks of the node and arc utilities, enumerated rather than chosen: nine graphs -- including one whose undirected part is not chordal and one with a real directed cycle -- crossed with every ordered pair of nodes and all five arc operations;
  • 148 interchange-format results: every node of four networks written by R as BIF, DSC and NET and read back here, which is what pins down where each conditional distribution belongs -- NET does not record it at all;
  • 24 hand-built networks from custom_fit, compared as parameters and then sampled from and queried, since a network with an axis in the wrong place reads back correctly and samples from a different distribution;
  • 524 checks of d-separation, colliders, consistent extensions, structural intervention distance, random graph generation and discretization -- d-separation enumerated over every pair of nodes in six graphs and three kinds of conditioning set, and the generated graphs compared arc for arc rather than statistically, since they come from R's own generator;
  • 245 checks of fast.iamb, local structure learning, entropy and Kullback-Leibler divergence, the last two comparing pybnlearn's junction tree against gRain's;
  • 40 incomplete-data results: parameters estimated from data with gaps, all three imputation methods, and structural EM under both maximisers -- plus a latent variable, never observed at all, which is the case EM cannot start from an empty network on;
  • 183 causal results: interventions on every node of four graph shapes, twin networks, and counterfactuals with and without node merging -- plus the parameterised half, where a node's residual variance becomes a node of its own feeding both copies;
  • 18 LiNGAM causal orderings, including a data set with genuinely non-Gaussian noise, which is the assumption the method rests on;
  • 139 results for the remaining utilities: seeded perturbations and the hill-climbing restarts built on them, every extension of an equivalence class, exact graph counts, Bayes-factor arc strengths in extended precision, deduplication, and bootstrapping an arbitrary statistic;
  • 4727 results from an exhaustive sweep, which exists because the fixtures above are cases chosen by hand and share the blind spots of the hand that chose them. Here the arguments are crossed rather than varied one at a time; the ten data sets are awkward on purpose — two observations per contingency-table cell, eleven levels against two, 98% of the mass on one level, near-determinism, more variables than the sample supports, nearly collinear columns, ten orders of magnitude between columns, Cauchy tails, thirty rows; and 60 combinations have no solution, so the paths that refuse are exercised too. Every score on every data set with its per-node breakdown, every independence test over every ordered pair at three conditioning-set sizes, every constraint algorithm against every test, and ntests() for all eleven searches — the last being the sharpest check there is, since two different search paths can reach the same arcs but not the same amount of work. Writing it found four defects the hand-chosen fixtures could not: nparams refused a fitted network and miscounted Gaussian nodes, connected_components returned a bare string for a one-node component, and hc/tabu accepted whitelists R rejects;
  • 22 adjacency-matrix results over ten graphs, including two partially directed ones -- an undirected arc is a symmetric pair of ones, so the matrix cannot tell it from two opposed directed arcs, and the round trip is recorded rather than assumed. The row/column convention and the arc order coming back out are compared too: both are invisible in a same-shaped answer and decide how everything downstream reads;
  • 235 results for the non-uniform graph priors: four Castelo & Siebes completions, and nine prior settings crossed with three data sets, five scores and both hc and tabu -- which is what pins down the non-decomposable path, since a prior that touches every node makes a move's effect wider than its cached delta. hc and tabu are expected to disagree with each other under the marginal prior, and do, on the same pair of networks R's do;
  • 27 checks of the graph utilities: CPDAG, moral graph and skeleton for six learned networks, shd/hamming/compare over five network pairs, model2network round trips, and chow_liu and aracne on six data sets;
  • set.seed(42) reproduces R's uniform and normal streams to 15 digits.

Regenerate the fixtures (needs R with bnlearn installed):

Rscript tools/gen_r_fixtures.R
Rscript tools/gen_r_hc_fixtures.R
Rscript tools/gen_r_constraint_fixtures.R
Rscript tools/gen_r_graph_fixtures.R
Rscript tools/gen_r_tabu_fixtures.R
Rscript tools/gen_r_hybrid_fixtures.R
Rscript tools/gen_r_fit_fixtures.R
Rscript tools/gen_r_levels.R
Rscript tools/gen_r_inference_fixtures.R
Rscript tools/gen_r_resampling_fixtures.R
Rscript tools/gen_r_predict_fixtures.R
Rscript tools/gen_r_classifier_fixtures.R
Rscript tools/gen_r_exact_fixtures.R      # also needs gRain
Rscript tools/gen_r_cg_fixtures.R
Rscript tools/gen_r_mvnorm_fixtures.R
Rscript tools/gen_r_strength_fixtures.R
Rscript tools/gen_r_nodes_fixtures.R      # also needs igraph
Rscript tools/gen_r_custom_fixtures.R
Rscript tools/gen_r_foreign_fixtures.R
Rscript tools/gen_r_analysis_fixtures.R
Rscript tools/gen_r_local_fixtures.R     # also needs gRain
Rscript tools/gen_r_hpc_fixtures.R
Rscript tools/gen_r_missing_fixtures.R   # also needs gRain
Rscript tools/gen_r_causal_fixtures.R
Rscript tools/gen_r_lingam_fixtures.R
Rscript tools/gen_r_misc_fixtures.R      # also needs gmp and Rmpfr
Rscript tools/gen_r_priors_fixtures.R
Rscript tools/gen_r_amat_fixtures.R
Rscript tools/gen_r_sweep_fixtures.R
Rscript tools/gen_r_rejection_fixtures.R
Rscript tools/gen_r_lingam_arcs_fixtures.R  # also needs glmnet

Performance

Roughly two to three times slower than R on hc — 0.64s vs 0.32s for the 37-node alarm data set — because the network is marshalled into R objects afresh on each iteration of the search. Memory is flat across repeated runs.

Threads and processes

One call runs at a time per process. bnlearn's C keeps its state in process-wide statics — the arena results are allocated in, the interned symbol table, the random number generator, the jmp_buf error() unwinds to — so every entry point takes a lock. Calling from several threads is safe; it does not go faster.

This is bnlearn's own model rather than a limitation added here. R cannot be called from two threads at all, the vendored C contains no OpenMP and no pthreads, and bnlearn's cluster argument takes a parallel::makeCluster() cluster — which is separate R processes, each with its own memory.

So for real parallelism, use processes, exactly as R does:

from concurrent.futures import ProcessPoolExecutor

with ProcessPoolExecutor() as pool:                  # ~ parallel::makeCluster
    networks = list(pool.map(pybnlearn.hc, folds))

Each process gets its own arena and takes no lock. Seed inside the worker: the generator is per-process, so set_seed in the parent does not reach it.

Building from source

Needs a C compiler and a BLAS/LAPACK. No Fortran: R's dqrdc2 and dqrsl are translated to C in src/c/linpack/, and tools/check_linpack.sh checks the translation against the Fortran original bit for bit.

pip install -e . --no-build-isolation

To build and exercise the C core without Python in the loop — useful when bisecting a numerical disagreement with R:

tools/build_core.sh

Licence

GPL-3.0-or-later. See LICENSE and NOTICE.

Metadata

Release files for bnlearn-port 0.1.0a1

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

Source distribution (sdist)

Source distribution for bnlearn-port 0.1.0a1
File Size Uploaded Provenance
bnlearn_port-0.1.0a1.tar.gz 2.5 MB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for bnlearn-port 0.1.0a1
File
bnlearn_port-0.1.0a1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
bnlearn_port-0.1.0a1-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
bnlearn_port-0.1.0a1-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
bnlearn_port-0.1.0a1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
bnlearn_port-0.1.0a1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
bnlearn_port-0.1.0a1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
bnlearn_port-0.1.0a1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
bnlearn_port-0.1.0a1-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
bnlearn_port-0.1.0a1-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
bnlearn_port-0.1.0a1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
bnlearn_port-0.1.0a1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
bnlearn_port-0.1.0a1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
bnlearn_port-0.1.0a1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
bnlearn_port-0.1.0a1-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
bnlearn_port-0.1.0a1-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
bnlearn_port-0.1.0a1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
bnlearn_port-0.1.0a1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
bnlearn_port-0.1.0a1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
bnlearn_port-0.1.0a1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
bnlearn_port-0.1.0a1-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
bnlearn_port-0.1.0a1-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
bnlearn_port-0.1.0a1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
bnlearn_port-0.1.0a1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
bnlearn_port-0.1.0a1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
bnlearn_port-0.1.0a1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
bnlearn_port-0.1.0a1-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
bnlearn_port-0.1.0a1-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
bnlearn_port-0.1.0a1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
bnlearn_port-0.1.0a1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
bnlearn_port-0.1.0a1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 229.2 MB

Release files / bnlearn_port-0.1.0a1.tar.gz

Download URL bnlearn_port-0.1.0a1.tar.gz
Size 2.5 MB
Tags Source
SHA-256 checksum
How to use checksums
48e37137434444438170f93f8c5a121fa67d48d1d7587379dc92b0ac37977b1b
BLAKE2b-256 checksum
How to use checksums
a2f8a086083b61a39583918c8cbedb05281ee6e3e8d7a59dbb8db96e25618f67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp314-cp314-win_amd64.whl

Download URL bnlearn_port-0.1.0a1-cp314-cp314-win_amd64.whl
Size 7.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
2ad88cdd11515811cb476f0ad77986d44486dc4c6f361dde1d387d4f6dbd6f30
BLAKE2b-256 checksum
How to use checksums
0c3bc50afa88157d4a97379bd8f29ce50f8db712bda96ba06b9e861e18e04fba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp314-cp314-musllinux_1_2_x86_64.whl
Size 12.6 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
4914291727914f13974221d113d086c0c0a49f1eba074c4e2443c570ef7d2026
BLAKE2b-256 checksum
How to use checksums
11c5ae9ab14bd568f668c427292b5429f595318e1c5ef135c5858d6624424199
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp314-cp314-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
b97e001b0a2fd9418b170b3963765fcde06016063dd07b93dae4ea30a136d55d
BLAKE2b-256 checksum
How to use checksums
aebfb3207eb8f718ee9e91a26167553bd594bbe629aa2b08191d0a7227e909b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
84652f84d9575d23cd66aafe4daba77fcfb44ccb6249e3a383a7cc7b40005127
BLAKE2b-256 checksum
How to use checksums
a36fcb9ac95acbd391dfead0fde3c3715f16956e2dbf65e51daf22733066867e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 5.7 MB
Tags CPython 3.14 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ec940b40b29cb78447758f0ad5bf371168c2f9e0bc7b0e41037fc09bcac265f8
BLAKE2b-256 checksum
How to use checksums
bdeb057f85b683243da89ec266e4742cb5414de59582c783a9530810f859efbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp314-cp314-macosx_11_0_arm64.whl

Download URL bnlearn_port-0.1.0a1-cp314-cp314-macosx_11_0_arm64.whl
Size 586.5 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
59f46226993d71d47a23233694205349d9a2ceaa0f316da8bf75a09637697506
BLAKE2b-256 checksum
How to use checksums
58c7ae812a8b24d437f27b8392d122562b8e53d483a1fa2c1d02f35ab7e551a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp313-cp313-win_amd64.whl

Download URL bnlearn_port-0.1.0a1-cp313-cp313-win_amd64.whl
Size 7.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
f0da3c0bf9e0bc71e761fd28f6f26c0e5abd68aa25eef88b8d36b64f52e3477c
BLAKE2b-256 checksum
How to use checksums
491bdf2ea766c5179d4096e8dd70ca64a0cb0a6ba21941ed962cf274f75f86fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp313-cp313-musllinux_1_2_x86_64.whl
Size 12.6 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
7f26a4be392cd474380873300022e32014232737e15e24ee7a98395e5df2010d
BLAKE2b-256 checksum
How to use checksums
8099653a25fee5eb69574f2df48c53c94deb073ed12a02e1749ecd97ec3bc6dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp313-cp313-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
5783df08a54607d69cafef705d62f9d6bd94736a2974510669a727db53c3b797
BLAKE2b-256 checksum
How to use checksums
ec4c6141e73747c474b6e46ae9e900a89ca7de11bc1a72dec732b11a6a4500db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
85309692727213e344f932fc115f6290be7238ab75458167d5b79dacae900bbf
BLAKE2b-256 checksum
How to use checksums
0960f8dbe89dd08d5e8677e705e5c8825fd5a5febcd69a82c6c6fd136c4a289d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 5.7 MB
Tags CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f0c0b23d136a050bc2488775f5a1710627462868f9eaaca876c032e818c4d96c
BLAKE2b-256 checksum
How to use checksums
8914a68426b34dbdee5dd63a5499c8a9135af96b76e0de20bfb831efb4a353e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp313-cp313-macosx_11_0_arm64.whl

Download URL bnlearn_port-0.1.0a1-cp313-cp313-macosx_11_0_arm64.whl
Size 583.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dbdf171e55b16d7e7f6d9cfea349827e262faf8bd5580b00bb5b492ce0ae10be
BLAKE2b-256 checksum
How to use checksums
94c8ada93089d5457560fbf93ef384acad8d4dd2a2ba6c757c28edc40f05890b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp312-cp312-win_amd64.whl

Download URL bnlearn_port-0.1.0a1-cp312-cp312-win_amd64.whl
Size 7.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d88751b3664d395a752d6cbf423834b20408706401e43995be534c386bb788b7
BLAKE2b-256 checksum
How to use checksums
880b29460284efefd398e543681cd9fc6e3864f4b72d9942ffbc1d19e5a06163
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp312-cp312-musllinux_1_2_x86_64.whl
Size 12.6 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c859315d05c42c41391e0d5404e5e53e22aa9dc266f018eecb499c2feceb0907
BLAKE2b-256 checksum
How to use checksums
0a8cc1edf04e91bf53998522d77fb8fb06c6e586a10db901d6915c6027ec7b07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp312-cp312-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
531b73a415b71dc60bae59367a64f885c593696ac62c58a436551a60f4983409
BLAKE2b-256 checksum
How to use checksums
9911b400dfaf8393f02c42f4461868d358aff058130865791b6571904b0f666d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7c8c276df412cd9eeb78c06b443d83ad4c22939d10defc9678585f57fbf5c637
BLAKE2b-256 checksum
How to use checksums
6ed6d4324c8ea62fd9c25f1613ca29be2356af75c3372bcc81f744341d926513
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 5.7 MB
Tags CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4246eadf9345e5d84868369f137acfd1727dc95f78d874d997b733b382be62a9
BLAKE2b-256 checksum
How to use checksums
4339404350fb089eb4f411a4b32bec9b071492c1e6e1cef26c1ddf0eebd5fa81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp312-cp312-macosx_11_0_arm64.whl

Download URL bnlearn_port-0.1.0a1-cp312-cp312-macosx_11_0_arm64.whl
Size 584.1 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ea4b9af5d283e231ae48485c2aff2eedbd04c4fa261ae34ffd5cddf7be91060a
BLAKE2b-256 checksum
How to use checksums
34d9584ad85c8a81bcc81d40725648a716fb35dbc87f2e811873265849ee4e00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp311-cp311-win_amd64.whl

Download URL bnlearn_port-0.1.0a1-cp311-cp311-win_amd64.whl
Size 7.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
761a0dfab104eaea706871c749e62497bb8f8936e5014b5684a5e8c5522b0df2
BLAKE2b-256 checksum
How to use checksums
a9a4391958b7d65af05131bff9708b2e9cf5db3228ad76d35a520724e6732759
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp311-cp311-musllinux_1_2_x86_64.whl
Size 12.6 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
32b5f5f5874bbd341a366eb64c0ce01074539054c20c258e17018f652f7fb555
BLAKE2b-256 checksum
How to use checksums
fa995d07b70225410e284ae7a719b1107341c17988df9d88da72f35135626f62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp311-cp311-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
e4a70849e909dabc7649223654949e15f4f9dadfee6cae16a6b7beb3fd058520
BLAKE2b-256 checksum
How to use checksums
7e2a82660f29468816b50019b2136ef072375c8f4d3f13d8551963db8e7765f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
68659382faa36dfd005417d5c9411368fa897465a9bb38879efce1a73d3ca409
BLAKE2b-256 checksum
How to use checksums
d6d396472f6134c3eece500e6c66c7cd1af887a58e2a08363b5fad4025de2622
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 5.7 MB
Tags CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f0e89f13fd41c8001bc440efeb8294e01a50be2949a3f9ebf6fc5eb1fa6ebd9b
BLAKE2b-256 checksum
How to use checksums
070acd0139bf7c25fe71bc64fcadb932c7f97ab021b4fdc6082d5521a3e01dd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp311-cp311-macosx_11_0_arm64.whl

Download URL bnlearn_port-0.1.0a1-cp311-cp311-macosx_11_0_arm64.whl
Size 595.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2ff1aca43700851b27e219f04e82e6ef69d2ac2e8792f35f54f6913a471d2a32
BLAKE2b-256 checksum
How to use checksums
0a81ac70866dd7203875a19e01457fc8775af8b0b2bd37d7f1abc202de56cbca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp310-cp310-win_amd64.whl

Download URL bnlearn_port-0.1.0a1-cp310-cp310-win_amd64.whl
Size 7.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
70d008a4eaabc4a3fa888f966e5a701e1306b049e723e52dcf58545c16c0a538
BLAKE2b-256 checksum
How to use checksums
f1f7404970342cff6c46029e6c7165e44808071905ae1d8679982ce9704ecf6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp310-cp310-musllinux_1_2_x86_64.whl
Size 12.6 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f67b3eb0853eca528d83e54fe8aca7e08935b649ce6f9d78e4e8a6dd529363ba
BLAKE2b-256 checksum
How to use checksums
c70bfd7b3aefc9037428294df46beb195790c140059b2af801d65e9a0d5e0c3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp310-cp310-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
90c96d7f22c8059b406a81f205e7960eabb82d2c71d478cb408635a862da627f
BLAKE2b-256 checksum
How to use checksums
2bdb3973e9bc883d5ceb82700e1d646063490f42e1a646f031fb9f85fad7cb5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL bnlearn_port-0.1.0a1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e7000cf18ac33f691e637c1af92fb8b71568db86a0b4f4800f919846137ed630
BLAKE2b-256 checksum
How to use checksums
258815d0948389b093cd4ea2f3375dcef847edd9616da4f8be66c6ce943829fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL bnlearn_port-0.1.0a1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 5.7 MB
Tags CPython 3.10 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8039fc1cb0e9bb40af823bbcaa295b70fa707174b6f03d9e46943392cc519ca3
BLAKE2b-256 checksum
How to use checksums
b61ca59b412f8a3d860c50b3b0484c45f5f2beb521e2867d5dd8a910d850c062
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / bnlearn_port-0.1.0a1-cp310-cp310-macosx_11_0_arm64.whl

Download URL bnlearn_port-0.1.0a1-cp310-cp310-macosx_11_0_arm64.whl
Size 601.1 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c53108230964ab138f25ccc4682c5129cca430fbc952f45d64c81df5138b0a5b
BLAKE2b-256 checksum
How to use checksums
3fe681da3f88383bd74223a1244666ca0e845ac320e3d9b12b951a64bd9406a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Security for bnlearn-port 0.1.0a1

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.

Full provenance

All 31 files in this release have been uploaded with provenance metadata.

Select from 31 files

Attestation for bnlearn_port-0.1.0a1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

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.

Release history Release notifications | RSS feed

This release
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