rtfcre
rtfcre is a Python library for reading and writing steno dictionaries in the
RTF/CRE
(Rich Text Format with Court Reporting Extensions) format. The library provides
an API similar to that of the json module for reading and writing dictionaries.
rtfcre also comes with a little command-line utility that you can use to
convert your dictionaries between Plover's native JSON format and RTF. See
CLI for more information.
Features
-
Speed: The parsing logic is written in Rust using parser combinators, making it much faster than practically any pure-Python implementation.
-
Comments: Rather than just exposing translations,
rtfcrealso reads the comments embedded in each entry ({\*\cxcomment like this}). -
Unicode: Full Unicode support -- while the dictionary files are not encoded in UTF-8, Unicode characters in translations are still fully supported. Translations can be in any language and they will seamlessly be converted to escapes when writing.
-
Plover support: Translations are converted automatically to Plover's native syntax (e.g. fingerspelling is represented with
{&a}rather than{\cxfing a}) and converted back when writing.
Installation
To install the library:
pip install rtfcre
If you just want to use this with Plover, install the plover-better-rtf plugin instead, since that plugin uses this library under the hood.
If you want the command-line utility, go to the Releases page and download the binary for your system.
Usage
Library
To read an RTF dictionary:
import rtfcre
# Reading directly from a file (make sure to open binary)
with open("dict.rtf", "rb") as file:
dic = rtfcre.load(file)
# Reading from a string
rtf = r"""
{\rtf1\ansi{\*\cxrev100}\cxdict{\*\cxsystem KittyCAT}
{\*\cxs KAT}cat
{\*\cxs KOU}cow
}
""".lstrip()
dic = rtfcre.loads(rtf)
To write the RTF dictionary:
# Writing to a file (make sure to open binary)
with open("dict.rtf", "wb") as file:
dic.dump(file)
# Writing to a string
rtf = dic.dumps()
The dictionary object itself also supports the standard dict API:
dic["KAT"] = "cat"
"KAT" in dic # True
dic["KAT"] # "cat"
del dic["KAT"]
dic["TKOG"] # KeyError
dic["TKOG"] = "dog"
dic["TKOG"] # "dog"
as well as a reverse lookup API for mapping from translations to steno strokes:
dic.reverse_lookup("cat") # ["KAT"]
To access comments:
dic.lookup("TKOG") # ("dog", None)
dic.add_comment("TKOG", "TK means D")
dic.lookup("TKOG") # ("dog", "TK means D")
dic.remove_comment("TKOG")
CLI
To convert an existing Plover JSON dictionary to RTF:
rtfcre path/to/input.json path/to/output.rtf
To convert an existing RTF dictionary back to Plover JSON:
rtfcre path/to/input.rtf path/to/output.json
Metadata
Release files for rtfcre 2.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| rtfcre-2.0.1-cp39-none-win_amd64.whl | CPython 3.9 | none | Windows x86-64 | Details |
| rtfcre-2.0.1-cp39-cp39-manylinux_2_24_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.24+ x86-64 | Details |
| rtfcre-2.0.1-cp39-cp39-macosx_10_7_x86_64.whl | CPython 3.9 | CPython 3.9 | macOS 10.7+ x86-64 | Details |
| rtfcre-2.0.1-cp38-none-win_amd64.whl | CPython 3.8 | none | Windows x86-64 | Details |
| rtfcre-2.0.1-cp38-cp38-manylinux_2_24_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.24+ x86-64 | Details |
| rtfcre-2.0.1-cp38-cp38-macosx_10_7_x86_64.whl | CPython 3.8 | CPython 3.8 | macOS 10.7+ x86-64 | Details |
| rtfcre-2.0.1-cp37-none-win_amd64.whl | CPython 3.7 | none | Windows x86-64 | Details |
| rtfcre-2.0.1-cp37-cp37m-manylinux_2_24_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.24+ x86-64 | Details |
| rtfcre-2.0.1-cp37-cp37m-macosx_10_7_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | macOS 10.7+ x86-64 | Details |
| rtfcre-2.0.1-cp36-none-win_amd64.whl | CPython 3.6 | none | Windows x86-64 | Details |
| rtfcre-2.0.1-cp36-cp36m-manylinux_2_24_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.24+ x86-64 | Details |
| rtfcre-2.0.1-cp36-cp36m-macosx_10_7_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | macOS 10.7+ x86-64 | Details |
Total release size: 11.0 MB
Release files / rtfcre-2.0.1-cp39-none-win_amd64.whl
| Download URL | rtfcre-2.0.1-cp39-none-win_amd64.whl |
|---|---|
| Size | 571.2 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f8070a9a9d016e4d318d3c31db30b09619d6f4548a98094c00a60f7ffc555f23
|
|
BLAKE2b-256 checksum How to use checksums |
0fe4b2e79264b29f0dc028d4949bd7435a4dc5b33253221d43dd055d055d06b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp39-cp39-manylinux_2_24_x86_64.whl
| Download URL | rtfcre-2.0.1-cp39-cp39-manylinux_2_24_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 |
|
SHA-256 checksum How to use checksums |
3cc1984a643182808ea9d336eeee45e47f06ce04a08c12e54a50373a5a7d3587
|
|
BLAKE2b-256 checksum How to use checksums |
0b5b08bddd8c33ca2dae829c42b2af6dc7cdac3a6ec365ee8ba9e7cf1609b17f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp39-cp39-macosx_10_7_x86_64.whl
| Download URL | rtfcre-2.0.1-cp39-cp39-macosx_10_7_x86_64.whl |
|---|---|
| Size | 710.7 kB |
| Tags | CPython 3.9 macOS 10.7+ x86-64 |
|
SHA-256 checksum How to use checksums |
ca0b3a1e43ac8e556565b15aaa034a2d8bd7826dfc4261be39cd0b48830a2e64
|
|
BLAKE2b-256 checksum How to use checksums |
21bfaaa6154b18f8361dfae81b8338e8233673d23e447d41dbbff4289524a6ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp38-none-win_amd64.whl
| Download URL | rtfcre-2.0.1-cp38-none-win_amd64.whl |
|---|---|
| Size | 571.2 kB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b48bac7c69ed2de40d3919df268fc8a5d2cb95d6bb4a7564f258930d0b0529e5
|
|
BLAKE2b-256 checksum How to use checksums |
b5c77dcdaea412cf0996fe07b8b6bca71179a536347e509f386d94bff86aacc7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp38-cp38-manylinux_2_24_x86_64.whl
| Download URL | rtfcre-2.0.1-cp38-cp38-manylinux_2_24_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.8 Linux glibc 2.24+ x86-64 |
|
SHA-256 checksum How to use checksums |
0fd2014458f9513d07b6ed50f0d7b1205b84833499117436020a49268fc42a17
|
|
BLAKE2b-256 checksum How to use checksums |
da5dc1967849d2aee4ed3ae7bbe000eb4fa02ce1496f9fec7c64689e48f1fe81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp38-cp38-macosx_10_7_x86_64.whl
| Download URL | rtfcre-2.0.1-cp38-cp38-macosx_10_7_x86_64.whl |
|---|---|
| Size | 710.7 kB |
| Tags | CPython 3.8 macOS 10.7+ x86-64 |
|
SHA-256 checksum How to use checksums |
7dc5ecafeb96fc5e179f907c10cd8a2769726a860dae57ac18b74ee79c1a57e4
|
|
BLAKE2b-256 checksum How to use checksums |
39ee351c8bd5319664e18cae2b93a3bdef6adb314f9730e57a05cf3b73beca79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp37-none-win_amd64.whl
| Download URL | rtfcre-2.0.1-cp37-none-win_amd64.whl |
|---|---|
| Size | 571.2 kB |
| Tags | CPython 3.7 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
076eb7d5f528ba52161df64b73929a9f09d3a759bb3d8be4b36e629b915989c5
|
|
BLAKE2b-256 checksum How to use checksums |
dcb47a3b843b56324d4e48472482dd7fbf79c799975213e8193ed184768daca6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp37-cp37m-manylinux_2_24_x86_64.whl
| Download URL | rtfcre-2.0.1-cp37-cp37m-manylinux_2_24_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.24+ x86-64 |
|
SHA-256 checksum How to use checksums |
87e6bcbe1d9b13b8b2dad297c2c00de769f909ce8a80f0712355792b09347d8c
|
|
BLAKE2b-256 checksum How to use checksums |
9b41fbcaee49428b072ab9419201e36936d73f408fb78fba969e964682bccde8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp37-cp37m-macosx_10_7_x86_64.whl
| Download URL | rtfcre-2.0.1-cp37-cp37m-macosx_10_7_x86_64.whl |
|---|---|
| Size | 710.7 kB |
| Tags | CPython 3.7 CPython 3.7 pymalloc macOS 10.7+ x86-64 |
|
SHA-256 checksum How to use checksums |
fe2a790c9c4cd3e0bc10514a583660c33d78ed277161362b2a9a5438f09bcb44
|
|
BLAKE2b-256 checksum How to use checksums |
526570d1a43acd5e6c8595421e2239d2c90a04dc824947ce3779bba1a1d7649e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp36-none-win_amd64.whl
| Download URL | rtfcre-2.0.1-cp36-none-win_amd64.whl |
|---|---|
| Size | 571.6 kB |
| Tags | CPython 3.6 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
79bf050f3ed7adba53143b9eabe2e8ef205e6e47b819de261845fde6c8c0501f
|
|
BLAKE2b-256 checksum How to use checksums |
52a0a23a23db12553ce68b6b099d96652f065249b082c4a155b8fb6c6951880e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp36-cp36m-manylinux_2_24_x86_64.whl
| Download URL | rtfcre-2.0.1-cp36-cp36m-manylinux_2_24_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.24+ x86-64 |
|
SHA-256 checksum How to use checksums |
7c07d71aa82b8a9a2f041ba7e97986bd9d60aab61f6c7e1d2d9dcf96ab38edb4
|
|
BLAKE2b-256 checksum How to use checksums |
375a49f5e8198d56347bc8df31d99f506301fd68be76e2f2c8b0384b1694f3b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / rtfcre-2.0.1-cp36-cp36m-macosx_10_7_x86_64.whl
| Download URL | rtfcre-2.0.1-cp36-cp36m-macosx_10_7_x86_64.whl |
|---|---|
| Size | 710.8 kB |
| Tags | CPython 3.6 CPython 3.6 pymalloc macOS 10.7+ x86-64 |
|
SHA-256 checksum How to use checksums |
e56a9a8935af0c96cb3fc648bebec392a38c077358c17618f469b8ef25650a18
|
|
BLAKE2b-256 checksum How to use checksums |
e10b95e814654f0399a84aa267bbee871024fe06723c876953e70f814526882d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Security for rtfcre 2.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.