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-4.0.1-cp314-cp314-win_amd64.whl (627.8 kB view details)

Uploaded CPython 3.14Windows x86-64

chaine-4.0.1-cp314-cp314-win32.whl (605.5 kB view details)

Uploaded CPython 3.14Windows x86

chaine-4.0.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

chaine-4.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

chaine-4.0.1-cp314-cp314-macosx_11_0_arm64.whl (447.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

chaine-4.0.1-cp313-cp313-win_amd64.whl (614.4 kB view details)

Uploaded CPython 3.13Windows x86-64

chaine-4.0.1-cp313-cp313-win32.whl (593.5 kB view details)

Uploaded CPython 3.13Windows x86

chaine-4.0.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

chaine-4.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

chaine-4.0.1-cp313-cp313-macosx_11_0_arm64.whl (444.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

chaine-4.0.1-cp312-cp312-win_amd64.whl (614.0 kB view details)

Uploaded CPython 3.12Windows x86-64

chaine-4.0.1-cp312-cp312-win32.whl (593.5 kB view details)

Uploaded CPython 3.12Windows x86

chaine-4.0.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

chaine-4.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

chaine-4.0.1-cp312-cp312-macosx_11_0_arm64.whl (444.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

chaine-4.0.1-cp311-cp311-win_amd64.whl (614.4 kB view details)

Uploaded CPython 3.11Windows x86-64

chaine-4.0.1-cp311-cp311-win32.whl (594.1 kB view details)

Uploaded CPython 3.11Windows x86

chaine-4.0.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

chaine-4.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

chaine-4.0.1-cp311-cp311-macosx_11_0_arm64.whl (444.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file chaine-4.0.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: chaine-4.0.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 627.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 cb53c5d54dbc0605600875e36efe130a25a56918e79b4126d1f8593bbeb4bbf9
MD5 d922af98c3adee447fe3647e5fa9dd73
BLAKE2b-256 4088eca7dc34055b67c80c315d61a29e699d32265122ef6c691be02e69787d25

See more details on using hashes here.

File details

Details for the file chaine-4.0.1-cp314-cp314-win32.whl.

File metadata

  • Download URL: chaine-4.0.1-cp314-cp314-win32.whl
  • Upload date:
  • Size: 605.5 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 958bf783c6a8b539fe9b6252df5ca252d5ccde84f4c6c737880eeddfae254ecf
MD5 e637939811f75422a6dfd4d6676354ae
BLAKE2b-256 7b88d97fa118f850e0a737c58e772f50448a07ef78838bb4d30b3b580e0b8f47

See more details on using hashes here.

File details

Details for the file chaine-4.0.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: chaine-4.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c00751571754c7f18496daada506668e0e2288f66c9a0eff88408a192900feb7
MD5 ecd74da9a56882c841830afc090ff227
BLAKE2b-256 171f3607f62b08bd74caaf23a0e437a461af2a400b957a9d32d05a760b3b2901

See more details on using hashes here.

File details

Details for the file chaine-4.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: chaine-4.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.14, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 80208a5b38fb5137159c3ce3818eca38661c5eaac62b3525d1d36659730d75fe
MD5 647288604dc0b893c338e43e56ac1f82
BLAKE2b-256 38f223a62220e8ace0d7793ec0041ce48702f1559c1fbc7a8b2ed99d457b8c10

See more details on using hashes here.

File details

Details for the file chaine-4.0.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: chaine-4.0.1-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 447.8 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e3d758c9379101ca8478900a810ca246d1d59b33aad1f431bed8e945e88d770
MD5 3ab18fac445616fa5ad3a5a3623b6c91
BLAKE2b-256 f3eca42031b22deaf6bd8997b5f9c2b664caba8d7e49eb8dc13135e6df148e1d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 614.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2bbd765fe291d6fc64e7124a4d5e2e1fffd57ca45def74bb6ce86b080d895228
MD5 76b6ce66def74537988b2447e76db046
BLAKE2b-256 e170b61518784cf9f1bdff7c3d4e54bc9f28cfbefe6e3c4cbf27e5b0fc9d218b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 593.5 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 4ecb7651567a2f6f416882f9d43776488a71bb1fbff712fc0654a966b06571d1
MD5 d518c7160a038d6db20426fcf91c8e50
BLAKE2b-256 b414e6fe0c327cc0898d5c73f37453204046c7ba07d0bb3b379bd34d70ce0637

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0d18878dfbd85cfba73f9b98d19b5557de4e31346f2b46ae57a12d7fc32c8f2d
MD5 2dbe1c5fb34ab3100d2a753617130300
BLAKE2b-256 13a5ad0ca5a5cebccf20ae3e1b7ed69869d188c6fb946f4734f1c1d47623d234

See more details on using hashes here.

File details

Details for the file chaine-4.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: chaine-4.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.13, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2bfac81f009b6773bea9493953a5e47b7510b176eb318ccb55a458db5e0a2c1c
MD5 4f89c329b83dff3d2388e341bb248110
BLAKE2b-256 9a26f5885e7a0ee3ee43799079790f46f7e2e26d9a9fc6b28e06b5013721115f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 444.4 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94fb083f02ae1874d4bfb129446d5c28ce3e702f2d603b7e95bcd4c0e39e303a
MD5 770efdf514975813529e07430da5e747
BLAKE2b-256 b6276a745343dea12924c0b5712f6179a21919505e4aa35255f751f96df4571d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 614.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7f050663b52089f93404458d7240b305e833a9df286aafee59a8da00de3c9723
MD5 5417cc7bbd81b2acbbb624f120ab64a0
BLAKE2b-256 9cbfd90b254f16e1404233144d3a2c9fe07b1753b91f3a220a20b5410f8b9e25

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 593.5 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 3e6135041a1af0cb051605558f22cf606c2e668211faff9c6a9fb498b9abcc7d
MD5 80da2ac51cf29d66a917d929bf15f992
BLAKE2b-256 8a2fc2eb5b00e04607f16a0b4618168398f8a20762d32219d5995454a75b4705

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 15898cfc8c393f358ee4f577dcb19f30deca8fa7901505cf091316c74131f058
MD5 8a281996ace95f1ba4ac7ae640912c69
BLAKE2b-256 5364a001218c922c10501032dfaf9e95050e332a36166cfdb0cc01272ea3fe26

See more details on using hashes here.

File details

Details for the file chaine-4.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: chaine-4.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.12, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 113e2dce9642f27bf8c8fc59ec133f2b211d06db50782dd32e76cae3158fdbd1
MD5 7653585d9c3c82be12726da3f7f2a065
BLAKE2b-256 e9a8616c024d0eb86fc0ad7893b2b649ba9989eb69e64fa672092af26b3c4418

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 444.7 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 39c2157d5af68e817b5c61c83bcd4b6926fbaaa78c45909e0b6f332ea0bb1b7d
MD5 351627f0f61fa91229445332adc76785
BLAKE2b-256 17c2aea0a8325f74f72a2809334bec87518a650edd340a472692e1e815157ba5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 614.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 111b75f71eebaf174072841f3e4d2a8724f0c27a58024889e74538d943d0cdad
MD5 9ee3a5a9127a6ba8277535af510d3b14
BLAKE2b-256 4ef21cd8ffd89166d6c2fbfa8d350d5fd2f823fa76177c1f203c50093a7bd4fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 594.1 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 0f7cdc01927bc90dd861a1fae239c5f6f7c0b78e531cb62cbd7acf19b49d6524
MD5 5748d5ad7c8d16d7c2df0905c1c4cb8d
BLAKE2b-256 feefa2c5e4b44d2485c6140854547cd71c596835e20a0a0e6c2f292ef2646eac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 530f74f6d56a8a865d8dcd637d76d2aaa00771d646feb063cce2591df302f4c7
MD5 edc56b70736af2f6fa7b5e30c3208a0d
BLAKE2b-256 08c856280f3334e8bb7163523a5c7f593aba2c3224cc0574858b4564c8cd323c

See more details on using hashes here.

File details

Details for the file chaine-4.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: chaine-4.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.11, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1f19ccf150c7f80c094c4889fde371864ffdf24c960fb28f2784fd95d644dfec
MD5 ee2f5456c7b611869e362fb7b590f732
BLAKE2b-256 4e8557a52029b6de6ae5ce7eb097f7d315bc370b1f654ab2a2423e200d7ffd30

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.1-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 444.9 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for chaine-4.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9868c27ad03694bcbe5971eda9d70ce43f7b33c8fe0a20a23eb592638d8a6b05
MD5 aabe3d2961b993988a01a5a8b7829d45
BLAKE2b-256 c05aea3d84a219570789b7f0d903564d68604f2aab34be64557608614096dd78

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