Skip to main content

BanditPAM: Almost Linear-Time $k$-Medoids Clustering

Linux - build package and run tests Linux - build source distribution and wheels Mac ARM64 - build package and run tests Mac ARM64 - Run CMake Build and Tests Mac Intel - build package and run tests Mac Intel - Run CMake Build and Tests MacOS - build wheels pages-build-deployment R-CMD-check.yaml Run style checks

This repo contains a high-performance implementation of BanditPAM from BanditPAM: Almost Linear-Time k-Medoids Clustering and BanditPAM++: Faster k-medoids Clustering. The code can be called directly from Python, R, or C++.

If you use this software, please cite:

Mo Tiwari, Martin Jinye Zhang, James Mayclin, Sebastian Thrun, Chris Piech, Ilan Shomorony. "BanditPAM: Almost Linear Time k-medoids Clustering via Multi-Armed Bandits" Advances in Neural Information Processing Systems (NeurIPS) 2020.

Mo Tiwari, Ryan Kang*, Donghyun Lee*, Sebastian Thrun, Chris Piech, Ilan Shomorony, Martin Jinye Zhang. "BanditPAM++: Faster k-medoids Clustering" Advances in Neural Information Processing Systems (NeurIPS) 2023.

@inproceedings{tiwari2020banditpam,
  title={BanditPAM: Almost Linear Time $k$-medoids Clustering via Multi-Armed Bandits},
  author={Tiwari, Mo and Zhang, Martin J and Mayclin, James and Thrun, Sebastian and Piech, Chris and Shomorony, Ilan},
  booktitle={Advances in Neural Information Processing Systems},
  pages={368--374},
  year={2020}
}

@inproceedings{tiwari2023banditpam++,
  title={BanditPAM++: Faster $k$-medoids Clustering},
  author={Tiwari, Mo and Kang, Ryan and Lee, Donghyun and Thrun, Sebastian and Shomorony, Ilan and Zhang, Martin J},
  journal={Advances in Neural Information Processing Systems},
  volume={36},
  pages={73371--73382},
  year={2023}
}

Requirements

TL;DR run python -m pip install banditpam or install.packages(banditpam) and jump to the examples.

If you have any difficulties, please see the platform-specific guides and file a Github issue if you have additional trouble.

Further Reading

Python Quickstart

Install the repo and its dependencies:

This can be done either through PyPI (recommended)

/BanditPAM/: python -m pip install -r requirements.txt
/BanditPAM/: python -m pip install banditpam

OR through the source code via

/BanditPAM/: git submodule update --init --recursive
/BanditPAM/: cd headers/carma
/BanditPAM/: mkdir build && cd build && cmake -DCARMA_INSTALL_LIB=ON .. && sudo cmake --build . --config Release --target install
/BanditPAM/: cd ../../..
/BanditPAM/: python -m pip install -r requirements.txt
/BanditPAM/: sudo python -m pip install .

Example 1: Synthetic data from a Gaussian Mixture Model

from banditpam import KMedoids
import numpy as np
import matplotlib.pyplot as plt

# Generate data from a Gaussian Mixture Model with the given means:
np.random.seed(0)
n_per_cluster = 40
means = np.array([[0,0], [-5,5], [5,5]])
X = np.vstack([np.random.randn(n_per_cluster, 2) + mu for mu in means])

# Fit the data with BanditPAM:
kmed = KMedoids(n_medoids=3, algorithm="BanditPAM")
kmed.fit(X, 'L2')

print(kmed.average_loss)  # prints 1.2482391595840454
print(kmed.labels)  # prints cluster assignments [0] * 40 + [1] * 40 + [2] * 40

# Visualize the data and the medoids:
for p_idx, point in enumerate(X):
    if p_idx in map(int, kmed.medoids):
        plt.scatter(X[p_idx, 0], X[p_idx, 1], color='red', s = 40)
    else:
        plt.scatter(X[p_idx, 0], X[p_idx, 1], color='blue', s = 10)

plt.show()

png

Example 2: MNIST and its medoids visualized via t-SNE

# Start in the repository root directory, i.e. '/BanditPAM/'.
from banditpam import KMedoids
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE

# Load the 1000-point subset of MNIST and calculate its t-SNE embeddings for visualization:
X = pd.read_csv('data/MNIST_1k.csv', sep=' ', header=None).to_numpy()
X_tsne = TSNE(n_components=2).fit_transform(X)

# Fit the data with BanditPAM:
kmed = KMedoids(n_medoids=10, algorithm="BanditPAM")
kmed.fit(X, 'L2')

# Visualize the data and the medoids via t-SNE:
for p_idx, point in enumerate(X):
    if p_idx in map(int, kmed.medoids):
        plt.scatter(X_tsne[p_idx, 0], X_tsne[p_idx, 1], color='red', s = 40)
    else:
        plt.scatter(X_tsne[p_idx, 0], X_tsne[p_idx, 1], color='blue', s = 5)

plt.show()

R Examples

Please see here.

Documentation

Documentation for BanditPAM can be found on read the docs.

Building the C++ executable from source

Please note that it is NOT necessary to build the C++ executable from source to use the Python code above. However, if you would like to use the C++ executable directly, follow the instructions below.

Option 1: Building with Docker

We highly recommend building using Docker. One can download and install Docker by following instructions at the Docker install page. Once you have Docker installed and the Docker Daemon is running, run the following commands:

/BanditPAM/scripts/docker$ chmod +x env_setup.sh
/BanditPAM/scripts/docker$ ./env_setup.sh
/BanditPAM/scripts/docker$ ./run_docker.sh

which will start a Docker instance with the necessary dependencies. Then:

/BanditPAM$ mkdir build && cd build
/BanditPAM/build$ cmake .. && make

This will create an executable named BanditPAM in BanditPAM/build/src.

Option 2: Installing requirements and building directly

Building this repository requires four external requirements:

  • CMake >= 3.17
  • Armadillo >= 10.5.3
  • OpenMP >= 2.5 (OpenMP is supported by default on most Linux platforms, and can be downloaded through homebrew on MacOS)
  • CARMA >= 0.6.2

If installing these requirements from source, one can generally use the following procedure to install each requirement from the library's root folder (with armadillo used as an example here):

/armadillo$ mkdir build && cd build
/armadillo/build$ cmake .. && make && sudo make install

Note that CARMA has different installation instructions; see its instructions.

Platform-specific installation guides

Further installation information for MacOS, Linux, and Windows is available in the docs folder. Ensure all the requirements above are installed and then run:

/BanditPAM$ mkdir build && cd build
/BanditPAM/build$ cmake .. && make

This will create an executable named BanditPAM in BanditPAM/build/src.

C++ Usage

Once the executable has been built, it can be invoked with:

/BanditPAM/build/src/BanditPAM -f [path/to/input.csv] -k [number of clusters]
  • -f is mandatory and specifies the path to the dataset
  • -k is mandatory and specifies the number of clusters with which to fit the data

For example, if you ran ./env_setup.sh and downloaded the MNIST dataset, you could run:

/BanditPAM/build/src/BanditPAM -f ../data/MNIST_1k.csv -k 10

The expected output in the command line will be:

Medoids: 694,168,306,714,324,959,527,251,800,737

Implementing a custom distance metric

One of the advantages of $k$-medoids is that it works with arbitrary distance metrics; in fact, your "metric" need not even be a real metric -- it can be negative, asymmetric, and/or not satisfy the triangle inequality or homogeneity. Any pairwise dissimilarity function works with $k$-medoids.

This also allows for clustering of "exotic" objects like trees, graphs, natural language, and more -- settings where running $k$-means wouldn't even make sense. We talk about one such setting in the full paper.

The package currently supports a number of distance metrics, including all $L_p$ losses and cosine distance.

If you're willing to write a little C++, you only need to add a few lines to kmedoids_algorithm.cpp and kmedoids_algorithm.hpp to implement your distance metric / pairwise dissimilarity!

Then, be sure to re-install the repository with a python -m pip install . (note the trailing .).

The maintainers of this repository are working on permitting arbitrary dissimilarity metrics that users write in Python, as well; see #4.

Testing

To run the full suite of tests, run in the root directory:

/BanditPAM$ python -m unittest discover -s tests

Alternatively, to run a "smaller" set of tests, from the main repo folder run python tests/test_smaller.py or python tests/test_larger.py to run a set of longer, more intensive tests.

Credits

Mo Tiwari wrote the original Python implementation of BanditPAM and many features of the C++ implementation. Mo and Adarsh Kumarappan now maintain the implementations.

James Mayclin developed the initial C++ implementation of BanditPAM.

The original BanditPAM paper was published by Mo Tiwari, Martin Jinye Zhang, James Mayclin, Sebastian Thrun, Chris Piech, and Ilan Shomorony.

We would like to thank Jerry Quinn, David Durst, Geet Sethi, and Max Horton for helpful guidance regarding the C++ implementation.

Metadata

Release files for banditpam 6.0.2

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

Source distribution (sdist)

Source distribution for banditpam 6.0.2
File Size Uploaded
banditpam-6.0.2.tar.gz 190.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for banditpam 6.0.2
File
banditpam-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
banditpam-6.0.2-cp313-cp313-musllinux_1_2_i686.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-32 Details
banditpam-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
banditpam-6.0.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-32 Details
banditpam-6.0.2-cp313-cp313-macosx_15_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 15.0+ x86-64 Details
banditpam-6.0.2-cp313-cp313-macosx_15_0_universal2.whl CPython 3.13 CPython 3.13 macOS 15.0+ universal2 (ARM64, x86-64) Details
banditpam-6.0.2-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details
banditpam-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
banditpam-6.0.2-cp312-cp312-musllinux_1_2_i686.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-32 Details
banditpam-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
banditpam-6.0.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-32 Details
banditpam-6.0.2-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details
banditpam-6.0.2-cp312-cp312-macosx_15_0_universal2.whl CPython 3.12 CPython 3.12 macOS 15.0+ universal2 (ARM64, x86-64) Details
banditpam-6.0.2-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details
banditpam-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
banditpam-6.0.2-cp311-cp311-musllinux_1_2_i686.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-32 Details
banditpam-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
banditpam-6.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-32 Details
banditpam-6.0.2-cp311-cp311-macosx_15_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 15.0+ x86-64 Details
banditpam-6.0.2-cp311-cp311-macosx_15_0_universal2.whl CPython 3.11 CPython 3.11 macOS 15.0+ universal2 (ARM64, x86-64) Details
banditpam-6.0.2-cp311-cp311-macosx_15_0_arm64.whl CPython 3.11 CPython 3.11 macOS 15.0+ ARM64 Details
banditpam-6.0.2-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
banditpam-6.0.2-cp310-cp310-musllinux_1_2_i686.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-32 Details
banditpam-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
banditpam-6.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-32 Details
banditpam-6.0.2-cp310-cp310-macosx_15_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 15.0+ x86-64 Details
banditpam-6.0.2-cp310-cp310-macosx_15_0_universal2.whl CPython 3.10 CPython 3.10 macOS 15.0+ universal2 (ARM64, x86-64) Details
banditpam-6.0.2-cp310-cp310-macosx_15_0_arm64.whl CPython 3.10 CPython 3.10 macOS 15.0+ ARM64 Details

Total release size: 292.9 MB

Release files / banditpam-6.0.2.tar.gz

Download URL banditpam-6.0.2.tar.gz
Size 190.9 kB
Tags Source
SHA-256 checksum
How to use checksums
97aed9021c63632b41ee6b0c07571d7b5e53f136209775192d37c85ec81fb3f5
BLAKE2b-256 checksum
How to use checksums
70dceb71e65d760cccd0df414d1df0b0b2839dfa8a7909634495f9104e70aa5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL banditpam-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Size 11.2 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
16062425accfa05649daf47881abe1d419efba0f93479592e120c5b851fd5bb7
BLAKE2b-256 checksum
How to use checksums
36fa0ef2b6c74b2f5a2ccfdc2271db33e7289c59b1f71dfc51b93e0a63a42c03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp313-cp313-musllinux_1_2_i686.whl

Download URL banditpam-6.0.2-cp313-cp313-musllinux_1_2_i686.whl
Size 11.1 MB
Tags CPython 3.13 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
24cc0c158dd34c93b18ee965860be02d58fccb168bfdc2b6ab839931a645e9f8
BLAKE2b-256 checksum
How to use checksums
184220bec3972708266600ed924af9378fe483131a002c908eafb05fb9506e50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL banditpam-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 13.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a19bd78cc94cf621d53078a0c4238fc745d608cc29d9da62083bc0e0af2e021d
BLAKE2b-256 checksum
How to use checksums
546a13058bd5583fc2d8241a2bdd06132beaf3f4db923fee5df8cdd18639f63c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL banditpam-6.0.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Size 13.1 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
9752b8cf547b960df27e10e6fa2b5fa586ca62f4ade9adf3b4c40a1d5743d0ca
BLAKE2b-256 checksum
How to use checksums
d8cfd3c22e53aed508c53e8ec1b16fc297305a6fd56bf584862eb2d91f934524
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp313-cp313-macosx_15_0_x86_64.whl

Download URL banditpam-6.0.2-cp313-cp313-macosx_15_0_x86_64.whl
Size 305.5 kB
Tags CPython 3.13 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
dc784fbbe9a51d94f46cb43c75afae0c7b450999c3658a31069db07860fda5c7
BLAKE2b-256 checksum
How to use checksums
14c1c7bc2558dcf1dcb0022fb9da24de635421905a8059909f78e312f7fe8732
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp313-cp313-macosx_15_0_universal2.whl

Download URL banditpam-6.0.2-cp313-cp313-macosx_15_0_universal2.whl
Size 12.3 MB
Tags CPython 3.13 macOS 15.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
fbcb77ffbae610dcad569262256e69bca48a66909ab3a8e9ac295c7b838af500
BLAKE2b-256 checksum
How to use checksums
26c805b439d860580ee21f418549074ab7b34bc17fb18b88422b93edccc00a0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp313-cp313-macosx_15_0_arm64.whl

Download URL banditpam-6.0.2-cp313-cp313-macosx_15_0_arm64.whl
Size 12.1 MB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
78245ebf3cde86aaf01de1a1e7a01f68dbaa8244700931307368a91b54c237c4
BLAKE2b-256 checksum
How to use checksums
6e9a3c81c4ce2713fa936a59224bd306d7f8500b48a31dd58f6b1baeeb1b0d72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL banditpam-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Size 11.1 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
44729a97d52dcef8a0efe26387885016aac95610ea1443808199b6d6b551a136
BLAKE2b-256 checksum
How to use checksums
4c37f2174e34c9c3ac57a35534727ee3ca2dec1e36407dda92e55b6aea740fbd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp312-cp312-musllinux_1_2_i686.whl

Download URL banditpam-6.0.2-cp312-cp312-musllinux_1_2_i686.whl
Size 11.1 MB
Tags CPython 3.12 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
9ee4e66a619d2485deade303a7bb67d241607cc57014df4c575a5954b0b7d4ee
BLAKE2b-256 checksum
How to use checksums
76f75f23595eec2fb79dbf0b277cf9ab5727ced4e3943876d602539e0993c074
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL banditpam-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 13.4 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
aaf04741bc2ece5b25a013fdfcc59874ccbac5e72a9fa25e156ad8877e0c63cf
BLAKE2b-256 checksum
How to use checksums
6325e45eb7fb90255a6553796d51927f3fe335131d97bbfa87b03931aedae152
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL banditpam-6.0.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Size 13.1 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
bb065edae8bd2daf205860f037fe00f007a819549efeb6f9724f23190bcf4fb9
BLAKE2b-256 checksum
How to use checksums
d51d790973c1d72107ac09d9c5ad71dae62f634ff4c3202ea06d91c3c6425ff5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp312-cp312-macosx_15_0_x86_64.whl

Download URL banditpam-6.0.2-cp312-cp312-macosx_15_0_x86_64.whl
Size 305.5 kB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
26b057b7a80c097870dd1537aad3135ae2175467e44084630c74d1fa6ede8e11
BLAKE2b-256 checksum
How to use checksums
f6b759f78f835ac3b98992142613b1cfe6f4dd264d6e3cdc6e2aa0768763f312
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp312-cp312-macosx_15_0_universal2.whl

Download URL banditpam-6.0.2-cp312-cp312-macosx_15_0_universal2.whl
Size 12.3 MB
Tags CPython 3.12 macOS 15.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
54b417176061a13648f232f20610a146768e3c6404940dc02ec70b4070247e85
BLAKE2b-256 checksum
How to use checksums
6f57a6697fb384068af49ae42f6b95b32c2a2b30893b409ce21f5f8d5b2d3336
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp312-cp312-macosx_15_0_arm64.whl

Download URL banditpam-6.0.2-cp312-cp312-macosx_15_0_arm64.whl
Size 12.1 MB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
dbb4fdb933d56ae4539077970a5a86e65befbfe0cbbdff9010c8f5ba6f85a1b6
BLAKE2b-256 checksum
How to use checksums
0a9872df6d1a2ecd7dd5c452151fa3d5c4c8d52d4e8903963abb1d070e2ea77a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL banditpam-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Size 11.0 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5b64fb8be1efe82feea285baa6e27fbd513279a73cc93dd37ec6c61b792db2ff
BLAKE2b-256 checksum
How to use checksums
40a3786f5f8588f187eec99beb9a0d38ac6d28613da93591aa8599d59f319a75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp311-cp311-musllinux_1_2_i686.whl

Download URL banditpam-6.0.2-cp311-cp311-musllinux_1_2_i686.whl
Size 11.1 MB
Tags CPython 3.11 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
8e3430c3becb2306aad81a7e165d461b43d33c654879e24ee8f67eef815151c7
BLAKE2b-256 checksum
How to use checksums
8566c175575b106d4e79a3514db6f6867f02130d00b413d857315572be4a716b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL banditpam-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 13.3 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
00ad511cf52aca7d050c286cc75218fe990c20f69ee44b661a4fa76578696243
BLAKE2b-256 checksum
How to use checksums
fcab84c8a0c1619bb50de29ac903dccb6289312b528311b2a6e9a9a6e6201ba0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL banditpam-6.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Size 13.1 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
b7518e2512cc18de7ee04c708c48118ab7bb044dd7dc16b844fc89d5aef0be84
BLAKE2b-256 checksum
How to use checksums
4d13477b05718e3e3332fbc582ae0a23f9f97e5c1b79591721b1779476120d0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp311-cp311-macosx_15_0_x86_64.whl

Download URL banditpam-6.0.2-cp311-cp311-macosx_15_0_x86_64.whl
Size 304.0 kB
Tags CPython 3.11 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
e577c4d48001cd51ede75e7370213234fb365f5df55a0ae700f95d90c85d2ee4
BLAKE2b-256 checksum
How to use checksums
8c97b54bee5bc2c51b30f752dfb9414db56fc67ba7f5a98220598b9632458e86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp311-cp311-macosx_15_0_universal2.whl

Download URL banditpam-6.0.2-cp311-cp311-macosx_15_0_universal2.whl
Size 12.3 MB
Tags CPython 3.11 macOS 15.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
2ded803a03cc181adb62d508a690f268c28d09011893283e98cfde2c56804752
BLAKE2b-256 checksum
How to use checksums
a3bb1b54ab8553fa6f580a18bbdfa05cc67100625c16e6a8e9a0e7ff957daf1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp311-cp311-macosx_15_0_arm64.whl

Download URL banditpam-6.0.2-cp311-cp311-macosx_15_0_arm64.whl
Size 12.1 MB
Tags CPython 3.11 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
266fecf12e6a5589673577eb8378e7d2352b42025a596f512a3c5262ca6425fd
BLAKE2b-256 checksum
How to use checksums
9d0516bfd9d02aa9e975ce783eb5059da15dbc68ef5e0e1151325ca0365dce33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL banditpam-6.0.2-cp310-cp310-musllinux_1_2_x86_64.whl
Size 10.9 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
14b52d8319cc1c14ed5f57a3e6fa90376cbd6e1a57f9fa0a481f0039a006fe7c
BLAKE2b-256 checksum
How to use checksums
448c7fe37d55b533a0eca730c947e3c7774f7f5829d1f35ba27ab40cadcd5e94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp310-cp310-musllinux_1_2_i686.whl

Download URL banditpam-6.0.2-cp310-cp310-musllinux_1_2_i686.whl
Size 11.0 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
91004d0688f7dd9cca9e72ba83a3be34b8bcd513b6e9c7fb4bd34582f5a09f5f
BLAKE2b-256 checksum
How to use checksums
9612d7e689c1bd59e97371b915aac0404f63d503b3cf85b4e6a3ceeeac7a4048
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL banditpam-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 13.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f2f03403a9bff273beadb61f772b362157fee4cd1afbe45bfb42cb4e6625fa01
BLAKE2b-256 checksum
How to use checksums
356d77132d5e2a5a7cc2416e1be55f44848e33b6f982d151ebb431d8ce3ee044
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL banditpam-6.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Size 12.9 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
d4e813a13b507e7961f1bf8ed41e151cceb80c3e9cab99383db5757850f90be4
BLAKE2b-256 checksum
How to use checksums
2bcdc2d49a681f6c7fce3d533b5227e69b61c82f2678cbd16c1fce5e082f80c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp310-cp310-macosx_15_0_x86_64.whl

Download URL banditpam-6.0.2-cp310-cp310-macosx_15_0_x86_64.whl
Size 302.5 kB
Tags CPython 3.10 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
953f31556cd88d6df81456de55ec3297cc843d25ee0c30b90bcb14db07d48019
BLAKE2b-256 checksum
How to use checksums
9e23b08e0f7b923a58863245b4c98bce14ee378abf9aafbedc85bd79766d4cea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp310-cp310-macosx_15_0_universal2.whl

Download URL banditpam-6.0.2-cp310-cp310-macosx_15_0_universal2.whl
Size 12.3 MB
Tags CPython 3.10 macOS 15.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
87af98d167146c1b93b9ca82bed725c55fb6219c963520b616fb6ebe25196630
BLAKE2b-256 checksum
How to use checksums
d964bbcacc1d42e88a1ad72e8e7df7c7ee24b9a24e4712ec43159c79008d7225
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / banditpam-6.0.2-cp310-cp310-macosx_15_0_arm64.whl

Download URL banditpam-6.0.2-cp310-cp310-macosx_15_0_arm64.whl
Size 12.1 MB
Tags CPython 3.10 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
406ebbfa3644fe7b3d0759248709d54c65adaeff90baeaef0f700feedb67d499
BLAKE2b-256 checksum
How to use checksums
2b08a28447f6b54f1dcac352518eb055c21bd2fc393bfbcc9240455b6f3d3ca6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

6.0.2 This release

29 release files

6.0.1

29 release files

6.0.0

25 release files

5.0.0

29 release files

4.0.4

45 release files

4.0.3

45 release files

4.0.2

45 release files

4.0.1

45 release files

4.0.0

45 release files

3.0.4

36 release files

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.0.0

1 release file

1.0.5

1 release file

1.0.2

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page