rustfst-python


Namerustfst-python JSON
Version 1.1.2 PyPI version JSON
download
home_pagehttps://github.com/garvys-org/rustfst
SummaryLibrary for constructing, combining, optimizing, and searching weighted finite-state transducers (FSTs). Re-implementation of OpenFst in Rust.
upload_time2024-08-16 16:32:48
maintainerNone
docs_urlNone
authorAlexandre Caulier, Emrick Sinitambirivoutin
requires_python>=3.7
licenseApache License, Version 2.0
keywords fst openfst graph transducer acceptor shortest-path minimize determinize wfst
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Rustfst

[![License: MIT/Apache-2.0](https://img.shields.io/crates/l/rustfst.svg)](#license)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity)
[![Github tag](https://badgen.net/github/tag/garvys-org/rustfst)](https://github.com/garvys-org/rustfst/tags/)


#### Rust
![rustc >= 1.51.0](https://img.shields.io/badge/rustc-%3E%3D1.51.0-brightgreen)
[![Native Linux test status](https://github.com/garvys-org/rustfst/workflows/Native/badge.svg)](https://github.com/garvys-org/rustfst/actions)
[![Documentation](https://docs.rs/rustfst/badge.svg)](https://docs.rs/rustfst)
[![](https://tokei.rs/b1/github/garvys-org/rustfst)](https://github.com/garvys-org/rustfst)
#### Python
[![PyPI version](https://badge.fury.io/py/rustfst-python.svg)](https://badge.fury.io/py/rustfst-python)
[![PyPI download month](https://img.shields.io/pypi/dm/rustfst-python.svg)](https://pypi.python.org/pypi/rustfst-python/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/rustfst-python.svg)](https://pypi.python.org/pypi/rustfst-python/)


<!-- cargo-sync-readme start -->

Rust implementation of Weighted Finite States Transducers.

Rustfst is a library for constructing, combining, optimizing, and searching weighted
finite-state transducers (FSTs). Weighted finite-state transducers are automata where
each transition has an input label, an output label, and a weight.
The more familiar finite-state acceptor is represented as a transducer
with each transition's input and output label equal. Finite-state acceptors
are used to represent sets of strings (specifically, regular or rational sets);
finite-state transducers are used to represent binary relations between pairs of
strings (specifically, rational transductions). The weights can be used to represent
the cost of taking a particular transition.

FSTs have key applications in speech recognition and synthesis, machine translation,
optical character recognition, pattern matching, string processing, machine learning,
information extraction and retrieval among others. Often a weighted transducer is used to
represent a probabilistic model (e.g., an n-gram model, pronunciation model). FSTs can be
optimized by determinization and minimization, models can be applied to hypothesis sets
(also represented as automata) or cascaded by finite-state composition, and the best
results can be selected by shortest-path algorithms.

![fst](https://raw.githubusercontent.com/Garvys/rustfst-images-doc/master/images/project_in.svg?sanitize=true)

## Overview

For a basic [example](#example) see the section below.

Some simple and commonly encountered types of FSTs can be easily
created with the macro [`fst`] or the functions
[`acceptor`](utils::acceptor) and
[`transducer`](utils::transducer).

For more complex cases you will likely start with the
[`VectorFst`](fst_impls::VectorFst) type, which will be imported
in the [`prelude`] along with most everything else you need.
[`VectorFst<TropicalWeight>`](fst_impls::VectorFst) corresponds
directly to the OpenFST `StdVectorFst`, and can be used to load
its files using [`read`](fst_traits::SerializableFst::read) or
[`read_text`](fst_traits::SerializableFst::read_text).

Because "iteration" over an FST can mean many different things,
there are a variety of different iterators.  To iterate over state
IDs you may use
[`states_iter`](fst_traits::StateIterator::states_iter), while to
iterate over transitions out of a state, you may use
[`get_trs`](fst_traits::CoreFst::get_trs).  Since it is common to
iterate over both, this can be done using
[`fst_iter`](fst_traits::FstIterator::fst_iter) or
[`fst_into_iter`](fst_traits::FstIntoIterator::fst_into_iter).  It
is also very common to iterate over paths accepted by an FST,
which can be done with
[`paths_iter`](fst_traits::Fst::paths_iter), and as a convenience
for generating text,
[`string_paths_iter`](fst_traits::Fst::string_paths_iter).
Alternately, in the case of a linear FST, you may retrieve the
only possible path with
[`decode_linear_fst`](utils::decode_linear_fst).

Note that iterating over paths is not the same thing as finding
the *shortest* path or paths, which is done with
[`shortest_path`](algorithms::shortest_path) (for a single path)
or
[`shortest_path_with_config`](algorithms::shortest_path_with_config)
(for N-shortest paths).

For the complete list of algorithms, see the [`algorithms`] module.

You may now be wondering, especially if you have previously used
such linguist-friendly tools as
[pyfoma](https://github.com/mhulden/pyfoma), "what if I just want
to *transduce some text*???"  The unfriendly answer is that
rustfst is a somewhat lower-level library, designed for
implementing things like speech recognizers.  The somewhat more
helpful answer is that you would do this by constructing an
[`acceptor`](utils::acceptor) for your input, which you will
[`compose`](algorithms::compose) with a
[`transducer`](utils::transducer), then
[`project`](algorithms::project) the result [to itsoutput](algorithms::ProjectType::ProjectOutput), and finally
[iterate over the paths](fst_traits::Fst::string_paths_iter) in
the resulting FST.

## References

Implementation heavily inspired from Mehryar Mohri's, Cyril Allauzen's and Michael Riley's work :
- [Weighted automata algorithms](https://cs.nyu.edu/~mohri/pub/hwa.pdf)
- [The design principles of a weighted finite-state transducer library](https://core.ac.uk/download/pdf/82101846.pdf)
- [OpenFst: A general and efficient weighted finite-state transducer library](https://link.springer.com/chapter/10.1007%2F978-3-540-76336-9_3)
- [Weighted finite-state transducers in speech recognition](https://repository.upenn.edu/cgi/viewcontent.cgi?article=1010&context=cis_papers)

The API closely resembles that of OpenFST, with some
simplifications and changes to make it more idiomatic in Rust, notably
the use of `Tr` instead of `Arc`.  See [Differences fromOpenFST](#differences-from-openfst) for more information.

## Example

```rust
use anyhow::Result;
use rustfst::prelude::*;
use rustfst::algorithms::determinize::{DeterminizeType, determinize};
use rustfst::algorithms::rm_epsilon::rm_epsilon;

fn main() -> Result<()> {
    // Creates a empty wFST
    let mut fst = VectorFst::<TropicalWeight>::new();

    // Add some states
    let s0 = fst.add_state();
    let s1 = fst.add_state();
    let s2 = fst.add_state();

    // Set s0 as the start state
    fst.set_start(s0)?;

    // Add a transition from s0 to s1
    fst.add_tr(s0, Tr::new(3, 5, 10.0, s1))?;

    // Add a transition from s0 to s2
    fst.add_tr(s0, Tr::new(5, 7, 18.0, s2))?;

    // Set s1 and s2 as final states
    fst.set_final(s1, 31.0)?;
    fst.set_final(s2, 45.0)?;

    // Iter over all the paths in the wFST
    for p in fst.paths_iter() {
         println!("{:?}", p);
    }

    // A lot of operations are available to modify/optimize the FST.
    // Here are a few examples :

    // - Remove useless states.
    connect(&mut fst)?;

    // - Optimize the FST by merging states with the same behaviour.
    minimize(&mut fst)?;

    // - Copy all the input labels in the output.
    project(&mut fst, ProjectType::ProjectInput);

    // - Remove epsilon transitions.
    rm_epsilon(&mut fst)?;

    // - Compute an equivalent FST but deterministic.
    fst = determinize(&fst)?;

    Ok(())
}
```

## Differences from OpenFST

Here is a non-exhaustive list of ways in which Rustfst's API
differs from OpenFST:

- The default epsilon symbol is `<eps>` and not `<epsilon>`.
- Functions and methods follow Rust naming conventions,
  e.g. `add_state` rather than `AddState`, but are otherwise mostly
  equivalent, except that:
- Transitions are called `Tr` and not `Arc`, because `Arc` has a
  rather different and well-established meaning in Rust, and rustfst
  uses it (`std::sync::Arc`, that is) to reference-count symbol
  tables.  All associated functions also use `tr`.
- Final states are not indicated by a final weight of `zero`.  You
  can test for finality using [`is_final`](fst_traits::CoreFst::is_final), and
  [`final_weight`](fst_traits::CoreFst::final_weight) returns an [`Option`].  This
  requires some care when converting OpenFST code.
- Transitions can be accessed directly as a slice rather than requiring
  an iterator.
- Semiring operations are expressed as plain old methods rather
  than strange C++ things.  So write `w1.plus(w2)` rather than
  `Plus(w1, w2)`, for instance.
- Weights have in-place operations for ⊕
  ([`plus_assign`](Semiring::plus_assign)) and ⊗
  ([`times_assign`](Semiring::times_assign)).
- Most of the type aliases (which would be trait aliases in Rust) such
  as `StdArc`, `StdFst`, and so forth, are missing, but type inference
  allows us to avoid explicit type arguments in most cases, such as
  when calling [`Tr::new`], for instance.
- State IDs are unsigned, with [`NO_STATE_ID`] used for a missing value.
  They are also 32 bits by default (presumably, 4 billion states
  is enough for most applications).  This means you must take care to
  cast them to [`usize`] when using them as indices, and vice-versa,
  preferably checking for overflows
- Symbol IDs are also unsigned and 32-bits, with [`NO_LABEL`] used
  for a missing value.
- Floating-point weights are not generic, so are always single-precision.

<!-- cargo-sync-readme end -->

## Benchmark with OpenFST

I did a benchmark some time ago on almost every linear fst algorithm and compared the results with `OpenFst`. You can find the results here :

- [Benchmark at the C++ level](https://github.com/garvys-org/rustfst/blob/master/bench_results/bench_funct_80.md)
- [Benchmark at the CLI level](https://github.com/garvys-org/rustfst/blob/master/bench_results/bench_cli_80.md)

Spoiler alert: `Rustfst` is faster on all those algorithms 😅

## Documentation

The documentation of the last released version is available here :
https://docs.rs/rustfst

## Release process
1. Use the script `update_version.sh` to update the version of every package.
2. Push 
3. Push a new tag with the prefix `rustfst-v`

Example :
```bash
./update_version.sh 0.9.1-alpha.6
git commit -am "Release 0.9.1-alpha.6"
git push
git tag -a rustfst-v0.9.1-alpha.6 -m "Release rustfst 0.9.1-alpha.6"  
git push --tags
```

Optionally, if this is a major release, create a GitHub release in the UI.

## Projects contained in this repository
This repository contains two main projects:
- `rustfst` is the Rust re-implementation.
  - Crate available on crates.io [here](https://crates.io/crates/rustfst)
  - Documentation available on docs.rs [here](https://docs.rs/rustfst/latest/rustfst/)
- `rustfst-python` is the python binding of `rustfst`.
  - Package available on Pypi [here](https://pypi.org/project/rustfst-python/)
  - Documentation available on Github Pages [here](https://garvys-org.github.io/rustfst/)

## License
   
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.

## Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/garvys-org/rustfst",
    "name": "rustfst-python",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "fst openfst graph transducer acceptor shortest-path minimize determinize wfst",
    "author": "Alexandre Caulier, Emrick Sinitambirivoutin",
    "author_email": "alexandre.caulier.a@gmail.com, emrick.sinitambirivoutin@sonos.com",
    "download_url": null,
    "platform": null,
    "description": "# Rustfst\n\n[![License: MIT/Apache-2.0](https://img.shields.io/crates/l/rustfst.svg)](#license)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity)\n[![Github tag](https://badgen.net/github/tag/garvys-org/rustfst)](https://github.com/garvys-org/rustfst/tags/)\n\n\n#### Rust\n![rustc >= 1.51.0](https://img.shields.io/badge/rustc-%3E%3D1.51.0-brightgreen)\n[![Native Linux test status](https://github.com/garvys-org/rustfst/workflows/Native/badge.svg)](https://github.com/garvys-org/rustfst/actions)\n[![Documentation](https://docs.rs/rustfst/badge.svg)](https://docs.rs/rustfst)\n[![](https://tokei.rs/b1/github/garvys-org/rustfst)](https://github.com/garvys-org/rustfst)\n#### Python\n[![PyPI version](https://badge.fury.io/py/rustfst-python.svg)](https://badge.fury.io/py/rustfst-python)\n[![PyPI download month](https://img.shields.io/pypi/dm/rustfst-python.svg)](https://pypi.python.org/pypi/rustfst-python/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/rustfst-python.svg)](https://pypi.python.org/pypi/rustfst-python/)\n\n\n<!-- cargo-sync-readme start -->\n\nRust implementation of Weighted Finite States Transducers.\n\nRustfst is a library for constructing, combining, optimizing, and searching weighted\nfinite-state transducers (FSTs). Weighted finite-state transducers are automata where\neach transition has an input label, an output label, and a weight.\nThe more familiar finite-state acceptor is represented as a transducer\nwith each transition's input and output label equal. Finite-state acceptors\nare used to represent sets of strings (specifically, regular or rational sets);\nfinite-state transducers are used to represent binary relations between pairs of\nstrings (specifically, rational transductions). The weights can be used to represent\nthe cost of taking a particular transition.\n\nFSTs have key applications in speech recognition and synthesis, machine translation,\noptical character recognition, pattern matching, string processing, machine learning,\ninformation extraction and retrieval among others. Often a weighted transducer is used to\nrepresent a probabilistic model (e.g., an n-gram model, pronunciation model). FSTs can be\noptimized by determinization and minimization, models can be applied to hypothesis sets\n(also represented as automata) or cascaded by finite-state composition, and the best\nresults can be selected by shortest-path algorithms.\n\n![fst](https://raw.githubusercontent.com/Garvys/rustfst-images-doc/master/images/project_in.svg?sanitize=true)\n\n## Overview\n\nFor a basic [example](#example) see the section below.\n\nSome simple and commonly encountered types of FSTs can be easily\ncreated with the macro [`fst`] or the functions\n[`acceptor`](utils::acceptor) and\n[`transducer`](utils::transducer).\n\nFor more complex cases you will likely start with the\n[`VectorFst`](fst_impls::VectorFst) type, which will be imported\nin the [`prelude`] along with most everything else you need.\n[`VectorFst<TropicalWeight>`](fst_impls::VectorFst) corresponds\ndirectly to the OpenFST `StdVectorFst`, and can be used to load\nits files using [`read`](fst_traits::SerializableFst::read) or\n[`read_text`](fst_traits::SerializableFst::read_text).\n\nBecause \"iteration\" over an FST can mean many different things,\nthere are a variety of different iterators.  To iterate over state\nIDs you may use\n[`states_iter`](fst_traits::StateIterator::states_iter), while to\niterate over transitions out of a state, you may use\n[`get_trs`](fst_traits::CoreFst::get_trs).  Since it is common to\niterate over both, this can be done using\n[`fst_iter`](fst_traits::FstIterator::fst_iter) or\n[`fst_into_iter`](fst_traits::FstIntoIterator::fst_into_iter).  It\nis also very common to iterate over paths accepted by an FST,\nwhich can be done with\n[`paths_iter`](fst_traits::Fst::paths_iter), and as a convenience\nfor generating text,\n[`string_paths_iter`](fst_traits::Fst::string_paths_iter).\nAlternately, in the case of a linear FST, you may retrieve the\nonly possible path with\n[`decode_linear_fst`](utils::decode_linear_fst).\n\nNote that iterating over paths is not the same thing as finding\nthe *shortest* path or paths, which is done with\n[`shortest_path`](algorithms::shortest_path) (for a single path)\nor\n[`shortest_path_with_config`](algorithms::shortest_path_with_config)\n(for N-shortest paths).\n\nFor the complete list of algorithms, see the [`algorithms`] module.\n\nYou may now be wondering, especially if you have previously used\nsuch linguist-friendly tools as\n[pyfoma](https://github.com/mhulden/pyfoma), \"what if I just want\nto *transduce some text*???\"  The unfriendly answer is that\nrustfst is a somewhat lower-level library, designed for\nimplementing things like speech recognizers.  The somewhat more\nhelpful answer is that you would do this by constructing an\n[`acceptor`](utils::acceptor) for your input, which you will\n[`compose`](algorithms::compose) with a\n[`transducer`](utils::transducer), then\n[`project`](algorithms::project) the result [to itsoutput](algorithms::ProjectType::ProjectOutput), and finally\n[iterate over the paths](fst_traits::Fst::string_paths_iter) in\nthe resulting FST.\n\n## References\n\nImplementation heavily inspired from Mehryar Mohri's, Cyril Allauzen's and Michael Riley's work :\n- [Weighted automata algorithms](https://cs.nyu.edu/~mohri/pub/hwa.pdf)\n- [The design principles of a weighted finite-state transducer library](https://core.ac.uk/download/pdf/82101846.pdf)\n- [OpenFst: A general and efficient weighted finite-state transducer library](https://link.springer.com/chapter/10.1007%2F978-3-540-76336-9_3)\n- [Weighted finite-state transducers in speech recognition](https://repository.upenn.edu/cgi/viewcontent.cgi?article=1010&context=cis_papers)\n\nThe API closely resembles that of OpenFST, with some\nsimplifications and changes to make it more idiomatic in Rust, notably\nthe use of `Tr` instead of `Arc`.  See [Differences fromOpenFST](#differences-from-openfst) for more information.\n\n## Example\n\n```rust\nuse anyhow::Result;\nuse rustfst::prelude::*;\nuse rustfst::algorithms::determinize::{DeterminizeType, determinize};\nuse rustfst::algorithms::rm_epsilon::rm_epsilon;\n\nfn main() -> Result<()> {\n    // Creates a empty wFST\n    let mut fst = VectorFst::<TropicalWeight>::new();\n\n    // Add some states\n    let s0 = fst.add_state();\n    let s1 = fst.add_state();\n    let s2 = fst.add_state();\n\n    // Set s0 as the start state\n    fst.set_start(s0)?;\n\n    // Add a transition from s0 to s1\n    fst.add_tr(s0, Tr::new(3, 5, 10.0, s1))?;\n\n    // Add a transition from s0 to s2\n    fst.add_tr(s0, Tr::new(5, 7, 18.0, s2))?;\n\n    // Set s1 and s2 as final states\n    fst.set_final(s1, 31.0)?;\n    fst.set_final(s2, 45.0)?;\n\n    // Iter over all the paths in the wFST\n    for p in fst.paths_iter() {\n         println!(\"{:?}\", p);\n    }\n\n    // A lot of operations are available to modify/optimize the FST.\n    // Here are a few examples :\n\n    // - Remove useless states.\n    connect(&mut fst)?;\n\n    // - Optimize the FST by merging states with the same behaviour.\n    minimize(&mut fst)?;\n\n    // - Copy all the input labels in the output.\n    project(&mut fst, ProjectType::ProjectInput);\n\n    // - Remove epsilon transitions.\n    rm_epsilon(&mut fst)?;\n\n    // - Compute an equivalent FST but deterministic.\n    fst = determinize(&fst)?;\n\n    Ok(())\n}\n```\n\n## Differences from OpenFST\n\nHere is a non-exhaustive list of ways in which Rustfst's API\ndiffers from OpenFST:\n\n- The default epsilon symbol is `<eps>` and not `<epsilon>`.\n- Functions and methods follow Rust naming conventions,\n  e.g. `add_state` rather than `AddState`, but are otherwise mostly\n  equivalent, except that:\n- Transitions are called `Tr` and not `Arc`, because `Arc` has a\n  rather different and well-established meaning in Rust, and rustfst\n  uses it (`std::sync::Arc`, that is) to reference-count symbol\n  tables.  All associated functions also use `tr`.\n- Final states are not indicated by a final weight of `zero`.  You\n  can test for finality using [`is_final`](fst_traits::CoreFst::is_final), and\n  [`final_weight`](fst_traits::CoreFst::final_weight) returns an [`Option`].  This\n  requires some care when converting OpenFST code.\n- Transitions can be accessed directly as a slice rather than requiring\n  an iterator.\n- Semiring operations are expressed as plain old methods rather\n  than strange C++ things.  So write `w1.plus(w2)` rather than\n  `Plus(w1, w2)`, for instance.\n- Weights have in-place operations for \u2295\n  ([`plus_assign`](Semiring::plus_assign)) and \u2297\n  ([`times_assign`](Semiring::times_assign)).\n- Most of the type aliases (which would be trait aliases in Rust) such\n  as `StdArc`, `StdFst`, and so forth, are missing, but type inference\n  allows us to avoid explicit type arguments in most cases, such as\n  when calling [`Tr::new`], for instance.\n- State IDs are unsigned, with [`NO_STATE_ID`] used for a missing value.\n  They are also 32 bits by default (presumably, 4 billion states\n  is enough for most applications).  This means you must take care to\n  cast them to [`usize`] when using them as indices, and vice-versa,\n  preferably checking for overflows\n- Symbol IDs are also unsigned and 32-bits, with [`NO_LABEL`] used\n  for a missing value.\n- Floating-point weights are not generic, so are always single-precision.\n\n<!-- cargo-sync-readme end -->\n\n## Benchmark with OpenFST\n\nI did a benchmark some time ago on almost every linear fst algorithm and compared the results with `OpenFst`. You can find the results here :\n\n- [Benchmark at the C++ level](https://github.com/garvys-org/rustfst/blob/master/bench_results/bench_funct_80.md)\n- [Benchmark at the CLI level](https://github.com/garvys-org/rustfst/blob/master/bench_results/bench_cli_80.md)\n\nSpoiler alert: `Rustfst` is faster on all those algorithms \ud83d\ude05\n\n## Documentation\n\nThe documentation of the last released version is available here :\nhttps://docs.rs/rustfst\n\n## Release process\n1. Use the script `update_version.sh` to update the version of every package.\n2. Push \n3. Push a new tag with the prefix `rustfst-v`\n\nExample :\n```bash\n./update_version.sh 0.9.1-alpha.6\ngit commit -am \"Release 0.9.1-alpha.6\"\ngit push\ngit tag -a rustfst-v0.9.1-alpha.6 -m \"Release rustfst 0.9.1-alpha.6\"  \ngit push --tags\n```\n\nOptionally, if this is a major release, create a GitHub release in the UI.\n\n## Projects contained in this repository\nThis repository contains two main projects:\n- `rustfst` is the Rust re-implementation.\n  - Crate available on crates.io [here](https://crates.io/crates/rustfst)\n  - Documentation available on docs.rs [here](https://docs.rs/rustfst/latest/rustfst/)\n- `rustfst-python` is the python binding of `rustfst`.\n  - Package available on Pypi [here](https://pypi.org/project/rustfst-python/)\n  - Documentation available on Github Pages [here](https://garvys-org.github.io/rustfst/)\n\n## License\n   \nLicensed under either of\n- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license (LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n",
    "bugtrack_url": null,
    "license": "Apache License, Version 2.0",
    "summary": "Library for constructing, combining, optimizing, and searching weighted finite-state transducers (FSTs). Re-implementation of OpenFst in Rust.",
    "version": "1.1.2",
    "project_urls": {
        "Documentation": "https://garvys-org.github.io/rustfst/",
        "Homepage": "https://github.com/garvys-org/rustfst",
        "Source": "https://github.com/garvys-org/rustfst"
    },
    "split_keywords": [
        "fst",
        "openfst",
        "graph",
        "transducer",
        "acceptor",
        "shortest-path",
        "minimize",
        "determinize",
        "wfst"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca9d62ca9646c2cbec7749ea668c43d6c5759da2388752baa16f97849d6d5173",
                "md5": "81224deb6411b3a1d37677854989631d",
                "sha256": "751000afdcee046d3707f31ef6601d7bc4912267bd619071603b87035e6a8813"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "81224deb6411b3a1d37677854989631d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 728913,
            "upload_time": "2024-08-16T16:32:48",
            "upload_time_iso_8601": "2024-08-16T16:32:48.347809Z",
            "url": "https://files.pythonhosted.org/packages/ca/9d/62ca9646c2cbec7749ea668c43d6c5759da2388752baa16f97849d6d5173/rustfst_python-1.1.2-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c93b32686493a74ebe706ea65c20c7a9bc228cb4ce55b0754e03220d83268b39",
                "md5": "de11601e4e3b00b8ab898c49c5c27d62",
                "sha256": "b692e751d72a690e799df22bb06054450afde36dfe3a5be18aec156dae8773c2"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "de11601e4e3b00b8ab898c49c5c27d62",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 661426,
            "upload_time": "2024-08-16T16:32:49",
            "upload_time_iso_8601": "2024-08-16T16:32:49.796582Z",
            "url": "https://files.pythonhosted.org/packages/c9/3b/32686493a74ebe706ea65c20c7a9bc228cb4ce55b0754e03220d83268b39/rustfst_python-1.1.2-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7b1e58e84d0a8f99f39cf5b642a637bd8fd4df1486d7b842dae69e92f82a57b6",
                "md5": "6715be1f37ba734d780a5063b61eaefc",
                "sha256": "6d3481f494d87104241ca91f475919425ee1d6fb9e310c13879a415c67305304"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6715be1f37ba734d780a5063b61eaefc",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 789145,
            "upload_time": "2024-08-16T16:28:29",
            "upload_time_iso_8601": "2024-08-16T16:28:29.360809Z",
            "url": "https://files.pythonhosted.org/packages/7b/1e/58e84d0a8f99f39cf5b642a637bd8fd4df1486d7b842dae69e92f82a57b6/rustfst_python-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f1438f9afba7725a4176540cf61abbd7e1cbbff58ad3764b36dc4fa362021625",
                "md5": "c33f5d50e3c21e52d1b77d785ae7bfdd",
                "sha256": "64e6c2f7eced095753a36e95ba914b4a679d100ba4cd413939f6480224bfdeb6"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "c33f5d50e3c21e52d1b77d785ae7bfdd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 806229,
            "upload_time": "2024-08-16T16:28:31",
            "upload_time_iso_8601": "2024-08-16T16:28:31.252881Z",
            "url": "https://files.pythonhosted.org/packages/f1/43/8f9afba7725a4176540cf61abbd7e1cbbff58ad3764b36dc4fa362021625/rustfst_python-1.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6910650e016098323c196e1c608494374bf05bcf4187744d8b45987fdf5bcf70",
                "md5": "ace2e4c3b76fe892445c1e2556632170",
                "sha256": "5d2ea418a9c331751802f9aa874d400d36cd9daefa25ee89fd0980c27d9c786d"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ace2e4c3b76fe892445c1e2556632170",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 822780,
            "upload_time": "2024-08-16T16:28:32",
            "upload_time_iso_8601": "2024-08-16T16:28:32.906028Z",
            "url": "https://files.pythonhosted.org/packages/69/10/650e016098323c196e1c608494374bf05bcf4187744d8b45987fdf5bcf70/rustfst_python-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ee7c74dcd3ab8263c57c1723ec32a12d7f49a80affc147ba9883a367b8a6ffa2",
                "md5": "1fa7c2c28775fb7e09c304baf3eb8431",
                "sha256": "50a9f916356308d935e56b550fcb64f47989a7d9611ad09544ca0603499f4a80"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1fa7c2c28775fb7e09c304baf3eb8431",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 728912,
            "upload_time": "2024-08-16T16:32:50",
            "upload_time_iso_8601": "2024-08-16T16:32:50.931712Z",
            "url": "https://files.pythonhosted.org/packages/ee/7c/74dcd3ab8263c57c1723ec32a12d7f49a80affc147ba9883a367b8a6ffa2/rustfst_python-1.1.2-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d01098fd7824d1b272dc2970a45a64d4bfae94a558aec44456f05e8432a04227",
                "md5": "689d750349fbcf9c6529b69639df469b",
                "sha256": "146ea1d378a1c3810f0d91c83af3c2e3a055bf6fca7df5006d5c39ddf0d1ebd7"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "689d750349fbcf9c6529b69639df469b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 661427,
            "upload_time": "2024-08-16T16:32:52",
            "upload_time_iso_8601": "2024-08-16T16:32:52.578676Z",
            "url": "https://files.pythonhosted.org/packages/d0/10/98fd7824d1b272dc2970a45a64d4bfae94a558aec44456f05e8432a04227/rustfst_python-1.1.2-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4a978cc77ca73bcdb5d8dc3bd22eb3f8974cf1872326f554b6ecda51aaf45b61",
                "md5": "b2198bf52df55bb74d2fbcc6fda87ef0",
                "sha256": "b35cc535c1d3be75074752cd240b19b0d80e075796d85d01e86e4c8df6576dc1"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b2198bf52df55bb74d2fbcc6fda87ef0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 789145,
            "upload_time": "2024-08-16T16:28:34",
            "upload_time_iso_8601": "2024-08-16T16:28:34.346971Z",
            "url": "https://files.pythonhosted.org/packages/4a/97/8cc77ca73bcdb5d8dc3bd22eb3f8974cf1872326f554b6ecda51aaf45b61/rustfst_python-1.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d3cabc3e71fcc2d4dabb05981886b68cd57b99d8bc410af3f95717cef670295",
                "md5": "3f5f4f7769256dc3e38e536a13d45a43",
                "sha256": "456391b82e0cfe1d2b9672b473f1ed686cc247fb92fc097233c2e0db0638c826"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "3f5f4f7769256dc3e38e536a13d45a43",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 806230,
            "upload_time": "2024-08-16T16:28:35",
            "upload_time_iso_8601": "2024-08-16T16:28:35.846404Z",
            "url": "https://files.pythonhosted.org/packages/5d/3c/abc3e71fcc2d4dabb05981886b68cd57b99d8bc410af3f95717cef670295/rustfst_python-1.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9e3df9ecd5e3477cca1281f70ebefb9839eb245c1f2e0566f771d89e16988af1",
                "md5": "3f3e25eb1962be4a57f4dbe0a1c2d6fe",
                "sha256": "c9c998241bc0e474834d473d78f882ddf5225d59f6cf2be7c71e2c806f0d5fbe"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3f3e25eb1962be4a57f4dbe0a1c2d6fe",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 822782,
            "upload_time": "2024-08-16T16:28:37",
            "upload_time_iso_8601": "2024-08-16T16:28:37.762665Z",
            "url": "https://files.pythonhosted.org/packages/9e/3d/f9ecd5e3477cca1281f70ebefb9839eb245c1f2e0566f771d89e16988af1/rustfst_python-1.1.2-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d4ad8f924425a29e4658a4038f073ec16792f04adabf35a2a4cd272eb62b975",
                "md5": "694fff25f404c41384f06d865ffbfe68",
                "sha256": "0328afc22ee60ad1da4b63acad5a2abbc734da1bb9dfbb17ced790fd9e6c92e9"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "694fff25f404c41384f06d865ffbfe68",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 728912,
            "upload_time": "2024-08-16T16:32:54",
            "upload_time_iso_8601": "2024-08-16T16:32:54.212012Z",
            "url": "https://files.pythonhosted.org/packages/5d/4a/d8f924425a29e4658a4038f073ec16792f04adabf35a2a4cd272eb62b975/rustfst_python-1.1.2-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4ca9ae9aa9fac8b0e5c43d721433f2f50f77af34783ab2528569a8a2899cd961",
                "md5": "3dda4762e0f717791c9b86f174035fd9",
                "sha256": "6b37e4f3b0165376e1bac75a62d207f4f558351e8d0f32acd742efb9ac9bd5d7"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3dda4762e0f717791c9b86f174035fd9",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 789147,
            "upload_time": "2024-08-16T16:28:39",
            "upload_time_iso_8601": "2024-08-16T16:28:39.246127Z",
            "url": "https://files.pythonhosted.org/packages/4c/a9/ae9aa9fac8b0e5c43d721433f2f50f77af34783ab2528569a8a2899cd961/rustfst_python-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1fa161d0babe0295ee4a4be04259310ac1d12ab8498f73be3b08f5d624bb8a53",
                "md5": "0219301427c496058b69efb9e2926cd0",
                "sha256": "c2ad8e7b55319f57f52283b4c05c5037cf9e333732823432f1883c0c75691eb5"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "0219301427c496058b69efb9e2926cd0",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 806229,
            "upload_time": "2024-08-16T16:28:41",
            "upload_time_iso_8601": "2024-08-16T16:28:41.256122Z",
            "url": "https://files.pythonhosted.org/packages/1f/a1/61d0babe0295ee4a4be04259310ac1d12ab8498f73be3b08f5d624bb8a53/rustfst_python-1.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7fe134e649e8d9e8099ae2987af1028b28f9a9ff921fb33e000194771a6e2d2",
                "md5": "96ef2ea9ed922f28f5097d9f569d9e34",
                "sha256": "8484fe2ea5a460c8869e3ab2d6cee33351a02edfe0f1fa99307ad18b649a8667"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "96ef2ea9ed922f28f5097d9f569d9e34",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 822782,
            "upload_time": "2024-08-16T16:28:42",
            "upload_time_iso_8601": "2024-08-16T16:28:42.492010Z",
            "url": "https://files.pythonhosted.org/packages/a7/fe/134e649e8d9e8099ae2987af1028b28f9a9ff921fb33e000194771a6e2d2/rustfst_python-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a42c32310d88350e8fb99a59755c67bf7d3dcb7bc764392b3234e7687971e450",
                "md5": "7507596075bd9acb3588f1c7a6d57551",
                "sha256": "dabda9da739088cec24dd824dd2f35a3715f66bd023edca2486088842a97cd7f"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7507596075bd9acb3588f1c7a6d57551",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 728906,
            "upload_time": "2024-08-16T16:32:56",
            "upload_time_iso_8601": "2024-08-16T16:32:56.079584Z",
            "url": "https://files.pythonhosted.org/packages/a4/2c/32310d88350e8fb99a59755c67bf7d3dcb7bc764392b3234e7687971e450/rustfst_python-1.1.2-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b5bfdd934c08dd50c08da800169a5eb7a6c5284b197af49f83d1b162c635e940",
                "md5": "f39d22a6af5caed30854458c52c58685",
                "sha256": "da267c74917762f64c267979f39caa0bcb055ad0ca67ef0dca48026784bdf95b"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "f39d22a6af5caed30854458c52c58685",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 661421,
            "upload_time": "2024-08-16T16:32:57",
            "upload_time_iso_8601": "2024-08-16T16:32:57.839865Z",
            "url": "https://files.pythonhosted.org/packages/b5/bf/dd934c08dd50c08da800169a5eb7a6c5284b197af49f83d1b162c635e940/rustfst_python-1.1.2-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "65e451913fa6e2ea6583a4f5c11a4a79e8e2ff24e0011b796750b6a691ed9c79",
                "md5": "5520c01a8e72e7ae3389c5d90e42e345",
                "sha256": "17695a7e0ae1115869bed802c4ae5b35b7557322c3cbcf1a5e21a8596b80c7df"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5520c01a8e72e7ae3389c5d90e42e345",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 789140,
            "upload_time": "2024-08-16T16:28:44",
            "upload_time_iso_8601": "2024-08-16T16:28:44.413588Z",
            "url": "https://files.pythonhosted.org/packages/65/e4/51913fa6e2ea6583a4f5c11a4a79e8e2ff24e0011b796750b6a691ed9c79/rustfst_python-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cb951d3585221e128e8cdf2720f4dac8ed16af532016932885df90e674975b59",
                "md5": "1ce73e44329b685c7387a3fc7c012c47",
                "sha256": "12bd56aa83597bb584767e632cdd644d7841764cc1d29987dbcb8842df551298"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "1ce73e44329b685c7387a3fc7c012c47",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 806224,
            "upload_time": "2024-08-16T16:28:46",
            "upload_time_iso_8601": "2024-08-16T16:28:46.088104Z",
            "url": "https://files.pythonhosted.org/packages/cb/95/1d3585221e128e8cdf2720f4dac8ed16af532016932885df90e674975b59/rustfst_python-1.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c9f6938c89668e14ba4a5f00f82386a0cdd845edcba9e4919a23179744d39cdf",
                "md5": "647b82a6cb18c56488d14907452a8025",
                "sha256": "eb4c4146d12752df9069e0bfa00ff5cf241edd419ccbadc8f1897cb861d58349"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "647b82a6cb18c56488d14907452a8025",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 822775,
            "upload_time": "2024-08-16T16:28:47",
            "upload_time_iso_8601": "2024-08-16T16:28:47.372415Z",
            "url": "https://files.pythonhosted.org/packages/c9/f6/938c89668e14ba4a5f00f82386a0cdd845edcba9e4919a23179744d39cdf/rustfst_python-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9280ad0351a491f0d9d9129eafc9e2cb7b30b13ec861a54cc8412c1933095cff",
                "md5": "68781f41cb7f3b0cdcfb1473f81180f9",
                "sha256": "6a40394dca7b3b71342199713ffc3a938357df90f7544d8c668581e2e63a182b"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "68781f41cb7f3b0cdcfb1473f81180f9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 728906,
            "upload_time": "2024-08-16T16:32:59",
            "upload_time_iso_8601": "2024-08-16T16:32:59.333604Z",
            "url": "https://files.pythonhosted.org/packages/92/80/ad0351a491f0d9d9129eafc9e2cb7b30b13ec861a54cc8412c1933095cff/rustfst_python-1.1.2-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f79fe8b35ffc6881f0cc29b8e0f3b8a3604c0fb14721a1ce7bafdadfe3e428f7",
                "md5": "267057b944c193aa98faaf43d86739ac",
                "sha256": "fdb6d119c1a65a0c5d0af256051866fcf7be535fd36b4a2f506d252378821457"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "267057b944c193aa98faaf43d86739ac",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 661422,
            "upload_time": "2024-08-16T16:33:00",
            "upload_time_iso_8601": "2024-08-16T16:33:00.517235Z",
            "url": "https://files.pythonhosted.org/packages/f7/9f/e8b35ffc6881f0cc29b8e0f3b8a3604c0fb14721a1ce7bafdadfe3e428f7/rustfst_python-1.1.2-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "377fe0c30952f2ed7f07c655a5bba8fb7bd0b7c8ed7a35c7f6ed57d15e5a7175",
                "md5": "1d951a615392025b3be9527166fac963",
                "sha256": "6fdd1fc9fac6fdc8cc02f6a334dfe404bd2fdaf368066e19688c2c88f4ef592b"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1d951a615392025b3be9527166fac963",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 789141,
            "upload_time": "2024-08-16T16:28:48",
            "upload_time_iso_8601": "2024-08-16T16:28:48.673941Z",
            "url": "https://files.pythonhosted.org/packages/37/7f/e0c30952f2ed7f07c655a5bba8fb7bd0b7c8ed7a35c7f6ed57d15e5a7175/rustfst_python-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f42b968d8136c2a1eb4d589787c6e589f37fcd9a453a231dff8e899b5aeb1e0c",
                "md5": "291e8bf54301259eebcdf38c8b6c4ff1",
                "sha256": "08a570eb357b7451ed08f6e0ec365857fa406805a2f62b8da3391530e47baef1"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "291e8bf54301259eebcdf38c8b6c4ff1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 806224,
            "upload_time": "2024-08-16T16:28:50",
            "upload_time_iso_8601": "2024-08-16T16:28:50.464848Z",
            "url": "https://files.pythonhosted.org/packages/f4/2b/968d8136c2a1eb4d589787c6e589f37fcd9a453a231dff8e899b5aeb1e0c/rustfst_python-1.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "701aa0e20ab3b65530ec38581af7eeb7b7ed067ab2c75edcb1f362fcc64154b4",
                "md5": "7bca3be0da2321f4273ce0d378dc142e",
                "sha256": "323664b87f73cd740bd15aa76eec9ff241a34d73f62ff29e892e875583db2763"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7bca3be0da2321f4273ce0d378dc142e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 822775,
            "upload_time": "2024-08-16T16:28:51",
            "upload_time_iso_8601": "2024-08-16T16:28:51.683934Z",
            "url": "https://files.pythonhosted.org/packages/70/1a/a0e20ab3b65530ec38581af7eeb7b7ed067ab2c75edcb1f362fcc64154b4/rustfst_python-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4c4825fb867f74780d26b2076b8927a75b867ec98fd24bdffe204cf67efa1bc6",
                "md5": "856e3e519c7a66e8d626056a174432b2",
                "sha256": "2fab44fdc104d89927bf03bdc450edad952f77ff1bd43ea5dc1a849a616f3831"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "856e3e519c7a66e8d626056a174432b2",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 728922,
            "upload_time": "2024-08-16T16:33:02",
            "upload_time_iso_8601": "2024-08-16T16:33:02.260637Z",
            "url": "https://files.pythonhosted.org/packages/4c/48/25fb867f74780d26b2076b8927a75b867ec98fd24bdffe204cf67efa1bc6/rustfst_python-1.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "31375997d658a60b19fa5cb63cbca8befafec5d5d9bfd323f7f3928328edb05e",
                "md5": "f18266a11b87a953f713c777e53b74f4",
                "sha256": "92a4bab7b90d469d304cbf9b39733878c47665b0095c20ddefd1dea88a4a4fa7"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f18266a11b87a953f713c777e53b74f4",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 789152,
            "upload_time": "2024-08-16T16:28:52",
            "upload_time_iso_8601": "2024-08-16T16:28:52.852522Z",
            "url": "https://files.pythonhosted.org/packages/31/37/5997d658a60b19fa5cb63cbca8befafec5d5d9bfd323f7f3928328edb05e/rustfst_python-1.1.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "118e1ac566e63674996f9db7f721b70ca18be890ffc1f4d5bc6468bebd66256f",
                "md5": "9db9da5c571b381f19cacb2aabbcab51",
                "sha256": "7df5beecb324ff7d4adb85bc62aec86911223b0089bb7c17c3bbe88aff492eee"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "9db9da5c571b381f19cacb2aabbcab51",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 806233,
            "upload_time": "2024-08-16T16:28:54",
            "upload_time_iso_8601": "2024-08-16T16:28:54.306654Z",
            "url": "https://files.pythonhosted.org/packages/11/8e/1ac566e63674996f9db7f721b70ca18be890ffc1f4d5bc6468bebd66256f/rustfst_python-1.1.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "97d1e6bebd4a708b415372ee27c9b2a32844be81d280d7a90156be62c7e9721a",
                "md5": "6053e3b8b7fd08df149a9eec85a827f8",
                "sha256": "26ce9502405c96f2e561c5546f778f14fcc93195da6a72dc7f710b1d2208929e"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6053e3b8b7fd08df149a9eec85a827f8",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 728922,
            "upload_time": "2024-08-16T16:33:04",
            "upload_time_iso_8601": "2024-08-16T16:33:04.081872Z",
            "url": "https://files.pythonhosted.org/packages/97/d1/e6bebd4a708b415372ee27c9b2a32844be81d280d7a90156be62c7e9721a/rustfst_python-1.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2c8414027e2d09c46c35c9014314cc7bce4224b03d90f5510edaa35ff3f9ccd4",
                "md5": "54ca08cbb955e32a2a42399d56e9d37f",
                "sha256": "536c402fcf923e1191086b163a41f62c4888fdcf05ac5062fea85b8642c721d4"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "54ca08cbb955e32a2a42399d56e9d37f",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 789153,
            "upload_time": "2024-08-16T16:28:55",
            "upload_time_iso_8601": "2024-08-16T16:28:55.907563Z",
            "url": "https://files.pythonhosted.org/packages/2c/84/14027e2d09c46c35c9014314cc7bce4224b03d90f5510edaa35ff3f9ccd4/rustfst_python-1.1.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3f069f01a28a7d376e65ed0e5c60d01f3280105e82fdbb2e9f06ebb4c055c46b",
                "md5": "4f3960556f3166076b243eeb522d6dd4",
                "sha256": "1ca69e68aa0592dacfca935b697c3b1d63ee8a66cedaf2a01940641daf83b031"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "4f3960556f3166076b243eeb522d6dd4",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 806234,
            "upload_time": "2024-08-16T16:28:57",
            "upload_time_iso_8601": "2024-08-16T16:28:57.236693Z",
            "url": "https://files.pythonhosted.org/packages/3f/06/9f01a28a7d376e65ed0e5c60d01f3280105e82fdbb2e9f06ebb4c055c46b/rustfst_python-1.1.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9596002a1d4e2bccf60024568e58cd37b429be0f99b9438bcce3e34f76146e67",
                "md5": "606e8af2403288e0084dae6d5e7c52d6",
                "sha256": "8eed05f44c9fdb9d1f7834e92763f1fe50910e4d8d110e7990036729704b8fe8"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "606e8af2403288e0084dae6d5e7c52d6",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 728920,
            "upload_time": "2024-08-16T16:33:05",
            "upload_time_iso_8601": "2024-08-16T16:33:05.269741Z",
            "url": "https://files.pythonhosted.org/packages/95/96/002a1d4e2bccf60024568e58cd37b429be0f99b9438bcce3e34f76146e67/rustfst_python-1.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "235568e2ca4e66c5be71840a291fa3d0936ad614d1ba82b498b50d61272b6158",
                "md5": "66732b112ada24dae01195c9dcbd5365",
                "sha256": "77801b729311f35f6d6bc60e41bb3d4f7182627079de990d6baa1e9a9663b928"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "66732b112ada24dae01195c9dcbd5365",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 789153,
            "upload_time": "2024-08-16T16:28:58",
            "upload_time_iso_8601": "2024-08-16T16:28:58.440276Z",
            "url": "https://files.pythonhosted.org/packages/23/55/68e2ca4e66c5be71840a291fa3d0936ad614d1ba82b498b50d61272b6158/rustfst_python-1.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cef6b249068d53fae18252fa18318f3b7fa6b8b7d516b48dd34ec6390460a09d",
                "md5": "2051ea8b1c163986bc6c0df40f9aa8ae",
                "sha256": "ec2a8bf1225e4884423c0ccbb5e1db31cf2f1b838926410846959370709f0847"
            },
            "downloads": -1,
            "filename": "rustfst_python-1.1.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "2051ea8b1c163986bc6c0df40f9aa8ae",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 806235,
            "upload_time": "2024-08-16T16:28:59",
            "upload_time_iso_8601": "2024-08-16T16:28:59.816250Z",
            "url": "https://files.pythonhosted.org/packages/ce/f6/b249068d53fae18252fa18318f3b7fa6b8b7d516b48dd34ec6390460a09d/rustfst_python-1.1.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-16 16:32:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "garvys-org",
    "github_project": "rustfst",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "rustfst-python"
}
        
Elapsed time: 0.31837s