Skip to main content

Library for constructing, combining, optimizing, and searching weighted finite-state transducers (FSTs). Re-implementation of OpenFst in Rust.

Project description

Rustfst

License: MIT/Apache-2.0 Maintenance macOS Linux Github tag

Rust

rustc >= 1.51.0 Native Linux test status Documentation

Python

PyPI version PyPI download month PyPI pyversions

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

Overview

For a basic 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 and transducer.

For more complex cases you will likely start with the VectorFst type, which will be imported in the [prelude] along with most everything else you need. VectorFst<TropicalWeight> corresponds directly to the OpenFST StdVectorFst, and can be used to load its files using read or 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, while to iterate over transitions out of a state, you may use get_trs. Since it is common to iterate over both, this can be done using fst_iter or fst_into_iter. It is also very common to iterate over paths accepted by an FST, which can be done with paths_iter, and as a convenience for generating text, string_paths_iter. Alternately, in the case of a linear FST, you may retrieve the only possible path with 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 (for a single path) or 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, "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 for your input, which you will compose with a transducer, then project the result to itsoutput, and finally iterate over the paths in the resulting FST.

References

Implementation heavily inspired from Mehryar Mohri's, Cyril Allauzen's and Michael Riley's work :

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 for more information.

Example

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, and 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) and ⊗ (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.

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 :

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 :

./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
    • Documentation available on docs.rs here
  • rustfst-python is the python binding of rustfst.
    • Package available on Pypi here
    • Documentation available on Github Pages here

License

Licensed under either of

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rustfst_python-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (746.7 kB view details)

Uploaded PyPymacOS 10.9+ x86-64

rustfst_python-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (746.7 kB view details)

Uploaded PyPymacOS 10.9+ x86-64

rustfst_python-1.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (726.5 kB view details)

Uploaded PyPymacOS 10.9+ x86-64

rustfst_python-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl (798.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

rustfst_python-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (670.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rustfst_python-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl (746.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

rustfst_python-1.0.0-cp311-cp311-macosx_10_9_universal2.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

rustfst_python-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl (798.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

rustfst_python-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-cp310-cp310-macosx_11_0_arm64.whl (670.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rustfst_python-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl (746.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rustfst_python-1.0.0-cp310-cp310-macosx_10_9_universal2.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

rustfst_python-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl (798.3 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

rustfst_python-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-cp39-cp39-macosx_11_0_arm64.whl (670.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rustfst_python-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl (746.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

rustfst_python-1.0.0-cp39-cp39-macosx_10_9_universal2.whl (1.4 MB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

rustfst_python-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl (798.3 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

rustfst_python-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-cp38-cp38-macosx_11_0_arm64.whl (670.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

rustfst_python-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl (746.7 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

rustfst_python-1.0.0-cp38-cp38-macosx_10_9_universal2.whl (1.4 MB view details)

Uploaded CPython 3.8macOS 10.9+ universal2 (ARM64, x86-64)

rustfst_python-1.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl (798.3 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

rustfst_python-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

rustfst_python-1.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (761.8 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

rustfst_python-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl (726.5 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

Details for the file rustfst_python-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00568cb0af1100932ca28df255b60469e3328bb5db4611f03d1fa6f9ef9338e0
MD5 a5fd98df0739f9eee1c0c5f0b65900bc
BLAKE2b-256 1a34176d284889c65bd7caca93f4f5043cbe2396e4b298d218a0e1a0f68c1b27

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7ff6da268c54740ee53bbbd425be31e55c6c3a4c5eb6330e34a5197cfa14dc80
MD5 728052eb55e9ee64af2cc1920c9630ae
BLAKE2b-256 9603584219be126b84899c5d2e2cd4488b17516725c557431ac07f4a41066938

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b2b2dacc8fd6957e3f04ae6e8adfe6241ff70b44b4849230abc7cd27b29cb307
MD5 4c6aa2b91dda77667b1a2167cee7d85b
BLAKE2b-256 c99fcb9f2e1b2726c552ac97b14b7f96c0233d590c926973bd74957539c4716a

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d833dd53d5e63a3c05c5e9a0514fc6bcbddceb2cfd16e40926dd869e03a1152f
MD5 ef3b1c2b25d45efadf8fb85654ca3346
BLAKE2b-256 f734d2fc8f4c0088617df3adf64f0bcb560d0c0b0dde9d64802ad2562f9b8331

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7f99bfd7f5979516d9888fe5442281ef74fa4b76c771d8416e2a263f4e0ed39d
MD5 8c9334aa038bf7d4adf6e6fa284bafad
BLAKE2b-256 12ae826c97b5478e4b7b2516d77d4a87fbf3160d550fc2cd58e1cb8d3e3f2f57

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1465c53edcd5b6b10e88737b689f7036adf63166b8835cd3f2193760c7c30b43
MD5 442f9aa28f80574c999ee0756b0e8bc7
BLAKE2b-256 fcb3a0b50399b899d4f530a5d82d6672ab8eb3d46257d84c88706ab663173a21

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 227a6b7c82b091b23a957815893d894e6bb9f90f660f7c5dd282c6b558dc3507
MD5 f8f8b2408c47fa0a43d4cf2f0cb8d58e
BLAKE2b-256 8a1334a61ec6c838bd8c3230ebb06f74c79cb8def2dbcf487bb5a0e3162c35bb

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c29327fb6ad451a9a9eae91214f6cca10784336cae783782a6b887d16080848f
MD5 62baad61997156899446d186e3b4bd0d
BLAKE2b-256 2b7378a8094f40055b78d640925a559d1444f481ff951c228c0ba591bacb09b1

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5cc118bfa6ef0589257cf6723b618f9f1354f43c2b1c4b9fdfbeeebfbd2cc878
MD5 22c96f6e84235430d1a0fd460d799beb
BLAKE2b-256 4f090f74268d75fb20cbc9b3bf9b292ca73549584fa5bccf09e2cdf476cb7bce

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ebda00fe3191da28549c49f63deb5213e8142ac92af32b3e89ccdece54cf23f8
MD5 a291810d3d0d939a37c3b2d838d4e7fd
BLAKE2b-256 6ba335a19d72ff52ad6cf7b23b08fe9f48d3aac469980887b17ee51e8ef2f287

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6948cc3c4071b95f0e1214ec9179436fe4f8d10442b8f0905ac08049fa7bec47
MD5 1d6f3bdfc4868ff4914e02ca4ed42495
BLAKE2b-256 8639153e4462567ea34f77ed34ab8df5ec2bb1b11e41462fe846308e3e07b26a

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 01539465eeb7c17fd482c77fffa46026b48ef104698b1f574f30e2110c0d8f0a
MD5 71e3d5b3c14786a735df892dad573ca1
BLAKE2b-256 b7aae8d8be12a384d038930cdaa778f4e628892365688df0ae533629ec2eca24

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08af63dca32022b04e9e2daf2bfbc2307958f8349e2373eae2fae276a25f913c
MD5 84607a695ef047e29c35b91849049f4c
BLAKE2b-256 87a7f36243892ffdfb7a28a3423f07e265c1f11aff10f9bb4ecd0fe339823f73

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 59dcf782594ee78843ce50903bf3347609d69b66c62acc0a44be23a79e567292
MD5 06ebd5840cf6a541a8c5524d08bc84d8
BLAKE2b-256 b3802f928fb1c405f86ad53dba6bf53184125babb2357230ceebbeb4cf05c75c

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 dfb906176373e0206c2de95b97062039d64e8863ab0bc11d19b43cf7504a152f
MD5 b888343cd59eec8ab02e1fcf0b353a4b
BLAKE2b-256 a6d1dc4393f8fcfd4c2ce77e65eeba25f45eeb0542fca70e0f62a35141f2ade9

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2bb0234fff723d8b9c8ddd6d1190306ae025c2e766bbef9f8cb75527226d3de0
MD5 501fbf0cf32ffe1ab4e69b9a39086bfd
BLAKE2b-256 12649fa4b6eb5c945eb75eb923b7f224219a0fedba03065243ce97c2a06d2e5a

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e78a4375a24dad8d602d21ab01cdf81b7d792e03db6e4f3f46a73087ddfc5647
MD5 9cf0cb5378edbf877d6a8d99ed061f3a
BLAKE2b-256 44751a9c86ab65a42b6c84bdaf2bad3742fe48c13136dac28f5e4985770635cf

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dd18fa1f739cd0c59e52c0d66f896cd0e489e994ed7f6075fe35c6446f772fd6
MD5 43626c746ae171327a1a97782504dbe7
BLAKE2b-256 cfea620a46a38af2bd1c1f2122fc2c323044eef076fa80fd5f22b8b8566051f5

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c66fd1438a73057fac49db4cb626362eefb6d1629858a6d0f55f8626a30915a8
MD5 5b9cfd0fc3a66b507fd4afcb0eb4c16a
BLAKE2b-256 f1c5fce8b9fe181dc9e87379c3da0b807adb71eb090fb847b56050156ccfc1bb

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bc129e8e9475ebc29a28961dacb620592384c61e4b4895dd7c0e34b2bae7d62f
MD5 cb47b01d0ded509463153c5ea80bbbc9
BLAKE2b-256 601d63562ddfc23407038ee0ee2bab46148d7edc8bd8317ad9e9d40863549d4a

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 78d0a26720f364c62816aa55f34d9b1c9f60fb37bb2fed343375e7a892a727e1
MD5 33d74f77bf9f6675916e401358ba006d
BLAKE2b-256 bf8b2877a9e441c99a78469ed911e59dfce6a32d79d1f1ffbe36c68894428e86

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d66be47511830201a848a8f493303ab17c47d26801f6a4cd6acedd8cc6f5bd35
MD5 3991a42e35a457fd4504cf632bd5b96b
BLAKE2b-256 078340bfa68c03e0546255fa31dff2de4735c52db92e869f5653fd080b0fad1f

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4aaa5d05c530aa65795e25a9e3f1c037b6f958002b4a83cd59e06aa050d84d0
MD5 1a99344bba59286c1328b077c909a4c4
BLAKE2b-256 8800d70b45b557dc21fcaccd2d099be9f60eff1eebd6f21eb31e95729f17b54e

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 74798bf5924cb703d9843e505f1cb7b8e31f539aceeb94c775022d507433930a
MD5 026b11b406cd6ef836291134ccb15a30
BLAKE2b-256 a0b008c62cee02f35b8b710b2828d42a14b30982763cd152ec350d92c6be5da0

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa0ea3594b256833293b51f313b0e0a691e5822c8183a8522b6a044ef31df737
MD5 29e851bc990b204112346d27f6f878e0
BLAKE2b-256 6e5f0246fadfe662196d5a4dfa98455c10df7701406a133e3afc9ab9983d1b1d

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b30525d2f81614afe4e1dfa74e8baccc7f7b7c1f6c9dd17eb69fe04bbb23b71f
MD5 82aefc7ab97a8b77287163d394d3f5e9
BLAKE2b-256 c5732d650dd403751eb46e3b0a0e699b87af9a2589e507e3bf452ae100ee0eac

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 add876dc7022555451cc49797a162359ad4d5c6ecd859acc408ac66179ade54a
MD5 88015dd9b504e341d0e60fbde792e207
BLAKE2b-256 660e0d8614f7f6d36faeb851c2e1af5ef422a2281f0d76f12192a5d4a369eb8b

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 3a63ab6bb7d829953d8c08714d2d49c0c5ac6f545897d1aa569c132c8aeafd73
MD5 44a6817cc15349fa2d9c336734fd6627
BLAKE2b-256 17e3255117b2328f135575b47af34144c261703eccbcf23e472ccf16357c1801

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a29cdb26271e074856cdd861774e564817776fd337ea7e90a1e0e9895d6b0807
MD5 f9eee692c5374ba48b23f37f5c4160b1
BLAKE2b-256 b2e34cf2af42a110e0eaab376f60c98ecacc584028f9491369db8f0d7ac72dda

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 aeca0584e55c9339f48ba6180805864999f8ed2be1c838b73f2a7671d7a6b1ed
MD5 41bd83ea519153d419fc4bbeded8ef72
BLAKE2b-256 cabd9b6330005769e10267024d4c5c57f83e8266dfd1234c2004ea2911ae93d8

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3248b3f7deb21b5a47dec55161050515daed4a4fdece332658fd176d179719c0
MD5 b465f3b04c3dcf0459da78982110c6c8
BLAKE2b-256 69bf645b5d69402d741de21e8420ee7793500a205b8d873f71f72368219dae5a

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e79c8a922e2fd6f8aa4702cd81afa4214059ef4a555952a8a26dbc490f0cb294
MD5 81059ce01bd5c3e270d705f1c30224e0
BLAKE2b-256 dd55e3d39c25f5fa4d259c6634f7814dcb3ec1cb146dc76fe04d7fd39a4bf284

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f304311d9909d142191215f8a2297a06f12c07aca25761f4fdfd9c3f482f9ed6
MD5 59b662eaec4bf13ee4b09a72e7e8f2af
BLAKE2b-256 a155e1dee04d53a32541bb58d574e41788cf69b35d28e372920d88dfa60a9437

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 67841c7d1a4d91d3bd6b4732d2b213d659ca28babd24a09494f57529e7d95f9e
MD5 310a223394c013533f5effcc47523b6a
BLAKE2b-256 eda01b2667a68634edd334704f8db664eaddf2dd9a0da532e315806126f85fca

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 768f6fcb6c2a920257567396138e510321de6d4119384d11d0f660e0cdb14374
MD5 97506999abb60c9ff009abc36e815827
BLAKE2b-256 3f63b1d6afcfe3f262b97f16da6760bf68049da292a5477499605fbdb342f575

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 debf64ae37fa17d7c94d630a516e734a89c2d447b47524238f83e976b31b88f9
MD5 5813bc4146cd60aef09e562cea2b9ac3
BLAKE2b-256 40b0c2f4a99990674b2bccf04e83ddfcb6ebec028482b9df9909f74527ddfd3a

See more details on using hashes here.

File details

Details for the file rustfst_python-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rustfst_python-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a87bc08eca0a31b2b53170bf2bc7a79a840e0bcabb67e16d3563c77bb848025b
MD5 5ccee4daaaff3bf5294703fb6e4fe612
BLAKE2b-256 6ab71f462df23f29d8593219298560cbe5bbdf693e1f9c4757fed60245d79bc4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page