v. 2.1.6 (compatible with OpenFst 1.8.3) ======================================== * Simplifies `SymbolTable.read_text` options * Fixes reversion in MacOS version issue * Fixes classifiers for Python support v. 2.1.5.post2 (compatible with OpenFst 1.8.2.post1) ==================================================== * Fixes Cython versioning issue * Adds support through Python 3.12 v. 2.1.5.post1 (compatible with OpenFst 1.8.2) ============================================== * Added `pyproject.toml` support * Sets minimum MacOS version to 10.12 v. 2.1.5 (compatible with OpenFst 1.8.2) ======================================== * Symbol `[0]` now gets assigned the numeric interpretation of `0x00` rather than the ASCII digit interpretation of `0x30`, just like the rest of the bracketed numeric symbols * Modifies `epsnormalize` to take a string (`input`, `output`) rather than a boolean argument * Modifies `push` and `reweight` to take a string (`to_initial`, `to_final`) rather than a boolean argument * Uses definitions in place of `int64` (etc.) type shims v. 2.1.4 (compatible with OpenFst 1.8.1) ======================================== * Adds LM generation script to `scripts/` * Adds rewriting methods to `Paradigm` class * Nonexistent `string_file`s now raise FstIOError * Adds optional bound on number of edits to `EditTransducer` * Cython fix for building with Bazel on MacOS v. 2.1.3 (compatible with OpenFst 1.8.0) ========================================= * Adds `export` submodule * Adds `examples` submodule * Renames `acceptor` to `accep` * Adds `join` operator to `pynutil` * Iterator classes are now protected (e.g., `_StateIterator`); use `arcs`, `mutable_arcs`, `paths`, and `states` methods instead * Renames `byte` lib's `BYTES` to `BYTE` v. 2.1.2 (compatible with OpenFst 1.7.9) ======================================== * Adds `lib` submodule * Removes single-character aliases * Removes residual Python 2 support * Adds string-escaping function `escape` * Adds `default_token_type` context decorator/manager * Overloads `**` operator to support range concatenation * Renames `transducer` to `cross` and simplifies interface * Improves `string_file`/`string_map` implementation for acceptors * Converts `Weight` class methods `NoWeight`, `One`, `Zero` to snake_case * Modifies `project` to take a string (`input`, `output`) rather than a boolean argument v. 2.1.1 (compatible with OpenFst 1.7.7) ======================================== * Adds PEP 484/PEP 561-compatible type stubs v. 2.1.0 (compatible with OpenFst 1.7.6) ======================================== * Python 2.7 support removed * Renames the `text` method to `print` * Renames the `stringify` method to `string` * Improves symbol table lifetime management * Removes underutilized `defaults` singleton * Improves consistency of the FST class hierarchy * Internal improvements to the symbol table iterator interface * Symbol tables are no longer automatically attached to compiled FSTs v. 2.0.9 (compatible with OpenFst 1.7.4) ======================================== * Simplifies `replace` backend * Simplifies `cdrewrite` backend * Fixes name error in `string_map` * Adds efficient star-args `union` * Removes inefficient star-args `concat` * `EncodeMapper` gains complete reading support * Removes underutilized `epsilon_machine` function * Fixes off-by-one allocation bug in string compiler * Fixes arc-type bug with cross-product of precompiled acceptors * Merges `input_token_type` and `output_token_type` (as `token_type`) and `attach_input_symbols` and `attach_output_symbols` (as `attach_symbols`) in `transducer` v. 2.0.8 (compatible with OpenFst 1.7.3) ======================================== * Simplifications to the range-concat backend * Simplifications to the string compilation backend v. 2.0.7 (compatible with OpenFst 1.7.2) ======================================== * Simplifications to the string printing backend v. 2.0.6 (compatible with OpenFst 1.7.1) ======================================== * Eliminates dependency on re2 * Improved generalizability of `Weight.member` * String printing methods now respect "symbol" as a token type v. 2.0.5 (compatible with OpenFst 1.7.0) ======================================== * Single `defaults` for default arc type when coercing strings to FSTs * Style fixes to CDRewrite implementation v. 2.0.4 (compatible with OpenFst 1.7.0) ======================================== * Composition-based implementation of cross-product * Pythonic iteration for MutableArcIterator * Logging cleanup v. 2.0.3 (compatible with OpenFst 1.7.0) ======================================== * OpenFst compatibility release * Improved integration of boundary symbols in CDRewrite v. 2.0.2 (compatible with OpenFst 1.6.9) ======================================== * Improves SVG rendering code for Jupyter * Simplifies implementation of cross-product and removes special case string-to-string optimization (for faster compilation) * SymbolTables gain methods for (un)pickling and (de)serialization v. 2.0.1 (compatible with OpenFst 1.6.9) ======================================== * Restores `ilabels` and `olabels` to `StringPathIterator`, and adds `items` (istring, ostring, weight tuple) generator * Fixes and rationalizes behavior of `closure(x, x)` * Adds star-args support to `concat` (cf. `union`) v. 2.0.0 (compatible with OpenFst 1.6.9) ======================================== * Python 3 support! Returned strings are all Unicode (except for checksums and binary serializations) * Removed an unused library flag v. 1.9.2 (compatible with OpenFst 1.6.8) ======================================== * `string_file` and `string_map` now obey `attach_input_symbols`/`attach_output_symbols` v. 1.9.2 (compatible with OpenFst 1.6.8) ======================================== * Removes obsolete rm_epsilon options to string printing methods * Renames `iter_itring` (etc.) methods to just `istrings` * Renames `StringPaths` to `StringPathIterator` v. 1.9.1 (compatible with OpenFst 1.6.7) ======================================== * Simplifies construction used in `closure` operator * Removes `containment` operator v. 1.9 (compatible with OpenFst 1.6.6) ====================================== * Adds optional ability to disable symbol table attachment after string compilation * The `string_file` and `string_map` functions now support one to three columns * FSTs gain methods for (un)pickling and (de)serialization * Fixes issues with arbitrary-type FAR inputs v. 1.8 (compatible with OpenFst 1.6.4) ====================================== * Fixes C++ headers that may have caused compilation problems for some users * Adds string_file support '#' comments; use "\#" for a '#' literal * Removes `FstSymbolTableMergeError`; merging is now automatic v. 1.7 (compatible with OpenFst 1.6.3) ====================================== * Exposes `NO_STATE_ID`, `NO_LABEL`, etc., constants * Modifies `SymbolTable.find` to mimic C++ behavior * Modifies `replace` to mimic C++ behavior * Adds `match` function v. 1.6 (compatible with OpenFst 1.6.3) ====================================== * Fixes to `closure` * Adds complete documentation * Corrects many sundry module-level documentation errors * `string_file` now properly reads a final line without a newline terminator v. 1.5 (compatible with OpenFst 1.6.2) ====================================== * Avoids unnecessary arc-sorting before composition * Avoids unnecessary symbol table copies before binary operations * Standardizes method names for compatibility with OpenFst binaries v. 1.4 (compatible with OpenFst 1.6.1) ====================================== * Compatibility fixes for OpenFst 1.6.1 v. 1.3 (compatible with OpenFst 1.6.0) ====================================== * Fixes to `StringPaths` * Compatibility fixes for OpenFst 1.6.0 v. 1.2 (compatible with OpenFst 1.5.4) ====================================== * Correctly optimizes RHS argument of a `difference` operation: epsilon-removal and determinization (but not minimization or arc-sum mapping) * Removes platform-dependent `HugeBracketedNumber` test units * Adds optional path-weight argument to `epsilon_machine` v. 1.1 ====== * Correctly handles final weights in `transducer` * Fixes inconsistency whereby the use of incorrect arc or weight types raised `FstOpError` unless the error occurred during string compilation, in which case it'd raise `FstStringCompilationError`; now all arc/weight errors raise `FstOpError` and `FstStringCompilationError` is reserved for problems parsing strings * Adds publication information and `pynini.pdf` (the Pynini paper) v. 1.0 ====== * Weight objects now support semiring arithmetic * Fixes bug whereby using an incompatible weight argument to `acceptor` or `transducer` would result in segmentation fault * In any binary operation with a string and an FST, the FST's arc type is used to compile the string, rather than assuming the string is a standard arc FST * Extensive low-level improvements to all string libraries * Adds traditional getter methods in place of Python properties in nearly all cases * Adds `containment` and `leniently_compose` methods * Adds `epsilon_machine` function * Adds `from_pywrapfst` method for downcasting pywrapfst FSTs * Adds `ilabels` and `olabels` methods to `StringPaths` v. 0.9 (fifth public beta) ========================== * Pynini's got a fever, and the only prescription is more smart pointers * Fixes several null pointer dereference bugs wherein an object referring to FSTs or their symbol tables (such as arc, path, and state iterators) could outlive their FSTs; shared pointers are used to extend objects' lives where needed * Adds `CHEATSHEET` v. 0.8 (fourth public beta) =========================== * All destructive operations can be chained * Improves `string_map` to use a prefix tree construction; as a result the output FST is deterministic * Adds `string_file` for creating string maps from tab-separated values files on disk; it too uses a prefix tree construction * Following Thrax, `difference` performs optimization on its right-hand argument as the algorithm demands that it be epsilon-free and deterministic * Adds improved `Arc` object and modifies `Fst.add_arc` so that it takes a source state and an `Arc` instance as its arguments * Consolidates compatibility functions and classes into `gtl.h` and `gtl.cc` * Improves and extends unit tests v. 0.7 (third public beta) ========================== * Fixes symbol table handling in `pdt_replace` * Optimizes symbol table merging for the most common case * Adds output-projection and epsilon-removal to `stringify`, so the resulting string will not be padded with null bytes v. 0.6 (second public beta) =========================== * Adds `string_map` function (cf. Thrax's StringFile) * Adds the ability to use symbol tables as the `token_type` for `acceptor` and the `input_token_type` and/or `output_token_type` for `transducer` or `string_map` * Adds some Python 3 compatibility fixes * Adds `NEWS` v. 0.5 (first public beta) ========================== * Fixes platform-specific integer precision nits * Makes consistent use of `token_type` arguments for string parsing/printing v. 0.1-0.4 (public alphas) ========================= * Fixes user-reported bugs