# 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"
}