Skip to main content

Linear-chain conditional random fields for natural language processing

Project description

Chaine

downloads downloads/month downloads/week

Chaine is a modern, fast and lightweight Python library implementing linear-chain conditional random fields. Use it for sequence labeling tasks like named entity recognition or part-of-speech tagging.

The main goals of this project are:

  • Usability: Designed with special focus on usability and a beautiful high-level API.
  • Efficiency: Performance critical parts are written in C and thus blazingly fast. Loading a model from disk and retrieving feature weights for inference is optimized for both speed and memory.
  • Persistency: No pickle or joblib is used for serialization. A trained model will be compatible with all versions for eternity, because the underlying C library will not change. I promise.
  • Compatibility: There are wheels for Linux, macOS and Windows. No compiler needed.
  • Minimalism: No code bloat, no external dependencies.

Install the latest stable version from PyPI:

pip install chaine

Table of contents

Algorithms

You can train models using the following methods:

Please refer to the paper by Lafferty et al. for a general introduction to conditional random fields or the respective chapter in Speech and Language Processing.

Usage

Training and using a conditional random field for inference is easy as:

>>> import chaine
>>> tokens = [[{"index": 0, "text": "John"}, {"index": 1, "text": "Lennon"}]]
>>> labels = [["B-PER", "I-PER"]]
>>> model = chaine.train(tokens, labels)
>>> model.predict(tokens)
[['B-PER', 'I-PER']]

You can control verbosity with the argument verbose, where 0 will set the log level to ERROR, 1 to INFO (which is the default) and 2 to DEBUG.

Features

One token in a sequence is represented as a dictionary with describing feature names as keys and respective values of type string, integer, float or boolean:

{
    "text": "John",
    "num_characters": 4,
    "relative_index": 0.0,
    "is_number": False,
}

One sequence is represented as a list of feature dictionaries:

[
    {"text": "John", "num_characters": 4}, 
    {"text": "Lennon", "num_characters": 6}
]

One data set is represented as an iterable of a list of feature dictionaries:

[
    [
        {"text": "John", "num_characters": 4}, 
        {"text": "Lennon", "num_characters": 6}
    ],
    [
        {"text": "Paul", "num_characters": 4}, 
        {"text": "McCartney", "num_characters": 9}
    ],
    ...
]

This is the expected input format for training. For inference, you can also process a single sequence rather than a batch of multiple sequences.

Generators

Depending on the size of your data set, it probably makes sense to use generators. Something like this would be totally fine for both training and inference:

([extract_features(token) for token in tokens] for tokens in dataset)

Assuming dataset is a generator as well, only one sequence is loaded into memory at a time.

Training

You can either use the high-level function to train a model (which also loads and returns it):

>>> import chaine
>>> chaine.train(tokens, labels)

or the lower-level Trainer class:

>>> from chaine import Trainer
>>> trainer = Trainer()

A Trainer object has a method train() to learn states and transitions from the given data set. You have to provide a filepath to serialize the model to:

>>> trainer.train(tokens, labels, model_filepath="model.chaine")

Hyperparameters

Before training a model, you might want to find out the ideal hyperparameters first. You can just set the respective argument to True:

>>> import chaine
>>> model = chaine.train(tokens, labels, optimize_hyperparameters=True)

This might be very memory and time consuming, because 5-fold cross validation for each of the 10 trials for each of the algorithms is performed.

or use the HyperparameterOptimizer class and have more control over the optimization process:

>>> from chaine import HyperparameterOptimizer
>>> from chaine.optimization import L2SGDSearchSpace
>>> optimizer = HyperparameterOptimizer(trials=50, folds=3, spaces=[L2SGDSearchSpace()])
>>> optimizer.optimize_hyperparameters(tokens, labels, sample_size=1000)

This will make 50 trials with 3-fold cross validation for the Stochastic Gradient Descent algorithm and return a sorted list of hyperparameters with evaluation stats. The given data set is downsampled to 1000 instances.

Example of a hyperparameter optimization report
[
    {
        "hyperparameters": {
            "algorithm": "lbfgs",
            "min_freq": 0,
            "all_possible_states": true,
            "all_possible_transitions": true,
            "num_memories": 8,
            "c1": 0.9,
            "c2": 0.31,
            "epsilon": 0.00011,
            "period": 17,
            "delta": 0.00051,
            "linesearch": "Backtracking",
            "max_linesearch": 31
        },
        "stats": {
            "mean_precision": 0.4490952380952381,
            "stdev_precision": 0.16497993418839532,
            "mean_recall": 0.4554858934169279,
            "stdev_recall": 0.20082402876210334,
            "mean_f1": 0.45041435392087253,
            "stdev_f1": 0.17914435056760908,
            "mean_time": 0.3920876979827881,
            "stdev_time": 0.0390961164333519
        }
    },
    {
        "hyperparameters": {
            "algorithm": "lbfgs",
            "min_freq": 5,
            "all_possible_states": true,
            "all_possible_transitions": false,
            "num_memories": 9,
            "c1": 1.74,
            "c2": 0.09,
            "epsilon": 0.0008600000000000001,
            "period": 1,
            "delta": 0.00045000000000000004,
            "linesearch": "StrongBacktracking",
            "max_linesearch": 34
        },
        "stats": {
            "mean_precision": 0.4344436335328176,
            "stdev_precision": 0.15542689556199216,
            "mean_recall": 0.4385174258109041,
            "stdev_recall": 0.19873733310765845,
            "mean_f1": 0.43386496201052716,
            "stdev_f1": 0.17225578421967264,
            "mean_time": 0.12209572792053222,
            "stdev_time": 0.0236177196325414
        }
    },
    {
        "hyperparameters": {
            "algorithm": "lbfgs",
            "min_freq": 2,
            "all_possible_states": true,
            "all_possible_transitions": true,
            "num_memories": 1,
            "c1": 0.91,
            "c2": 0.4,
            "epsilon": 0.0008400000000000001,
            "period": 13,
            "delta": 0.00018,
            "linesearch": "MoreThuente",
            "max_linesearch": 43
        },
        "stats": {
            "mean_precision": 0.41963433149859447,
            "stdev_precision": 0.16363544501259455,
            "mean_recall": 0.4331173486012196,
            "stdev_recall": 0.21344965207006913,
            "mean_f1": 0.422038027332145,
            "stdev_f1": 0.18245844823319127,
            "mean_time": 0.2586916446685791,
            "stdev_time": 0.04341208573100539
        }
    },
    {
        "hyperparameters": {
            "algorithm": "l2sgd",
            "min_freq": 5,
            "all_possible_states": true,
            "all_possible_transitions": true,
            "c2": 1.68,
            "period": 2,
            "delta": 0.00047000000000000004,
            "calibration_eta": 0.0006900000000000001,
            "calibration_rate": 2.9000000000000004,
            "calibration_samples": 1400,
            "calibration_candidates": 25,
            "calibration_max_trials": 23
        },
        "stats": {
            "mean_precision": 0.2571428571428571,
            "stdev_precision": 0.43330716823151716,
            "mean_recall": 0.01,
            "stdev_recall": 0.022360679774997897,
            "mean_f1": 0.01702127659574468,
            "stdev_f1": 0.038060731531911314,
            "mean_time": 0.15442829132080077,
            "stdev_time": 0.051750737506044905
        }
    }
]

Inference

The high-level function chaine.train() returns a Model object. You can load an already trained model from disk by initializing a Model object with the model's filepath:

>>> from chaine import Model
>>> model = Model("model.chaine")

You can predict labels for a batch of sequences:

>>> tokens = [
...     [{"index": 0, "text": "John"}, {"index": 1, "text": "Lennon"}],
...     [{"index": 0, "text": "Paul"}, {"index": 1, "text": "McCartney"}],
...     [{"index": 0, "text": "George"}, {"index": 1, "text": "Harrison"}],
...     [{"index": 0, "text": "Ringo"}, {"index": 1, "text": "Starr"}]
... ]
>>> model.predict(tokens)
[['B-PER', 'I-PER'], ['B-PER', 'I-PER'], ['B-PER', 'I-PER'], ['B-PER', 'I-PER']]

or only for a single sequence:

>>> model.predict_single(tokens[0])
['B-PER', 'I-PER']

If you are interested in the model's probability distribution for a given sequence, you can:

>>> model.predict_proba_single(tokens[0])
[[{'B-PER': 0.99, 'I-PER': 0.01}, {'B-PER': 0.01, 'I-PER': 0.99}]]

Use the model.predict_proba() method for a batch of sequences.

Weights

After loading a trained model, you can inspect the learned transition and state weights:

>>> model = Model("model.chaine")
>>> model.transitions
[{'from': 'B-PER', 'to': 'I-PER', 'weight': 1.430506540616852e-06}]
>>> model.states
[{'feature': 'text:John', 'label': 'B-PER', 'weight': 9.536710877105517e-07}, ...]

You can also dump both transition and state weights as JSON:

>>> model.dump_states("states.json")
>>> model.dump_transitions("transitions.json")

Credits

This project makes use of and is partially based on:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

chaine-3.13.1-cp313-cp313-win_amd64.whl (418.8 kB view details)

Uploaded CPython 3.13Windows x86-64

chaine-3.13.1-cp313-cp313-win32.whl (397.9 kB view details)

Uploaded CPython 3.13Windows x86

chaine-3.13.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

chaine-3.13.1-cp313-cp313-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

chaine-3.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

chaine-3.13.1-cp313-cp313-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.12+ i686manylinux: glibc 2.17+ i686

chaine-3.13.1-cp313-cp313-macosx_11_0_arm64.whl (437.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

chaine-3.13.1-cp312-cp312-win_amd64.whl (419.3 kB view details)

Uploaded CPython 3.12Windows x86-64

chaine-3.13.1-cp312-cp312-win32.whl (398.3 kB view details)

Uploaded CPython 3.12Windows x86

chaine-3.13.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

chaine-3.13.1-cp312-cp312-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

chaine-3.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

chaine-3.13.1-cp312-cp312-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.12+ i686manylinux: glibc 2.17+ i686

chaine-3.13.1-cp312-cp312-macosx_11_0_arm64.whl (438.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

chaine-3.13.1-cp311-cp311-win_amd64.whl (419.3 kB view details)

Uploaded CPython 3.11Windows x86-64

chaine-3.13.1-cp311-cp311-win32.whl (398.5 kB view details)

Uploaded CPython 3.11Windows x86

chaine-3.13.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

chaine-3.13.1-cp311-cp311-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

chaine-3.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

chaine-3.13.1-cp311-cp311-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.12+ i686manylinux: glibc 2.17+ i686

chaine-3.13.1-cp311-cp311-macosx_11_0_arm64.whl (438.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

chaine-3.13.1-cp310-cp310-win_amd64.whl (419.3 kB view details)

Uploaded CPython 3.10Windows x86-64

chaine-3.13.1-cp310-cp310-win32.whl (398.6 kB view details)

Uploaded CPython 3.10Windows x86

chaine-3.13.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

chaine-3.13.1-cp310-cp310-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

chaine-3.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

chaine-3.13.1-cp310-cp310-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ i686manylinux: glibc 2.17+ i686

chaine-3.13.1-cp310-cp310-macosx_11_0_arm64.whl (437.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file chaine-3.13.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 418.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 660038f27324f9bad91420a0314b8604b3e4a24011c657aba06b4a5bf3597785
MD5 685f17bf2ff196007e1a630fb3041db2
BLAKE2b-256 c4aa7aad22adffc1c956cdcd40b08a5909af5e0609b410fbf332b7f2d4a0025f

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp313-cp313-win32.whl.

File metadata

  • Download URL: chaine-3.13.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 397.9 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 c41e8f6c30eb7b15cb839afa8913f0634b66f37e58322b0795bf2eb95c34d507
MD5 ac83bef2ee8e1ea9930728bd01e83af2
BLAKE2b-256 78e73056faf8440d1167bcb472774b8e22605ef0cc761ead97badb04fb129ab8

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c18ba25ff8db5efbeb6e77022dd6c260654364efea80827042fa41ac9a9b0af
MD5 3712e1c99b978d8ed0b7b9516ae6a3ad
BLAKE2b-256 ea827134e57365a0173141ebdb9c4ae2007b85f1d8be0602c47ea62973419d28

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

  • Download URL: chaine-3.13.1-cp313-cp313-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7dd3ab6d78da0d59b3b4c74fd4815065f01a09e1ae76e0d3f449ec232a50deb5
MD5 a6735962588ea77c6173bff2b77f1ce0
BLAKE2b-256 18579869e527fe4f5a644292d1e28a43396f1fb042bc1235807609f41d74e728

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 527f4a59492a66c839b3c5ca5973880de943a3a8574ee89279456eedbd48984b
MD5 dac8bbd6e7359401aabdd4adb26a0a39
BLAKE2b-256 c792339bce61fea27014df73b2eb691895cd07a591683dff6b81687bc82b2e83

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp313-cp313-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp313-cp313-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 50718c81430ca52db01ce8563536f1dece0626fab3f376431f84d43271285610
MD5 4ab471780ab4ea7acd957199943b2592
BLAKE2b-256 0a34f6cc980a5be8fda21f1f336b56d15a3464f3877bdfec2cc4d6c63fb97124

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 437.2 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.0 Darwin/23.6.0

File hashes

Hashes for chaine-3.13.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bf2450c4eaae3d824ac8d83349da4df04afc8c985719c4c0b2723c159625e5c
MD5 4a0365e35e47ab21f142adf33c0cc692
BLAKE2b-256 294e2257f673ed93073e287b55a79334a29bf5bd6e465f3a939cf975edcb6f7c

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 419.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e7ca7bfd86cca2daa428ed00bf3a639c6137e60f207e84aea4532050e079227d
MD5 430367f0f5a5eab548b687c4b23a60b3
BLAKE2b-256 beaa8fc4aa0b9b60a33a0310ba9fdebc90d64fd6095186af313eedacdd321a7c

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp312-cp312-win32.whl.

File metadata

  • Download URL: chaine-3.13.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 398.3 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 c2f6cf0c6e60c59849083df4027d1de42bb3ac1e7eae5d0da0485b75c3c85f65
MD5 dada8681881fd026097a88c8410fb161
BLAKE2b-256 018b86f248d0f38d9d3b802cb8703f37c6115d7e50b6212b4cf96c413bbcad12

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4463adc891f967de3dd3dac96280b8bda5d7e879a2b99f5486a405bb2df5419a
MD5 5972f0a18f49222ab64797aaf5afad92
BLAKE2b-256 7b1d5cac8f3e9ed8a24991d675c8b3d820e2dec6e4963dfeb82228246d40dd06

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

  • Download URL: chaine-3.13.1-cp312-cp312-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 43d0e1295b2797f6ad8426a240319544a55faedf83442fe6ae185d9676eb6607
MD5 f29fdac89c884c4ab2c3f163f9594b7a
BLAKE2b-256 6061fd83b7957d93bedfe9ac94bbfc6285ceb5727adf4d40acccb72e88da59be

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e926a4e6be514e77abcb17ca543b891c29b882a24b4cbdb63ab110da7631fab2
MD5 a3f53c1045853681b187b40ebbcfc442
BLAKE2b-256 2b4636a1b52951dd926acf75e69bb30fd1639518ac1615faba38a816f4c28c6b

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp312-cp312-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp312-cp312-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d593f6eecdf7488a0c7bf2ac0e06927d24e6dd699d86c84369a116efddf34f3f
MD5 f48fb5e9b6d753da04fe2b5887827be4
BLAKE2b-256 4e648d9302a44fc2a11ecb71b35c078386798585b94af02778ce529d367c8557

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 438.3 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.0 Darwin/23.6.0

File hashes

Hashes for chaine-3.13.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89eb834f7148293644521254b1b1ba4e0382dc48303b3e712034a8352ba13e21
MD5 dafba646df5fe6cd6e066c4d3181dc6b
BLAKE2b-256 ae6dcec287d568d426dbbcba38878f1dcfb15363969887022497fafcb2b49eac

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 419.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 05e1ace84b38cf33119231a1fe8884ccc85ef392e976bd17fc98b58d32284695
MD5 fe5fb97f45540aafdcb702c36ad5b301
BLAKE2b-256 af64adc7b6bd18530c63cd6a1b4894dfe965a74bcad43aaf2ce6697caa7b63a7

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp311-cp311-win32.whl.

File metadata

  • Download URL: chaine-3.13.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 398.5 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 7fb61eb09b5a5826cf1ad2b71e26b576d80b0684d55118fa2560d137138bf74e
MD5 68cff535a46bad9ecb4b85e03aa93a06
BLAKE2b-256 ffa71f3ef7c55dfbd8fec3bd1df250923b0f6922181ebd810923d8597bb7209d

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f1e225d732b99e8b4b9cd8d54cd6914afd3eb4e7f177fa398e26b7361ed06f42
MD5 8e8a6cb0a4a17379592af69977619ff1
BLAKE2b-256 615bdf0baa3db79e60cdddde16f07da86a03bebd1318144a5339dedd724f0245

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

  • Download URL: chaine-3.13.1-cp311-cp311-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 84feb52afa7bf6118dcc2b0054455429c941b7de92a76a4e9113e4b82d84e40d
MD5 62e82ff62d09e8c234b61899167a2af5
BLAKE2b-256 43ca9d74829bd3c9c8b0e440d75e3991d912760547a7f85802d77ac184a9b634

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 adc6188780c7d022034c081c3c157be3e3591a38049e2f91738db6d0da8aec13
MD5 5267849458ad9640ce63ad3d987c983a
BLAKE2b-256 5841081965b0f1a33ac033e006b3b437ca4d1aba4b98a5330bacd3a84b6d7835

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp311-cp311-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp311-cp311-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6fd26db1326879658c673d7a6b7c0542fcc365bf9a2d630ca4afb8264238e026
MD5 418d9d3e70df2da247ed4182c931c3be
BLAKE2b-256 3a9d981c52eceda705319d995b1fd863f1b294f534463aa5549ffed5e62ccae4

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 438.0 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.0 Darwin/23.6.0

File hashes

Hashes for chaine-3.13.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3259274be3b59c40ea68f3d2337ac96f2d4a0fe7d852cdde1eded1b6631e5f90
MD5 9c18929cfe78a546a64e075b3e2f5e41
BLAKE2b-256 99a85b02e8ac4e89d9ef452b6bcdc450da9bd371d9fd54c4cdea27dc6e588e77

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 419.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ea23b84239c17cedc9fc09418c6806aa1ca5e78c892b0bfdbb69dfb5d4834816
MD5 b04717f9be2917d06d66cac0be1b9190
BLAKE2b-256 324629059cac48632db85f411aead130a7707c94d48819d179fd2449c7751366

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: chaine-3.13.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 398.6 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Windows/2022Server

File hashes

Hashes for chaine-3.13.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 aa13b3cc4c1c9e0ef2aed74c4da78521ff3010507bb13480c8f22d65504952ec
MD5 f72224be4cef7fee3c9cb98a394d9f16
BLAKE2b-256 9303a9d5558a9957326c9fe59ee148ae2e5085443c1dc42702783d57bf5a42c0

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp310-cp310-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fdb30ebcc9f65d8e6480d8719a9b23a654d02290b8791ca2f909f8f6785f6dbe
MD5 6819734f35cacd8b1148446ccbf7d86b
BLAKE2b-256 c070362c48dcfa4e918500bc653b118b3ef787f31937de40050e76d947e48070

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

  • Download URL: chaine-3.13.1-cp310-cp310-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.8.0-1017-azure

File hashes

Hashes for chaine-3.13.1-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6cf6b953e4272f28fa1071502a9e6760d48aee0c5e8765e9e4c2db664646cbb3
MD5 0c261987e354bfba914981de3a6cd286
BLAKE2b-256 0eef65fdc40e5f4877b5678a898b8df8b5fad1c2610e585778e6fb130ac9a273

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 85ab9f1d54ccde3deacf7c12343b7b0410d5f6eb35df126590bc44c9d48b9089
MD5 b69d095ca191ef3da9c1a47f893a2727
BLAKE2b-256 b690d6eed36d177a5e7f0576164eef28bff26d1c4076d5d4814bd1d807ceb3aa

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp310-cp310-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chaine-3.13.1-cp310-cp310-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ec6e9f83617c2ffb1d0e5d6bb314e89c3f7fdfd15502a9116dfc8631662f0050
MD5 af53667a2fbf8569ae2dee0d2113085a
BLAKE2b-256 c904e46f3b501dbec9e8b49dda9705db7d8837516224b934ec11b382f7ac01af

See more details on using hashes here.

File details

Details for the file chaine-3.13.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: chaine-3.13.1-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 437.8 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.0 Darwin/23.6.0

File hashes

Hashes for chaine-3.13.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bed13727dad91dc0c84c80bd929efde429e214c8ac430aefe098e8c0cb3a538e
MD5 5a29246eb7823431f84a0f230ef21e33
BLAKE2b-256 337288018ebc3b039450496e730a0c57778c7109ca0cf2a52d840ede54332ff7

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