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.9)

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.9.tar.gz (118.6 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.9-cp314-cp314-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.14Windows x86-64

artlib-0.1.9-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.9-cp314-cp314-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

artlib-0.1.9-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.9-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

artlib-0.1.9-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.9-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

artlib-0.1.9-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.9-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

artlib-0.1.9-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.9-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

artlib-0.1.9-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.9-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.9.tar.gz.

File metadata

  • Download URL: artlib-0.1.9.tar.gz
  • Upload date:
  • Size: 118.6 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.9.tar.gz
Algorithm Hash digest
SHA256 65f45d70734612f855533ebc1588b69246d04c09abb37eff590ee75a77a3869b
MD5 8ef5357fa40e96510490d770bfd02763
BLAKE2b-256 b235b138c4c6823f354e19ff54d0c87e07b08f13b0b4ced4a299cecd61a06051

See more details on using hashes here.

File details

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

File metadata

  • Download URL: artlib-0.1.9-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.9-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 feb68233178f9003ba1697f4a51ee1fe63f4ed4ecdbe3fa98d5422c5bd725a48
MD5 8cb165af304b156de6ed65e176c672fe
BLAKE2b-256 cd9f3878dea12104e1873de62f1116e2711818e3528491821d374ff8daff6b95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ecf4bda3590833e58669d0892c7d35bff12b6b7561974868af4ade8f5a1f8340
MD5 2fb45f4ff5dc28f133ce2200cf2e9af1
BLAKE2b-256 249732c0a3b5ea88a4e25512f20b16113780d210b0ca1b1a5b85e1e98926eada

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a3ecdd92ff1f44939c062b5219eccbb3ce3a454851ce8bf07774302bddd5358
MD5 f001f280b79e993fb902b3cabf8011a4
BLAKE2b-256 92a5e8737789e116730b2e7d1933bad854654983799ec13428c4a7e926e758d6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: artlib-0.1.9-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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 eab2a9ab8d3a19b0ca73c10ee5b69c579e060f875e82d1202a9444b7f6ff7d6d
MD5 51b70fc471c17b132afbc3be928fcf82
BLAKE2b-256 7e521d6f48734326ea1babccd4942ff6102885b767e0664090c806ff7500d6d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2c5e894c606b5b64515559477bd7293ffacbfb205798b87be080b4f6adf6c16b
MD5 e978f02b8902db466685852ea1961d78
BLAKE2b-256 c06568ded5130d1af915861d2f272c8f4b63c9bcf0e96aa87a2efaccee01c5ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a410b6760f83528d6e00292bed04ae8c5bff50eb64b108f3c61228e84b8f1c8
MD5 0ef478b733647944f2a2006ed81d2bba
BLAKE2b-256 2720236f7e893ad8569d8c83cc34fc4dfe8de368ea189e9188d2014a3ddf879e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: artlib-0.1.9-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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 15daf028a4c2328e617f98d050dd925ad7495b19fb8f94c5370b080d39695936
MD5 548a9589f6f250fa758f8b27ca4c6809
BLAKE2b-256 42c57d94b97dfb8f5b56aa732f3302864e7d51312a5252dc0569f8a7ac60f4f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c9edbfc088c1b173bd8b36376840aa44ebb127dbc36c6e39d06e7f586f813ec4
MD5 e959b1d152cae711c493a05d877f3a25
BLAKE2b-256 1de99512dc502c09e97cf916744a1811b9f22b9988eba818f565c9b245567096

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8df1166e09858426101d9d892fb81d17311b34bccdb6d5baa5f35dd69994ac95
MD5 0111fb4df0d564a06e6339d28e2e13b6
BLAKE2b-256 9324869ffa25b95a1b458ce7ea53715a2ebe36080e71e2085e2fb47fa1b36efc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: artlib-0.1.9-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.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1d564442721ad6e357104f3b38ce1dd76d58e552cb61bb8e7b3b1254be362fde
MD5 d1aa4389c9c0a06813ba1948a2dd5c50
BLAKE2b-256 6f9580364eb13d659718050daea7b926dc26dac0ef2e1f7002840c75aa2b1a7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97b434ba64b9e9d295f6fbd1ff15ea67bb0946538062936e7925596b8a9aa913
MD5 acc1cbd9c2a8e90a8f9b7865b15465b9
BLAKE2b-256 f9cabe2129f6232c95ff25a992c93b3d753d4747e8079fcdc8481729413ba371

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82e2f58f1735c11ed57fa80f9a2558e6b2c928106dfe99fa0a48d4f08b47ae03
MD5 a042111afa6e1f794c26ba1fd3f59e12
BLAKE2b-256 2ab0d62624473fcca664f34809b3b2c048c408d312a5ddbfe2b96d51e9d3e365

See more details on using hashes here.

File details

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

File metadata

  • Download URL: artlib-0.1.9-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.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b9e19be1f945fad581e769b1c721d9bf17a2844ca0bb711a3c5a8776b4179ae2
MD5 e21c92db11d977b85b03187b65128a4a
BLAKE2b-256 be7d58f2600907da7526ef299cf2f05cef4744db4db9178ba1cd71a163ec99ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a1db7684cc94523e2d4ae9b2f7ca1d29728d49f420105cc9c418d431b52a5242
MD5 35b3723f607ecd01789c86c9caa6edd8
BLAKE2b-256 47de074dd31558b86abdb84b2f2a30ec7fa0b87327dda27b6407baba5f01e2e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0810c56e29fb815011bd48e03b4a1dc27d82d1c303e4129ddcf2e8ddc41b38ea
MD5 7b903a4c18fb7e860c34edb60e4b6f4f
BLAKE2b-256 dde2e5d5367328bdbb2bd5bbcc4e147d782663e6cbefcb4c2e0da608864156ca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: artlib-0.1.9-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.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2c310e3fcf5313122845e3a64ac23235a376cef207b99c93f7d425828e4a7ab2
MD5 7cdd67b6cf335e3adfb228f0822a0785
BLAKE2b-256 9a93d0a1bf40c9dcad03bab9cf1d345aa0749618ce0f51687e87a29c576d09a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10aa5681ac0359daf5ef98f2764bd95c1ccc0766a6fd8e990b51d0f367b39845
MD5 c4b3464327f9b409082dab25a7ded48e
BLAKE2b-256 2b0c55ce18afd9d8c60d6b13f7b82063dc8a3e43c6d3e52d7d1b0408017dbdc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for artlib-0.1.9-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 932fc2d1358eb550e9cb6cbc7983dc400c856e69e97ad310c42e32bac06094ca
MD5 173ee7771bde602c95424228e33857d1
BLAKE2b-256 8ffd9cff76f3970fbd9d694a2639ff8932663012b844798aa3091eb0e670b114

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