rustfst-python


Namerustfst-python JSON
Version 0.13.6 PyPI version JSON
download
home_pagehttps://github.com/Garvys/rustfst
SummaryLibrary for constructing, combining, optimizing, and searching weighted finite-state transducers (FSTs). Re-implementation of OpenFst in Rust.
upload_time2024-02-19 17:31:42
maintainer
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)
[![macOS](https://svgshare.com/i/ZjP.svg)](https://svgshare.com/i/ZjP.svg)
[![Linux](https://svgshare.com/i/Zhy.svg)](https://svgshare.com/i/Zhy.svg)
[![Github tag](https://badgen.net/github/tag/garvys/rustfst)](https://github.com/garvys/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/rustfst/workflows/Native/badge.svg)](https://github.com/Garvys/rustfst/actions)
[![Documentation](https://docs.rs/rustfst/badge.svg)](https://docs.rs/rustfst)
[![](https://tokei.rs/b1/github/Garvys/rustfst)](https://github.com/Garvys/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/rustfst/blob/master/bench_results/bench_funct_80.md)
- [Benchmark at the CLI level](https://github.com/Garvys/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.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/rustfst",
    "name": "rustfst-python",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "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": "",
    "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[![macOS](https://svgshare.com/i/ZjP.svg)](https://svgshare.com/i/ZjP.svg)\n[![Linux](https://svgshare.com/i/Zhy.svg)](https://svgshare.com/i/Zhy.svg)\n[![Github tag](https://badgen.net/github/tag/garvys/rustfst)](https://github.com/garvys/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/rustfst/workflows/Native/badge.svg)](https://github.com/Garvys/rustfst/actions)\n[![Documentation](https://docs.rs/rustfst/badge.svg)](https://docs.rs/rustfst)\n[![](https://tokei.rs/b1/github/Garvys/rustfst)](https://github.com/Garvys/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/rustfst/blob/master/bench_results/bench_funct_80.md)\n- [Benchmark at the CLI level](https://github.com/Garvys/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.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": "0.13.6",
    "project_urls": {
        "Documentation": "https://garvys.github.io/rustfst/",
        "Homepage": "https://github.com/Garvys/rustfst",
        "Source": "https://github.com/Garvys/rustfst"
    },
    "split_keywords": [
        "fst",
        "openfst",
        "graph",
        "transducer",
        "acceptor",
        "shortest-path",
        "minimize",
        "determinize",
        "wfst"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9aaa3388ad2e840da8772e3b031261256fdf1c5c956e35a504ff610c5a55795f",
                "md5": "9ba8212e706cbbc9a7b9ad3210bdfbb7",
                "sha256": "211d31ce4eb423133622c592f6649e009e65d48b136cadb57693276f99183d93"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "9ba8212e706cbbc9a7b9ad3210bdfbb7",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 1448319,
            "upload_time": "2024-02-19T17:31:42",
            "upload_time_iso_8601": "2024-02-19T17:31:42.009446Z",
            "url": "https://files.pythonhosted.org/packages/9a/aa/3388ad2e840da8772e3b031261256fdf1c5c956e35a504ff610c5a55795f/rustfst_python-0.13.6-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3b4b560af4467e0ae03d4b753eac8f992faa7942d0c7feea066f23ac98ef4a7f",
                "md5": "fe55dfb58334c2e3cd0443c4908742f8",
                "sha256": "8682ea056596bb81b18ba1222a28d7e1114172b620ba3c9528be55023209c6e9"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fe55dfb58334c2e3cd0443c4908742f8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 773773,
            "upload_time": "2024-02-19T17:31:43",
            "upload_time_iso_8601": "2024-02-19T17:31:43.817839Z",
            "url": "https://files.pythonhosted.org/packages/3b/4b/560af4467e0ae03d4b753eac8f992faa7942d0c7feea066f23ac98ef4a7f/rustfst_python-0.13.6-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "13fa7c45b3fab5ac08ae301004c72cfa14acbee12a66f71366371000d43f8fed",
                "md5": "97c9dd84667ee98a3cf9ca361d967dfb",
                "sha256": "3f89075e3b0f664b1b12404e3075aca137777fa641563e84490397603836f405"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "97c9dd84667ee98a3cf9ca361d967dfb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 706013,
            "upload_time": "2024-02-19T17:31:45",
            "upload_time_iso_8601": "2024-02-19T17:31:45.846672Z",
            "url": "https://files.pythonhosted.org/packages/13/fa/7c45b3fab5ac08ae301004c72cfa14acbee12a66f71366371000d43f8fed/rustfst_python-0.13.6-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "94d77168b2778e45f9a303b2c6a44addda0d3090b2b282f88230d91d3d80f0da",
                "md5": "fe9039401088f3485f63c9767eb10deb",
                "sha256": "8054375c92841b8affd04af68935891de32bbeb654970e2146a02572c9e3245c"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fe9039401088f3485f63c9767eb10deb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 1147255,
            "upload_time": "2024-02-19T17:21:27",
            "upload_time_iso_8601": "2024-02-19T17:21:27.966218Z",
            "url": "https://files.pythonhosted.org/packages/94/d7/7168b2778e45f9a303b2c6a44addda0d3090b2b282f88230d91d3d80f0da/rustfst_python-0.13.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "629c0c8dd53ae3e38694459519971486bfeee0a878c75c3a10576648ffeb35c0",
                "md5": "db1782404da3b23f2a4233510fa88551",
                "sha256": "1b54a3cef537f38042056d7538cb61a828a84509a997ad2bf70f16d8c789b0bd"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "db1782404da3b23f2a4233510fa88551",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 1151904,
            "upload_time": "2024-02-19T17:21:30",
            "upload_time_iso_8601": "2024-02-19T17:21:30.377120Z",
            "url": "https://files.pythonhosted.org/packages/62/9c/0c8dd53ae3e38694459519971486bfeee0a878c75c3a10576648ffeb35c0/rustfst_python-0.13.6-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": "cc2dcc5e34a09b41e3459227f705423f42b1a9d4c8c041a53504cf5af52e9ec3",
                "md5": "966e2eb91d9ddbf998d056b3e9fdcbcb",
                "sha256": "433eb8972d483713edac8d28faa49f41cb91de9c3dfc64790f820a3790277881"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "966e2eb91d9ddbf998d056b3e9fdcbcb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 1184282,
            "upload_time": "2024-02-19T17:21:32",
            "upload_time_iso_8601": "2024-02-19T17:21:32.295334Z",
            "url": "https://files.pythonhosted.org/packages/cc/2d/cc5e34a09b41e3459227f705423f42b1a9d4c8c041a53504cf5af52e9ec3/rustfst_python-0.13.6-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b939103d0d1aab1665c4c7c1fe189c65ce40b1a22c4d8d2274b74a0c76cef735",
                "md5": "f5270624da4488fb4f0e690663bda0e6",
                "sha256": "858ab629c15c955e4d1a81238f973869941224d1d5bc3479cddf5e3e088db7b1"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "f5270624da4488fb4f0e690663bda0e6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 1448287,
            "upload_time": "2024-02-19T17:31:47",
            "upload_time_iso_8601": "2024-02-19T17:31:47.161902Z",
            "url": "https://files.pythonhosted.org/packages/b9/39/103d0d1aab1665c4c7c1fe189c65ce40b1a22c4d8d2274b74a0c76cef735/rustfst_python-0.13.6-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8715ee09466c980b4ecd8fa67816bfdac540e5d0c69a25a891dfe9a09165d91e",
                "md5": "27216ffc4acf822bbf0a62df1667ff16",
                "sha256": "88c29abaa35d7860d4f61077f4a468b059b2828adbace4f32f08388bd443cb1c"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "27216ffc4acf822bbf0a62df1667ff16",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 773747,
            "upload_time": "2024-02-19T17:31:48",
            "upload_time_iso_8601": "2024-02-19T17:31:48.385561Z",
            "url": "https://files.pythonhosted.org/packages/87/15/ee09466c980b4ecd8fa67816bfdac540e5d0c69a25a891dfe9a09165d91e/rustfst_python-0.13.6-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fddafac025746062bc36a6a9bf069269c1981d07239ffde0e1bbda1d04764846",
                "md5": "d62a70806acdf336eda2c0bd5fe82353",
                "sha256": "d537a43a7fc973155deb6b17d1c1d4247e89f2555cbca75d5ca91deb5a19f928"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d62a70806acdf336eda2c0bd5fe82353",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 706006,
            "upload_time": "2024-02-19T17:31:50",
            "upload_time_iso_8601": "2024-02-19T17:31:50.095282Z",
            "url": "https://files.pythonhosted.org/packages/fd/da/fac025746062bc36a6a9bf069269c1981d07239ffde0e1bbda1d04764846/rustfst_python-0.13.6-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2ff39d6d7750386f2210a277f8e16726e9dd1dd5e7d8d0c6685e6f61c1c48d1a",
                "md5": "e17f07a4534e69efce99b7bd1a5057f6",
                "sha256": "ec8d7ef3157e33968d27807c46d9df35749a688d43f51ae753d13598664cbae7"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e17f07a4534e69efce99b7bd1a5057f6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 1147256,
            "upload_time": "2024-02-19T17:21:33",
            "upload_time_iso_8601": "2024-02-19T17:21:33.907921Z",
            "url": "https://files.pythonhosted.org/packages/2f/f3/9d6d7750386f2210a277f8e16726e9dd1dd5e7d8d0c6685e6f61c1c48d1a/rustfst_python-0.13.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "40c2314397aa5ee54514ea616ad2b0d6cf991b8c676f78c2afbdca650f37ea09",
                "md5": "370d558e4db443bbe6f1b9bb0761d071",
                "sha256": "950f8a93076bbb0f16f135b2249973643b72eef7d1260932ce51c7a1e5988422"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "370d558e4db443bbe6f1b9bb0761d071",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 1151904,
            "upload_time": "2024-02-19T17:21:35",
            "upload_time_iso_8601": "2024-02-19T17:21:35.338350Z",
            "url": "https://files.pythonhosted.org/packages/40/c2/314397aa5ee54514ea616ad2b0d6cf991b8c676f78c2afbdca650f37ea09/rustfst_python-0.13.6-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": "6cf25b2ffdb2b1fa12503cf1c9b7df132c57c3234362d621fea243cd89440ef1",
                "md5": "09d2966a36bb49d86164fed1184e9df0",
                "sha256": "fa82021f21536e6aed0696e22c3f5e89c00dd01f901a3241e46afbf744143aa1"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "09d2966a36bb49d86164fed1184e9df0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 1184287,
            "upload_time": "2024-02-19T17:21:37",
            "upload_time_iso_8601": "2024-02-19T17:21:37.140477Z",
            "url": "https://files.pythonhosted.org/packages/6c/f2/5b2ffdb2b1fa12503cf1c9b7df132c57c3234362d621fea243cd89440ef1/rustfst_python-0.13.6-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "96672983a7283abc74211681a10b80c4d4a687cff640d53ea71a38e317cd8d2b",
                "md5": "0aeb8c3ffcb861897c351bed6f3e2c46",
                "sha256": "fcb6d595db58e88f6aa3fb8435583af757d17afccf15be4c88057b01ea433869"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0aeb8c3ffcb861897c351bed6f3e2c46",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 764953,
            "upload_time": "2024-02-19T17:31:51",
            "upload_time_iso_8601": "2024-02-19T17:31:51.643996Z",
            "url": "https://files.pythonhosted.org/packages/96/67/2983a7283abc74211681a10b80c4d4a687cff640d53ea71a38e317cd8d2b/rustfst_python-0.13.6-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "abff962758922733799842f75501b869ae114c23d9fd3bb37335a95a4f7c6aeb",
                "md5": "bafa11d1b9f5d64591aba907844db3d6",
                "sha256": "fa063a2bc1de8a4678f70e82a0c9a340167663a946341f563de9bac781c2ddbb"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bafa11d1b9f5d64591aba907844db3d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 1147258,
            "upload_time": "2024-02-19T17:21:38",
            "upload_time_iso_8601": "2024-02-19T17:21:38.534210Z",
            "url": "https://files.pythonhosted.org/packages/ab/ff/962758922733799842f75501b869ae114c23d9fd3bb37335a95a4f7c6aeb/rustfst_python-0.13.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "41718a1323d77388ca3712ee28d44765d15d1478ca5af36e3934b9bc28cf1854",
                "md5": "cb76c7c99e303b8c103efe446eff80af",
                "sha256": "c7426dea5b420fa1ce49ca70eccf3667e2efca9eb674b13b4194384f793204be"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "cb76c7c99e303b8c103efe446eff80af",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 1151904,
            "upload_time": "2024-02-19T17:21:40",
            "upload_time_iso_8601": "2024-02-19T17:21:40.183119Z",
            "url": "https://files.pythonhosted.org/packages/41/71/8a1323d77388ca3712ee28d44765d15d1478ca5af36e3934b9bc28cf1854/rustfst_python-0.13.6-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": "c7a8d95d4a96bdc68fe2afbf627207d929c49a46bacc28ceb3a3fb149e7a3a8e",
                "md5": "77e6c338bb8b17b8cea9e348634fe2b7",
                "sha256": "993fad2d8bcb709cf0d8f98b4d192c3a775ea2f49e152731bcf6bded77cd5659"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "77e6c338bb8b17b8cea9e348634fe2b7",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 1184284,
            "upload_time": "2024-02-19T17:21:41",
            "upload_time_iso_8601": "2024-02-19T17:21:41.704441Z",
            "url": "https://files.pythonhosted.org/packages/c7/a8/d95d4a96bdc68fe2afbf627207d929c49a46bacc28ceb3a3fb149e7a3a8e/rustfst_python-0.13.6-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f203b993265e6c3d3f5409506163b59c2a4da6c962c14b4c6ac22b7151b4fe4e",
                "md5": "965b58e0edf97d14fc0de62e03a05b06",
                "sha256": "562a27db6deb2c81002475942a35ac2eb1f91c5a621640ab117106427ba76681"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp38-cp38-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "965b58e0edf97d14fc0de62e03a05b06",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 1448287,
            "upload_time": "2024-02-19T17:31:53",
            "upload_time_iso_8601": "2024-02-19T17:31:53.325308Z",
            "url": "https://files.pythonhosted.org/packages/f2/03/b993265e6c3d3f5409506163b59c2a4da6c962c14b4c6ac22b7151b4fe4e/rustfst_python-0.13.6-cp38-cp38-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7a3d6af5a216ac93bd07f8933e03289c28721fbbbc223711db89a1bccc92a22d",
                "md5": "c7d8937a909adbcd9e9641c70e70b0ff",
                "sha256": "82af8b3240fe3f425d753b2b42a4fb14cf4db37fd70eb2c90bc364976d4ed75e"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c7d8937a909adbcd9e9641c70e70b0ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 773741,
            "upload_time": "2024-02-19T17:31:54",
            "upload_time_iso_8601": "2024-02-19T17:31:54.964843Z",
            "url": "https://files.pythonhosted.org/packages/7a/3d/6af5a216ac93bd07f8933e03289c28721fbbbc223711db89a1bccc92a22d/rustfst_python-0.13.6-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "62c3ed51115539190dcee093f14422ecd85f6b8318a7ccf856e0f41a09b591e5",
                "md5": "ea40204a6422fd5dff095899bd4452e8",
                "sha256": "1075053258e39c8e3c80c8633c39a53bc741b9c3bf6e2d4cfaa948a0c7492e6d"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ea40204a6422fd5dff095899bd4452e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 705995,
            "upload_time": "2024-02-19T17:31:56",
            "upload_time_iso_8601": "2024-02-19T17:31:56.655549Z",
            "url": "https://files.pythonhosted.org/packages/62/c3/ed51115539190dcee093f14422ecd85f6b8318a7ccf856e0f41a09b591e5/rustfst_python-0.13.6-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e81a8409ba212ad5a10540b906f62110ba88a80768333d03e012c66cc0188b53",
                "md5": "06cf65080c4cf8ec1f0dba521880b2b2",
                "sha256": "9149ed82953f9f2253cf4e84f14aa0ccba35596b3379e7be563b2de448564dd0"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "06cf65080c4cf8ec1f0dba521880b2b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 1147252,
            "upload_time": "2024-02-19T17:21:43",
            "upload_time_iso_8601": "2024-02-19T17:21:43.111406Z",
            "url": "https://files.pythonhosted.org/packages/e8/1a/8409ba212ad5a10540b906f62110ba88a80768333d03e012c66cc0188b53/rustfst_python-0.13.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7fddb217b61bfbc2050b98752e1d1fe722f3d5f9e6329826b06014ab61e67e21",
                "md5": "9c6f2faf0383b63f1b6179e138f322a4",
                "sha256": "b106e58f54f52f67644993da0e4530c9f478bcaa84608b3e6e635f7c023fdeb5"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "9c6f2faf0383b63f1b6179e138f322a4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 1151902,
            "upload_time": "2024-02-19T17:21:44",
            "upload_time_iso_8601": "2024-02-19T17:21:44.590606Z",
            "url": "https://files.pythonhosted.org/packages/7f/dd/b217b61bfbc2050b98752e1d1fe722f3d5f9e6329826b06014ab61e67e21/rustfst_python-0.13.6-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": "f0f8bef8bbeb0aa51dcfe6ee6af04e16823f9a2a953ebef8ab46388cfeeae6b7",
                "md5": "94714ad819ccfaeaee118a2ab6357995",
                "sha256": "90b86123e631125bd44aab6be8dfcf6aed257213a3743511552419c642322916"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp38-cp38-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "94714ad819ccfaeaee118a2ab6357995",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 1184281,
            "upload_time": "2024-02-19T17:21:45",
            "upload_time_iso_8601": "2024-02-19T17:21:45.962520Z",
            "url": "https://files.pythonhosted.org/packages/f0/f8/bef8bbeb0aa51dcfe6ee6af04e16823f9a2a953ebef8ab46388cfeeae6b7/rustfst_python-0.13.6-cp38-cp38-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c7974f5ebd3d0a3b2c378b2dc64022a9384af487fd198ec54daf6aa6c41f167f",
                "md5": "0917b6099a90188d419d49a2068486d9",
                "sha256": "c94026927ee93d01c3e81b6f49311a4319514f793e54bce628e564ef13dc9d7a"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp39-cp39-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "0917b6099a90188d419d49a2068486d9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 1448285,
            "upload_time": "2024-02-19T17:31:57",
            "upload_time_iso_8601": "2024-02-19T17:31:57.968491Z",
            "url": "https://files.pythonhosted.org/packages/c7/97/4f5ebd3d0a3b2c378b2dc64022a9384af487fd198ec54daf6aa6c41f167f/rustfst_python-0.13.6-cp39-cp39-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3c7dced75e38399c9ee1404e8270e33910431afeb6fb5e1e807ae5262270d0d7",
                "md5": "b5b4576982ded8dec863938c08d3272f",
                "sha256": "3b2b1ed8f221a5d4b890e1fdd60d685a4bfaade2f9aa69815cf574ee074b4c10"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b5b4576982ded8dec863938c08d3272f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 773740,
            "upload_time": "2024-02-19T17:31:59",
            "upload_time_iso_8601": "2024-02-19T17:31:59.386695Z",
            "url": "https://files.pythonhosted.org/packages/3c/7d/ced75e38399c9ee1404e8270e33910431afeb6fb5e1e807ae5262270d0d7/rustfst_python-0.13.6-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "355c81c5eb7ea7fe82c17840e2772af6deba046f76fa7dd6f9c1c3fc3015cfa3",
                "md5": "c9086db11beb546430675345f54c31ee",
                "sha256": "05789cc88736dc1e12e31a7000de5072505a1dad8f7decd88c34f39e56546717"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c9086db11beb546430675345f54c31ee",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 705998,
            "upload_time": "2024-02-19T17:32:01",
            "upload_time_iso_8601": "2024-02-19T17:32:01.369367Z",
            "url": "https://files.pythonhosted.org/packages/35/5c/81c5eb7ea7fe82c17840e2772af6deba046f76fa7dd6f9c1c3fc3015cfa3/rustfst_python-0.13.6-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "895759b6ac5752dbb7b6f3b74a4e6fb74523e1568f35e800e53047e407e72eb6",
                "md5": "3b14717b6841bb7c92e56c5ccf046e16",
                "sha256": "89dd966ecb2ba168da0bb9b348ca5ceb61cfce5a16a436136115743ec3c094de"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3b14717b6841bb7c92e56c5ccf046e16",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 1147251,
            "upload_time": "2024-02-19T17:21:47",
            "upload_time_iso_8601": "2024-02-19T17:21:47.399599Z",
            "url": "https://files.pythonhosted.org/packages/89/57/59b6ac5752dbb7b6f3b74a4e6fb74523e1568f35e800e53047e407e72eb6/rustfst_python-0.13.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ff25cc091303bab9b146a28684b30b14df3e7c74451de12bf3983bb431e1cd8f",
                "md5": "ab18c8f907261c918bd6f38cbc9f1284",
                "sha256": "d0200b24e47c24ece68c6e79c05a43e59191a22cc111e7c47f04f1fda1b2173c"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "ab18c8f907261c918bd6f38cbc9f1284",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 1151902,
            "upload_time": "2024-02-19T17:21:49",
            "upload_time_iso_8601": "2024-02-19T17:21:49.043137Z",
            "url": "https://files.pythonhosted.org/packages/ff/25/cc091303bab9b146a28684b30b14df3e7c74451de12bf3983bb431e1cd8f/rustfst_python-0.13.6-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": "baa16dde26f054d632982786f0408912b2057ff98d4c856792a31df0d67062f3",
                "md5": "796af25629e47094d86f1bf45c74f55e",
                "sha256": "e2d68b53ff1bd9a58652aa5a657db71049093a1feca71767d7cfd894cd7ee3d6"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "796af25629e47094d86f1bf45c74f55e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 1184280,
            "upload_time": "2024-02-19T17:21:50",
            "upload_time_iso_8601": "2024-02-19T17:21:50.481956Z",
            "url": "https://files.pythonhosted.org/packages/ba/a1/6dde26f054d632982786f0408912b2057ff98d4c856792a31df0d67062f3/rustfst_python-0.13.6-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a0ee7cf55943e37c1330fccf7cd61d8b8a959a616a8eee7e67276a322e2cc854",
                "md5": "ebf35d3c55a199aa9cebb1d7cba8705a",
                "sha256": "759c39fbad7570b2ffbffc8189aa5ad9061a5805aba7b8d71e661711d72b16ca"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ebf35d3c55a199aa9cebb1d7cba8705a",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 764963,
            "upload_time": "2024-02-19T17:32:03",
            "upload_time_iso_8601": "2024-02-19T17:32:03.028371Z",
            "url": "https://files.pythonhosted.org/packages/a0/ee/7cf55943e37c1330fccf7cd61d8b8a959a616a8eee7e67276a322e2cc854/rustfst_python-0.13.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4d338089ef6347e101bf882d8627c05d16923e06a279417bb4d6591485a28294",
                "md5": "cfd762764c8f394a1b23df40d5f26e6f",
                "sha256": "f084f096f9d06588cb83848a3a87ec8c3973b69ab72dac88a8e3561a59d8cc92"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cfd762764c8f394a1b23df40d5f26e6f",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 1147262,
            "upload_time": "2024-02-19T17:21:52",
            "upload_time_iso_8601": "2024-02-19T17:21:52.225132Z",
            "url": "https://files.pythonhosted.org/packages/4d/33/8089ef6347e101bf882d8627c05d16923e06a279417bb4d6591485a28294/rustfst_python-0.13.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5a0c1fe3189adfe9e985b8ca8cb6087673783ef6bc6efe7fc96658c45bf3ec45",
                "md5": "3999b60ceaa5c3e62f48fbdb02e97bee",
                "sha256": "abb6c3b50b027d2f7e5fbfbb6d5c45d9b05e21be451ed45fb2fea64c35afb4d7"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "3999b60ceaa5c3e62f48fbdb02e97bee",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 1151910,
            "upload_time": "2024-02-19T17:21:53",
            "upload_time_iso_8601": "2024-02-19T17:21:53.658315Z",
            "url": "https://files.pythonhosted.org/packages/5a/0c/1fe3189adfe9e985b8ca8cb6087673783ef6bc6efe7fc96658c45bf3ec45/rustfst_python-0.13.6-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": "0cf6ff93b06b4c1611c7402388a1583cd8502c827f1f60fbab852a020a3a720a",
                "md5": "a7e188692b342e2e2d69eaef28dadcd0",
                "sha256": "8f810b1cc997cb25171b7d2a994cf9e159812a59a6d0ece26c5973f451514205"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a7e188692b342e2e2d69eaef28dadcd0",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 773754,
            "upload_time": "2024-02-19T17:32:04",
            "upload_time_iso_8601": "2024-02-19T17:32:04.783942Z",
            "url": "https://files.pythonhosted.org/packages/0c/f6/ff93b06b4c1611c7402388a1583cd8502c827f1f60fbab852a020a3a720a/rustfst_python-0.13.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f9847887d814d77cae928cc362d2ad99ff44ba669c3fcbc090da3a48cc8d7beb",
                "md5": "1c2d1805d5d2676c3fdf055a436bbb14",
                "sha256": "1726d608af1a872b608ad391c4b943961fab00e938fe0d81f35e02b097b6c821"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1c2d1805d5d2676c3fdf055a436bbb14",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 1147264,
            "upload_time": "2024-02-19T17:21:55",
            "upload_time_iso_8601": "2024-02-19T17:21:55.099666Z",
            "url": "https://files.pythonhosted.org/packages/f9/84/7887d814d77cae928cc362d2ad99ff44ba669c3fcbc090da3a48cc8d7beb/rustfst_python-0.13.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fd0ced619ec3d3575f634b933dd0009e1cdbe5357307c9aa2f13c81a9253040c",
                "md5": "5e6df1cd48fb790a4de754481ec75376",
                "sha256": "02889570733c78add6e14db3477c173cb2aa0b28711f811863ffa875a4e2db68"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "5e6df1cd48fb790a4de754481ec75376",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 1151910,
            "upload_time": "2024-02-19T17:21:56",
            "upload_time_iso_8601": "2024-02-19T17:21:56.671551Z",
            "url": "https://files.pythonhosted.org/packages/fd/0c/ed619ec3d3575f634b933dd0009e1cdbe5357307c9aa2f13c81a9253040c/rustfst_python-0.13.6-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": "05f06b2e5856c4a4dc07c65f3a686dd19c7ef3c56796fa8c0742ec4008a438a7",
                "md5": "fc01245acf48f8d864f1b2283e1b5925",
                "sha256": "fcfa0bb75ebf4e0349114b84961cc36a0a19681afc5f891b32d405df54a2840d"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fc01245acf48f8d864f1b2283e1b5925",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 773754,
            "upload_time": "2024-02-19T17:32:06",
            "upload_time_iso_8601": "2024-02-19T17:32:06.110778Z",
            "url": "https://files.pythonhosted.org/packages/05/f0/6b2e5856c4a4dc07c65f3a686dd19c7ef3c56796fa8c0742ec4008a438a7/rustfst_python-0.13.6-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "02ba4fe25915459e996bc2a4477477967325acb8205a2b3f43bf53e5413ce998",
                "md5": "dd8bbac0a7be996288479164aa3d58d5",
                "sha256": "2189b619141a5a7dbcc913f70513a37464364f21c90419e36bcd8725ff383861"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "dd8bbac0a7be996288479164aa3d58d5",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 1147263,
            "upload_time": "2024-02-19T17:21:58",
            "upload_time_iso_8601": "2024-02-19T17:21:58.156135Z",
            "url": "https://files.pythonhosted.org/packages/02/ba/4fe25915459e996bc2a4477477967325acb8205a2b3f43bf53e5413ce998/rustfst_python-0.13.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ba20fd6caa80c6dd64a44b80790cb5a00b5a86cd6ab1b661a71a81d37f2dc24",
                "md5": "d158d968aa3aa6620df939635386df3f",
                "sha256": "9e543fcf790cc7ac53e68c625da3870635f4aa04176c05b1b361fcf09cd5ef0c"
            },
            "downloads": -1,
            "filename": "rustfst_python-0.13.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "d158d968aa3aa6620df939635386df3f",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 1151911,
            "upload_time": "2024-02-19T17:21:59",
            "upload_time_iso_8601": "2024-02-19T17:21:59.676790Z",
            "url": "https://files.pythonhosted.org/packages/9b/a2/0fd6caa80c6dd64a44b80790cb5a00b5a86cd6ab1b661a71a81d37f2dc24/rustfst_python-0.13.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-19 17:31:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Garvys",
    "github_project": "rustfst",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "rustfst-python"
}
        
Elapsed time: 0.36839s