Skip to main content

A Python library for Adaptive Resonance Theory (ART) algorithms.

Project description

AdaptiveResonanceLib

Welcome to AdaptiveResonanceLib, a comprehensive and modular Python library for Adaptive Resonance Theory (ART) algorithms. Based on scikit-learn, our library offers a wide range of ART models designed for both researchers and practitioners in the field of machine learning and neural networks. Whether you're working on classification, clustering, or pattern recognition, AdaptiveResonanceLib provides the tools you need to implement ART algorithms efficiently and effectively.

Adaptive Resonance Theory (ART)

Adaptive Resonance Theory (ART) is both

  1. A neuroscientific theory of how the brain balances plasticity (learning new information) with stability (retaining what it already knows), and
  2. A family of machine‑learning algorithms that operationalise this idea for clustering, classification, continual‑learning, and other tasks.

First proposed by Stephen Grossberg and Gail Carpenter in the mid‑1970s , ART models treat learning as an interactive search between bottom‑up evidence and top‑down expectations:

  1. Activation. A new input pattern activates stored memories (categories) in proportion to their similarity to the input.

  2. Candidate selection. The most active memory (call it J) is tentatively chosen to represent the input.

  3. Vigilance check (resonance test). The match between the input and memory J is compared to a user‑chosen threshold (ρ) (the vigilance parameter).

    • If the match ≥ (ρ) → Resonance. The memory and input are deemed compatible; J is updated to incorporate the new information.
    • If the match < (ρ) → Mismatch‑reset. Memory J is temporarily inhibited, and the next best candidate is tested.
    • If no memory passes the test → a new category is created directly from the input.
  4. Output. In clustering mode, the index of the resonant (or newly created) memory is returned as the cluster label.

A step-by-step flow chart depicting the generalized ART algorithm can be found here.

Vigilance

ρ sets an explicit upper bound on how dissimilar two inputs can be while still ending up in the same category:

Vigilance (ρ) Practical effect
( ρ = 0 ) All inputs merge into a single, broad category
Moderate (( 0 < ρ < 1 )) Finer granularity as (ρ) increases
( ρ = 1 ) Every distinct input forms its own category (memorisation)

This single knob lets practitioners trade off specificity against generality without retraining from scratch.

Notable Variants

Variant Input type Task Trait
ART 1 Binary Unsupervised clustering Original model
Fuzzy ART Real‑valued ([0,1]) Unsupervised clustering Uses fuzzy AND operator for analog inputs, resulting in rectagular categories
ARTMAP Paired inputs ((X, y)) Supervised classification Two ART modules linked by an associative map field
Gaussian ART Real‑valued Clustering Replace rectangular category fields with Gaussian ones for smoother decision boundaries
FALCON Paired inputs ((State, Action, Reward)) Reinforcement Learning Uses three ART modules to create a dynamic SARSA grid for solving reinforcement learning tasks

All variants share the same resonance‑test backbone, so you can grasp one and quickly extend to the others.

Strengths and Things to Watch

  • Online / incremental learning – adapts one sample at a time without replay.
  • Explicit category prototypes – easy to inspect and interpret.
  • Built‑in catastrophic‑forgetting control via (ρ).
  • Parameter sensitivity – vigilance (and, in many variants, the learning rate (\beta)) must be tuned to your data.
  • Order dependence – the sequence of inputs can affect category formation; shuffling your training data is recommended for unbiased results.

Available Models

AdaptiveResonanceLib includes implementations for the following ART models:

Comparison of Elementary Models

Comparison of Elementary Images

Installation

To install AdaptiveResonanceLib, simply use pip:

pip install artlib

Or to install directly from the most recent source:

pip install git+https://github.com/NiklasMelton/AdaptiveResonanceLib.git@develop

Ensure you have Python 3.9 or newer installed.

Quick Start

Here are some quick examples to get you started with AdaptiveResonanceLib:

Clustering Data with the Fuzzy ART model

from artlib import FuzzyART
import numpy as np
from tensorflow.keras.datasets import mnist

# Load the MNIST dataset
n_dim = 28*28
(X_train, _), (X_test, _) = mnist.load_data()
X_train = X_train.reshape((-1, n_dim)) # flatten images
X_test = X_test.reshape((-1, n_dim))

# Initialize the Fuzzy ART model
model = FuzzyART(rho=0.7, alpha = 0.0, beta=1.0)

# (Optional) Tell the model the data limits for normalization
lower_bounds = np.array([0.]*n_dim)
upper_bounds = np.array([255.]*n_dim)
model.set_data_bounds(lower_bounds, upper_bounds)

# Prepare Data
train_X_prep = model.prepare_data(X_train)
test_X_prep = model.prepare_data(X_test)

# Fit the model
model.fit(train_X_prep)

# Predict data labels
predictions = model.predict(test_X_prep)

Fitting a Classification Model with SimpleARTMAP

from artlib import GaussianART, SimpleARTMAP
import numpy as np
from tensorflow.keras.datasets import mnist

# Load the MNIST dataset
n_dim = 28*28
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape((-1, n_dim)) # flatten images
X_test = X_test.reshape((-1, n_dim))

# Initialize the Gaussian ART model
sigma_init = np.array([0.5]*X_train.shape[1]) # variance estimate for each feature
module_a = GaussianART(rho=0.0, sigma_init=sigma_init)

# (Optional) Tell the model the data limits for normalization
lower_bounds = np.array([0.]*n_dim)
upper_bounds = np.array([255.]*n_dim)
module_a.set_data_bounds(lower_bounds, upper_bounds)

# Initialize the SimpleARTMAP model
model = SimpleARTMAP(module_a=module_a)

# Prepare Data
train_X_prep = model.prepare_data(X_train)
test_X_prep = model.prepare_data(X_test)

# Fit the model
model.fit(train_X_prep, y_train)

# Predict data labels
predictions = model.predict(test_X_prep)

Fitting a Regression Model with FusionART

from artlib import FuzzyART, HypersphereART, FusionART
import numpy as np

# Your dataset
X_train = np.array([...]) # shape (n_samples, n_features_X)
y_train = np.array([...]) # shape (n_samples, n_features_y)
test_X = np.array([...])

# Initialize the Fuzzy ART model
module_x = FuzzyART(rho=0.0, alpha = 0.0, beta=1.0)

# Initialize the Hypersphere ART model
r_hat = 0.5*np.sqrt(X_train.shape[1]) # no restriction on hyperpshere size
module_y = HypersphereART(rho=0.0, alpha = 0.0, beta=1.0, r_hat=r_hat)

# Initialize the FusionARTMAP model
gamma_values = [0.5, 0.5] # eqaul weight to both channels
channel_dims = [
  2*X_train.shape[1], # fuzzy ART complement codes data so channel dim is 2*n_features
  y_train.shape[1]
]
model = FusionART(
  modules=[module_x, module_y],
  gamma_values=gamma_values,
  channel_dims=channel_dims
)

# Prepare Data
train_Xy = model.join_channel_data(channel_data=[X_train, y_train])
train_Xy_prep = model.prepare_data(train_Xy)
test_Xy = model.join_channel_data(channel_data=[X_train], skip_channels=[1])
test_Xy_prep = model.prepare_data(test_Xy)

# Fit the model
model.fit(train_Xy_prep)

# Predict y-channel values and clip X values outside previously observed ranges
pred_y = model.predict_regression(test_Xy_prep, target_channels=[1], clip=True)

Data Normalization

AdaptiveResonanceLib models require feature data to be normalized between 0.0 and 1.0 inclusively. This requires identifying the boundaries of the data space.

If the first batch of your training data is representative of the entire data space, you dont need to do anything and artlib will identify the data bounds automatically. However, this will often not be sufficient and the following work-arounds will be needed:

Users can manually set the bounds using the following code snippet or similar:

# Set the boundaries of your data for normalization
lower_bounds = np.array([0.]*n_features)
upper_bounds = np.array([1.]*n_features)
model.set_data_bounds(lower_bounds, upper_bounds)

Or users can present all batches of data to the model for automatic boundary identification:

# Find the boundaries of your data for normalization
all_data = [train_X, test_X]
_, _ = model.find_data_bounds(all_data)

If only the boundaries of your testing data are unknown, you can call model.predict() with clip=True to clip testing data to the bounds seen during training. Only use this if you understand what you are doing.

C++ Optimizations

Most ARTlib classes rely on NumPy / SciPy for linear-algebra routines, but several go further:

Level Accelerated components Implementations
Python (Numba JIT) Activation & vigilance kernels ART1, Fuzzy ART, Binary Fuzzy ART
Native C++ (Pybind11) Entire fit / predict pipelines Fuzzy ARTMAP, Hypersphere ARTMAP, Gaussian ARTMAP, Binary Fuzzy ARTMAP

How the C++ variants work

  1. End-to-end native execution – Training and inference run entirely in C++, eliminating Python-level overhead.
  2. State hand-off – After fitting, the C++ routine exports cluster weights and metadata back to the corresponding pure-Python class. You can therefore: • inspect attributes (weights_, categories_, …) • serialize with pickle • plug them into any downstream ARTlib or scikit-learn pipeline exactly as you would with the Python-only models.
  3. Trade-off – The C++ versions sacrifice some modularity (you cannot swap out internal ART components) in exchange for significantly shorter run-times.

C++ Acceleration Quick reference

Class Acceleration method Primary purpose
ART1 Numba JIT kernels Clustering
Fuzzy ART Numba JIT kernels Clustering
Binary Fuzzy ART Numba JIT kernels Clustering
Fuzzy ARTMAP Full C++ implementation Classification
Hypersphere ARTMAP Full C++ implementation Classification
Gaussian ARTMAP Full C++ implementation Classification
Binary Fuzzy ARTMAP Full C++ implementation Classification

Example Usage

from artlib import FuzzyARTMAP
import numpy as np
from tensorflow.keras.datasets import mnist

# Load the MNIST dataset
n_dim = 28*28
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape((-1, n_dim)) # flatten images
X_test = X_test.reshape((-1, n_dim))

# Initialize the Fuzzy ART model
model = FuzzyARTMAP(rho=0.7, alpha = 0.0, beta=1.0)

# (Optional) Tell the model the data limits for normalization
lower_bounds = np.array([0.]*n_dim)
upper_bounds = np.array([255.]*n_dim)
model.set_data_bounds(lower_bounds, upper_bounds)

# Prepare Data
train_X_prep = model.prepare_data(X_train)
test_X_prep = model.prepare_data(X_test)

# Fit the model
model.fit(train_X_prep, y_train)

# Predict data labels
predictions = model.predict(test_X_prep)

Timing Comparison

The below figures demonstrate the acceleration seen by the C++ ARTMAP variants in comparison to their baseline Python versions for a 1000 sample subset of the MNIST dataset.

MNIST ART fit times MNIST ART predict times

From the above plots, it becomes apparent that the C++ variants are superior in their runtime performance and should be the default choice of practitioners wishing to work with these specific compound models.

While the current selection remains limited, future releases will expand the native C++ implementation as user demand for them increases.

Documentation

For more detailed documentation, including the full list of parameters for each model, visit our Read the Docs page.

Examples

For examples of how to use each model in AdaptiveResonanceLib, check out the /examples directory in our repository.

Contributing

We welcome contributions to AdaptiveResonanceLib! If you have suggestions for improvements, or if you'd like to add more ART models, please see our CONTRIBUTING.md file for guidelines on how to contribute.

You can also join our Discord server and participate directly in the discussion.

License

AdaptiveResonanceLib is open source and available under the MIT license. See the LICENSE file for more info.

Contact

For questions and support, please open an issue in the GitHub issue tracker or message us on our Discord server. We'll do our best to assist you.

Happy Modeling with AdaptiveResonanceLib!

Citing this Repository

If you use this project in your research, please cite it as:

Melton, N. (2025). AdaptiveResonanceLib (Version 0.1.10)

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

artlib-0.1.10.tar.gz (118.9 kB view details)

Uploaded Source

Built Distributions

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

artlib-0.1.10-cp314-cp314-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.14Windows x86-64

artlib-0.1.10-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (14.7 MB view details)

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

artlib-0.1.10-cp314-cp314-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

artlib-0.1.10-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

artlib-0.1.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (14.7 MB view details)

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

artlib-0.1.10-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

artlib-0.1.10-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

artlib-0.1.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (14.7 MB view details)

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

artlib-0.1.10-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

artlib-0.1.10-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

artlib-0.1.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (14.4 MB view details)

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

artlib-0.1.10-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

artlib-0.1.10-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

artlib-0.1.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (14.3 MB view details)

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

artlib-0.1.10-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

artlib-0.1.10-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

artlib-0.1.10-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (14.3 MB view details)

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

artlib-0.1.10-cp39-cp39-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file artlib-0.1.10.tar.gz.

File metadata

  • Download URL: artlib-0.1.10.tar.gz
  • Upload date:
  • Size: 118.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for artlib-0.1.10.tar.gz
Algorithm Hash digest
SHA256 3e9478e629f099cc8b19914852d438012a45e59bf16bc393c953074726beffa6
MD5 54ddaa8f50fd47b7eea3be31e899664c
BLAKE2b-256 2abf9da842cb73112980c07429a416afbd15d16597ff1e99fb433845ffe1ae81

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: artlib-0.1.10-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for artlib-0.1.10-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2c0cc1f8ca07ea3e0db05b57bcd7da2b5de0b1102edaf70e152633d24f896448
MD5 bf2a56c975c56f2d05eaf54949e27e76
BLAKE2b-256 9e2f8f48092b685dd56dbd12b60225d8d358613ba8245818045c01bfe297a465

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c7a38a7c7da394b42201659f1ab166d275c3121b63a07d6cfb9ce4a202de0d60
MD5 dc1b97b8a941af666a1a75fc05a40596
BLAKE2b-256 7f3365ec87ca1b1b81bc671a7db42a4ec2cbe2a07f8fabd115362ca9ebb8550a

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 50966b0261c6ef8493a5c18d3450eef3e39313cc9b12a8aadd0b1796f4b9a2cd
MD5 e23ff8ee426d9898e6d487892b94bbe6
BLAKE2b-256 9212b2a06904c38e8597bbc018b59ff44201d55f428401fee3ac36b940ea7e90

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: artlib-0.1.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for artlib-0.1.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a5b27df3d18d6071206cc2434ef4bf9052e40326896cb55c99914c03eeb26d90
MD5 ab44b187f72dae6e015a74ca4772239f
BLAKE2b-256 7e76bfdcadea781b3d581b97b011a3139d4422bcc21dfa0d77ac1f027c17e544

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf46adba867171095cad469306b418684c74a525b5bc36055c131e7e369da72d
MD5 5c8f7ae7840b1a1ded3ef0800f6de51d
BLAKE2b-256 3d2b07e4953b54770facb8bfae0e1bffb4895a2a2a13b62d55b05af83ec5abc3

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78ae12ad5f76e1824ad6a1b5eb264bd80b6d7288d7334a84afa5946acd55e14a
MD5 56efa56a5f8b1ac58408148d7dc0813c
BLAKE2b-256 756a9cf79c7155df5b74c27689f35a8ebaca9cbdfa80bb28bd26a97a70aed6eb

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: artlib-0.1.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for artlib-0.1.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b872389be08047649e56454148bc1c7adfbe3cea4b0f9ede3fb83a677352de7f
MD5 ccf7cc1d84afd8d1c87b54687a79c772
BLAKE2b-256 bd1f0b7df21f133239e0fb8113a7bd94c65bf856e327b058537c394444f3a4ee

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5033e96c9030117a80e0aaccc9fd59d7b536738c8d70b0fdd26894265dce0961
MD5 10d567a914c237a00e4fc381845f86ca
BLAKE2b-256 88a243cd588a8f88b5afab315c4b01aefdc2d44b1545655b4110527c227412dd

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b304f306e29ef56d7ac6996657a4b360b3ed591ed7af23c7818d5c4a09b9b64d
MD5 15089859ccbae0f028fa368af2ebf611
BLAKE2b-256 981bbf39ba6f72bd05ce5c8385511b236e21bd7d4d41e920fba7656de551ef8f

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: artlib-0.1.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for artlib-0.1.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 968153790b938326eb26917aecd2f092e9c5c412ca2229ebd81d75dcffcc9998
MD5 b40d94c5a61ff48a5ce8e09fc466e1d2
BLAKE2b-256 92fa5e40bfea368c13e6bc17e24a96241608a030165337667054e99236b08981

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0942db5f1178a2b98979aeaa9418ff5c17ed37b77071f7099929df783fca7282
MD5 ab3f4c75d605c644aba806eb3364fdf0
BLAKE2b-256 f1665b676abc8803a69b1281496b61f19e5eb8dbff04469ebc880ee2a4890c56

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2405a4b3d4bd77d22a293e6fcc30042a189fa372f6184b946bbb87a74baa32d1
MD5 50b6eaaa06dc50aecbe5eebb253caea3
BLAKE2b-256 467fbee8c957570d4b189e1a83e9d7743920219670c79a5cb563c95cd9983f0d

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: artlib-0.1.10-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for artlib-0.1.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e4df356c51a26580e84e526cda0aa7d76585a82cdd7838a07ae8ed5142ca49e4
MD5 300ffd5150e6e38b298cc0883dc55326
BLAKE2b-256 c22e0d85e407ff3ab8a5fe5532ab0f6821fc1bbbb75cb03a771f92fe1a15e8ea

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4c7e68adccb55a436561e33451121e6cb1eb07b7cc5bfdf1a4ed87b67ef3cd3
MD5 6e3351a4203faccf0cebb8f755178145
BLAKE2b-256 0236e0b9ae9cd45047ee71de94ecf6457f2c9cda810fd6ffba0f87d9ddbfb933

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0b5c75e47294b7a543cd46d9dc6b42114bd73b440f35609260ef5cc39243b18
MD5 bd4bf2d3fe59d7199a6edc2bf5e53f04
BLAKE2b-256 80ecf865b64dfe1fd9920b57398fc437cfa31d4a675fa7cceb78461b3c82adf2

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: artlib-0.1.10-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for artlib-0.1.10-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d2f0582a5b10e9196c90579ff7ea58f6bc337c07e1cc7b4d6ec390c25af256b5
MD5 d752e6ef58b90d3a02b83c00ba1a8f46
BLAKE2b-256 62cc31edcf95bfb8f06117d25decd38b0585a3000bf9be55a5657a0e0da26c6f

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08c6d0ec31c3e4dde742edc81a05b10867db0288bdf217698b9d9ec7bba69e1c
MD5 35c63b29fe13fb4ef8f7b625f8b1a4be
BLAKE2b-256 4ab22c415a1d38a0c4622a72064215aee349c24a8dd9344154abe380173bf8e2

See more details on using hashes here.

File details

Details for the file artlib-0.1.10-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for artlib-0.1.10-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f5edd298bc47e08eaa725e7f5164c7597805d9cf89459ccf83ac7b41a17914e6
MD5 b9829deabd40ef7fa6fc716bd2787fbf
BLAKE2b-256 c5d724fa5e6104382768af3594f01a0c4fdd12d10d4ccce7f80f5d409cffa70a

See more details on using hashes here.

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