Skip to main content

A fast Connect-4 Solver for Python & C++

Project description

BitBully: A fast and perfect-playing Connect-4 Agent for Python 3 & C/C++

bitbully-logo-full


GitHub Repo stars GitHub forks Python Python Python Docs pre-commit PyPI - Version PyPI - Downloads PyPI - License Coveralls Wheels Doxygen Doxygen Buy Me a Coffee

BitBully

BitBully is a high-performance Connect-4 solver built using C++ and Python bindings, leveraging advanced algorithms and optimized bitwise operations. It provides tools for solving and analyzing Connect-4 games efficiently, designed for both developers and researchers.

Table of Contents


Features

  • Fast Solver: Implements MTD(f) and null-window search algorithms for Connect-4.
  • Bitboard Representation: Efficiently manages board states using bitwise operations.
  • Advanced Features: Includes transposition tables, threat detection, and move prioritization.
  • Python Bindings: Exposes core functionality through the bitbully_core Python module using pybind11.
  • Cross-Platform: Build and run on Linux, Windows, and macOS.
  • Open-Source: Fully accessible codebase for learning and contribution.

Installation

Prerequisites

  • Python: Version 3.10 or higher, PyPy 3.10 or higher

Build and Install

From PyPI (Recommended)

The easiest way to install the BitBully package is via PyPI:

pip install bitbully

This will automatically download and install the pre-built package, including the Python bindings.

Usage

Start with a simple Widget on Colab

Open In Colab

BitBully Lib (recommended)

tbd

BitBully Core (advanced)

Use the BitBullyCore and BoardCore classes directly in Python:

from bitbully import bitbully_core
import time

board = bitbully_core.BoardCore()

# Yellow and red alternately play moves into column 3 (center column):
for _ in range(6):
    board.play(3)

print(board)

solver = bitbully_core.BitBullyCore()
start = time.perf_counter()
score = solver.mtdf(board, first_guess=0)
print(f"Time: {round(time.perf_counter() - start, 2)} seconds!")
print(f"Best score: {score}")

You can initialize a board using an array with shape (7, 6) (columns first) and solve it:

from bitbully import bitbully_core

# Define a Connect-4 board as an array (7 columns x 6 rows)
# You may also define the board using a numpy array if numpy is installed
# 0 = Empty, 1 = Yellow, 2 = Red
board_array = [
    [0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0],
    [1, 2, 1, 2, 1, 0],
    [0, 0, 0, 0, 0, 0],
    [2, 1, 2, 0, 0, 0],
    [0, 0, 0, 0, 0, 0]
]

# Convert the array to the BoardCore board
board = bitbully_core.BoardCore()
assert board.setBoard(board_array), "Invalid board!"

print(board)

# Solve the position
solver = bitbully_core.BitBullyCore()
score = solver.mtdf(board, first_guess=0)
print(f"Best score for the current board: {score}") # expected score: 1

Run the Bitbully solver with an opening book (here: 12-ply opening book with winning distances):

from bitbully import bitbully_core as bbc
import importlib.resources

db_path = importlib.resources.files("bitbully").joinpath("assets/book_12ply_distances.dat")
bitbully = bbc.BitBullyCore(db_path)
b = bbc.BoardCore()  # Empty board
bitbully.scoreMoves(b)  # expected result: [-2, -1, 0, 1, 0, -1, -2]

Generate a random board with n tokens:

from bitbully import bitbully_core as bbc

# Create a random board (and the move sequence that generated it)
b, move_list = bbc.BoardCore.randomBoard(12, True)
print(b)
print(move_list)

Further Usage Examples for BitBully Core

Create all Positions with (up to) n tokens starting from Board b:

from bitbully import bitbully_core as bbc

b = bbc.BoardCore()  # empty board
board_list_3ply = b.allPositions(3, True)  # All positions with exactly 3 tokens
len(board_list_3ply)  # should be 238 according to https://oeis.org/A212693

Find the game-theoretic value of a 12-ply position using an opening book:

from bitbully import bitbully_core as bbc
import importlib.resources

db_path = importlib.resources.files("bitbully").joinpath("assets/book_12ply_distances.dat")
ob = bbc.OpeningBookCore(db_path)
b, move_list = bbc.BoardCore.randomBoard(12, True)  # get a board without an immediate threat for Yellow
assert ob.isInBook(b) or ob.isInBook(b.mirror())  # Either position `b` or its mirrored equivalent are in the DB
ob.getBoardValue(b)  # Get game-theoretic value (also checks mirrored board)

Advanced Build and Install

Prerequisites

  • Python: Version 3.10 or higher
  • CMake: Version 3.15 or higher
  • C++ Compiler: A compiler supporting C++-17 (e.g., GCC, Clang, MSVC)
  • Python Development Headers: Required for building the Python bindings

From Source

  1. Clone the repository:

    git clone https://github.com/MarkusThill/BitBully.git
    cd BitBully
    git submodule update --init --recursive # – Initialize and update submodules.
    
  2. Build and install the Python package:

    pip install .
    

Building Static Library with CMake

  1. Create a build directory and configure the project:

    mkdir build && cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    
  2. Build the a static library:

    cmake --build . --target cppBitBully
    

Python API Docs

Please refer to the docs here: https://markusthill.github.io/BitBully/.


Testing and CI

Running Tests

Run unit tests using pytest:

pytest

GitHub Actions

This project uses GitHub Actions to build and test the library. The CI workflow includes:

  • Building wheels for Linux and Windows using cibuildwheel.
  • Building source distributions (sdist).
  • Optionally uploading artifacts to PyPI.

Contributing

Contributions are welcome! Follow these steps:

  1. Fork the repository.
  2. Create a new branch for your changes:
    git checkout -b feature-name
    
  3. Install pre-commit hooks:
    pre-commit install --hook-type commit-msg --hook-type pre-push
    
  4. Commit your changes:
    git commit -m "feat: Add feature or fix description"
    
  5. Push to your branch:
    git push origin feature-name
    
  6. Open a pull request.

License

This project is licensed under the AGPL-3.0 license.


Contact

If you have any questions or feedback, feel free to reach out:

Acknowledgments

Many of the concepts and techniques used in this project are inspired by the outstanding Connect-4 solvers developed by Pascal Pons and John Tromp. Their work has been invaluable in shaping this effort:

https://raw.githubusercontent.com/MarkusThill/snk/refs/heads/manual-run-output/only-svg/github-contribution-grid-snake.svg


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bitbully-0.0.57.tar.gz (39.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bitbully-0.0.57-pp311-pypy311_pp73-win_amd64.whl (31.8 MB view details)

Uploaded PyPyWindows x86-64

bitbully-0.0.57-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (31.6 MB view details)

Uploaded PyPymanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

bitbully-0.0.57-pp311-pypy311_pp73-macosx_11_0_arm64.whl (31.5 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

bitbully-0.0.57-pp311-pypy311_pp73-macosx_10_15_x86_64.whl (31.6 MB view details)

Uploaded PyPymacOS 10.15+ x86-64

bitbully-0.0.57-pp310-pypy310_pp73-win_amd64.whl (31.8 MB view details)

Uploaded PyPyWindows x86-64

bitbully-0.0.57-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (31.6 MB view details)

Uploaded PyPymanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

bitbully-0.0.57-pp310-pypy310_pp73-macosx_11_0_arm64.whl (31.5 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

bitbully-0.0.57-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (31.5 MB view details)

Uploaded PyPymacOS 10.15+ x86-64

bitbully-0.0.57-cp313-cp313-win_amd64.whl (31.8 MB view details)

Uploaded CPython 3.13Windows x86-64

bitbully-0.0.57-cp313-cp313-musllinux_1_2_x86_64.whl (32.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

bitbully-0.0.57-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

bitbully-0.0.57-cp313-cp313-macosx_11_0_arm64.whl (31.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bitbully-0.0.57-cp313-cp313-macosx_10_15_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

bitbully-0.0.57-cp312-cp312-win_amd64.whl (31.8 MB view details)

Uploaded CPython 3.12Windows x86-64

bitbully-0.0.57-cp312-cp312-musllinux_1_2_x86_64.whl (32.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

bitbully-0.0.57-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

bitbully-0.0.57-cp312-cp312-macosx_11_0_arm64.whl (31.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bitbully-0.0.57-cp312-cp312-macosx_10_15_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

bitbully-0.0.57-cp311-cp311-win_amd64.whl (31.8 MB view details)

Uploaded CPython 3.11Windows x86-64

bitbully-0.0.57-cp311-cp311-musllinux_1_2_x86_64.whl (32.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

bitbully-0.0.57-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

bitbully-0.0.57-cp311-cp311-macosx_11_0_arm64.whl (31.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bitbully-0.0.57-cp311-cp311-macosx_10_15_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

bitbully-0.0.57-cp310-cp310-win_amd64.whl (31.8 MB view details)

Uploaded CPython 3.10Windows x86-64

bitbully-0.0.57-cp310-cp310-musllinux_1_2_x86_64.whl (32.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

bitbully-0.0.57-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

bitbully-0.0.57-cp310-cp310-macosx_11_0_arm64.whl (31.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

bitbully-0.0.57-cp310-cp310-macosx_10_15_x86_64.whl (31.6 MB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

Details for the file bitbully-0.0.57.tar.gz.

File metadata

  • Download URL: bitbully-0.0.57.tar.gz
  • Upload date:
  • Size: 39.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bitbully-0.0.57.tar.gz
Algorithm Hash digest
SHA256 4c8c8c1f9b3e75b20d3b2d4513b4cb8e6d564c6f4faa2b0dc6d268139830edba
MD5 600b46b07ec92277081bdd5f024179ec
BLAKE2b-256 332578c6006b821ec331f8129c27631ccc3a6eb8b280f628208a5c6a7f9b64eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57.tar.gz:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 de9cef330e11502abb4ee5eb5347530059f58ccd5c7490e89d9b1a5824ee64c1
MD5 7cfce2bf95168d4639de186f2d8f1466
BLAKE2b-256 b991f7821a0a75dbd48fffe1c1f175e9de94f37e1bc59b1b364d9129cf69cb8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp311-pypy311_pp73-win_amd64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b7171c215df3288115a7ecd8e58848dcefc50d299de774bfb0ef97e64fe3219
MD5 df6cbfde0dfbf57ade195ab17d96ff9e
BLAKE2b-256 1329f890f732eac85403957220f811afb30c66048c0a0c2d62fe47c39820cdcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2cc657e81c36d3e8bc75dd9ff8aea7a8f1f3da173391e07e170fce3abc68fcf7
MD5 f1d88c0cae9c293639151c5855a0e247
BLAKE2b-256 81dfc67040a9666d9ae1bf688ed3a47a186e0c67e8f1ce14d5d8804b5ff1615d

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp311-pypy311_pp73-macosx_11_0_arm64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp311-pypy311_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp311-pypy311_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 deb46fdb45f4d6cc65f54749f39413756159c5c40c1306257d5386a6752377f1
MD5 d1fea0b0bf569ee94a4077927481d153
BLAKE2b-256 d1f27f9dec43910ac24ad1e09c2f3bd4c9f9b1cbfb49947a31e160f1fb407d9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp311-pypy311_pp73-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 3e62e409f9fb1f7339cfb71f4302520d093bb9b9f21fa3692a1c58ccf516c3cd
MD5 cb03540f9793124651d7f5a5ff2d6f1e
BLAKE2b-256 52a591184d3232ab5660dd04ef8d6a1db8d5a2287f9ccae286ff066090fd293f

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp310-pypy310_pp73-win_amd64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7c2d06fd01f324261701cd0a575bde813806ffd58e0050f534f1ef086741aa38
MD5 9258e7c468c9802b65e3aba0dabdb536
BLAKE2b-256 69ba3d0039a2f138b105ca55278413dab8ee2e0c767a170a450748e82481b4c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3929bf0c12c524d120381442325bd490bfc342aa330dd6d78919d628c5a70e6
MD5 452144f3783296ae0a691652311030af
BLAKE2b-256 69fdf08b9b996985e0fd70829e94e8cd9e0f881b96b2b8705e31cc6c77bba33c

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp310-pypy310_pp73-macosx_11_0_arm64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c4e516ea67b359ac1763285bca6dedf84237189f603005244afab88b2b719c19
MD5 082b2da49c549db78f0ea90a929c3dd3
BLAKE2b-256 5dd37bff047181cafb5549c20ea7a8d5913a53499e6b4bc46c854616434d96b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-pp310-pypy310_pp73-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.57-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 31.8 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bitbully-0.0.57-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 618475dd79d6e3e8319f325d2817bdbf14b2a1ae3c9186f5214f8029421e7c69
MD5 4d8d6a7b1b7ecad557589383f99436bd
BLAKE2b-256 c80174cfb3384ac342742aaab4054c19c5f740d4fc7b26538095403933d41ffe

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 839035d8a3cec6261e48213699c4d383de4529962febda700d67bdfc985a0f57
MD5 4b8200e49b6450fc4323ef4c187c7989
BLAKE2b-256 066a4dec9e4165ce8827170f1aaecb7fd9d5869dee97eb62cc78a2c3a2a077b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f562919a58b291258b6a6a3012068023c94db8869cf470dcc67f2be8c69b420c
MD5 68c999bff387331827634a2b3fa8ec01
BLAKE2b-256 ba2067343bee161acbe6fcad27fc91cf85ba1c6d09a77f0d30a96550748d12ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eee1f905e2a5e4a5f48f9cd6bf68a614a670a7c50c00d670ff8fa9fc703e0b47
MD5 6b2822a12bd260da444a7e4a41a799cf
BLAKE2b-256 b95b4c639874026decb83b60eee5e506ced098d9ab7d836b1bc4e5ed0ca05645

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 663bec0bf3c6cf24ca96e9221d61c34737389a91230b5f739a1b407ff3c29cfb
MD5 685d0e62feea88693f705157e91e2db8
BLAKE2b-256 d91ae2c6671333dc2edcfd447e288c1183d0f2240b5cf9cec3f2ff1d3525fac8

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp313-cp313-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.57-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 31.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bitbully-0.0.57-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ec3189f48588c2f57473e931d928a8ba39796470f56d1c190e668828f9290f4a
MD5 3b0aa123426a79b4d99e966aa276a75c
BLAKE2b-256 0e754e4f205a20b903b39dad1d707baf501b8a6ba5ccaef68ef3c53f9d97dadc

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1a2f1ad1760215da99bb7bf238ce278272e62050fed93fc9848ea9439787d13f
MD5 ce434c974d882c739cbfb8a8dc9dec0e
BLAKE2b-256 814ed6f3de765861c92600eb8f2396f211a06e1ef5e810622257421e75f7236a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d5059fd3631d6823871155f6af89d47013c68acd97af4ef3cabeaaf83456143e
MD5 056547cb2d1e3ef7c79a9ace08add966
BLAKE2b-256 47b117acc6ff5bb39991bb212a85db19a4d20251bfaa4ed209a67e1b4e53ee02

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f2d61e1aab08cd557420a34a17e99e3b655432035cc539fd6e216f64954bd10
MD5 7646daead6bcc7d7c49a7d0c80272c84
BLAKE2b-256 a82dcf8f69c2a92a41caa0b4282175cb4add0caaee2de61224f93012b6367be2

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9b5ca3eb6f496e55c1f8842c67661e06afd56836c35b84537ad49f821d13e41f
MD5 fd57bfe6f597a2098c7cf3f492e039ac
BLAKE2b-256 76c464e975aefabe04b17e2a3e0f674f5d7d9dbf9dbdf52258f4cbec501774f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.57-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 31.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bitbully-0.0.57-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aba357ece6056b55a8bf4b65408903734dd9bff0fd6230cd5725eb115994e3c5
MD5 20d6d71e93b43bb56ad91a5eae98fb0c
BLAKE2b-256 b88dcf0acdd1bf065b49c4c6d335f3a4e520c44aabec319d9c46d8b50737e1c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 36fda846ffc6effd9dca1957d96ef58eab3d3992308295f0ac2e64364d3aab68
MD5 4dd19668419e97c5f1bf93905555a9be
BLAKE2b-256 f046b7397f99b9bb8c3aedef247664688bdaf5b1fa2eca0b439979ed0f5e1110

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7fcf40630ee7925220f1768e5476577d7b3333c02a7886b0f4288037bd54a079
MD5 3ff4590b358660ac813e8f38ae9764d8
BLAKE2b-256 3c929784b78a7c63d62aaed8afa376bf43056c594a08892ac50d98dc920f315b

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f3cc7b0dff94b5d444b4e60bb825e949ad762da190088cf0364b1be00ebce25
MD5 36c34f5a254fdb11fb29167d29dcb574
BLAKE2b-256 b223cc5e1e67522255c3837d39b3f9d297dcebd3f8df7f652f037cb1c26b097d

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 77ec88033b0ad79f8341d9a3ab241287d3afc730fcaaf791c6c9fceb456cf152
MD5 ad7fc2d21ec365ca32206b80d95d0d21
BLAKE2b-256 c205a456d7cc2e9b2ca22bdcaf69ff44016bb6d433d78dcb3d423fe173139efd

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.57-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 31.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bitbully-0.0.57-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 38c3d629b78de0135f3877422035b29ad7f4829e6b07d83ebcc9dfc773237f34
MD5 8507a149fac17c47685822219f486ed3
BLAKE2b-256 84d5e60bf27b2696b7f64ea0537354fb451c4434573b3d376d9a3f5632783a78

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 18902b59212840daed75502ed36ea5fc908bb4f6af8c6294dd165d1755738dd3
MD5 50568f6d79f3c4cf5b2e51c68caae0eb
BLAKE2b-256 be73501e860de8143b46c41a60c331d044b8d2b2adf8211902d642f32646712e

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2262fe2638d97674c62179ecc4bdb2414fbceb9aa74d8d974148dd72dc3464ec
MD5 ecba1b34e3e0a516797a3fe8a9f0a478
BLAKE2b-256 3ecec5ff3052ad053548ba03c70210cdebb6f649ea3f1c8ddf0f22617b74d8e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1232d41c07d34798a62954aeab40de1e98a6cb0ce9784d92ccf3afc6497847c6
MD5 eed02a32e39169f4cb173956cbce87f3
BLAKE2b-256 e674d97a8d276284970a163276d07710061c00256ee6c9b21e5b2ded19b40abc

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbully-0.0.57-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.57-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f42d275cdc17b8d5b3b44bcb1b2f95035ad0993a3a569b9e9e15e4f24136f2fd
MD5 134add4be6d78a312c5febb66e1afcf3
BLAKE2b-256 13f65677af29b65dbb95618612cda6c45d891a9df822616ac7a201fb85dace53

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.57-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on MarkusThill/BitBully

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page