Release History


  • Modernize packaging using setuptools, build, and setuptools_scm instead of pbr.


New Features


Bug Fixes

  • #193 Remove excessive debug printing in :spelling:word: and spelling builder implementations.


Bug Fixes

  • #188 Fix :spelling:word: directives from being printed verbatim in output files.



  • Convert to use Sphinx domains. Add spelling:word-list directive. Have spelling directive report that it is deprecated.

  • Add spelling:word role for marking inline text as spelled correctly.


Bug Fixes

  • #180 Suppress SystemExit errors in ImportableModuleFilter caused by importing modules that run code on import and exit when that code sees an error. Bug report and reproducer provided by Trevor Gross.



  • #151 Added configuration option to limit the number of suggestions output. See Configuration Options for more details. Idea contributed by Trevor Gross.

  • #169 Adds the ability to pass in multiple wordlists via the sphinx command line as -D spelling_word_list_filename=file1,file2.

Bug Fixes

  • #36 Include captions of figures in the set of nodes for which the text is checked.


  • #160 Fixed issue with the builder crashing when reporting a misspelled word in a python docstring.


  • Fix a problem that occurred when the extra word list is empty and an IndexError is thrown. Prevent the error by checking the contents of the file before using the list.

  • #153 Ensure the correct relative filename is reported as the location of a misspelled word when the word is in an included file. Log the location ourselves instead of letting the logging system compute it for consistency until the fix is merged into Sphinx.

  • Change default env list for local tox runs to only include the current python version, as defined by the installation of tox.

  • Tell tox to pass PYENCHANT_LIBRARY_PATH through to commands. On macOS it can be a little tricky to set up libenchant if your default python does not match the one used by Homebrew for the library. Setting the variable to point to the library fixes that, but we don’t want to set it in this file for everyone so use passenv to tell tox to pass the setting through when running the commands for each env.

  • #159 Report using the line number of the misspelled word instead of using the first line of the node, in both the log and .spelling output file.


Bug Fixes

  • #149 Fixes to support testing when building RPMs. Switch to PEP 420 native namespace and skip contributors test when not in a git repo.

  • #150 Minor code cleanup primarily around string interpolation.


Bug Fixes

  • #143 Treat __main__ as a special module name that cannot be imported. If the test suite is invoked by running python -m pytest instead of pytest then there will be no __main__ and find_spec() will fail, so this change makes the tests work in both modes.

  • #144 Fix python filename handling in ImportableModuleFilter. If the word looks like a python module filename, strip the extension to avoid the side-effect of actually importing the module. This prevents, for example, '' triggering an import of the setup module during a doc build, which makes it look like Sphinx is complaining about a commandline argument.


Bug Fixes

  • #137 replace the use of deprecated imp in ImportableModuleFilter with importlib


New Features

  • #131 included a documentation update to fix a broken link.

  • #130 tested support for Python 3.10, and added the trove classifier.

  • #129 improved the speed of the ImportableModuleFilter.

  • #128 fixed some issues with the packaging configuration.


New Features

  • #123 adds the spelling_verbose configuration option for controlling whether misspelled words are printed to the console as well as the output log files. See Output Options for details.


New Features

  • #116 adds a config option spelling_warning that makes individual messages about misspellings warnings. The same change also updates the formatting of the message to make it easier for IDEs to parse, allowing the editor to navigate to the location of the misspelled word. See Output Options for details. Contributed by Robert Cohn.


Bug Fixes

  • #105 reverts a change that switched from imp to importlib. Using importlib.find_spec() is not safe at runtime as it can import modules which will cause side effects within environments.


This major release drops support for Python 3.5. This version is not maintained anymore.

Bug Fixes

  • Fixes an issue with ellipsis incorrectly being interpreted as relative imports and triggering a ValueError in the ImportableModuleFilter. See #96 for details.


With this release, sphinxcontrib-spelling moves from beta to stable. It also updates the use of Python 3, including packaging metadata, code style, and test configuration.

New Features

  • Add packaging metadata declaring the project stable.

  • Add packaging metadata declaring support for Python 3 only.

  • Add packaging metadata indicating that this is a sphinx extension.

Bug Fixes

  • Replace use of deprecated imp module with importlib.

  • Update use of pyenchant.get_tokenizer() to pass filters argument as a keyword and avoid a runtime warning message.

  • Remove unused test dependency on fixtures.

  • Use pyupgrade to modernize the source code.


New Features

  • Added a new filter (sphinxcontrib.spelling.filters.ContributorFilter) that treats contributor names extracted from the git history as spelled correctly, making it easier to refer to the names in acknowledgments . Includes a new configuration option, spelling_ignore_contributor_names to enable it.


New Features

  • Add a configuration option spelling_exclude_patterns to manage skipping spell checking for some input files. The option uses a list of glob-style patterns that are matched against the source file names relative to the source directory. See Configuration Options for more details. Contributed by sdelliot.


Bug Fixes

  • Updated to only create .spelling output files for inputs that generate spelling warnings. Fixes #63.


New Features

  • The builder is now registered using an entry point, so that if the spelling directive is not used in a project sphinxcontrib.spelling does not need to be included explicitly in the extensions list in in order to use it with the project on the command line.

  • PyEnchant is an optional dependency. If it is not installed, the spell checker will not work, but the extension can still be initialized. This allows projects that use spell checking to publish their documentation to, where it is not possible to install PyEnchant.

  • Restore support for parallel builds. Words that do not appear in any configured dictionary are written to a file named based on the input file, with the .rst extension replaced with .spelling.


  • Mark as unsafe for parallel builds (contributed by Jared Dillard)

  • Add -W arg to sphinx-build in docs so warnings cause error (contributed by Elsa Gonsiorowski, PhD)


  • Add an option to show the line containing a misspelling for context (contributed by Huon Wilson)



  • Logging: use warning() instead of its deprecated alias (contributed by Sergey Kolosov)

  • Support additional contractions (contributed by David Baumgold)

  • require Sphinx >= 2.0.0

  • declare support for Python 3.6


  • fix remaining logging issue (contributed by Timotheus Kampik)

  • Remove usage of deprecated logging API (contributed by Tim Graham)


  • Fix a bug with empty word lists (contributed by FabioRosado)

  • Update dependency management to use setuptools extras

  • Document how to create multiple wordfiles (contributed by FabioRosado)

  • Note that PyEnchant is unmaintained and fix links (contributed by Marti Raudsepp)

  • Don’t use mutable default argument (contributed by Daniele Tricoli)


  • Make it possible to provide several wordlists (contributed by Tobias Olausson)

  • Update developer documentation (contributed by Tobias Olausson)

  • Update home page link (contributed by Devin Sevilla)


  • use the right method to emit warnings

  • disable smart quotes so that we can recognize contractions/possessives correctly (contributed by Alex Gaynor)


  • Don’t fail by default (contributed by Stephen Finucane)

  • Mark the extension as safe for parallel reading (contributed by Alex Gaynor)

  • be more verbose about configuration options

  • switch to testrepository for running tests

  • update Python 3.3 to 3.5


  • make it possible to specify tokenizer #7 (contributed by Timotheus Kampik)


  • Use https with package name checker (contributed by John-Scott Atlakson)

  • Removed unnecessary shebang lines from non-script files (contributed by Avram Lubkin)

  • Re-enable the PyEnchant dependency (contributed by Julian Berman)


  • Fixed issue with six under Python 3.4


  • Use str.isupper() instead of ad-hoc method

  • fix syntax for tags directive

  • Removed no more used CHANGES file


  • Fix unicode error in PythonBuiltinsFilter.

  • Make error output useful in emacs compiler mode

  • Only show the words being added to a local dictionary if debugging is enabled.


  • Add Python 3.3 support.

  • Add PyPy support.

  • Use pbr for packaging.

  • Update tox config to work with forked version of PyEnchant until changes are accepted upstream.



  • Handle text nodes without parents. (#19)

  • Include the input document name in the console output.

  • Use the Sphinx wrapper for registering a directive.


  • Add the document name to the messages showing the contents of a local dictionary created by the spelling directive.

  • Add title nodes to the list of node types checked for spelling. Resolves issue #17.

  • Add test/test_wordlist.txt to the manifest so it is included in the source distribution and the tests will pass. Resolves issue #17.

  • Documentation patch from Hank Gay.


  • Fix initialization so the per-document filters work even if no spelling directive is used.


  • Add an option treat the names of packages on PyPI as spelled properly.

  • Add an option to treat CamelCase names as spelled properly.

  • Add an option to treat acronyms as spelled properly.

  • Add an option to treat Python built-ins as spelled properly.

  • Add an option to treat names that can be found as modules as spelled properly.

  • Add an option to let the user provide a list of other filter classes for the tokenizer.

  • Add spelling directive for passing local configuration settings to the spelling checker. This version allows setting a list of words known to be spelled correctly.


  • Re-implement using just a Builder, without a separate visitor class.

  • Show the file and line number of any words not appearing in the dictionary, instead of the section title.

  • Log the file, line, and unknown words as the documents are processed.


  • Warn but otherwise ignore unknown node types.


  • First public release.