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.58.tar.gz (7.8 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.58-pp311-pypy311_pp73-win_amd64.whl (421.7 kB view details)

Uploaded PyPyWindows x86-64

bitbully-0.0.58-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (293.9 kB view details)

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

bitbully-0.0.58-pp311-pypy311_pp73-macosx_11_0_arm64.whl (197.1 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

bitbully-0.0.58-pp311-pypy311_pp73-macosx_10_15_x86_64.whl (209.9 kB view details)

Uploaded PyPymacOS 10.15+ x86-64

bitbully-0.0.58-pp310-pypy310_pp73-win_amd64.whl (420.7 kB view details)

Uploaded PyPyWindows x86-64

bitbully-0.0.58-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (292.8 kB view details)

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

bitbully-0.0.58-pp310-pypy310_pp73-macosx_11_0_arm64.whl (196.0 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

bitbully-0.0.58-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (208.4 kB view details)

Uploaded PyPymacOS 10.15+ x86-64

bitbully-0.0.58-cp313-cp313-win_amd64.whl (422.5 kB view details)

Uploaded CPython 3.13Windows x86-64

bitbully-0.0.58-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

bitbully-0.0.58-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (293.0 kB view details)

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

bitbully-0.0.58-cp313-cp313-macosx_11_0_arm64.whl (196.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bitbully-0.0.58-cp313-cp313-macosx_10_15_x86_64.whl (211.8 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

bitbully-0.0.58-cp312-cp312-win_amd64.whl (422.5 kB view details)

Uploaded CPython 3.12Windows x86-64

bitbully-0.0.58-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

bitbully-0.0.58-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (293.1 kB view details)

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

bitbully-0.0.58-cp312-cp312-macosx_11_0_arm64.whl (196.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bitbully-0.0.58-cp312-cp312-macosx_10_15_x86_64.whl (211.7 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

bitbully-0.0.58-cp311-cp311-win_amd64.whl (422.1 kB view details)

Uploaded CPython 3.11Windows x86-64

bitbully-0.0.58-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

bitbully-0.0.58-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (293.7 kB view details)

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

bitbully-0.0.58-cp311-cp311-macosx_11_0_arm64.whl (197.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bitbully-0.0.58-cp311-cp311-macosx_10_15_x86_64.whl (210.4 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

bitbully-0.0.58-cp310-cp310-win_amd64.whl (421.2 kB view details)

Uploaded CPython 3.10Windows x86-64

bitbully-0.0.58-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

bitbully-0.0.58-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (292.5 kB view details)

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

bitbully-0.0.58-cp310-cp310-macosx_11_0_arm64.whl (196.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

bitbully-0.0.58-cp310-cp310-macosx_10_15_x86_64.whl (209.0 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: bitbully-0.0.58.tar.gz
  • Upload date:
  • Size: 7.8 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.58.tar.gz
Algorithm Hash digest
SHA256 d4b07418afabf414f0ba27d03831371a1e1fd20b038056d4627e3fcbf4db778c
MD5 5010a7084a3ae238c8d11c37a76072ae
BLAKE2b-256 9ff0a76f389cfa122a1bd9dc04079276d3ed0ad5ef7a6ae68448960e7315dd6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58.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.58-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 e2dc811b664b51d4fb6adc599b9763ea98b80edccbb2dd052ad31e4ca299f0de
MD5 99369c30d7539e5da56e641dbca9b224
BLAKE2b-256 5281d469604cfa16e19b575147396c3fff1decbf0884fccaccf2e806105f48a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f09114c8c536e1112ee43098038a9db074170e9f65354b97c20b9a6446f797b
MD5 831f4ca85b256f70fb019ad6c9513199
BLAKE2b-256 7bcb2458ae90f3ced066c3414390faa44821b49212aafa74a17c1653224633a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae293bcdc38bfd2f25c451c751eb3611ec7bc653552f146a723f7112dbbb59b0
MD5 3d4bab13ad472119da16bca6658e18ad
BLAKE2b-256 1134fa157eac49b2b6adf3ce18cb6b35372e01a6e781355da6fe4bdf0e6cc47e

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-pp311-pypy311_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp311-pypy311_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d5f07fa1a55597a76a63cbbc33695f7cacf38271410c0d53cdf4898f8fbf0dc1
MD5 44e1abcfaa1617a9a76109598123583c
BLAKE2b-256 5f537497f6e4aca9b87ff883a0d5234a68c63ebef0806b0921b9b7bc064276d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 3d5f2cba0586e27475858ce620da7a72d560e4a306b1585b2aeb1f08f42be29c
MD5 cc9c9d79df0f20a92b901faddd857f2d
BLAKE2b-256 9a5ba2c0c333ca02744c3c49200a0f597c4af9d5627993a1ddd2150d274dab70

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 210657b4d2cc634d60c10be98b242d32b3ea204ce3d69b4dbb82f628ef58d7d4
MD5 a719d7b134f6b8b27cbaab79a2193901
BLAKE2b-256 f06658762b51db1c8ef9a6b4b35f78f8dfce4ba36b7d7f2248a6d3f088685484

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 51ef854e98cf0d8c65048dcac0f1798630594e35047fab750ba056fe585a6745
MD5 b1a8f643d9af5d17e472e5e8c7b41950
BLAKE2b-256 5dcd8cb1e1dac8932777691fdda6008766e3107e5fcc49be694fd7e23f0ef395

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8d7e10e174d0e9785b59bf8c6e0cdae67bb1e73244d91d5f51e6ada5146bd758
MD5 147c2c8d1b2760681fb78f748d0d3917
BLAKE2b-256 0e0af6060e22db0c730236ee47afb72fde5d0258157e67b91e968b31bb3793c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.58-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 422.5 kB
  • 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.58-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3da7622b2e7e8cdd70d67666c804a584f24b157f6d0bc6c1f561d4b0c285cb2a
MD5 d92870ac172c771eaad8fbd7bc1597f9
BLAKE2b-256 e72f3128f9cb6edae948bab9e056ca4b05968cdca47b4bdac32851f050941c32

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 81856a54dc18c9ff125cca450efa623e99297d3367aaee6581fafb0a98c95db6
MD5 8f13cfd51bc5abbc409afb8fd3152b57
BLAKE2b-256 7c1fbb715d6416c2871d69afca88ad8d05d3a626bfa186c1cab83de7cba613db

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3479dda2ce63af39659a1a09e05707f8229d0d94d91a07354125e5e051577509
MD5 295021bc8be7016d9c679e2db6c1ae78
BLAKE2b-256 6a5c684f63a4aa9866f53c4bc955d14004150dd53b6c3c1d253066a7fc7f3535

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e068af27a1266a054eacd2f6aa1fc41ec4d5cdf9000a855d4cbae62bb28a12d2
MD5 d1e41a03df8b742965d349997a4c33fa
BLAKE2b-256 9f5ad567b1184d66d3cf2f2d632bc2ff296850c7ab4c8928ed27a367cba50429

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4126e5559228ed930f60dfbb5e6513324b8084495b7ee226b3ef41b930d12951
MD5 e90cb5684f607074608bdae1f34c0e42
BLAKE2b-256 05ed34a74f6e1f3c5c76d059f1c20aaf33fdf0af99b5715b216b9c86e763cd87

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.58-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 422.5 kB
  • 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.58-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 52d95dae85c8180f24263ba024a61ec350543feb42e64b22eb8abb9e2981a3f4
MD5 ec85b4f643a7f84837443970e157ea45
BLAKE2b-256 b129e3931770e5602a2d32487fc5dd47dd8af389d2f2d303227a69d382e046b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 721bc79577dd06bd037478100a40dd9599d433b2fb90577f327b7ac7a2c1d385
MD5 a8cd43868b26c2f2737a5494fd38bd5c
BLAKE2b-256 456e6ef104ff3068dccfe11053b5d0473e9c6be5e31c31ebc36c75336983192c

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4d6942680794dfb920421a6d915728db8fd1afc02d8108ab7de506829f6186a0
MD5 9d4ccd43b013e6893d1809b9d513ef70
BLAKE2b-256 2774265e80368c4aa3069a4601cccb3ab29433626b542f4d3b05603dc42f36a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14900ab68451c599e4d80e23582675aea339bd05b177874287ffb69f7c5dbe2a
MD5 386ece8bcf1244111505407b341dd4c9
BLAKE2b-256 62e1bece5a11a8939b6ee4d2c4bf303a8c0531fd6117bd61f8a7168728bef39a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 06cce371e5dd6cf9619c82a8d8f135a545bff09183865b15f5822b4198c0ee13
MD5 c67a9e5790fd651235f0b5fd8527d9cf
BLAKE2b-256 99880874f0f93ee92a5d11ad5f608a20a81f5cc8ac673bb110c41f35b9b7717a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.58-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 422.1 kB
  • 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.58-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7e9c6a376f663051c4579f0745561180c6ac42a96feac4b26913fda0b4baab59
MD5 730557b51edc39fae30b4dfac6b2fac8
BLAKE2b-256 e15e590e6062a8edb4ee59c357e9fd142048574b6d099a68f67cfea795fe46e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 486886e57ac303ec273e47be6e48592f05281c505fcf430b4cd28e6967f37d90
MD5 61771dc30d8d3bbfb3539c5a404b28db
BLAKE2b-256 59b298f116d787dcd6474a3243bfb0b546d458ea25de481c56d635afb2cf80b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 78ab64ab9a13032b9c16f26fa2211c3fc2efbfad8c371f0597c30afca38853a0
MD5 b0cbbd68d0e8154f1c765c3a698dfa2e
BLAKE2b-256 229a068d414f8b9958c9e139f8f43469c83566e7febad6ac7dc75289bab4c256

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3936d9db7e2ab9e551b1e406e9c50d2ef05b51fb14b80fc2df25f57357e03be
MD5 3e60ab443312d6023eac2499715e9810
BLAKE2b-256 23065cb52971c0230033fd6f3995e7620d007e4c2be1cbcb68eea1f2c5b4f47a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e9a48b7281af1589d14519c7ae32974065fb1e700df697f5e9ba25ff2a0d4ce7
MD5 6b48a16bf62d80facc2e5a492a9cfdd3
BLAKE2b-256 a5c17115b8fe14621920a0d9a9d98f8fe2b6b218996365ededb412b2d62f1fb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.58-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 421.2 kB
  • 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.58-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 be0b41254dbc2db1b2e2859f868c165074c6c376b31e90b83e3c1e22233d46a4
MD5 8216aaf886d3853948b8992d48759fe4
BLAKE2b-256 65e8dc04308fb2817a9aac0a324912e9dee05da85281744e202933c4e2351085

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5a631ee041beddb75cf2bbb3ec0477d347e7d3654f74fadae64d5abe7a3c7023
MD5 8b1b93594a97119a45043caef3323f5d
BLAKE2b-256 84a70eaff370b0bc7d7b79b91b0d0b138981409cb1a2652e7b20dfd3e27c3b61

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d3f2f4d981b2da6faef1a809addb0dbc1ba6aac5c7f959210852bbe7e0a9898c
MD5 450dfd71efedb06c150527d8432c8725
BLAKE2b-256 bf9e3a4a4c428b517d1e494a01b577dadb1327062ec351942a97647c81c77e1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea5c6a0a4187ca48fc3f603526668caa183a7b300f4a963e65b47b7a1d12ff72
MD5 e73c2964755240132f710e74ef3e334c
BLAKE2b-256 132c75d641c6fe157cde58ff546e4836b11cb06357bdb884d6f6855c6f53da04

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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.58-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.58-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b4b9e30c07cef18180ae8f5ab2a71cd6be6a9b8e4688c03b015a540707bdcb3a
MD5 467fdeda32d88e7007e2d984d0f9e161
BLAKE2b-256 307865ad016bc6cdca3459b3aaaa7595f9aeb90991ab8c33945e99e025fa6ff0

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.58-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