Changelog
Unreleased
0.9.0 - 2026-04-21
Added
Duplicate entry prevention for
grascii dictionary build. It can be disabled with the new--no-dedupoption.anniversaryas a built-in dictionaryConfiguration file presets for preanniversary and anniversary dictionaries
Changed
Updated dictionaries to 2026.04.20.
grascii config --inittograscii config init <preset>grascii config --deletetograscii config deletegrascii config --wheretograscii config pathLoading of default configuration to use
importlib.resources
0.8.0 - 2026-03-03
Added
“end” search mode for
grascii search
Changed
Improved typings for
searchanddephraserelated functionsAllow Grascii strings to start with a disjoiner
Updated dictionaries to 2026.02.28.
Removed
Dropped Python 3.9 support
Fixed
Added
py.typedfile to be PEP 561-compliant for type checkinggrascii searchunnecessarily searching twiceInteractiveSearcher.sorted_searchnot sorting and not respecting the provided metricPotential incorrect results for start/contain searches that ended with
S/TMissing intepretations of Grascii strings with over/under blend ambiguity
0.7.0 - 2025-07-12
Added
preanniversary-phrasesas a built-in dictionary and default search dictionary--show-dictionaryoption forgrascii searchDictionary.dumpmethod to get all the entries in a dictionaryDirection annotations for
XGrasciiInterpreterfor faster interpretations of Grascii strings
Changed
Updated dictionaries to 2025.06.30.
grascii dephraseis a first-class commanddephrasestreams results in a more logical orderAdded
AU,EU, andOEto similarity graph with edge betweenAUandEUReverse search to consider hyphens as word boundaries
Removed
Dropped Python 3.7 and 3.8 support
DictionaryOutputOptions.packageLALR compatibility for
grascii.lark
Fixed
Missing entries for
SSandXSingrammar.ANNOTATIONSIncorrect loop annotation for
A&'andA&Eingrammar.ANNOTATIONSInstances in which
GrasciiParserwould not generate the canonical interpretation first
0.6.1 - 2024-12-27
Changed
Updated similarity graph to include edges connecting circle diphthongs
0.6.0 - 2024-07-01
Added
Dictionary build
--no-outputoptionDictionaryOutputOptionsclass forDictionaryBuilder.buildBuildSummaryclass for results ofDictionaryBuilder.buildExperimental pipelines for dictionary builds
ignore_caseoption toGrasciiValidator-qand--quietoptions forgrascii dictionary build.
Changed
Searcher.__init__does not handleDictionaryNotFoundexceptionsgrascii searchprints an error if a dictionary cannot be foundMany
DictionaryBuilder.__init__options moved toDictionaryBuilder.buildor were removedDictionaryBuilder.buildtakesinfilesandoutputarguments and returns aBuildSummaryUpdated the
grascii_standardmetric to incorporate the position and length of the matched grasciiMigrated to
platformdirs: The location for the configuration file on MacOS changed from~/Library/Preferencesto~/Library/Application SupportUpdated preanniversary dictionary to 2024.06.14.
Removed
grascii.grammars.get_grammar: UseLark.open_from_package("grascii.grammars", grammar_name)instead.BuildDirectoryconfiguration file optionDictionary build
--check-onlyoption: Use--no-outputinsteadgrascii.dictionary.build.buildfunction: UseDictionaryBuilder.buildinstead
Fixed
Regex metacharacters in reverse search inputs are escaped
0.5.0 - 2022-08-12
Added
SearchResultclass to group together relevant data from matches.Searcher.sorted_searchto obtain a list of sortedSearchResults.grascii.dictionary.commonmodule to containDictionaryExceptions and utility functions.Dictionaryclass to work with grascii dictionaries.config.get_default_configto get the text of the default configuration file.-Vand--versioncommand line options.InvalidGrasciiexception which is produced by a parser.--no-sortoption forgrascii search.grascii.parser.get_grascii_regex_str()to get a string that can be compiled into a regular expression that recognizes grascii strings.
Changed
Searcher.searchno longer sorts results.grascii.dictionary.list:get_installedandget_built_insreturn a collection of installed dictionary names (prefixed with:).grascii.dictionary.install.install_dictrenamed toinstall_dictionaryand accepts more options.grascii.dictionary.uninstall.uninstall_dictrenamed touninstall_dictionaryand accepts more options.DICTIONARY_PATHrenamed toINSTALLATION_DIR.Using builtin
sortedfunction speeds up general grascii searches.GrasciiParser.interpretreturns an iterator instead of a list.Updated preanniversary dictionary to 2022.07.26.
Removed
Dropped Python 3.6 support.
grascii.dictionary.get_dict_file: Usegrascii.dictionary.Dictionary.openinstead.GrasciiValidator.__init__use_cacheoption
Fixed
Typing issues with searchers and metrics.
Errors when passing a grascii string with boundaries or disjoiners to the aggressive dephraser.
0.4.1 - 2022-06-29
Added
Some classes and functions that are considered to be part of the public API are importable from the top-level
grascii.
Fixed
Included
TVingrammar.STROKES.
0.4.0 - 2022-06-27
Added
New
parsermodule abstracts away Grascii parsing details.grammar.CONSONANTSandgrammar.VOWELSconstants.Experimental
outlinemodule withOutlineclass to infer directions of shorthand strokes.GrasciiValidatorclass to quickly validate, but not interpret, Grascii strings.dictionariessubmodule to include dictionary source files.Dictionary build
--wordsoption to specify words file for spell checking.Dictionary build
--verboseoption to increase build output.New
docsextra to specify doc building requirements.
Changed
Switched from
lark-parserto newlarkpackage.Boundaries can be retained during Grascii Interpretation creation.
grascii.larkis compatible with LALR.An apostrophe is accepted to represent “a” or “an”.
Multiple semantic
grascii.larkgrammar changes (see @7ebfd07).Dictionary build
--parseoption is now much faster.ReverseSearcherprovides a more useful sorting of results.Updated preanniversary dictionary to r00004.
Removed
The
typesmodule has been removed.Interpretationis now defined ingrascii.parser.The
utilsmodule has been removed.Dictionary source files are no longer stored in
dsrc.The dictionary build
--spelloption has been removed. (Succeeded by--words)
Fixed
Removed
Yfromgrammar.HARD_CHARACTERSandgrammar.ALPHABET.Included
DVingrammar.STROKES.Grascii contain searches do not match translations.
Grascii searches match -ing(s) at the end of words.
Grascii searches match a disjoiner at the end of words.
Grascii searches do not match double aspirates (except at the end of a word) or double disjoiners.
Fixed crash on interrupt during interactive interpretation selection.
0.3.0 - 2021-12-14
Added
New interactive search mode setting to select the dictionaries to search.
Changed
The search
-d/--dictionaryoption can be specified multiple times to search more than one dictionary at a time.The config file
[Search] Dictionaryoption now accepts a list of dictionaries.
0.2.2 - 2021-07-08
Added
Added the
-n/--countoption todictionary buildto enable the validation of expected word counts.
Changed
Word count validation for dictionary builds is no longer performed by default, but enabled with the
--countoption–helpful for phrase dictionaries.When the dictionary builder cannot determine an appropriate output file for an entry, it now prints an error and continues instead of crashing the build process.
Fixed
In dictionary builds, the incorrect number of words warning now properly behaves like a warning. The entry with the warning is now included in the build instead of being skipped.
0.2.1 - 2021-07-02
Added
grascii.grammar.ALPHABET: The set of valid characters in the Grascii language.
Changed
Grascii Search produces a better error message when given an invalid Grascii string.
Grascii Dephrase produces a better error message when there are no results.
0.2.0 - 2021-06-25
First Release
Added
Grascii Search with Grascii, Interactive, Reverse, and Regex modes
Grascii Dictionary build and installation tools
Grascii Configuration file and management
Built-in pre-anniversary dictionary [Status: Review]
Experimental Grascii Dephrase tool