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 Coverage Status Wheels Doxygen CMake Build Buy Me a Coffee

BitBully is a high-performance Connect-4 solver implemented in C++ with Python bindings, built around advanced search algorithms and highly optimized bitboard operations. It is designed for efficient game solving and analysis, targeting both developers interested in performance-critical implementations and researchers working on game-tree search.

BitBully evaluates millions of positions per second in pure C++ and supports constant-time opening-book lookups for early-game positions. Even without opening databases, it can solve the entire game in under 200 seconds on relatively modest hardware.

Connect4 opening Connect4 mid-game Connect4 victory

From opening to victory: three key stages of a Connect 4 match — early game, mid-game tension, and the final winning position.

Quickstart

Installation

pip install bitbully

Usage

import bitbully as bb

agent = bb.BitBully()
board = bb.Board()

while not board.is_game_over():
    board.play(agent.best_move(board))

print(board)
print("Winner:", board.winner())

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.

Who is this for?

  • Just want to play or analyze Connect-4 in Python? → Read Quickstart + Usage (High-level Python API)

  • Interested in performance, algorithms, or C++ integration? → See Low-level C++ bindings (advanced)

  • Working on research, solvers, or databases? → See Opening Books and BoardCore

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.


Python API Docs

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

The docs for the opening databases can be found here: https://markusthill.github.io/bitbully-databases/

Usage

⚠️ Note bitbully_core exposes low-level C++ bindings intended for advanced users. Most users should use the high-level bitbully Python API with the classes Board and BitBully.

BitBully currently supports standard Connect-4 (7 columns × 6 rows). Generalized board sizes are not supported.

🚀 BitBully: Getting Started with a Jupyter Notebook

Open In Colab

This notebook introduces the main building blocks of BitBully:

  • Board: represent and manipulate Connect Four positions
  • BitBully: analyze positions and choose strong moves

All examples are designed to be copy-pasteable and easy to adapt for your own experiments.

Jupyter Notebook: notebooks/getting_started.ipynb

🎮 Play a Game of Connect-4 with a simple Jupyter Notebook Widget

Open In Colab

screenshot_gui

BitBully includes an interactive Connect-4 widget for Jupyter built with ipywidgets + Matplotlib. GuiC4 renders a 6x7 board using image sprites, supports move evaluation, provides undo/redo, can trigger a computer move using the BitBully engine (optionally with an opening book database). It's intended for quick experimentation and demos inside notebooks (best with %matplotlib ipympl).

Jupyter Notebook: notebooks/game_widget.ipynb

High-level Python API (recommended)

Empty board + play moves incrementally

import bitbully as bb

board = bb.Board()
assert board.play(3)          # single move (int)
assert board.play([2, 4, 3])  # multiple moves (list)
assert board.play("001122")   # multiple moves (string)

print(board)

Initialize directly from a move sequence

import bitbully as bb

board_a = bb.Board([3, 3, 3, 1, 1])
board_b = bb.Board("33311")

assert board_a == board_b
print(board_a)

Create positions (moves, strings, arrays) and round-trip them

import bitbully as bb

# From a move list
b1 = bb.Board([3, 3, 3, 1, 1])

# From a compact move string
b2 = bb.Board("33311")

assert b1 == b2
print(b1)

# From a 2D array (row-major 6x7 or column-major 7x6 both work)
arr = b1.to_array()  # default: column-major 7x6
b3 = bb.Board(arr)

assert b1 == b3

Legal moves and remaining moves

import bitbully as bb

board = bb.Board("33333111")

print(board.legal_moves())                 # all legal columns
print(board.legal_moves(order_moves=True)) # ordered (center-first)
print("Moves left:", board.moves_left())
print("Tokens:", board.count_tokens())

Some board utilities

import bitbully as bb

board = bb.Board("332311")
print(board)

print("Can win next (any):", board.can_win_next())
print("Can win next in col 4:", board.can_win_next(4))

assert board.play(4)  # play winning move
print(board)

print("Has win:", board.has_win())
print("Game over:", board.is_game_over())
print("Winner:", board.winner())  # 1

Solver Quickstart: evaluate a position and pick a move

import bitbully as bb

agent = bb.BitBully()          # loads default opening book ("12-ply-dist")
board = bb.Board()             # empty board

print(board)

scores = agent.score_all_moves(board)
print("Move scores:", scores)

best_col = agent.best_move(board)
print("Best move:", best_col)

Play a small game loop (agent vs. itself)

import bitbully as bb

agent = bb.BitBully()
board = bb.Board()

while not board.is_game_over():
    col = agent.best_move(board, tie_break="random")
    assert board.play(col)

print(board)
print("Winner:", board.winner())  # 1, 2, or None for draw

Tie-breaking strategies for best_move

import bitbully as bb
import random

agent = bb.BitBully()
board = bb.Board("341")  # arbitrary position

print(board)

print("Center tie-break:", agent.best_move(board, tie_break="center"))
print("Leftmost tie-break:", agent.best_move(board, tie_break="leftmost"))

rng = random.Random(42) # optional own random generator
print("Random tie-break (seeded):", agent.best_move(board, tie_break="random", rng=rng))

Different Search Algorithms

import bitbully as bb

agent = bb.BitBully()
board, _ = bb.Board.random_board(n_ply=14, forbid_direct_win=True)

s1 = agent.mtdf(board)
s2 = agent.negamax(board)
s3 = agent.null_window(board)

assert s1 == s2 == s3
print("Score:", s1)

Low-level C++ bindings (advanced)

Use the BitBullyCore and BoardCore classes directly in Python:

BoardCore Examples

The low-level BoardCore API gives you full control over Connect-4 positions: you can play moves, generate random boards, mirror positions, and query win conditions or hashes.

Create and Print a Board
import bitbully.bitbully_core as bbc

board = bbc.BoardCore()
print(board)          # Human-readable 7x6 board
print(board.movesLeft())   # 42 on an empty board
print(board.countTokens()) # 0 on an empty board

Play Moves and Check for Winning Positions
import bitbully.bitbully_core as bbc

board = bbc.BoardCore()

# Play a small sequence of moves (columns 0–6)
for col in [3, 2, 3, 2, 3, 4, 3]:
    assert board.play(col)

print(board)

# Check if the side to move has an immediate winning move
print(board.canWin())      # False
print(board.hasWin())      # True, since the last move created 4-in-a-row

You can also check if a specific column is a winning move:

board = bbc.BoardCore()
board.setBoard([3, 3, 3, 3, 2, 2, 4, 4])

print(board.canWin())  # True
print(board.canWin(1))  # True  – playing in column 1 wins
print(board.canWin(3))  # False – no win in column 3

Set a Board from a Move List or Array
import bitbully.bitbully_core as bbc

board = bbc.BoardCore()

# From a move sequence (recommended)
assert board.setBoard([0, 1, 2, 3, 3, 2, 1, 0])

# Convert to 7x6 array (columns × rows)
array = board.toArray()
print(len(array), len(array[0]))  # 7 x 6

# From a 7x6 array of tokens (1 = Yellow, 2 = Red)
array_board = [[0 for _ in range(6)] for _ in range(7)]
array_board[3][0] = 1  # Yellow in center column bottom row
b2 = bbc.BoardCore()
assert b2.setBoard(array_board)

Generate Random Boards
import bitbully.bitbully_core as bbc

board, moves = bbc.BoardCore.randomBoard(10, True)

print(board)   # Random, valid board
print(moves)   # List of 10 column indices
print(board.canWin())  # Usually False for random boards in this setup

Mirroring Boards and Symmetry
import bitbully.bitbully_core as bbc

board = bbc.BoardCore()
board.setBoard([0, 1, 2])      # Left side

mirrored = board.mirror()      # Mirror around center column
print(board)
print(mirrored)

# Double-mirroring returns the original position
assert board == mirrored.mirror()

Hashing, Equality, and Copies
import bitbully.bitbully_core as bbc

b1 = bbc.BoardCore()
b2 = bbc.BoardCore()

moves = [0, 1, 2, 3]
for m in moves:
    b1.play(m)
    b2.play(m)

assert b1 == b2
assert b1.hash() == b2.hash()
assert b1.uid() == b2.uid()

# Copying a board
b3 = b1.copy()           # or bbc.BoardCore(b1)
assert b3 == b1

b3.play(4)               # Modify the copy
assert b3 != b1
assert b3.hash() != b1.hash()

These examples are based on the internal test suite and show typical ways of interacting with BoardCore programmatically.

BitBullyCore: Connect-4 Solver Examples

The BitBullyCore module provides a high-performance Connect-4 solver written in C++ and exposed to Python. You can evaluate positions, score all legal moves, or run the full MTD(f) search.


Solve a Position with MTD(f)
import bitbully.bitbully_core as bbc

# Construct a position: alternate moves into the center column
board = bbc.BoardCore()
for _ in range(6):
    board.play(3)  # Column 3

solver = bbc.BitBullyCore()
score = solver.mtdf(board, first_guess=0)

print("Best score:", score)

mtdf returns an integer score from the perspective of the side to move (positive = winning, negative = losing).


Score All Moves in a Position

scoreMoves(board) returns a list of 7 integers: the evaluated score for playing in each column (0–6). Illegal moves (full columns) are still included in the list.

import bitbully.bitbully_core as bbc

board = bbc.BoardCore()
board.setBoard([3, 4, 1, 1, 0, 2, 2, 2])

solver = bbc.BitBullyCore()
scores = solver.scoreMoves(board)

print("Move scores:", scores)
# Example output:
# [-3, -3, 1, -4, 3, -2, -2]

Using the Solver in a Loop (Move Selection)
import bitbully.bitbully_core as bbc
import time

board = bbc.BoardCore()
solver = bbc.BitBullyCore()

for move in [3, 4, 1, 1, 0, 2, 2, 2]:  # Example opening
    board.play(move)

start = time.perf_counter()
scores = solver.scoreMoves(board)
best_move = max(range(7), key=lambda c: scores[c])
print(f"Time: {round(time.perf_counter() - start, 2)} seconds!")
print("Scores:", scores)
print("Best move suggestion:", best_move)
# best move is into column 4

Further Examples using the BitBully Solver

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
# Here, the left column represents the bottom row of the board
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 bitbully_databases as bbd
import importlib.resources

db_path = bbd.BitBullyDatabases.get_database_path("12-ply-dist")
bitbully = bbc.BitBullyCore(db_path)
b = bbc.BoardCore()  # Empty board
bitbully.scoreMoves(b)  # expected result: [-2, -1, 0, 1, 0, -1, -2]

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

Opening Book Examples

BitBully Databases provide fast lookup tables (opening books) for Connect-4, allowing you to query evaluated positions, check if a board is known, and retrieve win/loss/distance values.

Load an Opening Book
import bitbully_databases as bbd
import bitbully.bitbully_core as bbc

# Load the 8-ply opening book (no distances)
db_path = bbd.BitBullyDatabases.get_database_path("8-ply")
book = bbc.OpeningBookCore(db_path, is_8ply=True, with_distances=False)

print(book.getBookSize())  # e.g., 34515
print(book.getNPly())      # -> 8

Accessing Entries

Each entry consists of (key, value) where:

  • key is the Huffman-encoded board state
  • value is the evaluation (win/loss/draw or distance)
k, v = book.getEntry(0)
print(k, v)

Evaluating a Board Position
import bitbully.bitbully_core as bbc

board = bbc.BoardCore()
board.setBoard([2, 3, 3, 3, 3, 3, 5, 5])  # Sequence of column moves

value = book.getBoardValue(board)
print("Evaluation:", value)

Check Whether a Position Is in the Opening Book

The books only contain one variant for mirror-symmetric positions:

board = bbc.BoardCore()
board.setBoard([1, 3, 4, 3, 4, 4, 3, 3])

print(book.isInBook(board))              # e.g., False
print(book.isInBook(board.mirror()))     # e.g., True, checks symmetric position

Benchmarking

This section describes how BitBully was benchmarked against a strong Baseline solver, how the reported numbers were obtained, and how to interpret the reported p-values.

Setup

The benchmark compares BitBully against the Baseline on identical Connect-4 positions, measuring wall-clock solve time per position.

Position generation

  • For a fixed search depth nply, random but legal Connect-4 positions are generated.
  • Each position is constructed by playing a random sequence of nply moves from the empty board (non-trivial positions, meaning that they do not contain a winning position for the player to move next.).
  • The same position is evaluated by both solvers.

Solvers

  • Opening books are deactivated for both solvers.
  • BitBully: evaluated using its mtdf search with transposition tables enabled. Transposition Table size: $2^{20}=1,048,576$ entries.
  • Baseline: evaluated using its standard solve routine, with transposition tables enabled. Transposition Table size: $2^{24}=16,777,216$ entries.
  • For correctness, both solvers must return the same game-theoretic score; execution aborts if a mismatch occurs.

Timing: Each solver is timed independently on the same board.

Repetitions

  • For each nply, the experiment is repeated nrepeats times (typically 25–2000, depending on search depth).
  • In this case, transposition-table resets are enabled to control caching effects.

Aggregation & Reported Metrics

From the recorded timings, the following statistics are computed:

  • Mean ± Standard Deviation: Arithmetic mean and sample standard deviation of solve times (in seconds).
  • Speed-up: Speed-up = mean(Baseline) / mean(BitBully). Values > 1 indicate that BitBully is faster on average.
  • Paired Statistical Test (p-value):A paired Wilcoxon signed-rank test is applied to the timing pairs.

Statistical Significance & p-Value Interpretation

To assess whether observed speed differences are statistically meaningful, a Wilcoxon signed-rank test is used:

Why Wilcoxon?

  • Timing distributions are often non-Gaussian and heavy-tailed.
  • Measurements are paired (same position, two solvers).
  • Wilcoxon is non-parametric and robust to outliers.

Test definition

  • Null hypothesis (H₀): BitBully is not faster than Baseline.
  • Alternative hypothesis (H₁): BitBully is faster than Baseline.

p-value meaning

  • The p-value is the probability of observing the measured (or more extreme) speed advantage if H₀ were true.
  • Very small p-values indicate overwhelming evidence that BitBully is faster.
  • Values ≥ 0.05 indicate that the observed difference is not statistically significant at the 5% level.

Notes & Caveats

  • We left the size of the transposition table for Baseline as-is, likely giving it a slight advantage over BitBully.
  • Benchmarks measure solve time, not node count or memory usage.
  • Results might depend on compiler optimizations, hardware, and cache behavior.
  • Small p-values are expected for large nrepeats when even modest speed differences are consistent.

The full benchmark code and analysis notebook are included in the repository for reproducibility.

Machine Setup

FUJITSU LIFEBOOK N532 from 2012.

WSL Setup:

+------------------+-------------------------------------------+
| OS               | Linux 6.6.87.2-microsoft-standard-WSL2    |
| Distribution     | Ubuntu 22.04.4 LTS                        |
| Architecture     | x86_64                                    |
| CPU              | x86_64                                    |
| Cores (phys/log) | 2 / 4                                     |
| RAM              | 8 GiB                                     |
| GPU              | None / Unknown                            |
| Python           | CPython 3.11.0rc1                         |
| Compiler         | gcc (Ubuntu 13.1.0-8ubuntu1~22.04) 13.1.0 |
| Fingerprint      | ea68f7b392a21300                          |
+------------------+-------------------------------------------+

Output of systeminfo on Windows CMD (reformatted):

┌────────────────────────┬────────────────────────────────────────────────┐
│ Manufacturer / Model   │ FUJITSU LIFEBOOK N532                          │
│ System Type            │ x64-based PC                                   │
│ BIOS                   │ AMI 1.12A (02.07.2012)                         │
├────────────────────────┼────────────────────────────────────────────────┤
│ Operating System       │ Windows 10 Pro                                 │
│ OS Version             │ 10.0.19045 (Build 19045)                       │
│ Install Date           │ 25.08.2020                                     │
│ Time Zone              │ UTC+01:00 (Central Europe)                     │
├────────────────────────┼────────────────────────────────────────────────┤
│ CPU                    │ Intel Core (Family 6, Model 58)                │
│ Nominal Frequency      │ ~2.9 GHz                                       │
│ CPU Count              │ 1 physical processor                           │
├────────────────────────┼────────────────────────────────────────────────┤
│ Physical Memory        │ 16 GB RAM                                      │
│ Available Memory       │ ~6 GB                                          │
│ Virtual Memory (Max)   │ ~20 GB                                         │
├────────────────────────┼────────────────────────────────────────────────┤
│ Virtualization         │ Hypervisor detected (Hyper-V / WSL active)     │
└────────────────────────┴────────────────────────────────────────────────┘

Results (BitBully vs Baseline)

  • Times in seconds: (Mean ± Std)
nply nrepeats BitBully [s] Baseline [s] Speed-up p-value Significant
(empty board) 0 25 197.5023 ± 7.8470 386.3228 ± 17.3956 1.96 2.98e-08 *
1 50 117.0179 ± 42.2797 151.0143 ± 55.6900 1.29 4.73e-05 *
2 250 59.7311 ± 60.7071 68.5259 ± 68.1356 1.15 0.000299 *
3 500 27.6295 ± 27.4619 31.9983 ± 33.9760 1.16 2.7e-10 *
4 500 11.0583 ± 12.9979 15.5146 ± 20.8694 1.4 2.33e-37 *
5 500 4.1296 ± 5.0585 5.8230 ± 7.2602 1.41 1.04e-47 *
6 1000 2.1579 ± 2.8749 3.2826 ± 4.6897 1.52 5.26e-92 *
7 1000 0.9930 ± 1.2125 1.4714 ± 2.2783 1.48 2.52e-72 *
8 1000 0.5269 ± 0.6483 0.8201 ± 1.2421 1.56 3.44e-62 *
9 1000 0.2537 ± 0.3188 0.3709 ± 0.6311 1.46 3.54e-41 *
10 1000 0.1523 ± 0.1849 0.2035 ± 0.2979 1.34 4.68e-20 *
11 1000 0.0808 ± 0.1201 0.1102 ± 0.1997 1.36 8.42e-17 *
12 1000 0.0487 ± 0.0761 0.0601 ± 0.1179 1.23 0.00366 *
13 1000 0.0254 ± 0.0429 0.0293 ± 0.0525 1.15 0.0028 *
14 2000 0.0176 ± 0.0286 0.0180 ± 0.0325 1.02 1
15 2000 0.0110 ± 0.0204 0.0104 ± 0.0221 0.94 1
16 2000 0.0065 ± 0.0131 0.0060 ± 0.0136 0.93 1

Interpretation of the Benchmarking Results

The benchmarking results highlight two distinct performance regimes: early-game (low ply) and mid-to-late-game (higher ply) positions.

Early game (0–6 ply). Starting from an empty board (nply = 0), BitBully requires on average ~198 seconds solving the whole game, while the Baseline solver needs ~386 seconds, resulting in an almost 2× speed-up. This gap remains clearly visible up to about 6 ply, where BitBully consistently outperforms the Baseline, with small p-values indicating strong statistical significance. This regime corresponds to the hardest positions in Connect-4: the branching factor is maximal and the solver must explore a large fraction of the game tree. Here, BitBully's search strategy, move ordering, and pruning heuristics pay off most.

Transition region (7–12 ply). As more tokens are placed on the board, the average solve time drops rapidly for both solvers—from seconds to tens of milliseconds. BitBully still maintains a consistent advantage (≈ 1.2×–1.5×), and the differences remain statistically significant. However, the absolute time savings shrink quickly: improving from 0.8 s to 0.5 s is far less noticeable than shaving minutes off an empty-board solve.

Late game (≥14 ply). Beyond roughly 14 ply, solve times become negligible (on the order of a few milliseconds or less) for both solvers. In this region, many positions are tactically forced, shallow, or immediately decidable via pruning. Measured differences are dominated by some BitBully overhead and partially by noise, and no statistically significant advantage can be established.

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
    

Contributing & Development

Whether you're fixing a bug, optimizing performance, or extending BitBully with new features, contributions are highly appreciated. The full development guide provides everything you need to work on the project efficiently:

📘 Complete Development Documentation https://markusthill.github.io/BitBully/develop/

It covers all essential workflows, including:

  • Repository setup: cloning, submodules, virtual environments
  • Development environment: installing dev dependencies, using editable mode
  • Code quality tools: ruff, mypy/pyrefly, clang-format, pre-commit, commitizen
  • Building the project: local wheels, CMake, cibuildwheel, sdist
  • Testing: running pytest, filtering tests, coverage, CI integration
  • Release workflow: semantic versioning, version bumping, tagging, PyPI/TestPyPI publishing
  • Debugging & tooling: GDB, Doxygen, mkdocs, stub generation for pybind11
  • Platform notes: Debian/Linux setup, gcov matching, MSVC quirks
  • Cheatsheets: Git, submodules, CMake, Docker, Ruby/Jekyll, npm, environment management

If you're contributing code, please:

  1. Follow the coding standards and formatting tools (ruff, mypy, clang-format).
  2. Install and run pre-commit hooks before committing.
  3. Write or update tests for all behavioral changes.
  4. Use Commitizen for semantic commit messages and versioning.
  5. Open an issue or discussion for major changes.

Pull requests are welcome — thank you for helping improve BitBully! 🚀

License

This project is licensed under the AGPL-3.0 license.

Contact

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

Further Ressources

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:


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.75.tar.gz (8.1 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.75-pp311-pypy311_pp73-win_amd64.whl (487.7 kB view details)

Uploaded PyPyWindows x86-64

bitbully-0.0.75-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (364.8 kB view details)

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

bitbully-0.0.75-pp311-pypy311_pp73-macosx_11_0_arm64.whl (260.3 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

bitbully-0.0.75-pp310-pypy310_pp73-win_amd64.whl (486.4 kB view details)

Uploaded PyPyWindows x86-64

bitbully-0.0.75-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (363.7 kB view details)

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

bitbully-0.0.75-pp310-pypy310_pp73-macosx_11_0_arm64.whl (259.0 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

bitbully-0.0.75-cp314-cp314-win_amd64.whl (499.0 kB view details)

Uploaded CPython 3.14Windows x86-64

bitbully-0.0.75-cp314-cp314-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

bitbully-0.0.75-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (367.7 kB view details)

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

bitbully-0.0.75-cp314-cp314-macosx_11_0_arm64.whl (261.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

bitbully-0.0.75-cp313-cp313-win_amd64.whl (489.0 kB view details)

Uploaded CPython 3.13Windows x86-64

bitbully-0.0.75-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.75-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (367.2 kB view details)

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

bitbully-0.0.75-cp313-cp313-macosx_11_0_arm64.whl (260.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bitbully-0.0.75-cp312-cp312-win_amd64.whl (489.0 kB view details)

Uploaded CPython 3.12Windows x86-64

bitbully-0.0.75-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.75-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (367.2 kB view details)

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

bitbully-0.0.75-cp312-cp312-macosx_11_0_arm64.whl (260.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bitbully-0.0.75-cp311-cp311-win_amd64.whl (488.0 kB view details)

Uploaded CPython 3.11Windows x86-64

bitbully-0.0.75-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.75-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (365.0 kB view details)

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

bitbully-0.0.75-cp311-cp311-macosx_11_0_arm64.whl (260.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bitbully-0.0.75-cp310-cp310-win_amd64.whl (487.0 kB view details)

Uploaded CPython 3.10Windows x86-64

bitbully-0.0.75-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.75-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (363.4 kB view details)

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

bitbully-0.0.75-cp310-cp310-macosx_11_0_arm64.whl (259.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: bitbully-0.0.75.tar.gz
  • Upload date:
  • Size: 8.1 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.75.tar.gz
Algorithm Hash digest
SHA256 5100031ef0f62a7f78cf0c1b82da1dbb0aaa93278a380fd7042c1b9a59fb078a
MD5 a402521fbe130bd94f04d266da5e4bcc
BLAKE2b-256 a65781efda2823d906fa4d367e2c1ce9692053789e0a1dcea4e388ba0353c6e3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 ec5c39b2a3d8dd266d33dc4d3fc42cfd550c97776deb92fae781f3ff7993078c
MD5 3f8ebb3a2587cb285f3dcb3a8d0e2743
BLAKE2b-256 9a219f4726c7b31c1341cc150df279b3544eb1b0a427f9fa2583618b7135b88d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2911e069a1643781f856245f98d55c99cdf4c6000eaa7f98e472c75f227937f7
MD5 b04aa2bfa47008021dfe154d0766dcd0
BLAKE2b-256 8f2c1459fc23e7cb10fa18ad7b86716d27ad7a3ab2c43b3ae9524e54066f40a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76e59e83276c305de5143a5dd2a34203a0a9c6363ddde8fcde26d2074d710265
MD5 b013a3f7c3179e31eb49b2c70075c600
BLAKE2b-256 c09dcdc1e026305bec1557f55ea4e101b4c2ad035209c98bb48ff6863d35a875

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 eb09348cd4ee3fce04553f6853a126ba6a73a12e2bf33b590a3dbe5fcda52497
MD5 f1c1d92072d936f3f5e7b8fcd79b6ad2
BLAKE2b-256 d47f2b5db8768c0b23da73da3dcc9533f46a6f06df8467d02d1ae04f55d3d728

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1162fca5e3b093eb7a43dab452d16153d24894e4864de4743ee0cf2fde4d3a56
MD5 2bd5c3073ce704a0cc00b902886e519a
BLAKE2b-256 5d764a96852ec3b8ffb68e86652bf4da2540b3923e722679dce3e5f56355b8cb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0af6754e11eaf0e58834478a70cdd64f66700bb97f30a1f9973fe04d15dfd87a
MD5 214d58b23894f1806c8fc6d968bd580f
BLAKE2b-256 dde56b0fbc6752873dba416cc865419adffb7abc8c837d23610559b5b561d2ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.75-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.75-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: bitbully-0.0.75-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 499.0 kB
  • Tags: CPython 3.14, 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.75-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3df8aac70b1f8c2867ed21407c36238dd9c112138b27e4a7e1d7844582ed2760
MD5 06b2e5b00ab0e14e5f77ceeaf4f83a78
BLAKE2b-256 b0c08733eb78c79e6a0721b93f9e92709c4898ef2f129125be575025d5e7d820

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.75-cp314-cp314-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.75-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.75-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1a295281fd6bab8ab00d02717523968ac2f546dc55889ec54bb58210f1589635
MD5 9fb653a3edd0d0253f074c5b5891930e
BLAKE2b-256 a15bff7185342efcb57132b896f057ee2d0d3f3bf4bbbdec51bc80afd3699b18

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.75-cp314-cp314-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.75-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.75-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7f20176088c336aee3aa76cb9dfd9305f71607aea8c2ee9b0ccb9a5c94043b13
MD5 4aa52aec4929e758ba4834c002942ea5
BLAKE2b-256 3ccc8b14a4154ab3c8efee1c8456b55112533c77501be7d993d3e3187396f5cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbully-0.0.75-cp314-cp314-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.75-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bitbully-0.0.75-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d84b4b54f3eb08bf1f21366682928117f80a8691a9cc530e1cb48d15c19e4d6
MD5 ffdd7b5461c3afa29acee08358693130
BLAKE2b-256 3d90142d2329a646f506196e47f8b81e15e0f6669bef454107d84076e6ce79b6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: bitbully-0.0.75-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 489.0 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.75-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8eeb4225157a60fd9f8e33c2f50b58352f788ed3b895c4143e8493b6df4b83d1
MD5 6b27c3276c4ed6e5835badabd3bfbe42
BLAKE2b-256 1d21ea44fdb52b6c6037d83d6b34fd5fb1d10b56e4af33e1e5cddaa903353b62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 341956f229c4d0b185bdaabebc85f29d87c21d314e602ab79ee2adf09ce0458b
MD5 b820ad3f668e617c97c6a65ae7582457
BLAKE2b-256 783a2d26cdba25009765909c76026ec678bf0cedcc9ee70cac3c4d01ca35f814

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b41604ae22c28079e959f22292779f4d39bbc7f12137d27dd10aaaebd817131b
MD5 4d5ac6b7b850d9590ac084b04444cc9c
BLAKE2b-256 d2d88258cda9eb3b1a1ffc9a378da62bc4ba553327c1949fdf8d3dc1afdbb0d1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93392a08a574b16adefb51e3957c09932a71a844dbe0e258f1e43599a30fc975
MD5 8cc5020f0e7400332e9d577278de6ea4
BLAKE2b-256 f758ab621539890605a5626c164e2f7ad7c90756ed49fbcefbe2245740b9679f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: bitbully-0.0.75-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 489.0 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.75-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ba70723ff65b5ccdb63e554b335ff225e8bae80c6237954964bced51462eafb9
MD5 44927ef328f3753fe70fd02ce6c52bdb
BLAKE2b-256 f13cb3e92c4a0622bb8dd5e05b890025be458989abf4f21f2505ad13a6e9436d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fbfed10d3afe5d9f66f8c318a4b832ee189abe4a444eded8bbe37e4fe6a1ee3c
MD5 4be48b33a9ebeef81bdf0fb0a11137bd
BLAKE2b-256 c4d9f28e0ba90fe4e76a5cd8fdeb00f8f8869e8ade9a5bb283670bdb5168befe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b9ca90a2d2a3d7b6d427092b95e6ccd41a2519e36b802ca8b69f2c530071b331
MD5 372375c6cd5d29c4e77d8bde41c0d940
BLAKE2b-256 bfdf60d1b021e6a37a8fff6c34fc2158b783136fcc63fed316c835b0afafe0fa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14258bc47c091914050794f9a9e17442417be4c73ff8740371dee8c366657e54
MD5 2d6e634f40cb4362329d59408634cb53
BLAKE2b-256 6451e9c49a6af8ae674274a75a4131a2ad2ca30fe92004d362d3da02ee18725f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: bitbully-0.0.75-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 488.0 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.75-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 14c9e36a50573fd3ae76928620465e48300350d6cfd13c7fb47cb8ac36174c85
MD5 f647c5d7e3f180afb801d3f9ded2b8f4
BLAKE2b-256 f19cde68580e4c6999f5ee7695072fb2f9d5ce5917f249cbcd50ef014c0b312a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8f421cd42e0c30a80e4105242e0c0a5e951cc2facd2d0ff3a80f11062ef07787
MD5 fce6330700f20a089d50366d50e36382
BLAKE2b-256 ede98ccf8b438e7c3cffc0af66523162aa55941e2e446596c37e18bafcab5ac5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 37b8d6dbe67b02f9884f07a2216e1e3f0df7360edecabf8a9fbd9363297683cd
MD5 21419de092db54fe238aac6cdb675abd
BLAKE2b-256 de2eaee5fe757943f40f84afd324ee54b5e79016029677caf9e384738246d364

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc78696f5d84a09b5c74f379388856c47fae942536429c1e1a7f1aa1bb0d3c52
MD5 9179d855ebe421e9be02a10b17529a60
BLAKE2b-256 78adc6a22b57d4542fa7f6234b2ebda27f1afb82bc0af6f867466052c2ddae49

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: bitbully-0.0.75-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 487.0 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.75-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bc23ab4db8883944ca7bd8c8a9a0c035273afc3bafb9558e40beb750f6bc2112
MD5 f6d55dffe6e88b84501bdb74d0c254b7
BLAKE2b-256 cfeec4e05c3478b64c915855d244de71e6742d16ad77d05155bfa2a59c1e6bc2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a05fd3bb5eae649bd9b98da0da013da5539fc996b863fe309e2dc8d69ad5784a
MD5 99d3ebeb20a5a906eda7eb1d4e84a178
BLAKE2b-256 d41e392b74e9cb3db28d7e329568b9aef6116c53142d38f8640b8de397fd596d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 809f2438353b323b4e6516f66a3528ffd9f3f4a3534c2b981745887c9f740eb2
MD5 0494f270b373b81bbd9b4fe5b42fe0ca
BLAKE2b-256 1192fee86c61c16ff61deb765afc521cad508f564d791839303d485ca5700068

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for bitbully-0.0.75-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cff7f46ecbb96e88ebb457013f87bdedc89ac565163c6b2ac30bd56e10860f2e
MD5 7d1561fdd317620a07e9dbbf347d7d7f
BLAKE2b-256 7259d511370b1853df84fd5a12ba2f98a2f7d684e45634ab667103eacd62dfc0

See more details on using hashes here.

Provenance

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

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