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

Uploaded CPython 3.14Windows x86-64

chaine-4.0.0-cp314-cp314-win32.whl (406.0 kB view details)

Uploaded CPython 3.14Windows x86

chaine-4.0.0-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.0-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.0-cp314-cp314-macosx_11_0_arm64.whl (441.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

chaine-4.0.0-cp313-cp313-win_amd64.whl (422.5 kB view details)

Uploaded CPython 3.13Windows x86-64

chaine-4.0.0-cp313-cp313-win32.whl (399.3 kB view details)

Uploaded CPython 3.13Windows x86

chaine-4.0.0-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.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (438.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

chaine-4.0.0-cp312-cp312-win_amd64.whl (422.8 kB view details)

Uploaded CPython 3.12Windows x86-64

chaine-4.0.0-cp312-cp312-win32.whl (399.3 kB view details)

Uploaded CPython 3.12Windows x86

chaine-4.0.0-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.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (438.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

chaine-4.0.0-cp311-cp311-win_amd64.whl (425.9 kB view details)

Uploaded CPython 3.11Windows x86-64

chaine-4.0.0-cp311-cp311-win32.whl (400.0 kB view details)

Uploaded CPython 3.11Windows x86

chaine-4.0.0-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.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (438.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 429.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 917915146965fb3c370ed35dd3434fd6fdc6822355f013f47655350b56866e29
MD5 afd900f6361f3f4af902b28af077e325
BLAKE2b-256 81255f1af5ceda7d031f3c383bed6557694a23584b89c29f00686f8725ede14f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 406.0 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 ec94482ef05b7559545d3060f87297967cc161bc54cdbf885354ca336b1181fa
MD5 7eec2613da132bc46e431318f630f55a
BLAKE2b-256 6268f0c6e778d1b1342e59eccfcd981ac535b8ca8643d84808b7748ac3e3272f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0eb7ab9d4fd281b29e26a9dc6809f2b01bee18334e590cf849e0f34e0cebe78c
MD5 15e6be6a053fc014eaaefcccd2712b5a
BLAKE2b-256 56605c7c406bede67e7278203dc3da364452ba44b06166881e807546615d0db2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4558d8395af3c610b9925d21d449e431a6b6e1da813a07c28ccb6544137b1fe
MD5 c292b8caf191b036e097274fbb394518
BLAKE2b-256 9e90ff15f11657e10590a89634dba98ccfb6cc41a4a8343b43d9931735a580b4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 441.8 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37afbf48db0914bbc1e048422ddd236ef7bb6a552b82e0d4cead500fc3ec2dc5
MD5 b070720cac4b703581a22ce7f88404e7
BLAKE2b-256 0fb74129aecbc06bdb0e91d3182c3f0d0d45c2aa08552855b84a75f7c8dd014f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 422.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5c483786f1a95488065c68945302289a1465c88b13e57ca89efdf5ddb76dedf1
MD5 b5c7ee84eb7d1b1e90ebf0ba65f0bb4e
BLAKE2b-256 e141bbed0cdf877f9ee1ff058093c73cc77746c7b2a079f45b87c89c512543a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 399.3 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 8578f7940abc10ccdbde13cfdaccca656fa74341b5e7c7c3feb8272924d35bc4
MD5 0a2901d674976eaaa9331d425d295db5
BLAKE2b-256 86abd1ee6a4551abc46479cafa3f578c7cb76e0b4239cbecee4b47974db8a57f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 63525885e952138d3e23e955635d6d2f0944dff49b364a5a319a8cce6154dd38
MD5 62c910dd4791f7b4e611f37e9d29f693
BLAKE2b-256 58a746d82395b51246a56e667bee552b97af427280c27411e431b02cfeba13c3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60f0d1caee316c33f8fdeee6fcdc4c978be0cec9367409a32391a2025368a70e
MD5 f167bd6c48b4f0c07a2f3b22bd2fcdf5
BLAKE2b-256 e5eb8b5c8ba911cc4b47e30236445ab1e9afd3cef1134d5ec31d537162097114

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 438.4 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 615e3ce0b43d58f148aeb79aa4ac795160aefed96afa90e8b0ac2e8f6cf1b406
MD5 54fabe2f15beb9837c34db3d301d903b
BLAKE2b-256 2959414ea031a0b9444d85a388ce8ef51ae96a1bdc53506083db5e3ea6ce382a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 422.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fd0b26830b2a9abbf1a3a8b03cd07ac1ed658376eaea5e79b664a7818d44f297
MD5 1a3c20e787acca9249bd320cd7c808d9
BLAKE2b-256 1edf450719d4349c5dc2d8c2208e7e100596b85c9f20b7d81d80ec2a081f4eeb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 399.3 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ac914a87c81de60e2f36bccc717d58f3c5b71ad4ae7bbf687738f8fd95a90d48
MD5 6033ba56248f7dac36a9dbdfb732b9e1
BLAKE2b-256 24ac023d4d5174e02e9c790b61057c9c0c59b14af05956c1f38fce4db561407e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 841329775adbddbaf2830ac217d471d44681024f577bbef4574154aa48182c4d
MD5 94bf98e2ea6ea664d303d5593a965212
BLAKE2b-256 bc623455cf3985aa8ce53dbebef70609025e8fef5f2d5e153dc840fa8a6a7123

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9830ae25af074814755ac76816c1341fc0d4dcf57898dcf56ca04aea245a0ee
MD5 a81699821b29e312fbc287ffb73e619f
BLAKE2b-256 9c0d1447313cb09a18838e8492a84089c5073bf4226843e0ec1b6aa6664737b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 438.7 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 586c101fbc61543b0d049748afed2b0a16e6f5a21f0ef469a6527d1c72854970
MD5 7dc7b1f6831d43f67abe231d8d6da258
BLAKE2b-256 eaaa8d6c5f0bae52b7d41b32f02ef3a2c5220767e6397caafaa7193f5919b612

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 425.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 687db74fe5e103396993f3302bb387a210f716314d12d3000e74867929bd9fb4
MD5 7d6225e57c061d7c974d0a8e74ca9625
BLAKE2b-256 04ea55fcbea1e3d39b28834d86358d5532129f778b707f157bdbae1bb6fde62c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 400.0 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 679ba741469ef55975b7af8e5671ec13a70df369b094b7fa04c2db61bb7df917
MD5 12ca5b2072a0c6ab4c8bf1178e745188
BLAKE2b-256 c20b1b862fbb1dc2b9ac0ae3d0e80cb8b088dec691624cc872cba4d9738ca84e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 06c7443db0e2160c04d27d6c11c1f94db68eb003aaf4bc46a8f1b9dc15699c25
MD5 193807fd60c3ec22d0a5b22e67ce848a
BLAKE2b-256 f084fff576d22bdd13f1426bc8d1d633480b24e50dc3dea8cf88b780176c7757

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-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.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9bb820c364a395780291ef1ca8ffecb084b39eb0f17f94c6cb7ba6894396c340
MD5 90d9c86f8bd49c4926b13d9c9a19cbfa
BLAKE2b-256 03fc38939ff620e6c5f8b55f61aaac7d57548c508533df2c7590205e8b94bb62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chaine-4.0.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 438.8 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4faba6e83b282cb5fafbaaf52e549f5fb71993643e959b24c0a96c717b58f659
MD5 644d75b5a7747bd7a541cfe43f444f5e
BLAKE2b-256 0df4f2e9df820a42421d5dff0273a5bae2fd944ff77a96af7ddb7acd1a8110d8

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