Changelog — PyEnchant 3.3.0 documentation

# Changelog

## 3.3.0 (2025-09-14)

- Add tokenizer for the German language

- Improve support for macOS M1 architecture

- Add support for Python 3.11, 3.12 and 3.13

- Bump minimum required Python version to 3.9

- Numerous documentation updates

- Start adding type annotations (still a work in progress)

- For the enchant.checker package: always setup SpellChecker.

- Display project urls on `pypi.org`

- Sort all imports with `isort`

- Numerous tests cleanups

- Update FSF address in LICENSE.txt

- Windows wheels:

    - Use `enchant` archive generated from GitHub Actions

    - Bmup `enchant` from 2.2.7 to 3.4.4

- Publish packages from GitHub Actions

## 3.2.2 (2021-10-05)

- Add support for Python 3.10

## 3.2.1 (2021-06-24)

- Fix `Dict.__del__` sometimes raising TypeError upon exit (#98). Patch by @rr-

- Default development branch is now called `main`

- Bump `black` to 21.6b0

## 3.2.0 (2020-12-08)

- Add support for Python 3.9

- Add trove classifiers for all supported Python versions

- Run `pyupgrade` across the code base

- Update documentation about MacPorts

## 3.1.1 (2020-05-31)

- On Windows, set PATH instead of calling `SetDllDirectory` before loading the Enchant C library. This allows PyEnchant to co-exist with other libraries in the same program. Fix #207.

## 3.1.0 (2020-05-20)

- Add `enchant.get_user_config_dir()`

- Fix: `enchant.get_enchant_version()` now returns a `str`, not some `bytes`

## 3.0.1 (2020-03-01)

- Add missing LICENSE.txt in source distribution

## 3.0.0 (2020-03-01)

### Highlights

- Uncouple PyEnchant version from the Enchant version. This release should be compatible with Enchant 1.6 to 2.2

- Fix using PyEnchant with Enchant >= 2.0

- Add support for pypy3, Python 3.7 and Python 3.8

- New website, hosted on https://pyenchant.github.io/pyenchant/

- Add enchant.set_prefix_dir()

### Breaking changes

- Drop support for Python2

- macOS: The C enchant library is no longer embedded inside the wheel - you should install the C enchant library with `brew` or `ports`.

### Clean ups

- Port test suite to `pytest`.

- Add `tbump` configuration to simplify the release process

- Format code with `black`.

- Remove compatibility layers with Python2 from `enchant.utils`

- Use `flake8` to catch some errors during CI

- Fix some PEP8 naming violations

- Switch to GitHub Actions for CI

## 2.0.0 (2017-12-10)

- Removed deprecated is_in_session method, for compatibility with enchant 2.

## 1.6.6 (2014-06-16)

- New website and documentation, generated with Hyde and Sphinx.

- Fix `SpellChecker.replace()` when the replacement is shorter than the erroneous word; previously this would corrupt the internal state of the tokenizer. Thanks Steckelfisch.

- Make Dict class pickle-safe. Among other things, this should help with strange deadlocks when used with the multiprocessing module.

- Ability to import the module even when the enchant C library isn’t installed, by setting PYENCHANT_IGNORE_MISSING_LIB env var.

- New utility function “trim_suggestions”, useful for trimming the list of suggestions to a fixed maximum length.

- Change the way DeprecationWarnings are issued, to point to the line line in user code rather than inside pyenchant. Thanks eriolv.

- Add GetSpellChecker() method to wxSpellCheckerDialog. Thanks bjosey.

## 1.6.5 (2010-12-14)

- restore compatibility with Python 3 (including 3.2 beta1).

- fix unittest DeprecationWarnings on Python 3.

- statically compile libstdc++ into pre-built windows binaries.

## 1.6.4 (2010-12-13)

- DictWithPWL: use pwl and pel to adjust the words returned by suggest().

- Fix tokenization of utf8 bytes in a mutable character array.

- get_tokenizer(): pass None as language tag to get default tokenizer.

- prevent build-related files from being included in the source tarball.

## 1.6.3 (2010-08-17)

- Bundle pre-compiled libraries for Mac OSX 10.4 and later.

- Improved handling of unicode paths on win32.

- Changed DLL loading logic for win32, to ensure that we don’t accidentally load older versions of e.g. glib that may be on the DLL search path.

- Added function get_enchant_version() to retrieve the version string for the underlying enchant library.

## 1.6.2 (2010-05-29)

- Upgraded bundled enchant to v1.6.0.

- Fixed bug in printf() utility function; all input args are now converted to strings before printing.

## 1.6.1 (2010-03-06)

- Fixed loading of enchant DLL on win32 without pkg_resources installed.

- Fixed HTMLChunker to handle unescaped < and > characters that are clearly not part of a tag.

## 1.6.0 (2010-02-23)

- Upgraded to enchant v1.5.0:

  > - new Broker methods get_param() and set_param() allow runtime customisation of provider data

- Added the concept of ‘chunkers’ to enchant.tokenize.get_tokenizer(). These serve split split the text into large chunks of checkable tokens.

- implemented a simple HTMLChunker class

- Moved error classes into ‘enchant.errors’ for easier importing

- Moved testcases into separate files so they’re not loaded by default

- Allowed SpellChecker to use default language if none is specified

- Improved compatibility with Python 3

## 1.5.3 (2009-05-02)

- Fixed termination conditions in English tokenization loop.

- Improved unicode detection in English tokenizer.

- Made enchant spellcheck all of its docstrings as part of the unittest suite.

## 1.5.2 (2009-04-27)

- Modify utils.get_resource_filename and utils.win32_data_files for compatibility with py2exe (which was broken in the move to ctypes). Thanks to Stephen George for the fix.

## 1.5.1 (2009-01-08)

- SpellChecker.add_to_personal renamed to SpellChecker.add and fixed to use the corresponding Dict method.

## 1.5.0 (2008-11-25)

- Migrated from SWIG to ctypes

  > - now runs under PyPy!

  > - also opens possibilities for Jython, IronPython, …

- Compatibility updates for Python 3.0, mostly around unicode strings

- Dropped compatibility with Python 2.2

## 1.4.2 (2008-06-18)

- upgrade to enchant v1.4.2

- windows version can now be installed at a path containing unicode characters

## 1.4.0 (2008-04-18)

- upgrade to enchant v1.4.0, with new functionality and APIs:

  > - All dictionary providers now use a shared default personal word file (largely obsoleting the DictWithPWL class)

  > - Ability to exclude words using Dict.remove, remove_from_session

  > - Dict.add_to_personal renamed to Dict.add

  > - Dict.is_added/Dict.is_removed for checking membership of word lists

  > - unicode PWL filenames now handled correctly on Windows

- upgrade bundled glib DLLs in Windows version

## 1.3.1 (2007-12-19)

- treat combining unicode marks as letters during tokenization

- cleanup of wxSpellCheckerDialog, thanks to Phil Mayes

- upgrades of bundled components in Windows version

  > - upgraded glib DLLs

  > - latest dictionaries from OpenOffice.org

  > - latest version of Hunspell

## 1.3.0 (2006-12-29)

- Re-worked the tokenization API to allow filters but still remove non-alpha-numeric characters from words by default. This introduces some minor backward-incompatibilities to the API, hence the full minor version bump.

  > - ‘fallback’ argument to get_tokenizer() was removed, just catch the Error and re-try with whatever is appropriate for your application.

  > - filters should be passed into get_tokenizer() as the second argument, rather than applied as separate functions.

  > - Basic whitespace-and-punctuation tokenization separated from the language-specific parts.

  > - Internal details of Filter classes expanded and generalized

  > - English tokenization rules reverted to 1.1.5 version

## 1.2.0 (2006-11-05)

- Implemented “filters” that allow tokenization to skip common word forms such as URLs, WikiWords, email addresses etc.

- Now ships with enchant-1.3.0, meaning:

  - PWLs can return a useful list of suggestions rather than the empty list

  - Hunspell replaces MySpell as the default Windows backend

- Tokenization doesn’t split words at non-alpha characters by default

- GtkSpellCheckerDialog contributed by Fredrik Corneliusson

- Removed deprecated functionality:

  - Dict.add_to_personal

  - All registry handling functionality from enchant.utils

  - enchant.utils.SpellChecker (use enchant.checker.SpellChecker)

- Removed PyPWL, as native enchant PWLs can now suggest corrections

## 1.1.5 (2006-01-19)

- Fix hang in included MySpell (Windows distribution)

- Workaround for some MySpell/unicode problems

- Update to latest setuptools ez_setup.py

## 1.1.4 (2006-01-09)

- No longer need to use the registry under Windows

- Moved to setuptools for managing distribution

- Implemented unittest TestCases, works with python setup.py test

- Plugins on Windows moved to “enchant” subdirectory

- SpellChecker now coerces to/from unicode automatically

- Use python default encoding rather than UTF-8 where appropriate

- Various documentation cleanups

- bug fixes:

  > - (1230151): count of live instances done by normalized key

  > - Accept unicode strings as broker orderings

## 1.1.3 (2005-06-15)

- support for Python 2.2

- use ‘locale’ module to look up default language if none specified

- more and better regression tests

- mark deprecated interfaces with warnings

- removed <data> parameter to Dict constructor, with lots of reshuffling behind the scenes

- add DictNotFoundError as a subclass of Error

- Remove de_AT from languages in the Windows version, it was causing errors

- bug fixes:

  > - memory leak in DictWithPWL._free()

  > - incorrect cache handling for PWLs