Skip to main content

eqbool

Python package CI C/C++ CI PyPI Python License: MIT

Testing boolean expressions for equivalence.

eqbool is a C++ and Python rewrite of code originally developed as part of a symbolic gate-level Z80 simulator in pure Python, where increasingly complex Boolean expressions representing gate states need to be repeatedly checked for equivalence. Z3 and several other existing libraries were tried and quickly proven too slow for such use, so a custom solution had to be developed.

The library is specifically designed to reduce overall equivalence-check times by simplifying expressions in ways that never increase the diversity of SAT clauses.

Where equivalence cannot be trivially established via simplifications, eqbool uses the CaDiCaL solver. As the workload is very many small solves rather than a few hard ones, the bundled CaDiCaL version is chosen by measuring on traces of real runs, and is not necessarily the latest release.

#include "eqbool.h"

int main() {
    eqbool::term_set<std::string> terms;
    eqbool::eqbool_context eqbools(terms);
    eqbool::order_context orders(eqbools);
    using eqbool::eqbool;

    eqbool eqfalse = eqbools.get_false();
    eqbool eqtrue = eqbools.get_true();

    // Constants are evaluated and eliminated right away.
    assert((eqfalse | ~eqfalse) == eqtrue);

    // Expressions get simplified on construction.
    eqbool a = eqbools.get(terms.add("a"));
    eqbool b = eqbools.get(terms.add("b"));
    assert((~b | ~eqbools.ifelse(a, b, ~b)) == (~a | ~b));

    // Identical, but differently spelled expressions are uniquified.
    eqbool c = eqbools.get(terms.add("c"));
    assert(((a | b) | c) == (a | (b | c)));

    // Speed is king, so simplifications that require deep traversals,
    // restructuring of existing nodes and increasing the diversity of
    // SAT clauses are intentionally omitted.
    eqbool d = eqbools.get(terms.add("d"));
    eqbool e1 = a & ((b | c) | (~a | ((~b | (d | ~c)) & (c | ~b))));
    eqbool e2 = a;
    assert(!eqbools.is_trivially_equiv(e1, e2));

    // The equivalence can still be established using SAT.
    assert(eqbools.is_equiv(e1, e2));

    // From there on, the expressions are considered identical.
    assert(eqbools.is_trivially_equiv(e1, e2));

    // They then can be propagated to their simplest known forms.
    assert(e1 != e2);

    e1.propagate();
    e2.propagate();
    assert(e1 == e2);

    // Order terms are ordinary terms stating that one of two
    // given values comes before the other; the opposite order
    // is the negation of the same term.
    eqbool a_b = eqbools.get(terms.add("a<b"));
    eqbool b_c = eqbools.get(terms.add("b<c"));
    eqbool a_c = eqbools.get(terms.add("a<c"));
    orders.register_order(a_b, terms.add("a"), terms.add("b"));
    orders.register_order(b_c, terms.add("b"), terms.add("c"));
    orders.register_order(a_c, terms.add("a"), terms.add("c"));

    // Orderings whose terms chain into a cycle are impossible.
    assert(orders.is_never(a_b & b_c & ~a_c));
    assert(orders.is_possible(a_b & b_c));

    // Under consistent orders, spelling out the ordering
    // implied by transitivity changes nothing...
    assert(orders.is_equiv(a_b & b_c, a_b & b_c & a_c));

    // ...but as plain propositions the two expressions differ,
    // and the order context never confuses the two views.
    assert(!eqbools.is_equiv(a_b & b_c, a_b & b_c & a_c));
}

example.cpp

In Python

pip install eqbool
import eqbool


def main():
    # Undefined Bool objects have no associated value or context.
    assert eqbool.Bool().is_undef

    ctx = eqbool.Context()
    assert ctx.false | ~ctx.false == ctx.true

    # Terms can be any hashable objects.
    a = ctx.get('a')
    b = ctx.get('b')
    e = ~b | ~ctx.ifelse(a, b, ~b)
    assert e == ~a | ~b

    # Bool values can be verbalised as usual.
    print(e)

    c = ctx.get('c')
    assert (a | b) | c == a | (b | c)

    # In the Python API, all values get propagated automatically, so
    # simple equality can be used to test for trivial equivalence.
    d = ctx.get('d')
    e1 = a & ((b | c) | (~a | ((~b | (d | ~c)) & (c | ~b))))
    e2 = a
    assert e1 != e2

    assert ctx.is_equiv(e1, e2)

    # Bool objects compare by identity, for speed; established
    # equivalences are followed by the underlying node ids.
    assert e1 != e2
    assert e1.id == e2.id

    # Order terms are ordinary terms stating that one of two
    # given values comes before the other; the opposite order is
    # the negation of the same term.
    orders = eqbool.OrderContext(ctx)
    a_b, b_c, a_c = ctx.get('a<b'), ctx.get('b<c'), ctx.get('a<c')
    orders.register_order(a_b, 'a', 'b')
    orders.register_order(b_c, 'b', 'c')
    orders.register_order(a_c, 'a', 'c')

    # Orderings whose terms chain into a cycle are impossible.
    assert orders.is_never(a_b & b_c & ~a_c)
    assert orders.is_possible(a_b & b_c)

    # Under consistent orders, spelling out the ordering implied
    # by transitivity changes nothing...
    assert orders.is_equiv(a_b & b_c, a_b & b_c & a_c)

    # ...but as plain propositions the two expressions differ,
    # and the order context never confuses the two views.
    assert not ctx.is_equiv(a_b & b_c, a_b & b_c & a_c)

example.py

Metadata

Release files for eqbool 0.5

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

Source distribution (sdist)

Source distribution for eqbool 0.5
File Size Uploaded Provenance Actions
eqbool-0.5.tar.gz 337.6 kB With provenance Details for eqbool-0.5.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for eqbool 0.5
File Actions
eqbool-0.5-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for eqbool-0.5-cp313-cp313-musllinux_1_2_x86_64.whl
eqbool-0.5-cp313-cp313-musllinux_1_2_i686.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-32 Details for eqbool-0.5-cp313-cp313-musllinux_1_2_i686.whl
eqbool-0.5-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 eqbool-0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
eqbool-0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-32 Details for eqbool-0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
eqbool-0.5-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for eqbool-0.5-cp312-cp312-musllinux_1_2_x86_64.whl
eqbool-0.5-cp312-cp312-musllinux_1_2_i686.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-32 Details for eqbool-0.5-cp312-cp312-musllinux_1_2_i686.whl
eqbool-0.5-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 eqbool-0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
eqbool-0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-32 Details for eqbool-0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
eqbool-0.5-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details for eqbool-0.5-cp311-cp311-musllinux_1_2_x86_64.whl
eqbool-0.5-cp311-cp311-musllinux_1_2_i686.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-32 Details for eqbool-0.5-cp311-cp311-musllinux_1_2_i686.whl
eqbool-0.5-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 eqbool-0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
eqbool-0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-32 Details for eqbool-0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
eqbool-0.5-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details for eqbool-0.5-cp310-cp310-musllinux_1_2_x86_64.whl
eqbool-0.5-cp310-cp310-musllinux_1_2_i686.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-32 Details for eqbool-0.5-cp310-cp310-musllinux_1_2_i686.whl
eqbool-0.5-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 eqbool-0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
eqbool-0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-32 Details for eqbool-0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl

Total release size: 197.7 MB

Release files / eqbool-0.5.tar.gz

Download URL eqbool-0.5.tar.gz
Size 337.6 kB
Tags Source
SHA-256 checksum
How to use checksums
97fc89d8d76916e2de1845c9128e527d67856795190ca4ddff1eec90c3eabb4c
BLAKE2b-256 checksum
How to use checksums
8918c4f951c23555f3df7836c7154f4d54095e4b8768e3e92b688b447e973f00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL eqbool-0.5-cp313-cp313-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
80c65482133b56d86fd5cc13fa368aa10ebef0d14972ab70356dca88126b2c9f
BLAKE2b-256 checksum
How to use checksums
322b4543479d24d1fffe26be9eb6f02587e025f7eba04be9f7547ce96f532e01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp313-cp313-musllinux_1_2_i686.whl

Download URL eqbool-0.5-cp313-cp313-musllinux_1_2_i686.whl
Size 12.9 MB
Tags CPython 3.13 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
d6fd6d0b584cc179a72f974757e24d4eb1f8ae2d0d4d3157ad1366d415fc2efc
BLAKE2b-256 checksum
How to use checksums
6d8710e58185ff3c2deb334d96f751dea6f467d3be4d68f0bd37705e3a788d56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL eqbool-0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 11.9 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4d96b9f6e407a3bdd7dd6c29be838870d6ca449e600edd462f7f2491815059f2
BLAKE2b-256 checksum
How to use checksums
87af359c7b0428bd5c4abcad871f7ab71c53d127560aa77eb1b83b25ce4c6be3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL eqbool-0.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Size 11.8 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
27896f3fe4c55b967272e74b24615fc80b9c84284722e5ab119b3de8c78316ec
BLAKE2b-256 checksum
How to use checksums
098c1d200d10930a8f5d9c1fa3549c5829d580e4b8c4f67f5a394cb78fd47d67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL eqbool-0.5-cp312-cp312-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
019cca5487397e7820f9a7d8b5355c2e58c2f893aecf7abb488a49d668a19273
BLAKE2b-256 checksum
How to use checksums
713e2eb92d490578ac8b954aebb6f14c7c88f4b84dcd3480c0c3af2c797899ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp312-cp312-musllinux_1_2_i686.whl

Download URL eqbool-0.5-cp312-cp312-musllinux_1_2_i686.whl
Size 12.9 MB
Tags CPython 3.12 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
2379d458792e9a6d7d365bd671a1d2c96c21058821597e3a81cf338cd80c482b
BLAKE2b-256 checksum
How to use checksums
c18f5ee101b08796f5ef9a911be629249e15e24084df3246c0b35135a926fb98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL eqbool-0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 11.9 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4af1c18f3dd786e06b11305d86ea6ee79d115b6d59ac57b3a722f4ef2ebf0787
BLAKE2b-256 checksum
How to use checksums
d93bc7b7c83382a5e13ffb36615ac5b687e75922675bbc41b7e01ff4908a2ffd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL eqbool-0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Size 11.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
e81eab93e6aeafa10f4bb65308d442811535e8337a7aa0415bc610e05c7e5b8d
BLAKE2b-256 checksum
How to use checksums
bfb76be0ff9cb7105d3bfdf8c4795b26e93e9f35e05d54a5470d72803eae9857
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL eqbool-0.5-cp311-cp311-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
98bab600f2eb21bf758da20b2b46c90a901917a7d0f3bc89842d1bf1eee6c883
BLAKE2b-256 checksum
How to use checksums
4bb4ea5760f1bb72f8d8c368306ef154360a61aabdb86c8bf1590c5ec32ef84b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp311-cp311-musllinux_1_2_i686.whl

Download URL eqbool-0.5-cp311-cp311-musllinux_1_2_i686.whl
Size 12.9 MB
Tags CPython 3.11 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
23990566bc2a6683c8bdc49f2e707ca1f03f699f4bb6b820c558d220017874c6
BLAKE2b-256 checksum
How to use checksums
0f5474e5c4d8f4597c179746b833bc0f9753814141bdc87ae7c6cb2b343e8bd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL eqbool-0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 11.9 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fbbf21f8acaa561ab28cc854c2ef1c7d26c8b14efdf72c183c918aa22dc37970
BLAKE2b-256 checksum
How to use checksums
fd76793beb337f21537cf546433c4bb8a7b9ca7a4899ad42c83dda9477e824db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL eqbool-0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Size 11.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
da4ef4e968ff988bb1c0855104cf2d0588cac589229788cfc89b61c20882d853
BLAKE2b-256 checksum
How to use checksums
11b9e0269daf9674cf16cbfd731d4737a72db3e700c91548e901cb8962aca30c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL eqbool-0.5-cp310-cp310-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f173986bd51c3903282116efa66189d77de0f3bbee961b096e5e29c110730a73
BLAKE2b-256 checksum
How to use checksums
e9490e45e0d5ea0028d95910fa21035114c5b34ca51ebb4d8d425cac7bfcd3fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp310-cp310-musllinux_1_2_i686.whl

Download URL eqbool-0.5-cp310-cp310-musllinux_1_2_i686.whl
Size 12.9 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
181f7d4523c0588983dbfb9b8e056f9b3e3c4c6a0ef869a1b17e0bfd7054712e
BLAKE2b-256 checksum
How to use checksums
ba1f94f28c0fc94192d49fe988a4eec793118bce98413ac1a124cfb3186f81fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL eqbool-0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 11.9 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a73cd065ab68226b9995a373263590685c164ed99104759654eca08afe0abf48
BLAKE2b-256 checksum
How to use checksums
8b650084e35afab60aae0908cc4d37a6260d70438f9a4acbe338ace971185b1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Release files / eqbool-0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL eqbool-0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Size 11.8 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
87ab3b24956c8c019b1b87930ef4dfbcb6a00608de9a8238ac4581bc01a8488f
BLAKE2b-256 checksum
How to use checksums
889fd5ce204c6976424b8b22b6e81c95796dcb5101d4c906ae34bb55dafe65c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Aug 16, 2026.

Transparency log

Security for eqbool 0.5

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 17 files in this release have been uploaded with provenance metadata.

Select from 17 files

Attestation for eqbool-0.5.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 Aug 16, 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.

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