diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml
new file mode 100644
index 0000000000..c581db3c5a
--- /dev/null
+++ b/.github/workflows/autofix.yml
@@ -0,0 +1,19 @@
+name: autofix.ci
+
+on: # yamllint disable-line rule:truthy
+ pull_request:
+ types: [opened, synchronize, labeled, unlabeled]
+
+permissions:
+ contents: read
+
+jobs:
+ autofix:
+ name: Regenerate autogenerated files
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ - run: make codespell_lib/data/dictionary_en_to_en-OX_AUTOGENERATED.txt
+ - uses: autofix-ci/action@7a166d7532b277f34e16238930461bf77f9d7ed8
diff --git a/.github/workflows/codespell-windows.yml b/.github/workflows/codespell-windows.yml
deleted file mode 100644
index c090a224d7..0000000000
--- a/.github/workflows/codespell-windows.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: Test Codespell Windows
-on:
- - push
- - pull_request
-permissions: {}
-jobs:
- test-windows:
- name: Test Windows
- runs-on: windows-latest
- timeout-minutes: 10
- steps:
- - uses: actions/checkout@v4
- with:
- persist-credentials: false
- - name: Setup python
- uses: actions/setup-python@v5
- with:
- python-version: "3.8"
- - name: Install dependencies
- run: |
- python --version
- pip install -U pip
- pip install setuptools
- pip install -e .[dev]
- - run: codespell --help
- - run: codespell --version
- - run: pytest codespell_lib
- - uses: codecov/codecov-action@v5
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
index 3163b4e35f..bdd0396eba 100644
--- a/.github/workflows/codespell.yml
+++ b/.github/workflows/codespell.yml
@@ -9,7 +9,7 @@ jobs:
name: Check for spelling errors
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
persist-credentials: false
- uses: codespell-project/actions-codespell@master
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 88048710d8..d603c5624b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -18,11 +18,11 @@ jobs:
package:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
persist-credentials: false
- name: Set up Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: Install dependencies
@@ -36,7 +36,7 @@ jobs:
- name: Check env vars
run: |
echo "Triggered by: ${{ github.event_name }}"
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@v7
with:
name: dist
path: dist
@@ -47,7 +47,7 @@ jobs:
runs-on: ubuntu-latest
if: github.event_name == 'release'
steps:
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v8
with:
name: dist
path: dist
diff --git a/.github/workflows/codespell-private.yml b/.github/workflows/tests.yml
similarity index 60%
rename from .github/workflows/codespell-private.yml
rename to .github/workflows/tests.yml
index b77b2aa061..16bc8ba438 100644
--- a/.github/workflows/codespell-private.yml
+++ b/.github/workflows/tests.yml
@@ -11,66 +11,82 @@ permissions: {}
jobs:
test:
env:
- REQUIRE_ASPELL: true
+ REQUIRE_ASPELL: ${{ startsWith(matrix.os, 'ubuntu') }}
RUFF_OUTPUT_FORMAT: github
# Make sure we're using the latest aspell dictionary
- runs-on: ubuntu-24.04-arm
+ runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
python-version:
- - "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- no-toml:
- - ""
+ - "3.14"
+ kind:
+ - "standard"
+ os:
+ - "ubuntu-24.04-arm"
include:
- python-version: "3.10"
- no-toml: "no-toml"
- name: ${{ matrix.python-version }} ${{ matrix.no-toml }}
+ kind: "old"
+ os: "ubuntu-24.04-arm"
+ - python-version: "3.10"
+ kind: "no-toml"
+ os: "ubuntu-24.04-arm"
+ - python-version: "3.13"
+ kind: "standard"
+ os: "windows-latest"
+ name: "${{ matrix.python-version }} ${{ matrix.kind }} ${{ matrix.os }}"
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- run: sudo apt-get install libaspell-dev aspell-en
+ if: startsWith(matrix.os, 'ubuntu')
- name: Install dependencies
+ shell: bash -e {0}
run: |
python --version # just to check
- pip install --upgrade pip wheel # upgrade to latest pip find 3.5 wheels; wheel to avoid errors
+ python -m pip install --upgrade pip wheel # upgrade to latest pip find 3.5 wheels; wheel to avoid errors
pip install --upgrade "setuptools!=47.2.0" docutils setuptools_scm[toml] twine
- pip install aspell-python-py3
pip install -e ".[dev]" # install the codespell dev packages
+ - run: pip install aspell-python-py3
+ if: startsWith(matrix.os, 'ubuntu')
+ - run: pip install "chardet<7"
+ if: ${{ matrix.kind == 'old' }}
- run: codespell --help
- run: codespell --version
- run: make check
+ if: startsWith(matrix.os, 'ubuntu')
+ - run: pytest codespell_lib
+ if: startsWith(matrix.os, 'windows')
- uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
# tomli should not be required for the next two steps (and make sure it's not)
- run: pip uninstall -yq tomli
- if: ${{ matrix.no-toml == 'no-toml' }}
- - run: codespell --check-filenames --skip="./.git/*,./.pytest_cache/*,./junit-results.xml,*.pyc,./codespell_lib/tests/test_basic.py,./codespell_lib/data/*,./example/code.c,./build/lib/codespell_lib/tests/test_basic.py,./build/lib/codespell_lib/data/*,README.rst,*.egg-info/*,pyproject-codespell.precommit-toml,./.mypy_cache"
+ if: ${{ matrix.kind == 'no-toml' }}
+ - run: codespell --check-filenames --skip="./.*,./build/*,./codespell_lib/data/*,./codespell_lib/tests/test_basic.py,./example/code.c,./junit-results.xml,*.egg-info/*,*.pyc,*.sig,pyproject-codespell.precommit-toml,README.rst,"
# this file has an error
- run: "! codespell codespell_lib/tests/test_basic.py"
+ shell: bash -e {0}
make-check-dictionaries:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Setup Python
- uses: actions/setup-python@v5
- with:
- python-version: 3.x
- - uses: actions/checkout@v4
+ uses: actions/setup-python@v6
+ - uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install general dependencies
diff --git a/.gitignore b/.gitignore
index f4d749b818..cb3acd2e3e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@ codespell.egg-info
codespell_lib/_version.py
junit-results.xml
*.egg-info/
+.DS_Store
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 6c43f392e1..218ff0117e 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -4,7 +4,7 @@ exclude: ^(\.[^/]*cache/.*)$
repos:
- repo: https://github.com/executablebooks/mdformat
# Do this before other tools "fixing" the line endings
- rev: 0.7.21
+ rev: 1.0.0
hooks:
- id: mdformat
name: Format Markdown
@@ -26,7 +26,7 @@ repos:
hooks:
- id: rst-linter
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v5.0.0
+ rev: v6.0.0
hooks:
- id: no-commit-to-branch
args: [--branch, main]
@@ -50,7 +50,7 @@ repos:
files: dictionary.*\.txt$|\.wordlist$
args: [--ignore-case]
- repo: https://github.com/adrienverge/yamllint.git
- rev: v1.35.1
+ rev: v1.38.0
hooks:
- id: yamllint
args:
@@ -58,28 +58,28 @@ repos:
- -d
- "{extends: relaxed, rules: {line-length: {max: 90}}}"
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.9.1
+ rev: v0.15.4
hooks:
- - id: ruff
+ - id: ruff-check
- id: ruff-format
- - repo: https://github.com/pre-commit/mirrors-prettier
- rev: v4.0.0-alpha.8
+ - repo: https://github.com/rbubley/mirrors-prettier
+ rev: v3.8.1
hooks:
- id: prettier
types_or: [yaml, markdown, html, css, scss, javascript, json]
- repo: https://github.com/codespell-project/codespell
- rev: v2.3.0
+ rev: v2.4.1
hooks:
- id: codespell
args: [--toml, pyproject-codespell.precommit-toml]
additional_dependencies:
- tomli
- repo: https://github.com/abravalheri/validate-pyproject
- rev: v0.23
+ rev: v0.25
hooks:
- id: validate-pyproject
- repo: https://github.com/pre-commit/mirrors-mypy
- rev: v1.14.1
+ rev: v1.19.1
hooks:
- id: mypy
args: ["--config-file", "pyproject.toml"]
@@ -89,4 +89,4 @@ repos:
- types-chardet
ci:
- autoupdate_schedule: monthly
+ autoupdate_schedule: weekly
diff --git a/Makefile b/Makefile
index 1915f2e69f..fdbad92948 100644
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,21 @@
-DICTIONARIES := codespell_lib/data/dictionary*.txt codespell_lib/tests/data/*.wordlist
+DICTIONARIES = codespell_lib/data/dictionary*.txt codespell_lib/tests/data/*.wordlist
PHONY := all check check-dictionaries sort-dictionaries trim-dictionaries check-dist pytest pypi ruff clean
-all: check-dictionaries codespell.1
+GENERATED := codespell_lib/data/dictionary_en_to_en-OX_AUTOGENERATED.txt
-check: check-dictionaries check-dist pytest ruff
+all: $(GENERATED) check-dictionaries codespell.1
+
+check: $(GENERATED) check-dictionaries check-dist pytest ruff
+
+$(GENERATED): codespell_lib/data/dictionary_en-GB_to_en-US.txt ./tools/gen_OX.sh
+ ./tools/gen_OX.sh codespell_lib/data/dictionary_en-GB_to_en-US.txt > codespell_lib/data/dictionary_en_to_en-OX_AUTOGENERATED.txt
codespell.1: codespell.1.include Makefile
PYTHONPATH=. help2man codespell --include codespell.1.include --no-info --output codespell.1
sed -i '/\.SS \"Usage/,+2d' codespell.1
-check-dictionaries:
+check-dictionaries: sort-dictionaries
@for dictionary in ${DICTIONARIES}; do \
if grep -E -n "^\s*$$|\s$$|^\s" $$dictionary; then \
echo "Dictionary $$dictionary contains leading/trailing whitespace and/or blank lines. Trim with 'make trim-dictionaries'"; \
@@ -24,10 +29,10 @@ check-dictionaries:
exit 1; \
fi
-sort-dictionaries:
+sort-dictionaries: $(GENERATED)
pre-commit run --all-files file-contents-sorter
-trim-dictionaries:
+trim-dictionaries: $(GENERATED)
@for dictionary in ${DICTIONARIES}; do \
sed -E -i.bak -e 's/^[[:space:]]+//; s/[[:space:]]+$$//; /^$$/d' $$dictionary && rm $$dictionary.bak; \
done
@@ -39,9 +44,9 @@ check-dist:
rm -rf $(TMP)
ruff:
- pre-commit run --all-files ruff
+ pre-commit run --all-files ruff-check
-pytest:
+pytest: sort-dictionaries
@if command -v pytest > /dev/null; then \
pytest codespell_lib; \
else \
diff --git a/README.rst b/README.rst
index d98f8cd96d..a9562e8f2b 100644
--- a/README.rst
+++ b/README.rst
@@ -20,7 +20,7 @@ Useful links
Requirements
------------
-Python 3.8 or above.
+Python 3.9 or above.
Installation
------------
@@ -119,7 +119,7 @@ You can select the optional dictionaries with the ``--builtin`` option.
Ignoring words
--------------
-When ignoring false positives, note that spelling errors are *case-insensitive* but words to ignore are *case-sensitive*. For example, the dictionary entry ``wrod`` will also match the typo ``Wrod``, but to ignore it you must pass ``Wrod``.
+When ignoring false positives, note that spelling errors are *case-insensitive* but words to ignore are *case-sensitive*. For example, the dictionary entry ``wrod`` will also match the typo ``Wrod``, but to ignore it you must pass ``wrod`` (to match the case of the dictionary entry).
The words to ignore can be passed in two ways:
@@ -229,6 +229,13 @@ instead of these invalid entries:
.. _tomli: https://pypi.org/project/tomli/
+Reading arguments from file
+---------------------------
+
+Additional arguments can be read from a file with ``@PATH``. Arguments are
+extracted using ``shlex.split()``.
+
+
pre-commit hook
---------------
@@ -237,7 +244,7 @@ codespell also works with `pre-commit `_, using
.. code-block:: yaml
- repo: https://github.com/codespell-project/codespell
- rev: v2.2.4
+ rev: v2.4.1
hooks:
- id: codespell
@@ -246,7 +253,7 @@ If one configures codespell using the `pyproject.toml` file instead use:
.. code-block:: yaml
- repo: https://github.com/codespell-project/codespell
- rev: v2.2.4
+ rev: v2.4.1
hooks:
- id: codespell
additional_dependencies:
diff --git a/codespell_lib/_codespell.py b/codespell_lib/_codespell.py
index 794009bf56..c5b5b4e21b 100644
--- a/codespell_lib/_codespell.py
+++ b/codespell_lib/_codespell.py
@@ -23,20 +23,15 @@
import itertools
import os
import re
+import shlex
import sys
import textwrap
+from collections.abc import Iterable, Sequence
+from re import Match, Pattern
from typing import (
Any,
- Dict,
- Iterable,
- List,
- Match,
Optional,
- Pattern,
- Sequence,
- Set,
TextIO,
- Tuple,
)
if sys.platform == "win32":
@@ -58,9 +53,12 @@
# these may occur unescaped in URIs, and so we are more restrictive on the
# endpoint. Emails are more restrictive, so the endpoint remains flexible.
uri_regex_def = (
- "(\\b(?:https?|[ts]?ftp|file|git|smb)://[^\\s]+(?=$|\\s)|\\b[\\w.%+-]+@[\\w.-]+\\b)"
+ r"(\b(?:https?|[ts]?ftp|file|git|smb)://[^\s]+(?=$|\s)|\b[\w.%+-]+@[\w.-]+\b)"
+)
+codespell_ignore_tag = "codespell:ignore"
+inline_ignore_regex = re.compile(
+ rf"[^\w\s]\s*{codespell_ignore_tag}\b(\s+(?P[\w,]*))?"
)
-inline_ignore_regex = re.compile(r"[^\w\s]\s?codespell:ignore\b(\s+(?P[\w,]*))?")
USAGE = """
\t%prog [OPTIONS] [file1 file2 ... fileN]
"""
@@ -132,6 +130,15 @@
("en_GB",),
("en_US",),
),
+ (
+ "en_to_en-OX",
+ "for corrections from en to en-OX",
+ "_en_to_en-OX_AUTOGENERATED",
+ None,
+ None,
+ None,
+ None,
+ ),
)
_builtin_default = "clear,rare"
@@ -161,8 +168,8 @@ class QuietLevels:
class GlobMatch:
- def __init__(self, pattern: List[str]) -> None:
- self.pattern_list: List[str] = pattern
+ def __init__(self, pattern: list[str]) -> None:
+ self.pattern_list: list[str] = pattern
def match(self, filename: str) -> bool:
return any(fnmatch.fnmatch(filename, p) for p in self.pattern_list)
@@ -184,7 +191,7 @@ def disable(self) -> None:
class Summary:
def __init__(self) -> None:
- self.summary: Dict[str, int] = {}
+ self.summary: dict[str, int] = {}
def update(self, wrongword: str) -> None:
if wrongword in self.summary:
@@ -216,23 +223,29 @@ def __init__(
def init_chardet(self) -> None:
try:
- from chardet.universaldetector import UniversalDetector
- except ImportError as e:
+ import chardet # noqa: F401
+ except ImportError:
msg = (
"There's no chardet installed to import from. "
"Please, install it and check your PYTHONPATH "
"environment variable"
)
- raise ImportError(msg) from e
+ raise ImportError(msg)
+ try:
+ from chardet import UniversalDetector
+ except ImportError: # chardet < 7
+ from chardet.universaldetector import UniversalDetector
self.encdetector = UniversalDetector()
- def open(self, filename: str) -> Tuple[List[str], str]:
+ def open(self, filename: str) -> tuple[list[tuple[bool, int, list[str]]], str]:
if self.use_chardet:
return self.open_with_chardet(filename)
return self.open_with_internal(filename)
- def open_with_chardet(self, filename: str) -> Tuple[List[str], str]:
+ def open_with_chardet(
+ self, filename: str
+ ) -> tuple[list[tuple[bool, int, list[str]]], str]:
self.encdetector.reset()
with open(filename, "rb") as fb:
for line in fb:
@@ -259,7 +272,9 @@ def open_with_chardet(self, filename: str) -> Tuple[List[str], str]:
return lines, f.encoding
- def open_with_internal(self, filename: str) -> Tuple[List[str], str]:
+ def open_with_internal(
+ self, filename: str
+ ) -> tuple[list[tuple[bool, int, list[str]]], str]:
encoding = None
first_try = True
for encoding in ("utf-8", "iso-8859-1"):
@@ -286,21 +301,25 @@ def open_with_internal(self, filename: str) -> Tuple[List[str], str]:
return lines, encoding
- def get_lines(self, f: TextIO) -> List[str]:
+ def get_lines(self, f: TextIO) -> list[tuple[bool, int, list[str]]]:
+ fragments = []
+ line_number = 0
if self.ignore_multiline_regex:
text = f.read()
pos = 0
- text2 = ""
for m in re.finditer(self.ignore_multiline_regex, text):
- text2 += text[pos : m.start()]
- # Replace with blank lines so line numbers are unchanged.
- text2 += "\n" * m.group().count("\n")
+ lines = text[pos : m.start()].splitlines(True)
+ fragments.append((False, line_number, lines))
+ line_number += len(lines)
+ lines = m.group().splitlines(True)
+ fragments.append((True, line_number, lines))
+ line_number += len(lines) - 1
pos = m.end()
- text2 += text[pos:]
- lines = text2.split("\n")
+ lines = text[pos:].splitlines(True)
+ fragments.append((False, line_number, lines))
else:
- lines = f.readlines()
- return lines
+ fragments.append((False, line_number, f.readlines()))
+ return fragments
# -.-:-.-:-.-:-.:-.-:-.-:-.-:-.-:-.:-.-:-.-:-.-:-.-:-.:-.-:-
@@ -313,7 +332,7 @@ def get_lines(self, f: TextIO) -> List[str]:
class NewlineHelpFormatter(argparse.HelpFormatter):
"""Help formatter that preserves newlines and deals with lists."""
- def _split_lines(self, text: str, width: int) -> List[str]:
+ def _split_lines(self, text: str, width: int) -> list[str]:
parts = text.split("\n")
out = []
for part in parts:
@@ -330,7 +349,7 @@ def _split_lines(self, text: str, width: int) -> List[str]:
return out
-def _toml_to_parseconfig(toml_dict: Dict[str, Any]) -> Dict[str, Any]:
+def _toml_to_parseconfig(toml_dict: dict[str, Any]) -> dict[str, Any]:
"""Convert a dict read from a TOML file to the parseconfig.read_dict() format."""
return {
k: "" if v is True else ",".join(v) if isinstance(v, list) else v
@@ -373,8 +392,28 @@ def _supports_ansi_colors() -> bool:
def parse_options(
args: Sequence[str],
-) -> Tuple[argparse.Namespace, argparse.ArgumentParser, List[str]]:
- parser = argparse.ArgumentParser(formatter_class=NewlineHelpFormatter)
+) -> tuple[argparse.Namespace, argparse.ArgumentParser, list[str]]:
+ # Split lines read from `@PATH` using shlex.split(), otherwise default
+ # behaviour is to have one arg per line. See:
+ # https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.convert_arg_line_to_args
+ class ArgumentParser2(argparse.ArgumentParser):
+ def convert_arg_line_to_args(self, arg_line: str) -> list[str]:
+ if sys.platform == "win32":
+ # On Windows, shlex.split() seems to be messed up by back
+ # slashes. Temporarily changing them to forward slashes seems
+ # to make things work better.
+ arg_line = arg_line.replace("\\", "/")
+ ret = shlex.split(arg_line)
+ ret = [p.replace("/", "\\") for p in ret]
+ else:
+ ret = shlex.split(arg_line)
+ return ret
+
+ parser = ArgumentParser2(
+ formatter_class=NewlineHelpFormatter,
+ fromfile_prefix_chars="@",
+ epilog="Use @PATH to read additional arguments from file PATH.",
+ )
parser.set_defaults(colors=_supports_ansi_colors())
parser.add_argument("--version", action="version", version=VERSION)
@@ -697,7 +736,7 @@ def parse_options(
def process_ignore_words(
- words: Iterable[str], ignore_words: Set[str], ignore_words_cased: Set[str]
+ words: Iterable[str], ignore_words: set[str], ignore_words_cased: set[str]
) -> None:
for word in words:
word = word.strip()
@@ -708,10 +747,10 @@ def process_ignore_words(
def parse_ignore_words_option(
- ignore_words_option: List[str],
-) -> Tuple[Set[str], Set[str]]:
- ignore_words: Set[str] = set()
- ignore_words_cased: Set[str] = set()
+ ignore_words_option: list[str],
+) -> tuple[set[str], set[str]]:
+ ignore_words: set[str] = set()
+ ignore_words_cased: set[str] = set()
if ignore_words_option:
for comma_separated_words in ignore_words_option:
process_ignore_words(
@@ -722,13 +761,13 @@ def parse_ignore_words_option(
return (ignore_words, ignore_words_cased)
-def build_exclude_hashes(filename: str, exclude_lines: Set[str]) -> None:
+def build_exclude_hashes(filename: str, exclude_lines: set[str]) -> None:
with open(filename, encoding="utf-8") as f:
exclude_lines.update(line.rstrip() for line in f)
def build_ignore_words(
- filename: str, ignore_words: Set[str], ignore_words_cased: Set[str]
+ filename: str, ignore_words: set[str], ignore_words_cased: set[str]
) -> None:
with open(filename, encoding="utf-8") as f:
process_ignore_words(
@@ -756,7 +795,7 @@ def ask_for_word_fix(
misspelling: Misspelling,
interactivity: int,
colors: TermColors,
-) -> Tuple[bool, str]:
+) -> tuple[bool, str]:
wrongword = match.group()
if interactivity <= 0:
return misspelling.fix, fix_case(wrongword, misspelling.data)
@@ -813,9 +852,9 @@ def ask_for_word_fix(
def print_context(
- lines: List[str],
+ lines: list[str],
index: int,
- context: Tuple[int, int],
+ context: tuple[int, int],
) -> None:
# context = (context_before, context_after)
for i in range(index - context[0], index + context[1] + 1):
@@ -836,7 +875,7 @@ def extract_words(
text: str,
word_regex: Pattern[str],
ignore_word_regex: Optional[Pattern[str]],
-) -> List[str]:
+) -> list[str]:
return word_regex.findall(_ignore_word_sub(text, ignore_word_regex))
@@ -844,18 +883,18 @@ def extract_words_iter(
text: str,
word_regex: Pattern[str],
ignore_word_regex: Optional[Pattern[str]],
-) -> List[Match[str]]:
+) -> list[Match[str]]:
return list(word_regex.finditer(_ignore_word_sub(text, ignore_word_regex)))
def apply_uri_ignore_words(
- check_matches: List[Match[str]],
+ check_matches: list[Match[str]],
line: str,
word_regex: Pattern[str],
ignore_word_regex: Optional[Pattern[str]],
uri_regex: Pattern[str],
- uri_ignore_words: Set[str],
-) -> List[Match[str]]:
+ uri_ignore_words: set[str],
+) -> list[Match[str]]:
if not uri_ignore_words:
return check_matches
for uri in uri_regex.findall(line):
@@ -869,88 +908,63 @@ def apply_uri_ignore_words(
return check_matches
-def parse_file(
+def _format_colored_output(
+ filename: str,
+ colors: TermColors,
+ line_num: int,
+ wrong: str,
+ right: str,
+) -> tuple[str, str, str, str]:
+ """Format colored strings for output.
+
+ Args:
+ filename: The filename being processed.
+ colors: TermColors instance for color formatting.
+ line_num: Line number (1-based) where the misspelling was found.
+ wrong: The misspelled word.
+ right: The correct word.
+
+ Returns:
+ Tuple of (filename, line_num, wrong_word, right_word) with color codes.
+ """
+ cfilename = f"{colors.FILE}{filename}{colors.DISABLE}"
+ cline = f"{colors.FILE}{line_num}{colors.DISABLE}"
+ cwrongword = f"{colors.WWORD}{wrong}{colors.DISABLE}"
+ crightword = f"{colors.FWORD}{right}{colors.DISABLE}"
+ return cfilename, cline, cwrongword, crightword
+
+
+def parse_lines(
+ fragment: tuple[bool, int, list[str]],
filename: str,
colors: TermColors,
summary: Optional[Summary],
- misspellings: Dict[str, Misspelling],
- ignore_words_cased: Set[str],
- exclude_lines: Set[str],
- file_opener: FileOpener,
+ misspellings: dict[str, Misspelling],
+ ignore_words_cased: set[str],
+ exclude_lines: set[str],
word_regex: Pattern[str],
ignore_word_regex: Optional[Pattern[str]],
uri_regex: Pattern[str],
- uri_ignore_words: Set[str],
- context: Optional[Tuple[int, int]],
+ uri_ignore_words: set[str],
+ context: Optional[tuple[int, int]],
options: argparse.Namespace,
-) -> int:
+) -> tuple[int, bool, list[tuple[int, str, str]]]:
bad_count = 0
- lines = None
changed = False
+ changes_made: list[tuple[int, str, str]] = []
- if filename == "-":
- f = sys.stdin
- encoding = "utf-8"
- lines = f.readlines()
- else:
- if options.check_filenames:
- for word in extract_words(filename, word_regex, ignore_word_regex):
- if word in ignore_words_cased:
- continue
- lword = word.lower()
- if lword not in misspellings:
- continue
- fix = misspellings[lword].fix
- fixword = fix_case(word, misspellings[lword].data)
-
- if summary and fix:
- summary.update(lword)
-
- cfilename = f"{colors.FILE}{filename}{colors.DISABLE}"
- cwrongword = f"{colors.WWORD}{word}{colors.DISABLE}"
- crightword = f"{colors.FWORD}{fixword}{colors.DISABLE}"
-
- reason = misspellings[lword].reason
- if reason:
- if options.quiet_level & QuietLevels.DISABLED_FIXES:
- continue
- creason = f" | {colors.FILE}{reason}{colors.DISABLE}"
- else:
- if options.quiet_level & QuietLevels.NON_AUTOMATIC_FIXES:
- continue
- creason = ""
-
- bad_count += 1
-
- print(f"{cfilename}: {cwrongword} ==> {crightword}{creason}")
-
- # ignore irregular files
- if not os.path.isfile(filename):
- return bad_count
-
- try:
- text = is_text_file(filename)
- except PermissionError as e:
- print(f"WARNING: {e.strerror}: {filename}", file=sys.stderr)
- return bad_count
- except OSError:
- return bad_count
-
- if not text:
- if not options.quiet_level & QuietLevels.BINARY_FILE:
- print(f"WARNING: Binary file: {filename}", file=sys.stderr)
- return bad_count
- try:
- lines, encoding = file_opener.open(filename)
- except OSError:
- return bad_count
+ _, fragment_line_number, lines = fragment
for i, line in enumerate(lines):
- if line.rstrip() in exclude_lines:
+ line = line.rstrip()
+ if not line or line in exclude_lines:
continue
+ line_number = fragment_line_number + i
extra_words_to_ignore = set()
- match = inline_ignore_regex.search(line)
+ match = (
+ inline_ignore_regex.search(line) if codespell_ignore_tag in line else None
+ )
if match:
extra_words_to_ignore = set(
filter(None, (match.group("words") or "").split(","))
@@ -1023,6 +1037,7 @@ def parse_file(
changed = True
lines[i] = re.sub(rf"\b{word}\b", fixword, lines[i])
fixed_words.add(word)
+ changes_made.append((line_number + 1, word, fixword))
continue
# otherwise warning was explicitly set by interactive mode
@@ -1033,10 +1048,9 @@ def parse_file(
):
continue
- cfilename = f"{colors.FILE}{filename}{colors.DISABLE}"
- cline = f"{colors.FILE}{i + 1}{colors.DISABLE}"
- cwrongword = f"{colors.WWORD}{word}{colors.DISABLE}"
- crightword = f"{colors.FWORD}{fixword}{colors.DISABLE}"
+ cfilename, cline, cwrongword, crightword = _format_colored_output(
+ filename, colors, line_number + 1, word, fixword
+ )
reason = misspellings[lword].reason
if reason:
@@ -1066,25 +1080,143 @@ def parse_file(
f"==> {crightword}{creason}"
)
+ return bad_count, changed, changes_made
+
+
+def parse_file(
+ filename: str,
+ colors: TermColors,
+ summary: Optional[Summary],
+ misspellings: dict[str, Misspelling],
+ ignore_words_cased: set[str],
+ exclude_lines: set[str],
+ file_opener: FileOpener,
+ word_regex: Pattern[str],
+ ignore_word_regex: Optional[Pattern[str]],
+ uri_regex: Pattern[str],
+ uri_ignore_words: set[str],
+ context: Optional[tuple[int, int]],
+ options: argparse.Namespace,
+) -> int:
+ bad_count = 0
+ fragments = None
+
+ # Read lines.
+ if filename == "-":
+ f = sys.stdin
+ encoding = "utf-8"
+ fragments = file_opener.get_lines(f)
+ else:
+ if options.check_filenames:
+ for word in extract_words(filename, word_regex, ignore_word_regex):
+ if word in ignore_words_cased:
+ continue
+ lword = word.lower()
+ if lword not in misspellings:
+ continue
+ fix = misspellings[lword].fix
+ fixword = fix_case(word, misspellings[lword].data)
+
+ if summary and fix:
+ summary.update(lword)
+
+ cfilename, _, cwrongword, crightword = _format_colored_output(
+ filename, colors, 0, word, fixword
+ )
+
+ reason = misspellings[lword].reason
+ if reason:
+ if options.quiet_level & QuietLevels.DISABLED_FIXES:
+ continue
+ creason = f" | {colors.FILE}{reason}{colors.DISABLE}"
+ else:
+ if options.quiet_level & QuietLevels.NON_AUTOMATIC_FIXES:
+ continue
+ creason = ""
+
+ bad_count += 1
+
+ print(f"{cfilename}: {cwrongword} ==> {crightword}{creason}")
+
+ # ignore irregular files
+ if not os.path.isfile(filename):
+ return bad_count
+
+ try:
+ text = is_text_file(filename)
+ except PermissionError as e:
+ print(f"WARNING: {e.strerror}: {filename}", file=sys.stderr)
+ return bad_count
+ except OSError:
+ return bad_count
+
+ if not text:
+ if not options.quiet_level & QuietLevels.BINARY_FILE:
+ print(f"WARNING: Binary file: {filename}", file=sys.stderr)
+ return bad_count
+ try:
+ fragments, encoding = file_opener.open(filename)
+ except OSError:
+ return bad_count
+
+ # Parse lines.
+ changed = False
+ changes_made: list[tuple[int, str, str]] = []
+ for fragment in fragments:
+ ignore, _, _ = fragment
+ if ignore:
+ continue
+
+ bad_count_update, changed_update, changes_made_update = parse_lines(
+ fragment,
+ filename,
+ colors,
+ summary,
+ misspellings,
+ ignore_words_cased,
+ exclude_lines,
+ word_regex,
+ ignore_word_regex,
+ uri_regex,
+ uri_ignore_words,
+ context,
+ options,
+ )
+ bad_count += bad_count_update
+ changed = changed or changed_update
+ changes_made.extend(changes_made_update)
+
+ # Write out lines, if changed.
if changed:
if filename == "-":
print("---")
- for line in lines:
- print(line, end="")
+ for _, _, lines in fragments:
+ for line in lines:
+ print(line, end="")
else:
if not options.quiet_level & QuietLevels.FIXES:
print(
f"{colors.FWORD}FIXED:{colors.DISABLE} {filename}",
file=sys.stderr,
)
+ for line_num, wrong, right in changes_made:
+ cfilename, cline, cwrongword, crightword = _format_colored_output(
+ filename, colors, line_num, wrong, right
+ )
+ print(
+ f" {cfilename}:{cline}: {cwrongword} ==> {crightword}",
+ file=sys.stderr,
+ )
with open(filename, "w", encoding=encoding, newline="") as f:
- f.writelines(lines)
+ for _, _, lines in fragments:
+ f.writelines(lines)
+
return bad_count
def flatten_clean_comma_separated_arguments(
arguments: Iterable[str],
-) -> List[str]:
+) -> list[str]:
"""
>>> flatten_clean_comma_separated_arguments(["a, b ,\n c, d,", "e"])
['a', 'b', 'c', 'd', 'e']
@@ -1226,7 +1358,7 @@ def main(*args: str) -> int:
f"ERROR: cannot find dictionary file: {dictionary}",
)
use_dictionaries.append(dictionary)
- misspellings: Dict[str, Misspelling] = {}
+ misspellings: dict[str, Misspelling] = {}
for dictionary in use_dictionaries:
build_dict(dictionary, misspellings, ignore_words)
colors = TermColors()
@@ -1254,7 +1386,7 @@ def main(*args: str) -> int:
context_after = max(0, options.after_context)
context = (context_before, context_after)
- exclude_lines: Set[str] = set()
+ exclude_lines: set[str] = set()
if options.exclude_file:
exclude_files = flatten_clean_comma_separated_arguments(options.exclude_file)
for exclude_file in exclude_files:
diff --git a/codespell_lib/_spellchecker.py b/codespell_lib/_spellchecker.py
index 82865cdd19..7b511e6d3e 100644
--- a/codespell_lib/_spellchecker.py
+++ b/codespell_lib/_spellchecker.py
@@ -16,11 +16,6 @@
Copyright (C) 2011 ProFUSION embedded systems
"""
-from typing import (
- Dict,
- Set,
-)
-
# Pass all misspellings through this translation table to generate
# alternative misspellings and fixes.
alt_chars = (("'", "’"),) # noqa: RUF001
@@ -36,7 +31,7 @@ def __init__(self, data: str, fix: bool, reason: str) -> None:
def add_misspelling(
key: str,
data: str,
- misspellings: Dict[str, Misspelling],
+ misspellings: dict[str, Misspelling],
) -> None:
data = data.strip()
@@ -53,8 +48,8 @@ def add_misspelling(
def build_dict(
filename: str,
- misspellings: Dict[str, Misspelling],
- ignore_words: Set[str],
+ misspellings: dict[str, Misspelling],
+ ignore_words: set[str],
) -> None:
with open(filename, encoding="utf-8") as f:
translate_tables = [(x, str.maketrans(x, y)) for x, y in alt_chars]
diff --git a/codespell_lib/data/dictionary.txt b/codespell_lib/data/dictionary.txt
index 2fd566f0b5..e1f291a9d0 100644
--- a/codespell_lib/data/dictionary.txt
+++ b/codespell_lib/data/dictionary.txt
@@ -635,6 +635,12 @@ acceleratored->accelerated
acceleratoring->accelerating
acceleratrion->acceleration
acceleread->accelerated
+accelereate->accelerate
+accelereated->accelerated
+accelereates->accelerates
+accelereating->accelerating
+accelereation->acceleration
+accelereations->accelerations
accelerte->accelerate
accelertion->acceleration
accelertor->accelerator
@@ -834,6 +840,8 @@ acciental->accidental
accientally->accidentally
accissible->accessible
acclamied->acclaimed
+accleometer->accelerometer
+accleometers->accelerometers
acclerate->accelerate
acclerated->accelerated
acclerates->accelerates
@@ -1663,6 +1671,7 @@ actice->active
acticely->actively
acticities->activities
acticity->activity
+actieve->active
actine->active
actitivies->activities
actiual->actual
@@ -1719,7 +1728,7 @@ activsted->activated
activstes->activates
activte->activate
activted->activated
-activtes->activates
+activtes->activates, activities,
activties->activities
activting->activating
activtion->activation
@@ -1952,6 +1961,8 @@ additionalyy->additionally
additionnal->additional
additionnally->additionally
additionnaly->additionally
+addititional->additional
+addititionally->additionally
additivies->additives
additivley->additively, additive,
additoin->addition
@@ -2431,9 +2442,19 @@ adverst->adverts
advertice->advertise
adverticed->advertised
adverticement->advertisement
+adverticements->advertisements
+advertie->advertise
+advertied->advertised
+advertiement->advertisement
+advertiements->advertisements
+advertier->advertiser
+advertiers->advertisers
+adverties->advertises
+advertiing->advertising
advertis->adverts, advertise,
advertisiers->advertisers
advertisiment->advertisement
+advertisiments->advertisements
advertisin->advertising
advertisment->advertisement
advertisments->advertisements
@@ -2459,6 +2480,7 @@ adviced->advised
advices->advice
advicing->advising
advirtisement->advertisement
+advirtisements->advertisements
adviseable->advisable
adviseer->adviser
adviseur->adviser
@@ -2544,6 +2566,8 @@ affilations->affiliations
affiliato->affiliation
affiliaton->affiliation
affiliction->affiliation, affliction,
+affilitation->affiliation
+affilitations->affiliations
affilliate->affiliate
affinitied->affinities
affinitiy->affinity
@@ -2575,6 +2599,10 @@ affortable->affordable
afforts->affords, efforts,
affraid->afraid
affrimative->affirmative
+afftect->affect
+afftected->affected
+afftecting->affecting
+afftects->affects
affter->after
affulent->affluent
afgahnistan->Afghanistan
@@ -2725,6 +2753,14 @@ aggreeableness->agreeableness
aggreeably->agreeably
aggreecate->aggregate
aggreed->agreed
+aggreegate->aggregate
+aggreegated->aggregated
+aggreegates->aggregates
+aggreegating->aggregating
+aggreegation->aggregation
+aggreegations->aggregations
+aggreegator->aggregator
+aggreegators->aggregators
aggreeing->agreeing
aggreement->agreement
aggreements->agreements
@@ -3107,6 +3143,18 @@ alernative->alternative
alernatively->alternatively
alernatives->alternatives
alers->alerts, alters,
+aletr->alert, alter,
+aletred->alerted, altered,
+aletring->alerting, altering,
+aletrnate->alternate
+aletrnated->alternated
+aletrnately->alternately
+aletrnates->alternates
+aletrnating->alternating
+aletrnative->alternative
+aletrnatively->alternatively
+aletrnatives->alternatives
+aletrs->alerts, alters,
aleviate->alleviate
aleviates->alleviates
aleviating->alleviating
@@ -3393,6 +3441,7 @@ aligment->alignment
aligments->alignments
aligmnet->alignment
aligmnets->alignments
+alignaed->aligned
alignament->alignment
alignaments->alignments
alignation->alignment
@@ -3971,6 +4020,7 @@ ambigious->ambiguous
ambigous->ambiguous
ambiguious->ambiguous
ambiguitiy->ambiguity
+ambigunous->ambiguous
ambiguos->ambiguous
ambiguuous->ambiguous
ambiguuously->ambiguously
@@ -4461,7 +4511,7 @@ androis->androids
andthe->and the
andtoid->android
andtoids->androids
-ane->and
+ane->and, one,
anecdatal->anecdotal
anecdatally->anecdotally
anecdate->anecdote
@@ -5166,6 +5216,8 @@ aparently->apparently
aparment->apartment
aparrent->apparent
aparrently->apparently
+apartemnt->apartment
+apartemnts->apartments
apartheied->apartheid
aparthide->apartheid
aparthied->apartheid
@@ -5174,6 +5226,8 @@ apartmen->apartment
apartmens->apartments
apartmet->apartment
apartmets->apartments
+aparttment->apartment
+aparttments->apartments
apaul->appall
apauled->appalled
apauling->appalling
@@ -5413,7 +5467,11 @@ appeciating->appreciating
appeciation->appreciation
appeciative->appreciative
appeded->appended
+appedice->appendice, appendix,
+appedices->appendices
+appedicitis->appendicitis
appeding->appending
+appedix->appendix
appedn->append
appen->append, happen, aspen,
appendend->appended
@@ -6744,6 +6802,8 @@ arrants->arrangements
arraows->arrows
arrary->array
arrarys->arrays
+arrauy->array
+arrauys->arrays
arraye->array
arrayes->arrays
arre->are
@@ -7011,6 +7071,7 @@ askign->asking
askin->asking, ask in, akin, skin, a skin,
askreddt->AskReddit
aslo->also
+asncronous->asynchronous
asnd->and
asnwer->answer
asnwered->answered
@@ -7167,6 +7228,7 @@ assesments->assessments
assessin->assassin, assessing, assess in,
assessmant->assessment
assessmants->assessments
+assests->assess, assets,
assfalt->asphalt
assfalted->asphalted
assfalting->asphalting
@@ -7623,6 +7685,8 @@ asterices->asterisks
asterik->asterisk
asteriks->asterisk, asterisks,
asteriod->asteroid
+asterisc->asterisk
+asteriscs->asterisks
astethic->aesthetic
astethically->aesthetically
astethicism->aestheticism
@@ -7674,6 +7738,11 @@ asymetricaly->asymmetrically
asymetries->asymmetries
asymetriy->asymmetry
asymetry->asymmetry
+asymmectric->asymmetric
+asymmectrical->asymmetrical
+asymmectrically->asymmetrically
+asymmectries->asymmetries
+asymmectry->asymmetry
asymmeric->asymmetric
asymmerical->asymmetrical
asymmerically->asymmetrically
@@ -7926,6 +7995,13 @@ attirbute->attribute
attirbutes->attributes
attiribute->attribute
attitide->attitude
+attitides->attitudes
+attivate->activate
+attivated->activated
+attivates->activates
+attivating->activating
+attivation->activation
+attivations->activations
attmept->attempt
attmepted->attempted
attmepting->attempting
@@ -8140,6 +8216,7 @@ auhtorized->authorized
auhtorizes->authorizes
auhtorizing->authorizing
auhtors->authors
+aulty->aunty, faulty,
aumatically->automatically, traumatically,
aunthenticate->authenticate
aunthenticated->authenticated
@@ -8479,6 +8556,7 @@ auto-detetion->auto-detection, auto-deletion,
auto-detets->auto-detects, auto-deletes,
auto-ganerated->auto-generated
auto-generaged->auto-generated
+auto-genertaed->auto-generated
auto-genrated->auto-generated
auto-genratet->auto-generated
auto-genration->auto-generation
@@ -8529,6 +8607,9 @@ auto-negoziation->auto-negotiation
auto-negoziations->auto-negotiations
auto-realease->auto-release
auto-realeased->auto-released
+autoated->automated
+autoatic->automatic
+autoatically->automatically
autochtonous->autochthonous
autocmplete->autocomplete
autocmpleted->autocompleted
@@ -8836,6 +8917,12 @@ avod->avoid
avoded->avoided
avoding->avoiding
avods->avoids
+avoic->avoid
+avoicance->avoidance
+avoiced->avoided
+avoicing->avoiding
+avoics->avoids
+avoide->avoid, avoided, avoids,
avoidence->avoidance
avoidin->avoiding, avoid in, a void in,
avoind->avoid
@@ -8871,6 +8958,7 @@ awsome->awesome
awya->away
axises->axes
axissymmetric->axisymmetric
+axisymmectric->axisymmetric
axix->axis
axixsymmetric->axisymmetric
axpressed->expressed
@@ -8984,6 +9072,8 @@ backwarks->backwards
backwars->backward, backwards,
backwrad->backward
backwrads->backwards
+backwward->backward
+backwwards->backwards
bacome->become, became,
bacomes->becomes
bacoming->becoming
@@ -9251,6 +9341,7 @@ beeings->beings
beetween->between
beetwen->between
beffer->buffer
+beflow->below
befoer->before
befoerhand->beforehand
befor->before
@@ -9287,6 +9378,7 @@ beginer->beginner
beginers->beginners
begines->begins
beging->begging, beginning, being,
+beginin->beginning
begininer->beginner
begininers->beginners
begining->beginning
@@ -9606,6 +9698,8 @@ binay->binary
bindin->binding, bind in, bindi, bindis,
bindins->bindings
binidng->binding
+binnaries->binaries
+binnary->binary
binominal->binomial
binraries->binaries
binrary->binary
@@ -10079,6 +10173,8 @@ breackpoints->breakpoints
breacks->breaks, brakes,
breackthrough->breakthrough
breackthroughs->breakthroughs
+breadcumb->breadcrumb
+breadcumbs->breadcrumbs
breaked->broken
breakes->breaks
breakin->breaking, break in,
@@ -10232,6 +10328,7 @@ bubbless->bubbles
buda->Buddha
Buddah->Buddha
Buddist->Buddhist
+buest->burst, best, guest, bust, bluest,
bufefr->buffer
bufer->buffer
bufers->buffers
@@ -10418,6 +10515,7 @@ butons->buttons
butterly->butterfly
buttin->button
buttins->buttons
+butto->button
buttom->button, bottom,
buttoms->buttons, bottoms,
buttong->button
@@ -10433,6 +10531,10 @@ buyed->bought, buyer,
buzilla->bugzilla
bve->be
bwtween->between
+by-pass->bypass
+by-passed->bypassed
+by-passes->bypasses
+by-passing->bypassing
byast->biased
bycicle->bicycle
bycicled->bicycled
@@ -10760,6 +10862,15 @@ calibraitons->calibrations
calibratin->calibrating, calibration,
calibrte->calibrate
calibrtion->calibration
+calid->valid, canid,
+calidate->validate
+calidated->validated
+calidates->validates
+calidating->validating
+calidation->validation
+calidations->validations
+calidator->validator
+calidators->validators
caligraphy->calligraphy
calilng->calling
caliming->claiming
@@ -10818,6 +10929,12 @@ callls->calls
calloed->called
callser->caller
callsr->calls
+calncel->cancel
+calncellation->cancellation
+calncellations->cancellations
+calncelled->cancelled
+calncelling->cancelling
+calncels->cancels
calss->calls, class,
calsses->classes
calssic->classic
@@ -10887,6 +11004,7 @@ cammander->commander
cammanders->commanders
cammanding->commanding
cammands->commands
+cammond->command
camoflage->camouflage
camoflaged->camouflaged
camoflages->camouflages
@@ -10930,6 +11048,11 @@ canabelyze->cannibalize
canabelyzed->cannibalized
canabelyzes->cannibalizes
canabelyzing->cannibalizing
+canacel->cancel
+canaceled->canceled
+canaceling->canceling
+canacelling->cancelling
+canacels->cancels
canadan->canadian
canbe->can be
cancelaltion->cancellation
@@ -11067,6 +11190,8 @@ cantacting->contacting
cantacts->contacts
cantain->contain
cantained->contained
+cantainer->container
+cantainers->containers
cantaining->containing
cantains->contains
cantalope->cantaloupe
@@ -11135,6 +11260,11 @@ capbailities->capabilities
capbaility->capability
capbale->capable
capbaly->capably
+capcaitance->capacitance
+capcaities->capacities
+capcaitor->capacitor
+capcaitors->capacitors
+capcaity->capacity
capcitance->capacitance
capcities->capacities
capcitor->capacitor
@@ -11767,6 +11897,8 @@ cerinomial->ceremonial
cerinomially->ceremonially
cerinomies->ceremonies
cerinomy->ceremony
+ceritificate->certificate
+ceritificates->certificates
cermonial->ceremonial
cermonially->ceremonially
cermonies->ceremonies
@@ -11842,6 +11974,8 @@ certificats->certificates
certifice->certificate
certificed->certificated
certifices->certificates
+certificiate->certificate
+certificiates->certificates
certificion->certification
certificste->certificate
certificsted->certificated
@@ -11968,6 +12102,7 @@ chanaged->changed
chanager->changer
chanages->changes
chanaging->changing
+chanc->chance, chunk,
chanceled->canceled
chanceling->canceling
chancge->change, chance,
@@ -11978,7 +12113,10 @@ chanche->chance, change,
chanched->changed
chanches->chances, changes,
chanching->changing
+chanck->chunk
+chancks->chunks
chancnel->channel, cancel,
+chancs->chances, chunks,
chandaleer->chandelier
chandaleers->chandeliers
chandalier->chandelier
@@ -12020,6 +12158,8 @@ changuing->changing
chanined->chained
chaning->chaining, changing,
chaninging->changing
+chank->clank, crank, chalk, chant, chink, chunk, shank, hank, chonk, thank,
+chanks->clanks, cranks, chants, chinks, chunks, shanks, hanks, chonks, thanks,
chanllenge->challenge
chanllenging->challenging
channael->channel
@@ -12382,6 +12522,7 @@ checksume->checksum
checksumed->checksummed
checksuming->checksumming
checkt->checked
+checkto->check to, checkout,
checkts->checked, checks,
checkum->checksum
checkums->checksums
@@ -12602,6 +12743,7 @@ chked->checked
chlid->child
chlidren->children
chlids->children
+chloropleth->choropleth
chnage->change
chnaged->changed
chnages->changes
@@ -12956,6 +13098,7 @@ claibscale->calibscale
claime->claim
claimes->claims
claimin->claiming, claim in,
+clairity->clarity
clairvoiant->clairvoyant
clairvoiantes->clairvoyants
clairvoiants->clairvoyants
@@ -12967,6 +13110,7 @@ clapse->collapse, clasp, claps, lapse,
clapsed->collapsed
clapses->collapses
clapsing->collapsing
+claraty->clarity
claravoyant->clairvoyant
claravoyantes->clairvoyants
claravoyants->clairvoyants
@@ -12975,6 +13119,8 @@ clared->cleared
clarety->clarity
clarifyin->clarifying, clarify in,
claring->clearing
+claritiy->clarity
+clarrity->clarity
clases->classes, clashes, cases,
clasic->classic
clasical->classical
@@ -13020,7 +13166,7 @@ classifiying->classifying
classifyin->classifying, classify in,
classrom->classroom
classroms->classrooms
-classs->class
+classs->class, classes,
classses->classes
classsic->classic
classsical->classical
@@ -13197,6 +13343,7 @@ cloess->closes
cloesst->closest
cloisonay->cloisonné
cloisonays->cloisonnés
+clokwise->clockwise
clonez->clones, cloner,
clonin->cloning
clonne->clone
@@ -13424,6 +13571,8 @@ coeffiecient->coefficient
coeffiecients->coefficients
coeffient->coefficient
coeffients->coefficients
+coeffitient->coefficient
+coeffitients->coefficients
coeficent->coefficient
coeficents->coefficients
coeficient->coefficient
@@ -13432,6 +13581,7 @@ coelesce->coalesce
coercable->coercible
coerceion->coercion
coercin->coercing, coercion,
+coered->coerced
coersce->coerce
coersced->coerced
coersces->coerces
@@ -13646,13 +13796,16 @@ collumns->columns
collums->columns
colmn->column
colmns->columns
+colmun->column
colmuned->columned
-coloer->color
-coloeration->coloration
-coloered->colored
-coloering->coloring
-coloers->colors
-coloful->colorful
+colmuns->columns
+coloer->color, colour,
+coloeration->coloration, colouration,
+coloered->colored, coloured,
+coloering->coloring, colouring,
+coloers->colors, colours,
+coloful->colorful, colourful,
+colokwise->clockwise
colombus->Columbus
colomn->column
colomns->columns
@@ -13665,6 +13818,8 @@ colorizoer->colorizer
colorpsace->colorspace
colorpsaces->colorspaces
colose->close
+coloskwise->clockwise
+colouer->colour
coloum->column
coloumn->column
coloumns->columns
@@ -13681,6 +13836,8 @@ colsest->closest, coldest,
colsing->closing
colud->could, cloud,
colum->column
+colume->column, volume,
+columes->columns, volumes,
columm->column
colummn->column
colummns->columns
@@ -13704,6 +13861,7 @@ comamndline->commandline
comamnds->commands
comand->command
comand-line->command-line
+comande->command
comanded->commanded
comander->commander, commandeer,
comanding->commanding
@@ -13726,6 +13884,9 @@ comapatibility->compatibility
comapatible->compatible
comapletion->completion
comapnies->companies
+comapnion->companion
+comapnions->companions
+comapnionship->companionship
comapny->company
comaprable->comparable
comaprator->comparator
@@ -14220,6 +14381,12 @@ commputed->computed
commputer->computer
commputes->computes
commputing->computing
+commssion->commission
+commssioned->commissioned
+commssioner->commissioner
+commssioners->commissioners
+commssioning->commissioning
+commssions->commissions
commti->commit
commtis->commits
commtited->committed
@@ -14694,6 +14861,8 @@ complitely->completely
complites->completes, compiles,
complition->completion, compilation,
complmenet->complement
+complox->complex
+comploxity->complexity
complte->complete
complted->completed
compltely->completely
@@ -14748,6 +14917,8 @@ comporessors->compressors
comporison->comparison
comporisons->comparisons
composablity->composability
+composant->component
+composants->components
composibility->composability
composiblity->composability
composiste->composite
@@ -15029,6 +15200,8 @@ concludin->concluding
concret->concrete, concert,
concretly->concretely
concrets->concrete, concerts,
+conctructor->constructor
+conctructors->constructors
concured->concurred, conquered,
concurence->concurrence
concurency->concurrency
@@ -15288,6 +15461,9 @@ confidantally->confidentially
confidantals->confidentials
confidantial->confidential
confidantially->confidentially
+confidencial->confidential
+confidenciall->confidential
+confidencialy->confidentially
confidental->confidential
confidentally->confidentially
confids->confides
@@ -15822,6 +15998,7 @@ conneection->connection
conneiction->connection
connektors->connectors
connet->connect
+connetable->connectable
connetc->connect
connetced->connected
connetcing->connecting
@@ -15829,7 +16006,9 @@ connetcion->connection
connetcions->connections
connetcor->connector
connetcors->connectors
+connetec->connected
conneted->connected
+connetet->connected
Conneticut->Connecticut
conneting->connecting
connetion->connection
@@ -15873,6 +16052,8 @@ conntects->connects
conntent->content
conntents->contents
conntroller->controller
+connvertion->conversion
+connvertions->conversions
cononical->canonical
cononicalization->canonicalization
cononicalize->canonicalize
@@ -16163,7 +16344,7 @@ constents->constants, consents, contents,
constext->context
consting->consisting
constinually->continually
-constist->consist
+constist->consist, consists,
constisted->consisted
constistency->consistency
constistent->consistent
@@ -16201,12 +16382,16 @@ constrant->constraint
constrants->constraints
constrast->contrast
constrasts->contrasts
+constrat->contrast, constraint,
+constrated->contrasted, constrained,
constratin->constraint, constrain,
constratined->constrained
+constrating->contrasting, constraining,
constratining->constraining
constratins->constraints, constrains,
constratint->constraint
constratints->constraints
+constrats->contrasts, constraints,
constraucts->constructs
constrct->construct, constrict,
constrcted->constructed, constricted,
@@ -16346,6 +16531,7 @@ containes->contains, container, contained,
containg->containing
containging->containing
containig->containing
+containign->containing
containin->containing
containined->contained
containings->containing
@@ -16365,7 +16551,7 @@ containted->contained
containter->container
containters->containers
containting->containing
-containts->contains
+containts->contains, constraints,
containuations->continuations
contais->contains
contaisn->contains
@@ -16530,6 +16716,7 @@ continuem->continuum
continueous->continuous
continueously->continuously
continuesly->continuously
+continuim->continuum
continuin->continuing
continuos->continuous
continuosly->continuously
@@ -16752,6 +16939,7 @@ conttributes->contributes
conttributing->contributing
conttribution->contribution
conttributions->contributions
+contuguous->contiguous
contur->contour
contzains->contains
conuntry->country
@@ -17095,6 +17283,13 @@ copmiler->compiler
copmilers->compilers
copmiles->compiles
copmiling->compiling
+copmlete->complete
+copmleted->completed
+copmletely->completely
+copmletes->completes
+copmleting->completing
+copmletion->completion
+copmletions->completions
copmonent->component
copmonents->components
copmutations->computations
@@ -17530,6 +17725,11 @@ corretness->correctness
corretor->corrector
corretors->correctors
correts->corrects
+correxpond->correspond
+correxpondance->correspondence
+correxponded->corresponded
+correxponding->corresponding
+correxponds->corresponds
corridoor->corridor
corridoors->corridors
corrispond->correspond
@@ -17789,6 +17989,8 @@ counry->country, county,
counsellin->counselling
counsil->counsel
counsils->counsels
+counstructor->constructor
+counstructors->constructors
countain->contain
countainer->container
countainers->containers
@@ -17843,8 +18045,14 @@ coutermeasures->countermeasures
couterpart->counterpart
couters->counters, routers, scouters,
couting->counting
+coutn->count
+coutndown->countdown
+coutned->counted
coutner->counter
coutners->counters
+coutning->counting
+coutnown->countdown
+coutns->counts
coutries->countries
coutry->country
couuld->could
@@ -18092,6 +18300,7 @@ critcially->critically
critcials->criticals
criteak->critique
critera->criteria
+criteras->criteria
criterea->criteria
critereon->criterion
criterias->criteria
@@ -18128,6 +18337,7 @@ critizing->criticizing
critque->critique
critqued->critiqued
critquing->critiquing
+critreria->criteria
croch->crotch
crockadile->crocodile
crockodiles->crocodiles
@@ -18437,6 +18647,8 @@ custamizable->customizable
custamized->customized
custamizes->customizes
custamizing->customizing
+custoemr->customer
+custoemrs->customers
custoisable->customisable
custoisation->customisation
custoise->customise
@@ -18706,6 +18918,9 @@ daquiri->daiquiri
daquiris->daiquiris
Dardenelles->Dardanelles
darma->dharma
+darw->draw
+darwn->drawn, Darwin,
+darws->draws
dasboard->dashboard
dasboards->dashboards
dasdot->dashdot
@@ -18859,8 +19074,8 @@ deafualts->defaults
deafult->default
deafulted->defaulted
deafults->defaults
-deail->deal
-deailing->dealing
+deail->deal, detail, derail,
+deailing->dealing, detailing, derailing,
deaktivate->deactivate
deaktivated->deactivated
dealed->dealt
@@ -19152,6 +19367,12 @@ decommissionin->decommissioning, decommission in,
decommissionn->decommission
decommissionned->decommissioned
decommpress->decompress
+decommssion->decommission
+decommssioned->decommissioned
+decommssioner->decommissioner
+decommssioners->decommissioners
+decommssioning->decommissioning
+decommssions->decommissions
decomoposition->decomposition
decomposin->decomposing
decomposion->decomposition
@@ -19506,6 +19727,10 @@ definintion->definition
definintions->definitions
definintive->definitive
definintively->definitively
+definishion->definition
+definishions->definitions
+definision->definition
+definisions->definitions
definit->definite
definitelly->definitely
definitian->definition
@@ -19566,6 +19791,10 @@ defnitively->definitively
defore->before
defqault->default
defragmenation->defragmentation
+defrentiate->differentiate
+defrentiated->differentiated
+defrentiates->differentiates
+defrentiating->differentiating
defualt->default
defualtdict->defaultdict
defualts->defaults
@@ -19774,6 +20003,8 @@ delimma->dilemma
delimted->delimited
delimter->delimiter
delimters->delimiters
+delimtier->delimiter
+delimtiers->delimiters
delink->unlink
delivared->delivered
delivative->derivative
@@ -20173,6 +20404,12 @@ depracated->deprecated
depracates->deprecates
depracating->deprecating
depracation->deprecation
+depreacate->deprecate
+depreacated->deprecated
+depreacates->deprecates
+depreacating->deprecating
+depreacation->deprecation
+depreacations->deprecations
depreacte->deprecate
depreacted->deprecated
depreactes->deprecates
@@ -20224,7 +20461,6 @@ depricating->deprecating
deprication->deprecation, deprivation,
dequed->dequeued
dequeing->dequeuing
-deques->dequeues
derageable->dirigible
derailin->derailing, derail in,
deram->dram, dream,
@@ -21174,6 +21410,8 @@ devolopers->developers
devoloping->developing
devolopment->development
devolops->develops
+devrice->device, dervice,
+devrices->devices, dervices,
devritualisation->devirtualisation
devritualization->devirtualization
devuce->device
@@ -21295,7 +21533,10 @@ dicard->discard
dicarded->discarded
dicarding->discarding
dicards->discards
+dicate->dictate
+dicated->dictated
dicates->dictates
+dicating->dictating
dicationaries->dictionaries
dicationary->dictionary
dicergence->divergence
@@ -21335,7 +21576,17 @@ dicriminates->discriminates
dicriminating->discriminating
dicriminator->discriminator
dicriminators->discriminators
+dicslose->disclose
+dicslosed->disclosed
+dicsloses->discloses
+dicslosing->disclosing
+dicslosure->disclosure
+dicslosures->disclosures
dicsriminated->discriminated
+dictacte->dictate
+dictacted->dictated
+dictactes->dictates
+dictacting->dictating
dictaionaries->dictionaries
dictaionary->dictionary
dictinary->dictionary
@@ -21526,6 +21777,9 @@ difficultes->difficulties
difficults->difficult, difficulties,
difficutl->difficult
difficutly->difficulty
+diffirence->difference
+diffirences->differences
+diffirent->different
diffreences->differences
diffreent->different
diffreents->different, difference,
@@ -21587,6 +21841,7 @@ digitalise->digitize
digitalising->digitizing
digitalize->digitize
digitalizing->digitizing
+digitaly->digitally
digitial->digital
digitis->digits
digitisin->digitising
@@ -21644,6 +21899,7 @@ dimensionaility->dimensionality
dimensionailties->dimensionalities
dimensionailty->dimensionality
dimensiones->dimensions
+dimensionned->dimensioned
dimenson->dimension
dimensonal->dimensional
dimensonalities->dimensionalities
@@ -21673,6 +21929,11 @@ dimesnional->dimensional
dimesnions->dimensions
diminsh->diminish
diminshed->diminished
+diminsion->dimension
+diminsional->dimensional
+diminsioned->dimensioned
+diminsioning->dimensioning
+diminsions->dimensions
diminuitive->diminutive
dimiss->dismiss
dimissal->dismissal
@@ -21796,6 +22057,7 @@ directoriei->directories
directoris->directories
directort->directory
directorty->directory
+directoryes->directories
directorys->directories
directoty->directory
directove->directive
@@ -21804,6 +22066,8 @@ directoy->directory
directpries->directories
directpry->directory
directries->directories
+directrion->direction
+directrions->directions
directrive->directive
directrives->directives
directrly->directly
@@ -22188,7 +22452,6 @@ disired->desired
disires->desires
disiring->desiring
disitributions->distributions
-disjointness->disjointedness
diskrete->discrete
diskretion->discretion
diskretization->discretization
@@ -22501,9 +22764,15 @@ disssociate->dissociate
disssociated->dissociated
disssociates->dissociates
disssociating->dissociating
+dissymmectric->dissymmetric
+dissymmectrical->dissymmetrical
+dissymmectry->dissymmetry
distace->distance, distaste,
distaced->distanced
distaces->distances, distastes,
+distacne->distance
+distacned->distanced
+distacnes->distances
distancef->distanced, distances, distance,
distancin->distancing
distange->distance
@@ -22754,7 +23023,19 @@ divsion->division
divsions->divisions
divsiors->divisors
djanog->Django
+dleay->delay
+dleayed->delayed
+dleaying->delaying
+dleays->delays
dloating->floating
+dmaage->damage
+dmaaged->damaged
+dmaages->damages
+dmaaging->damaging
+dmage->damage
+dmaged->damaged
+dmages->damages
+dmaging->damaging
dnamically->dynamically
dne->done
dnymaic->dynamic
@@ -23172,7 +23453,7 @@ downsteramer->downstreamer
downsteramers->downstreamers
downsteraming->downstreaming
downsterams->downstreams
-dows->does
+dows->does, down,
dowt->doubt
doxgen->doxygen
doygen->doxygen
@@ -23236,7 +23517,7 @@ drammatic->dramatic
dramtic->dramatic
dran->drawn
drapin->draping
-drastical->drastically
+drastical->drastically, drastic,
drasticaly->drastically
drats->drafts
draughtman->draughtsman
@@ -23456,6 +23737,8 @@ dupplicates->duplicates
dupplicating->duplicating
dupplication->duplication
dupplications->duplications
+durantion->duration
+durantions->durations
durationm->duration
durectories->directories
durectory->directory
@@ -23839,6 +24122,7 @@ elaspe->elapse
elasped->elapsed
elaspes->elapses
elasping->elapsing
+elatic->elastic
elction->election
elctric->electric
elctrical->electrical
@@ -24209,6 +24493,10 @@ enabeling->enabling
enabels->enables
enabes->enables
enabing->enabling
+enabke->enable
+enabked->enabled
+enabkes->enables
+enabking->enabling
enabledi->enabled
enableing->enabling
enablen->enabled
@@ -24482,6 +24770,11 @@ eneumretaion->enumeration
eneumretaions->enumerations
enew->new
enflamed->inflamed
+enfoce->enforce
+enfoced->enforced
+enfocement->enforcement
+enfoces->enforces
+enfocing->enforcing
enforcable->enforceable
enforceing->enforcing
enforcin->enforcing
@@ -24504,6 +24797,7 @@ enfornces->enforces
enforncing->enforcing
enforrce->enforce
enforrced->enforced
+enforrcement->enforcement
enforrces->enforces
enforrcing->enforcing
engagment->engagement
@@ -24687,6 +24981,7 @@ entires->entries
entirey->entirely
entirity->entirety
entirly->entirely
+entiry->entry, entirely,
entite->entire, entity,
entitee->entity
entitees->entities
@@ -24702,6 +24997,7 @@ entitiys->entities
entitlied->entitled
entitys->entities
entiy->entity
+entiyt->entity
entoties->entities
entoty->entity
entquire->enquire, inquire,
@@ -24830,6 +25126,7 @@ environent->environment
environental->environmental
environents->environments
environmane->environment
+environmen->environment
environmenet->environment
environmenetal->environmental
environmenets->environments
@@ -25296,6 +25593,8 @@ estimater->estimator, estimated, estimates, estimate,
estimaters->estimators, estimates,
estimatied->estimated
estimatin->estimating, estimation,
+estimlator->estimator
+estimlators->estimators
estiomator->estimator
estiomators->estimators
estuwarries->estuaries
@@ -25553,6 +25852,7 @@ evrytime->every time
evrywhere->everywhere
evyrthing->everything
ewhwer->where
+ewll->well
exaclinic->hexaclinic
exaclty->exactly
exacly->exactly
@@ -25972,6 +26272,7 @@ exculsive->exclusive
exculsively->exclusively
exculsivly->exclusively
excusin->excusing
+excusively->exclusively
excutable->executable
excutables->executables
excute->execute
@@ -26377,6 +26678,10 @@ exlains->explains
exlamation->exclamation
exlanation->explanation
exlanations->explanations
+exlclude->exclude
+exlcluded->excluded
+exlcludes->excludes
+exlcluding->excluding
exlcude->exclude
exlcuded->excluded
exlcudes->excludes
@@ -26394,6 +26699,14 @@ exlpicitly->explicitly
exlpoit->exploit
exlpoited->exploited
exlpoits->exploits
+exlucde->exclude
+exlucded->excluded
+exlucdes->excludes
+exlucding->excluding
+exlucsion->exclusion
+exlucsions->exclusions
+exlucsive->exclusive
+exlucsively->exclusively
exlude->exclude, exude,
exluded->excluded, exuded,
exludes->excludes, exudes,
@@ -27227,7 +27540,12 @@ exporing->exploring, expiring, exporting, exposing,
expors->exports
exportet->exported, exporter,
exportin->exporting, export in,
+exposere->exposure
exposin->exposing, expos in,
+exposte->expose
+exposted->exposed
+expostes->exposes
+exposting->exposing
expport->export
exppressed->expressed
expration->expiration
@@ -27775,6 +28093,7 @@ faulsure->failure
faulsures->failures
faulure->failure
faulures->failures
+faulyt->faulty
faund->found, fund,
fause->false
fauture->feature
@@ -27954,6 +28273,7 @@ fiields->fields
filal->final
filaname->filename
filanames->filenames
+filaneme->filename
filder->folder, filter, finder, fielder, filer,
filders->folders, filters, finders, fielders, filers,
fileand->file and
@@ -28404,6 +28724,7 @@ followign->following
followiing->following
followin->following
followind->following
+followinig->following
followins->following, followings,
followint->following
followng->following
@@ -28540,6 +28861,9 @@ fomrats->formats
fomratted->formatted
fomratter->formatter
fomratting->formatting
+fomrula->formula
+fomrulae->formulae
+fomrulas->formulas
fomula->formula
fomulae->formulae
fomulaic->formulaic
@@ -28811,6 +29135,8 @@ fotografy->photography
fotograph->photograph
fotography->photography
foucs->focus
+foudation->foundation
+foudations->foundations
foudn->found
foudning->founding
fougth->fought
@@ -28897,6 +29223,8 @@ frecuently->frequently
frecuents->frequents
freecallrelpy->freecallreply
freedeom->freedom, freedoms,
+freedome->freedom
+freedomes->freedoms
freedon->freedom
freedons->freedoms
freedum->freedom
@@ -29324,6 +29652,7 @@ futher->further
futherize->further
futhermore->furthermore
futhroc->futhark, futhorc,
+futre->future
futrue->future
futrure->future
futture->future
@@ -29415,6 +29744,10 @@ gatable->gateable
gateing->gating
gatherig->gathering
gatherin->gathering, gather in,
+gathter->gather
+gathtered->gathered
+gathtering->gathering
+gathters->gathers
gatin->gating, latin, satin, gain, gratin,
gatway->gateway
gauage->gauge
@@ -29883,6 +30216,8 @@ gnorung->ignoring
gobal->global
gobally->globally
gocde->gcode
+godd->good, god,
+godds->goods, gods,
godess->goddess
godesses->goddesses
Godounov->Godunov
@@ -29991,7 +30326,7 @@ granuality->granularity
granualtiry->granularity
granularty->granularity
granulatiry->granularity
-grap->grep, grape,
+grap->grep, grape, graph, grasp,
grapgic->graphic
grapgical->graphical
grapgics->graphics
@@ -30302,6 +30637,10 @@ halp->help
halpoints->halfpoints
hammmer->hammer
hampster->hamster
+hanbdle->handle
+hanbdled->handled
+hanbdles->handles
+hanbdling->handling
hande->handle, hand,
handel->handle
handeld->handled, handheld,
@@ -30414,6 +30753,8 @@ happpened->happened
happpening->happening
happpenings->happenings
happpens->happens
+haracteristic->characteristic
+haracteristics->characteristics
haranguin->haranguing
harased->harassed
harases->harasses
@@ -30458,6 +30799,8 @@ has'nt->hasn't
hases->hashes
hashi->hash
hashin->hashing, hash in,
+hashnap->hashmap
+hashnaps->hashmaps
hashreference->hash reference
hashs->hashes
hashses->hashes
@@ -30630,6 +30973,8 @@ heusitics->heuristics
hevy->heavy
hexademical->hexadecimal
hexdecimal->hexadecimal
+hexedacimal->hexadecimal
+hexedacimals->hexadecimals
hexgaon->hexagon
hexgaonal->hexagonal
hexgaons->hexagons
@@ -30639,6 +30984,9 @@ hexidecimals->hexadecimals
hexigon->hexagon
hexigonal->hexagonal
hexigons->hexagons
+hexogan->hexagon
+hexoganal->hexagonal
+hexogans->hexagons
hge->he
hhttp->http
hhttps->https
@@ -30836,6 +31184,7 @@ histroy->history
histry->history
hiting->hitting, hiding, hinting, hiring, hating, biting, hiking,
hitogram->histogram
+hitorical->historical
hitories->histories
hitory->history
hitsingles->hit singles
@@ -31062,6 +31411,12 @@ hyperboly->hyperbole
Hyperldger->Hyperledger
hypervior->hypervisor
hyphenatin->hyphenating, hyphenation,
+hypocencter->hypocenter
+hypocenctre->hypocentre
+hypocengter->hypocenter
+hypocengtre->hypocentre
+hypocnter->hypocenter
+hypocntre->hypocentre
hypocracy->hypocrisy
hypocrasy->hypocrisy
hypocricy->hypocrisy
@@ -31327,6 +31682,7 @@ ignested->ingested
ignesting->ingesting
ignests->ingests
ignnore->ignore
+ignnored->ignored
ignoded->ignored
ignoerd->ignored
ignonre->ignore
@@ -31409,6 +31765,8 @@ ileagle->illegal
ilegal->illegal
ilegle->illegal
iligal->illegal
+ilkely->likely
+ilkley->likely
illegimacy->illegitimacy
illegitmate->illegitimate
illess->illness
@@ -31873,6 +32231,12 @@ impplement->implement
impplementating->implementing
impplementation->implementation
impplemented->implemented
+impprove->improve
+impproved->improved
+impprovement->improvement
+impprovements->improvements
+impproves->improves
+impproving->improving
imprement->implement, improvement,
imprementation->implementation
imprementations->implementations
@@ -31982,6 +32346,10 @@ inaccessble->inaccessible
inaccuraccies->inaccuracies
inaccuraccy->inaccuracy
inacessible->inaccessible
+inactice->inactive
+inactieve->inactive
+inactiv->inactive
+inactivly->inactively
inacurate->inaccurate
inacurracies->inaccuracies
inacurrate->inaccurate
@@ -32371,12 +32739,36 @@ incremet->increment
incremetal->incremental
incremeted->incremented
incremeting->incrementing
+incremint->increment
+incremintal->incremental
+incremintally->incrementally
+incremintd->incremented
+increminted->incremented
+increminting->incrementing
+incremints->increments
+incremment->increment
+incremmental->incremental
+incremmentally->incrementally
+incremmentd->incremented
+incremmented->incremented
+incremmenting->incrementing
+incremments->increments
incremnet->increment
+incremnetal->incremental
+incremnetally->incrementally
+incremnetd->incremented
+incremneted->incremented
+incremneting->incrementing
+incremnets->increments
increse->increase
incresed->increased
increses->increases
incresing->increasing
incrfemental->incremental
+incriease->increase
+incrieased->increased
+incrieases->increases
+incrieasing->increasing
incrmenet->increment
incrmenetd->incremented
incrmeneted->incremented
@@ -32543,6 +32935,10 @@ indepentendly->independently
indepentent->independent
indepentently->independently
indepently->independently
+indepndence->independence
+indepndences->independences
+indepndent->independent
+indepndents->independents
inderect->indirect
inderts->inserts
indes->index
@@ -32579,6 +32975,8 @@ indiciate->indicate
indiciated->indicated
indiciates->indicates
indiciating->indicating
+indiciation->indication
+indiciations->indications
indicies->indices
indicte->indicate
indictement->indictment
@@ -32639,6 +33037,9 @@ indivisuals->individuals
indiviual->individual
indiviually->individually
indiviuals->individuals
+indiviudal->individual
+indiviudally->individually
+indiviudals->individuals
indivual->individual
indivually->individually
indivuals->individuals
@@ -32822,6 +33223,7 @@ informtion->information
informtional->informational
inforrmation->information
inforrmational->informational
+infp->info
infrantryman->infantryman
infrasctructure->infrastructure
infrasctructures->infrastructures
@@ -32870,6 +33272,8 @@ ingration->integration
ingreediants->ingredients
inh->in
inhabitans->inhabitants
+inheent->inherent
+inheently->inherently
inherantly->inherently
inherat->inherit
inheratance->inheritance
@@ -33807,6 +34211,8 @@ insitution->institution
insitutional->institutional
insitutions->institutions
insonsistency->inconsistency
+inspeciton->inspection
+inspecitons->inspections
inspectin->inspecting, inspect in, inspection,
inspite->in spite, inspire,
insstance->instance
@@ -34080,6 +34486,9 @@ insuffciently->insufficiently
insufficency->insufficiency
insufficent->insufficient
insufficently->insufficiently
+insuffieciency->insufficiency
+insuffiecient->insufficient
+insuffieciently->insufficiently
insuffiency->insufficiency
insuffient->insufficient
insuffiently->insufficiently
@@ -34211,7 +34620,6 @@ inteneded->intended
intenet->internet, intent,
intenisty->intensity
intension->intention
-intensional->intentional
intensionally->intentionally
intensionaly->intentionally
intensitive->insensitive, intensive,
@@ -34938,6 +35346,8 @@ intrisics->intrinsics
intrisinc->intrinsic
intrisincally->intrinsically
intrisincs->intrinsics
+introdcution->introduction
+introdcutions->introductions
introducin->introducing
introducted->introduced
introducting->introducing
@@ -35193,6 +35603,7 @@ irrevelant->irrelevant, irreverent,
irreversable->irreversible
irritatin->irritating, irritation,
is'nt->isn't
+is's->it's
isalha->isalpha
isconnection->isconnected
iscrated->iscreated
@@ -35451,6 +35862,12 @@ iverse->diverse, inverse,
iversed->inverse, inversed,
ivocation->invocation
ivocations->invocations
+ivoice->invoice
+ivoiced->invoiced
+ivoicer->invoicer
+ivoicers->invoicers
+ivoices->invoices
+ivoicing->invoicing
ivoke->invoke
ivoked->invoked
ivoker->invoker
@@ -35715,6 +36132,10 @@ kimerrically->chimerically
kindergarden->kindergarten
kindgergarden->kindergarten
kindgergarten->kindergarten
+kindgom->kingdom
+kindgoms->kingdoms
+kindom->kingdom
+kindoms->kingdoms
kinf->kind
kinfs->kinds
kinnect->Kinect
@@ -36190,6 +36611,7 @@ lerans->learns
lern->learn, lean,
lerned->learned, learnt, leaned,
lerning->learning, leaning,
+lesda->leads
lessson->lesson
lesssons->lessons
lesstiff->LessTif
@@ -36237,6 +36659,7 @@ liason->liaison
liasons->liaisons
libararies->libraries
libarary->library
+libaray->library
libaries->libraries
libary->library
libell->libel
@@ -36351,7 +36774,7 @@ lighbulbs->lightbulbs
ligher->lighter, liar, liger,
lighers->lighters, liars, ligers,
lighing->lighting
-lighning->lightning
+lighning->lightning, lighting,
lightbulp->lightbulb
lightbulps->lightbulbs
lightin->lighting, light in, lighten,
@@ -37073,6 +37496,8 @@ mangement->management
mangementt->management
manges->manages
manging->managing
+mangitude->magnitude
+mangitudes->magnitudes
manifacture->manufacture
manifactured->manufactured
manifacturer->manufacturer
@@ -37086,6 +37511,12 @@ manifiesting->manifesting
manifiesto->manifesto
manifiestos->manifestos
manifiests->manifests
+manigest->manifest
+manigested->manifested
+manigesting->manifesting
+manigesto->manifesto
+manigestos->manifestos
+manigests->manifests
manipluate->manipulate
manipluated->manipulated
manipulater->manipulator, manipulated, manipulates, manipulate,
@@ -37551,6 +37982,7 @@ medadata->metadata
medai->media
meddo->meadow
meddos->meadows
+mede->made, mere, mead, lede, mete,
medeival->medieval
medeval->medieval
medevial->medieval
@@ -37657,12 +38089,16 @@ memmick->mimic
memmicked->mimicked
memmicking->mimicking
memmics->mimics
+memmories->memories
memmory->memory
+memmoryes->memories
+memmorys->memories
memner->member
memoery->memory
memomry->memory
memor->memory
memorizin->memorizing
+memorys->memories
memoty->memory
memove->memmove
mempry->memory
@@ -38088,6 +38524,7 @@ minimim->minimum
minimisin->minimising
minimium->minimum
minimizin->minimizing
+minimmum->minimum
minimsation->minimisation
minimse->minimise
minimsed->minimised
@@ -38367,6 +38804,12 @@ misusin->misusing
mitake->mistake
mitaken->mistaken
mitakes->mistakes
+mitgate->mitigate
+mitgated->mitigated
+mitgates->mitigates
+mitgating->mitigating
+mitgation->mitigation
+mitgations->mitigations
miticate->mitigate
miticated->mitigated
miticateing->mitigating
@@ -38778,6 +39221,8 @@ movememnt->movement
movememnts->movements
movememt->movement
movememts->movements
+movemenet->movement
+movemenets->movements
movemet->movement
movemets->movements
movemment->movement
@@ -38848,6 +39293,7 @@ mulipliers->multipliers
muliplies->multiplies
muliply->multiply
muliplying->multiplying
+mulit->multi
mulitcast->multicast
mulithread->multithread
mulithreaded->multithreaded
@@ -39431,6 +39877,7 @@ necessarlily->necessarily
necessarly->necessary, necessarily,
necessarrily->necessarily
necessarry->necessary
+necessaru->necessary
necessaryly->necessarily
necessay->necessary
necesserily->necessarily
@@ -39510,6 +39957,7 @@ neglibible->negligible
neglible->negligible
negligable->negligible
negligble->negligible
+negligeable->negligible
negoable->negotiable
negoate->negotiate
negoated->negotiated
@@ -39722,6 +40170,7 @@ neice->niece, nice,
neigbhor->neighbor
neigbhorhood->neighborhood
neigbhorhoods->neighborhoods
+neigbhoring->neighboring
neigbhors->neighbors
neigbhour->neighbour
neigbhours->neighbours
@@ -40138,6 +40587,8 @@ noice->noise, nice, notice,
noification->notification
noifications->notifications
noified->notified
+noifier->notifier
+noifiers->notifiers
noifies->notifies
noify->notify, noisy,
noifying->notifying
@@ -40432,6 +40883,10 @@ non-virtural->non-virtual
non-virutal->non-virtual
non-virutual->non-virtual
non-vitrual->non-virtual
+non-volatial->non-volatile
+non-volitable->non-volatile
+non-volitale->non-volatile
+non-volitile->non-volatile
non-vritual->non-virtual
non-wirtual->non-virtual
nonbloking->non-blocking
@@ -40603,6 +41058,7 @@ notifcation->notification
notifcations->notifications
notifed->notified
notifer->notifier
+notifers->notifiers
notifes->notifies
notifiaction->notification
notifiactions->notifications
@@ -40631,6 +41087,9 @@ notifiction->notification
notifictions->notifications
notififation->notification
notififations->notifications
+notifing->notifying
+notifition->notification
+notifitions->notifications
notifiy->notify
notifiying->notifying
notifyable->notifiable
@@ -40749,6 +41208,8 @@ numberring->numbering
numberrs->numbers
numberss->numbers
numbert->number
+numbes->numbers, numbs, numbed,
+numbesr->numbers
numbet->number
numbets->numbers
numbr->number
@@ -40775,6 +41236,8 @@ numerial->numeral, numerical,
numering->numbering
numerious->numerous
numers->numbers
+numher->number
+numhers->numbers
nummber->number
nummbers->numbers
nummeral->numeral
@@ -41077,6 +41540,9 @@ occuppiers->occupiers
occuppies->occupies
occuppy->occupy
occuppying->occupying
+occuption->occupation
+occuptional->occupational
+occuptions->occupations
occupyin->occupying, occupy in,
occuracy->accuracy
occurance->occurrence
@@ -41088,6 +41554,7 @@ occure->occur, occurred,
occured->occurred
occurence->occurrence
occurences->occurrences
+occureneces->occurrences
occures->occurs
occuring->occurring
occurr->occur
@@ -41230,8 +41697,8 @@ offred->offered
offsence->offence
offsense->offense
offsenses->offenses
-offser->offset
-offsers->offers
+offser->offer, offset,
+offsers->offers, offsets,
offsest->offsets, offset,
offseted->offsetted
offsetes->offsets
@@ -41367,6 +41834,7 @@ onedimenionsal->one-dimensional
oneliners->one-liners
oneyway->oneway
ongly->only
+ongoign->ongoing
ongoin->ongoing
onl->only
onlie->online, only,
@@ -41421,6 +41889,8 @@ onwer->owner
onwership->ownership
onwing->owning
onws->owns
+onwward->onward
+onwwards->onwards
ony->only, on, one,
onyl->only
oommits->commits
@@ -41491,10 +41961,11 @@ opemess->openness
opeming->opening
opems->opens
openbrower->openbrowser
-opended->opened
+opend->opened
+opended->opened, open-ended,
openeing->opening
openen->opened, opening,
-openend->opened
+openend->opened, open-ended,
openened->opened
openening->opening
openes->opens, openness,
@@ -41712,6 +42183,7 @@ oposed->opposed
oposite->opposite
oposition->opposition
oppen->open
+oppend->opened, append,
oppened->opened
oppenent->opponent
oppenents->opponents
@@ -42169,6 +42641,10 @@ osffset->offset
osffsets->offsets
osffsetting->offsetting
osicllations->oscillations
+ossociate->associate
+ossociated->associated
+ossociation->association
+ossociations->associations
osterage->ostrich
osterages->ostriches
ostridge->ostrich
@@ -42207,6 +42683,7 @@ otherwhile->otherwise
otherwhise->otherwise
otherwice->otherwise
otherwide->otherwise
+otherwiese->otherwise
otherwis->otherwise
otherwize->otherwise
otherwordly->otherworldly
@@ -42358,6 +42835,8 @@ outperfomring->outperforming
outperformin->outperforming, outperform in,
outpout->output
outpouts->outputs
+outptu->output
+outptus->outputs
outpu->output
outpupt->output
outpus->output, outputs,
@@ -42979,6 +43458,7 @@ paramterizes->parameterizes
paramterizing->parameterizing
paramterless->parameterless
paramters->parameters
+paramterts->parameters
paramtrical->parametrical
parana->piranha
paraniac->paranoiac
@@ -43068,6 +43548,8 @@ paretheses->parentheses
parethesis->parenthesis
parfay->parfait
parge->large
+parger->larger, pager, parker, parser,
+pargers->pagers, parkers, parsers,
paria->pariah, parka,
parial->partial
parially->partially
@@ -43531,6 +44013,7 @@ peerowet->pirouette
peerowetes->pirouettes
peerowets->pirouettes
pefect->perfect, prefect, defect,
+pefected->perfected
pefection->perfection
pefectly->perfectly
pefer->prefer
@@ -43567,6 +44050,9 @@ peirod->period
peirodical->periodical
peirodicals->periodicals
peirods->periods
+peizometer->piezometer
+peizometers->piezometers
+peizometric->piezometric
Peloponnes->Peloponnese, Peloponnesus,
penalities->penalties
penality->penalty
@@ -43635,13 +44121,20 @@ percieving->perceiving
percise->precise
percisely->precisely
percision->precision
+percison->precision
perenially->perennially
perentage->percentage, parentage,
perentages->percentages, parentages,
peresent->present, presents, presence, percent,
peretrator->perpetrator
+perfact->prefect, perfect,
+perfacted->perfected
+perfaction->perfection
+perfactly->perfectly
perfec->perfect
perfecct->perfect
+perfeccted->perfected
+perfecction->perfection
perfecctly->perfectly
perfeclty->perfectly
perfecly->perfectly
@@ -43652,6 +44145,8 @@ perferably->preferably
perferance->preference
perferances->preferences
perferct->perfect
+perfercted->perfected
+perferction->perfection
perferctly->perfectly
perferect->perfect
perferectly->perfectly
@@ -43806,6 +44301,8 @@ peridic->periodic
peridical->periodical
peridically->periodically
peridioc->periodic
+peridiocal->periodical
+peridiocally->periodically
perihperal->peripheral
perihperals->peripherals
perilious->perilous
@@ -44219,6 +44716,8 @@ pictureskly->picturesquely
pictureskness->picturesqueness
picure->picture, epicure,
picures->pictures, epicures,
+picutre->picture
+picutres->pictures
pidgeon->pigeon, pidgin,
pidgeons->pigeons, pidgins,
pieceweise->piecewise, piece wise,
@@ -44401,6 +44900,7 @@ playgrouns->playgrounds, playground,
playin->playing, play in,
playist->playlist
playists->playlists
+playlise->playlist
playright->playwright
playwrite->playwright
playwrites->playwrights
@@ -44476,7 +44976,8 @@ poduction->production
poductions->productions
poducts->products
podule->module
-poenis->penis
+poen->open, pen, poem, phone,
+poenis->peonies, penis,
poential->potential
poentially->potentially
poentials->potentials
@@ -44764,6 +45265,10 @@ porgressed->progressed
porgresses->progresses
porgressing->progressing
poriferal->peripheral
+porition->portion
+poritioned->portioned
+poritioning->portioning
+poritions->portions
porject->project
porjection->projection
porjects->projects
@@ -44788,6 +45293,9 @@ porpose->propose, purpose,
porposed->proposed
porposes->proposes, purposes,
porposing->proposing
+porprties->properties
+porprty->property
+porpuse->purpose, porpoise,
porsalin->porcelain
porshan->portion
porshon->portion
@@ -44826,6 +45334,8 @@ posessing->possessing
posession->possession
posessions->possessions
posgresql->PostgreSQL
+posibble->possible
+posibbly->possibly
posibilities->possibilities
posibility->possibility
posibilties->possibilities
@@ -44848,6 +45358,7 @@ posisition->position
posisitioned->positioned
posisitioning->positioning
posisitions->positions
+posisson->Poisson
posistion->position
posistioned->positioned
posistioning->positioning
@@ -45083,6 +45594,7 @@ practictitioners->practitioners
practicval->practical
practioner->practitioner
practioners->practitioners
+practive->practice, proactive,
praefix->prefix
pragam->pragma
pragmato->pragma to
@@ -45145,6 +45657,10 @@ pre-proces->pre-process
pre-procesing->pre-processing
pre-realease->pre-release
pre-registeres->pre-registers
+pre-select->preselect
+pre-selected->preselected
+pre-selecting->preselecting
+pre-selects->preselects
preallocationg->preallocating, preallocation,
prealocate->preallocate
prealocated->preallocated
@@ -45311,7 +45827,9 @@ preety->pretty
preexistin->preexisting, preexist in,
prefacin->prefacing
prefectches->prefetches
-prefecth->prefetch
+prefected->perfected
+prefecth->prefect, prefetch,
+prefection->perfection
prefectly->perfectly
prefence->pretence, presence, preference,
prefences->preferences
@@ -45389,6 +45907,8 @@ pregressions->progressions
pregressive->progressive
pregressively->progressively
prehaps->perhaps
+preice->price
+preices->prices
preint->print, preprint,
preinted->printed, preprinted,
preinting->printing, preprinting,
@@ -45408,6 +45928,7 @@ prejudgudices->prejudices
prejudgudicing->prejudicing
prejudicin->prejudicing
preliferation->proliferation
+prelimary->preliminary
prelimitary->preliminary
prematurelly->prematurely
premeire->premiere
@@ -45424,6 +45945,7 @@ premptive->preemptive
premptively->preemptively
premutation->permutation
premutations->permutations
+preoccuption->preoccupation
preocess->process
preocupation->preoccupation
preoperty->property
@@ -45519,6 +46041,10 @@ presearves->preserves
presearving->preserving
presed->pressed, preset,
presedential->presidential
+preselet->preselect
+preseleted->preselected
+preseleting->preselecting
+preselets->preselects
presenation->presentation
presenations->presentations
presenece->presence
@@ -45821,6 +46347,9 @@ priorized->prioritized
priorizes->prioritizes
priorizin->prioritizing
priorizing->prioritizing
+priororities->priorities
+priorority->priority
+priort->prior, priory, priors, priori,
priorties->priorities, prior ties,
priortisation->prioritisation
priortisations->prioritisations
@@ -46160,6 +46689,8 @@ produser->producer
produsers->producers
produses->produces
produsing->producing
+produt->product
+produts->products
proect->protect, project,
proected->protected, projected,
proecting->protecting, projecting,
@@ -46321,6 +46852,7 @@ programatically->programmatically
programattic->programmatic
programattically->programmatically
programd->programmed
+programemd->programmed
programemer->programmer
programemers->programmers
programm->program, programme,
@@ -46358,9 +46890,12 @@ prohibt->prohibit
prohibted->prohibited
prohibting->prohibiting
prohibts->prohibits
+proider->provider
+proiders->providers
proir->prior
proirities->priorities
proirity->priority
+proivded->provided
projcet->project
projcets->projects
projct's->project's
@@ -46371,6 +46906,8 @@ projctor->projector
projctors->projectors
projcts->projects
projec->project
+projeciton->projection
+projecitons->projections
projecs->projects
projectd->projected
projecter->projector, projected, project,
@@ -46445,6 +46982,12 @@ pronouced->pronounced
pronounched->pronounced
pronounciation->pronunciation
pronounciations->pronunciations
+pront->print, pronto, prone, front, prong,
+pronte->prone, pronate, pronto, ponte,
+pronted->printed, pronated, pronged, proned,
+prontes->pronates, prones,
+pronting->printing, pronating, proning,
+pronts->prints, prongs, pronto,
pronunce->pronounce
prooblem->problem
prooblematic->problematic
@@ -46493,6 +47036,10 @@ propagatin->propagating, propagation,
propage->propagate, propane,
propaged->propagated
propages->propagates
+propagete->propagate
+propageted->propagated
+propagetes->propagates
+propageting->propagating
propaging->propagating
propatagion->propagation
propator->propagator
@@ -46663,6 +47210,8 @@ protcols->protocols
protcool->protocol
protcools->protocols
protcted->protected
+proteced->protected
+proteceted->protected
protecion->protection
protecte->protected, protect,
protectin->protecting, protect in, protection,
@@ -46986,6 +47535,8 @@ puplishes->publishes
puplishing->publishing
pupose->purpose
puposes->purposes
+puprose->purpose
+puproses->purposes
pupular->popular
pupularity->popularity
pupulate->populate
@@ -47184,7 +47735,6 @@ quartenion->quaternion
quartenions->quaternions
quartically->quadratically
quatation->quotation
-quater->quarter
quating->quoting, squatting, equating,
quation->equation
quations->equations
@@ -47317,6 +47867,8 @@ quivalent->equivalent
quizes->quizzes
quizs->quizzes
quizzs->quizzes
+quntities->quantities
+quntity->quantity
quoshant->quotient
quoshants->quotients
quotaion->quotation
@@ -47781,6 +48333,7 @@ reademe->README
readiable->readable
readibility->readability
readible->readable
+readiblity->readability
readibly->readably
readig->reading
readigs->readings
@@ -47821,6 +48374,8 @@ realeasing->releasing
realiability->reliability
realiable->reliable
realiably->reliably
+realignement->realignment
+realignements->realignments
realisin->realising
realitime->realtime
realitvely->relatively
@@ -47848,6 +48403,10 @@ reallocaitions->reallocations
reallocaiton->reallocation
reallocaitons->reallocations
reallocatin->reallocating, reallocation,
+realod->reload
+realoded->reloaded
+realoding->reloading
+realods->reloads
realsitic->realistic
realtd->related
realte->relate
@@ -47961,6 +48520,7 @@ reasonin->reasoning, reason in,
reasonnable->reasonable
reasonnably->reasonably
reassignin->reassigning, reassign in,
+reassing->reassign
reassinging->reassigning
reassocation->reassociation
reassocations->reassociations
@@ -48006,6 +48566,10 @@ rebulit->rebuilt
rebult->rebuilt
recahed->reached
recal->recall
+recalcalculate->recalculate
+recalcalculated->recalculated
+recalcalculates->recalculates
+recalcalculating->recalculating
recalcualte->recalculate
recalcualted->recalculated
recalcualter->re-calculator
@@ -48284,6 +48848,7 @@ recommeding->recommending
recommeds->recommends
recommenation->recommendation
recommenations->recommendations
+recommendet->recommended
recommendin->recommending, recommend in,
recommened->recommended, recommend,
recommeneded->recommended
@@ -48452,6 +49017,12 @@ recordin->recording, record in,
recordproducer->record producer
recordss->records
recored->recorded
+recorev->recover
+recoreved->recovered
+recorevies->recoveries
+recoreving->recovering
+recorevs->recovers
+recorevy->recovery
recoriding->recording
recource->resource, recourse,
recourced->resourced
@@ -48596,6 +49167,7 @@ redings->readings
redircet->redirect
redirectd->redirected
redirectrion->redirection
+redirectrions->redirections
redisign->redesign
redistirbute->redistribute
redistirbuted->redistributed
@@ -49038,6 +49610,7 @@ regnerated->regenerated
regnerates->regenerates
regnerating->regenerating
regneration->regeneration
+regoin->regain, region,
regon->region
regons->regions
regorded->recorded
@@ -49047,6 +49620,7 @@ regrads->regards, regrades,
regresion->regression
regresison->regression
regressin->regressing, regress in, regression,
+regressos->regressors
regresssion->regression
regrigerator->refrigerator
regsion->region
@@ -49198,10 +49772,13 @@ reinstaled->reinstalled
reinstaling->reinstalling
reinstallin->reinstalling, reinstall in,
reinstals->reinstalls
+reinstat->reinstate
+reinstatd->reinstate, reinstated,
reinstatiate->reinstantiate
reinstatiated->reinstantiated
reinstatiates->reinstantiates
reinstatiation->reinstantiation
+reinstats->reinstate, reinstates,
reintantiate->reinstantiate
reintantiating->reinstantiating
reintepret->reinterpret
@@ -49225,6 +49802,7 @@ relaased->released, relapsed,
relaases->releases, relapses,
relaasing->releasing, relapsing,
relaative->relative
+relaction->reaction, relation, redaction, relocation,
relady->ready
relaease->release
relaese->release
@@ -49263,6 +49841,7 @@ relativated->relative, relatively,
relativly->relatively
relavant->relevant
relavent->relevant
+relaxiation->relaxation
releaase->release
releaased->released
releaases->releases
@@ -49336,6 +49915,7 @@ reletive->relative
reletively->relatively
relevabt->relevant
relevane->relevant
+relevante->relevant
relevants->relevant
releveant->relevant
relevence->relevance
@@ -49351,6 +49931,8 @@ relfects->reflects
reliabe->reliable
reliabily->reliably, reliability,
reliablity->reliability
+relibility->reliability
+relible->reliable
relie->rely, relies, really, relief,
reliefed->relieved
reliefes->relieves
@@ -50061,6 +50643,7 @@ replases->replaces, relapses, rephases,
replasing->replacing, relapsing, rephasing,
replcace->replace
replcaced->replaced
+replcae->replace
replcaof->replicaof
replenishin->replenishing, replenish in,
replentish->replenish
@@ -50558,6 +51141,7 @@ resestatus->resetstatus
resetable->resettable
reseted->reset
reseting->resetting
+resett->reset
resetted->reset
resettin->resetting
resevation->reservation
@@ -50598,6 +51182,7 @@ resintalled->reinstalled
resintalling->reinstalling
resintalls->reinstalls
resistable->resistible
+resistece->resistance
resistence->resistance
resistent->resistant
resitance->resistance
@@ -50760,6 +51345,8 @@ responcibility->responsibility
responcible->responsible
responcive->responsive
responciveness->responsiveness
+respondant->respondent
+respondants->respondents
responde->respond, response, responds, responded, responder,
respondin->responding, respond in,
respone->response, respond,
@@ -50912,6 +51499,7 @@ resteraunt->restaurant
resteraunts->restaurants
restes->reset, rests,
restesting->retesting
+restet->reset
restict->restrict
resticted->restricted
resticting->restricting
@@ -50933,6 +51521,7 @@ restoreble->restorable
restoreing->restoring
restorin->restoring
restors->restores
+restort->restore, restored,
restouration->restoration
restraunt->restraint, restaurant,
restraunts->restraints, restaurants,
@@ -51183,7 +51772,7 @@ retrvieves->retrieves
retryin->retrying, retry in, retrain,
retsart->restart
retsarts->restarts
-retun->return
+retun->return, rerun, retune,
retunr->return, retune,
retunred->returned, retuned,
retunring->returning, retuning,
@@ -51211,6 +51800,7 @@ returnin->returning, return in,
returnn->return
returnned->returned
returnning->returning
+returnst->returns
returs->returns
retursn->returns
retutn->return
@@ -51613,8 +52203,12 @@ roundtriped->roundtripped, round-tripped, round tripped,
roundtriping->roundtripping, round-tripping, round tripping,
roundtripp->roundtrip, round-trip, round trip,
roung->round
+rounted->routed, rounded,
+rounter->router, rounder,
+rounters->routers, rounders,
rountine->routine
rountines->routines
+rounting->routing, rounding,
rountrip->roundtrip, round-trip, round trip,
rountriped->roundtripped, round-tripped, round tripped,
rountriping->roundtripping, round-tripping, round tripping,
@@ -52079,6 +52673,8 @@ scedulers->schedulers
scedules->schedules
sceduling->scheduling
sceen->scene, seen, screen, scheme,
+sceene->scene
+sceenes->scenes
sceens->scenes, screens, schemes,
sceenshot->screenshot
sceenshots->screenshots
@@ -52258,6 +52854,8 @@ scripots->scripts
scripst->scripts
scripte->script, scripted,
scriptin->scripting, script in,
+scriptiong->scripting
+scriptng->scripting
scriptype->scripttype
scrit->script, scrip,
scritp->script
@@ -53096,6 +53694,13 @@ sequenzers->sequencers
sequenzes->sequences
sequenzing->sequencing
sequetial->sequential
+sequeunce->sequence
+sequeunced->sequenced
+sequeuncer->sequencer
+sequeuncers->sequencers
+sequeunces->sequences
+sequeuncing->sequencing
+sequeuntial->sequential
sequeze->squeeze, sequence,
sequnce->sequence
sequnced->sequenced
@@ -53398,6 +54003,7 @@ shapshots->snapshots
shapsnot->snapshot
shapsnots->snapshots
shapt->shaped, shape,
+sharability->shareability
shareed->shared
shareing->sharing
sharin->sharing, sharia, sarin,
@@ -53663,6 +54269,7 @@ sighths->scythes, sights,
sigificance->significance
sigificant->significant
sigificantly->significantly
+siginals->signals
siginificance->significance
siginificant->significant
siginificantly->significantly
@@ -53728,6 +54335,7 @@ signle->single, signal,
signles->singles, signals,
signleton->singleton
signletons->singletons
+signnals->signals
signol->signal
signto->sign to
signul->signal
@@ -54096,6 +54704,10 @@ siplifies->simplifies
siplify->simplify
siplifying->simplifying
siply->simply
+sipport->support
+sipported->supported
+sipporting->supporting
+sipports->supports
sircle->circle
sircles->circles
sircular->circular
@@ -54296,6 +54908,8 @@ slewth->sleuth
slewthed->sleuthed
slewthing->sleuthing
slewths->sleuths
+slibling->sibling
+sliblings->siblings
slicable->sliceable
slience->silence
slienced->silenced
@@ -54405,6 +55019,7 @@ snythetically->synthetically
snythetics->synthetics
Soalris->Solaris
socail->social
+socal->social
socalism->socialism
socalist->socialist
socalists->socialists
@@ -54493,6 +55108,8 @@ soltions->solutions
soltuion->solution
soltuions->solutions
soluable->soluble
+soluation->solution
+soluations->solutions
solum->solemn
soluton->solution
solutons->solutions
@@ -54869,6 +55486,8 @@ specical->special
specically->specifically
specication->specification
specications->specifications
+specicification->specification
+specicifications->specifications
specidic->specific
specied->specified
speciefic->specific
@@ -55506,6 +56125,8 @@ srceens->screens
srceenshot->screenshot
srceenshots->screenshots
srcipt->script
+srcipted->scripted
+srcipting->scripting
srcipts->scripts
srcoll->scroll
srcollable->scrollable
@@ -55859,6 +56480,7 @@ stickness->stickiness
stickyness->stickiness
stiffenin->stiffening, stiffen in,
stiffneing->stiffening
+stifness->stiffness
stiky->sticky
stil->still
stilus->stylus
@@ -56298,6 +56920,8 @@ subexpresssion->subexpression
subexpresssions->subexpressions
subfoilder->subdolder
subfoilders->subdolders
+subfoler->subfolder
+subfolers->subfolders
subfolfer->subfolder
subfolfers->subfolders
subfromat->subformat
@@ -56411,6 +57035,8 @@ subscibe->subscribe
subscibed->subscribed
subsciber->subscriber
subscibers->subscribers
+subsciption->subscription
+subsciptions->subscriptions
subscirbe->subscribe
subscirbed->subscribed
subscirber->subscriber
@@ -56547,6 +57173,7 @@ subtitutes->substitutes
subtituting->substituting
subtitution->substitution
subtitutions->substitutions
+subtlely->subtly, subtlety,
subtractin->subtracting, subtract in, subtraction,
subtrafuge->subterfuge
subtrate->substrate
@@ -57098,7 +57725,7 @@ supposedy->supposedly
supposin->supposing
supposingly->supposedly
suppossed->supposed
-suppost->support, suppose, supports,
+suppost->support, suppose, supposed, supports,
supposted->supposed, supported,
supposting->supporting, supposing,
supposts->supports, supposes,
@@ -57556,6 +58183,13 @@ symetrically->symmetrically
symetriy->symmetry
symetry->symmetry
symettric->symmetric
+symlinc->symlink
+symmectric->symmetric
+symmectrical->symmetrical
+symmectrically->symmetrically
+symmectries->symmetries
+symmectrized->symmetrized
+symmectry->symmetry
symmeterized->symmetrized
symmetetric->symmetric
symmetic->symmetric
@@ -58121,6 +58755,7 @@ tekst->text
teksts->texts
telegramm->telegram
telelevision->television
+telemetery->telemetry
telemtry->telemetry
televsion->television
telocom->telecom
@@ -58354,6 +58989,8 @@ teraforming->terraforming
teraforms->terraforms
terain->terrain, train,
terains->terrains, trains,
+terator->iterator
+terators->iterators
terfform->terraform
terfformed->terraformed
terfforming->terraforming
@@ -58567,6 +59204,7 @@ tghe->the
tha->than, that, the,
thair->their, there,
thairs->theirs, there's,
+tham->than
thankfull->thankful, thankfully,
thankfullly->thankfully
thankfuly->thankfully
@@ -58648,6 +59286,7 @@ theorectically->theoretically
theoreticall->theoretically
theoreticaly->theoretically
theoreticl->theoretical
+theoretocally->theoretically
theorical->theoretical
theorically->theoretically
theoritical->theoretical
@@ -58845,6 +59484,8 @@ threhold->threshold
threholds->thresholds
threre->there, three,
threrefore->therefore
+threschold->threshold
+threscholds->thresholds
threshhold->threshold
threshholds->thresholds
threshod->threshold
@@ -58991,6 +59632,7 @@ timemout->timeout
timemouts->timeouts
timeot->timeout
timeots->timeouts
+timeour->timeout
timeoutted->timed out
timeput->timeout, time put,
timeputs->timeouts, time puts,
@@ -59337,10 +59979,20 @@ tranalations->translations
tranasction->transaction
tranasctional->transactional
tranasctions->transactions
+trancate->truncate
+trancated->truncated
+trancates->truncates
+trancating->truncating
tranceiver->transceiver
tranceivers->transceivers
trancendent->transcendent
trancending->transcending
+trancevier->transceiver
+tranceviers->transceivers
+tranciever->transceiver
+trancievers->transceivers
+tranciver->transceiver
+trancivers->transceivers
tranclate->translate
trancode->transcode
trancoded->transcoded
@@ -59439,6 +60091,8 @@ transacitons->transactions
transacrtion->transaction
transacrtional->transactional
transacrtions->transactions
+transactino->transaction
+transactinos->transactions
transaction-spacific->transaction-specific
transactiona->transactions, transactional,
transactoin->transaction
@@ -59511,9 +60165,13 @@ transction->transaction
transctional->transactional
transctions->transactions
transeint->transient
+transeiver->transceiver
+transeivers->transceivers
transending->transcending
transer->transfer
transesxuals->transsexuals
+transevier->transceiver
+transeviers->transceivers
transferd->transferred
transfered->transferred
transfering->transferring
@@ -59560,6 +60218,8 @@ transfroming->transforming
transfroms->transforms
transiet->transient
transiets->transients
+transiever->transceiver
+transievers->transceivers
transision->transition
transisioning->transitioning
transisions->transitions
@@ -59581,6 +60241,8 @@ transitoning->transitioning
transitons->transitions
transitor->transistor
transitors->transistors
+transiver->transceiver
+transivers->transceivers
translater->translator
translaters->translators
translatied->translated
@@ -59732,6 +60394,8 @@ transtitioning->transitioning
transtitions->transitions
transtorm->transform
transtormed->transformed
+transverer->traverser, transverter, transferer,
+transverers->traversers, transverters, transferers,
transvers->transverse
transvorm->transform
transvormation->transformation
@@ -60227,7 +60891,14 @@ tryin->trying, try in,
tryinng->trying
trys->tries
tryying->trying
-ttests->tests
+ttempt->attempt, tempt,
+ttempted->attempted, tempted,
+ttempting->attempting, tempting,
+ttempts->attempts, tempts,
+ttest->test, attest,
+ttested->tested, attested,
+ttesting->test, attesting,
+ttests->tests, attests,
tthank->thank
tthanks->thanks
tthat->that
@@ -60533,6 +61204,8 @@ unambigiously->unambiguously
unambigous->unambiguous
unambigously->unambiguously
unamed->unnamed
+unamiguous->unambiguous
+unamiguously->unambiguously
unanimuous->unanimous
unanimuously->unanimously
unannimous->unanimous
@@ -60846,6 +61519,8 @@ undfine->undefine
undfined->undefined
undfines->undefines
undistinghable->indistinguishable
+undmaaged->damaged
+undmaged->damaged
undocummented->undocumented
undoed->undo, undone,
undorder->unorder
@@ -61184,12 +61859,18 @@ unline->unlike
unloadin->unloading, unload in,
unloadins->unloading
unmached->unmatched
+unmacthed->unmatched
unmainted->unmaintained
unmanouverable->unmaneuverable, unmanoeuvrable,
unmaping->unmapping
unmappend->unmapped
unmarsalling->unmarshalling
unmaximice->unmaximize
+unmber->number, umber,
+unmbered->numbered
+unmbering->numbering
+unmbers->numbers
+unmergable->unmergeable
unmisakable->unmistakable
unmisakably->unmistakably
unmistakeably->unmistakably
@@ -61359,6 +62040,11 @@ unreigstering->unregistering
unreigsters->unregisters
unrelatd->unrelated
unreleated->unrelated
+unreliabe->unreliable
+unreliabily->unreliably, unreliability,
+unreliablity->unreliability
+unrelibility->unreliability
+unrelible->unreliable
unrelted->unrelated
unrelyable->unreliable
unrelying->underlying
@@ -61422,8 +62108,10 @@ unserstand->understand
unserstanding->understanding
unserstands->understands
unserstood->understood
+unseted->unset, unseated,
unseting->unsetting
unsetset->unset
+unsetted->unset, unseated,
unsettin->unsetting
unshfit->unshift
unshfited->unshifted
@@ -61535,6 +62223,7 @@ unsuccesfully->unsuccessfully
unsuccess->unsuccessful
unsuccessfull->unsuccessful
unsuccessfullly->unsuccessfully
+unsuccessfuly->unsuccessfully
unsucesful->unsuccessful
unsucesfull->unsuccessful
unsucesfully->unsuccessfully
@@ -61927,6 +62616,7 @@ userspase->userspace
usesfull->useful
usespace->userspace
usetnet->Usenet
+usgin->using
usiability->usability
usiable->usable
usiage->usage
@@ -62005,6 +62695,7 @@ utilitization->utilization
utilitize->utilize
utilitizes->utilizes
utilitizing->utilizing
+utiliy->utility
utiliz->utilize
utiliza->utilize
utilizaton->utilization
@@ -62031,6 +62722,7 @@ utilties->utilities
utiltities->utilities
utiltity->utility
utilty->utility
+utily->utility
utilzation->utilization
utilze->utilize
utilzed->utilized
@@ -62542,6 +63234,7 @@ verical->vertical
verically->vertically
verication->verification
verications->verifications
+veridying->verifying
verifable->verifiable
verifcation->verification
verifcations->verifications
@@ -62689,6 +63382,10 @@ vesion->version
vesioned->versioned
vesioning->versioning
vesions->versions
+vesrion->version
+vesrioned->versioned
+vesrioning->versioning
+vesrions->versions
vetex->vertex
vetexes->vertices
vetical->vertical
@@ -62733,6 +63430,8 @@ victimizin->victimizing
victum->victim
victums->victims
videostreamming->videostreaming
+vidget->widget
+vidgets->widgets
viee->view
viees->views
vieport->viewport
@@ -62852,6 +63551,7 @@ visibile->visible
visibililty->visibility
visibilit->visibility
visibiliy->visibly, visibility,
+visibiltiy->visibility
visibilty->visibility
visibily->visibly, visibility,
visibl->visible
@@ -63019,6 +63719,9 @@ volentiered->volunteered
volentiering->volunteering
volentiers->volunteers
voleyball->volleyball
+volital->volatile
+volitale->volatile
+volitile->volatile
volontary->voluntary
volonteer->volunteer
volonteered->volunteered
@@ -63028,9 +63731,10 @@ volounteer->volunteer
volounteered->volunteered
volounteering->volunteering
volounteers->volunteers
-volumn->volume
+volumn->volume, column,
volumne->volume
-volums->volume
+volumns->volumes, columns,
+volums->volume, volumes,
volunteerin->volunteering, volunteer in,
volxel->voxel
volxels->voxels
@@ -63136,12 +63840,15 @@ vulnerabiliies->vulnerabilities
vulnerabilility->vulnerability
vulnerabililties->vulnerabilities
vulnerabililty->vulnerability
+vulnerabilit->vulnerability, vulnerabilities,
vulnerabilites->vulnerabilities
-vulnerabiliti->vulnerability
-vulnerabilitie->vulnerability
-vulnerabilitis->vulnerabilities
+vulnerabiliti->vulnerability, vulnerabilities,
+vulnerabilitie->vulnerability, vulnerabilities,
+vulnerabilitiesy->vulnerability, vulnerabilities,
+vulnerabilitis->vulnerabilities, vulnerability,
vulnerabilitiy->vulnerability
vulnerabilitu->vulnerability
+vulnerabilityies->vulnerability, vulnerabilities,
vulnerabilitys->vulnerability, vulnerabilities,
vulnerabiliy->vulnerability
vulnerabillities->vulnerabilities
@@ -63178,6 +63885,9 @@ vulnerbility->vulnerability
vulnerble->vulnerable
vulnerbuilities->vulnerabilities
vulnerbuility->vulnerability
+vulnererabilities->vulnerabilities
+vulnererability->vulnerability
+vulnererable->vulnerable
vulnreabilities->vulnerabilities
vulnreability->vulnerability
vulnreable->vulnerable
@@ -63205,6 +63915,8 @@ walkthough->walkthrough, walk though,
walkthoughs->walkthroughs
wallowin->wallowing, wallow in,
wallthickness->wall thickness
+walue->value
+walues->values
wan't->want, wasn't,
wantin->wanting, want in, wanton,
wantto->want to
@@ -63216,6 +63928,8 @@ warantee->warranty
waranties->warranties
waranty->warranty
wardobe->wardrobe
+warehosue->warehouse
+warehosues->warehouses
waring->warning
warings->warnings
warinig->warning
@@ -63414,6 +64128,7 @@ whcih->which
whe->when, we,
wheareas->whereas
wheather->weather, whether,
+wheen->wheel, when,
wheh->when
whehter->whether
wheigh->weigh
@@ -63449,6 +64164,7 @@ whicg->which
whichs->which's
whicht->which
whick->which, whisk, wick, whack,
+whicth->which
whih->which
whihc->which
whihch->which
@@ -63567,6 +64283,8 @@ wilcard->wildcard
wilcards->wildcards
wildebeast->wildebeest
wildebeasts->wildebeests
+wildget->widget
+wildgets->widgets
wilfull->wilful
wilh->will
wille->will
@@ -63693,8 +64411,8 @@ wiythin->within
wiythout->without
wizzard->wizard
wjat->what
-wll->will
-wlll->will
+wll->will, well,
+wlll->will, well,
wmpty->empty
wnat->want, what,
wnated->wanted
@@ -64013,6 +64731,7 @@ wuthin->within
wuthout->without
wya->way
wyas->ways
+wysiwy->wysiwyg
wyth->with
wythout->without
xdescribe->describe
diff --git a/codespell_lib/data/dictionary_code.txt b/codespell_lib/data/dictionary_code.txt
index fa3701364c..1a09fe97c9 100644
--- a/codespell_lib/data/dictionary_code.txt
+++ b/codespell_lib/data/dictionary_code.txt
@@ -47,7 +47,6 @@ jupyter->Jupiter
keypair->key pair
keypairs->key pairs
lateset->latest
-lets->let's
lite->light
lowcase->lowercase
movei->movie
@@ -98,6 +97,7 @@ uint->unit
uis->is, use,
upto->up to
usesd->used, uses,
+waitfor->wait for
wan->want
warmup->warm up, warm-up,
were'->we're
diff --git a/codespell_lib/data/dictionary_en-GB_to_en-US.txt b/codespell_lib/data/dictionary_en-GB_to_en-US.txt
index adab0d1277..2b160ffb9d 100644
--- a/codespell_lib/data/dictionary_en-GB_to_en-US.txt
+++ b/codespell_lib/data/dictionary_en-GB_to_en-US.txt
@@ -69,6 +69,7 @@ characterise->characterize
characterised->characterized
characterises->characterizes
characterising->characterizing
+civilisation->civilization
cognisant->cognizant
colour->color
colouration->coloration
@@ -258,6 +259,7 @@ manoeuvres->maneuvers
manoeuvring->maneuvering
marshalled->marshaled
marshalling->marshaling
+maths->math
maximisation->maximization
maximise->maximize
maximised->maximized
@@ -359,7 +361,7 @@ polarises->polarizes
polarising->polarizing
practise->practice
practised->practiced
-practises->practiced
+practises->practices
practising->practicing
pretence->pretense
pretences->pretenses
@@ -368,6 +370,7 @@ prioritise->prioritize
prioritised->prioritized
prioritises->prioritizes
prioritising->prioritizing
+programme->program
publicise->publicize
publicised->publicized
publicises->publicizes
@@ -400,6 +403,8 @@ recognising->recognizing
refocussed->refocused
refocusses->refocuses
refocussing->refocusing
+refuelled->refueled
+refuelling->refueling
regularisation->regularization
regularise->regularize
regularised->regularized
@@ -420,6 +425,8 @@ reparameterised->reparameterized
reparameterises->reparameterizes
reparameterising->reparameterizing
rigour->rigor
+routeing->routing
+saleable->salable
sanitisation->sanitization
sanitise->sanitize
sanitised->sanitized
@@ -489,6 +496,8 @@ synthesiser->synthesizer
synthesisers->synthesizers
synthesises->synthesizes
synthesising->synthesizing
+titbit->tidbit
+titbits->tidbits
totalled->totaled
totalling->totaling
unauthorised->unauthorized
diff --git a/codespell_lib/data/dictionary_en_to_en-OX_AUTOGENERATED.txt b/codespell_lib/data/dictionary_en_to_en-OX_AUTOGENERATED.txt
new file mode 100644
index 0000000000..9fbc281d53
--- /dev/null
+++ b/codespell_lib/data/dictionary_en_to_en-OX_AUTOGENERATED.txt
@@ -0,0 +1,550 @@
+acknowledgment->acknowledgement
+acknowledgments->acknowledgements
+aggrandise->aggrandize
+aggrandised->aggrandized
+aggrandisement->aggrandizement
+aggrandises->aggrandizes
+aggrandising->aggrandizing
+aluminum->aluminium
+amortise->amortize
+amortised->amortized
+amortises->amortizes
+amortising->amortizing
+analog->analogue
+analyze->analyse
+analyzed->analysed
+analyzer->analyser
+analyzers->analysers
+analyzing->analysing
+apologise->apologize
+apologised->apologized
+apologises->apologizes
+apologising->apologizing
+armor->armour
+armored->armoured
+armoring->armouring
+armors->armours
+armory->armoury
+artifact->artefact
+artifacts->artefacts
+authorisation->authorization
+authorisations->authorizations
+authorise->authorize
+authorised->authorized
+authorises->authorizes
+authorising->authorizing
+bastardise->bastardize
+bastardised->bastardized
+bastardises->bastardizes
+bastardising->bastardizing
+behavior->behaviour
+behavioral->behavioural
+behaviors->behaviours
+biased->biassed
+canceled->cancelled
+canceling->cancelling
+capitalisation->capitalization
+capitalise->capitalize
+capitalised->capitalized
+capitalises->capitalizes
+capitalising->capitalizing
+catalog->catalogue
+catalogs->catalogues
+categorise->categorize
+categorised->categorized
+categorises->categorizes
+center->centre
+centered->centred
+centers->centres
+centimeter->centimetre
+centimeters->centimetres
+centralisation->centralization
+centralise->centralize
+centralised->centralized
+centralises->centralizes
+centralising->centralizing
+characterisation->characterization
+characterisations->characterizations
+characterise->characterize
+characterised->characterized
+characterises->characterizes
+characterising->characterizing
+civilisation->civilization
+cognizant->cognisant
+color->colour
+coloration->colouration
+colorations->colourations
+colored->coloured
+colorful->colourful
+colorfully->colourfully
+coloring->colouring
+colorizable->colourizable
+colorization->colourization
+colorizations->colourizations
+colorize->colourize
+colorized->colourized
+colorizer->colourizer
+colorizes->colourizes
+colorizing->colourizing
+colorless->colourless
+colors->colours
+colourisable->colourizable
+colourisation->colourization
+colourisations->colourizations
+colourise->colourize
+colourised->colourized
+colouriser->colourizer
+colourises->colourizes
+colourising->colourizing
+counselor->counsellor
+criticise->criticize
+criticised->criticized
+criticises->criticizes
+criticising->criticizing
+crystallisation->crystallization
+crystallise->crystallize
+crystallised->crystallized
+crystallises->crystallizes
+crystallising->crystallizing
+customisable->customizable
+customisation->customization
+customise->customize
+customised->customized
+customises->customizes
+customising->customizing
+daemonise->daemonize
+daemonised->daemonized
+daemonises->daemonizes
+daemonising->daemonizing
+decentralisation->decentralization
+decentralise->decentralize
+decentralised->decentralized
+decentralises->decentralizes
+decentralising->decentralizing
+defence->defense
+defenceless->defenseless
+defences->defenses
+demonise->demonize
+demonised->demonized
+demonises->demonizes
+demonising->demonizing
+deserialisation->deserialization
+deserialise->deserialize
+deserialised->deserialized
+deserialises->deserializes
+deserialising->deserializing
+dialog->dialogue
+dialogs->dialogues
+digitisation->digitization
+digitise->digitize
+digitised->digitized
+digitises->digitizes
+digitising->digitizing
+disfavor->disfavour
+dishonor->dishonour
+dishonorable->dishonourable
+dishonored->dishonoured
+dishonoring->dishonouring
+dishonors->dishonours
+donut->doughnut
+donuts->doughnuts
+economise->economize
+emphasise->emphasize
+emphasised->emphasized
+emphasises->emphasizes
+emphasising->emphasizing
+enamor->enamour
+enamored->enamoured
+enamoring->enamouring
+enamors->enamours
+endeavor->endeavour
+endeavored->endeavoured
+endeavoring->endeavouring
+endeavors->endeavours
+enroll->enrol
+enrollment->enrolment
+enrollments->enrolments
+enrolls->enrols
+equalisation->equalization
+equalise->equalize
+equalised->equalized
+equaliser->equalizer
+equalises->equalizes
+equalising->equalizing
+equalizers->equalisers
+favor->favour
+favorable->favourable
+favored->favoured
+favoring->favouring
+favorite->favourite
+favorites->favourites
+favoritism->favouritism
+favorizable->favourizable
+favorize->favourize
+favorized->favourized
+favorizes->favourizes
+favorizing->favourizing
+favors->favours
+favourisable->favourizable
+favourise->favourize
+favourised->favourized
+favourises->favourizes
+favourising->favourizing
+finalisation->finalization
+finalise->finalize
+finalised->finalized
+finalises->finalizes
+finalising->finalizing
+flavor->flavour
+flavors->flavours
+focussed->focused
+focusses->focuses
+focussing->focusing
+formalisation->formalization
+formalise->formalize
+formalised->formalized
+formalises->formalizes
+formalising->formalizing
+fulfill->fulfil
+fulfills->fulfils
+generalisation->generalization
+generalisations->generalizations
+generalise->generalize
+generalised->generalized
+generalises->generalizes
+generalising->generalizing
+gray->grey
+grayed->greyed
+grayish->greyish
+grays->greys
+grayscale->greyscale
+hemorrhage->haemorrhage
+hemorrhaged->haemorrhaged
+hemorrhages->haemorrhages
+hemorrhagic->haemorrhagic
+hemorrhaging->haemorrhaging
+honor->honour
+honored->honoured
+honoring->honouring
+honors->honours
+humor->humour
+hypothesise->hypothesize
+hypothesised->hypothesized
+hypothesises->hypothesizes
+hypothesising->hypothesizing
+initialisation->initialization
+initialise->initialize
+initialised->initialized
+initialises->initializes
+initialising->initializing
+internationalisation->internationalization
+internationalise->internationalize
+internationalised->internationalized
+internationalises->internationalizes
+internationalising->internationalizing
+italicise->italicize
+italicised->italicized
+italicises->italicizes
+italicising->italicizing
+journaling->journalling
+judgment->judgement
+judgments->judgements
+kilometer->kilometre
+kilometers->kilometres
+labeled->labelled
+labeling->labelling
+labor->labour
+labored->laboured
+laborer->labourer
+laborers->labourers
+laboring->labouring
+labors->labours
+lambaste->lambast
+lambastes->lambasts
+legalisation->legalization
+legalise->legalize
+legalised->legalized
+legalises->legalizes
+legalising->legalizing
+leukemia->leukaemia
+licensing->licencing
+liter->litre
+liters->litres
+localisation->localization
+localisations->localizations
+localise->localize
+localised->localized
+localises->localizes
+localising->localizing
+maneuver->manoeuvre
+maneuvered->manoeuvred
+maneuvering->manoeuvring
+maneuvers->manoeuvres
+marshaled->marshalled
+marshaling->marshalling
+math->maths
+maximisation->maximization
+maximise->maximize
+maximised->maximized
+maximises->maximizes
+maximising->maximizing
+memorisation->memorization
+memorise->memorize
+memorised->memorized
+memorises->memorizes
+memorising->memorizing
+millimeter->millimetre
+millimeters->millimetres
+minimisation->minimization
+minimise->minimize
+minimised->minimized
+minimises->minimizes
+minimising->minimizing
+miter->mitre
+modeled->modelled
+modeler->modeller
+modelers->modellers
+modeling->modelling
+modernise->modernize
+modernised->modernized
+modernises->modernizes
+modernising->modernizing
+mold->mould
+molds->moulds
+nasalisation->nasalization
+nationalisation->nationalization
+nationalisations->nationalizations
+nationalise->nationalize
+nationalised->nationalized
+nationalises->nationalizes
+nationalising->nationalizing
+neighbor->neighbour
+neighboring->neighbouring
+neighbors->neighbours
+normalisation->normalization
+normalisations->normalizations
+normalise->normalize
+normalised->normalized
+normalises->normalizes
+normalising->normalizing
+ocher->ochre
+ocherous->ochreous
+ochery->ochrey
+optimisation->optimization
+optimisations->optimizations
+optimise->optimize
+optimised->optimized
+optimiser->optimizer
+optimises->optimizes
+optimising->optimizing
+organisation->organization
+organisations->organizations
+organise->organize
+organised->organized
+organiser->organizer
+organises->organizes
+organising->organizing
+organizational->organisational
+organizers->organisers
+overwritable->overwriteable
+parallelisation->parallelization
+parallelise->parallelize
+parallelised->parallelized
+parallelises->parallelizes
+parallelising->parallelizing
+parameterisable->parameterizable
+parameterisation->parameterization
+parameterise->parameterize
+parameterised->parameterized
+parameterises->parameterizes
+parameterising->parameterizing
+paravirtualisation->paravirtualization
+paravirtualise->paravirtualize
+paravirtualised->paravirtualized
+paravirtualises->paravirtualizes
+paravirtualising->paravirtualizing
+pasteurisation->pasteurization
+pasteurise->pasteurize
+pasteurised->pasteurized
+pasteurises->pasteurizes
+pasteurising->pasteurizing
+penalise->penalize
+penalised->penalized
+penalises->penalizes
+penalising->penalizing
+plagiarise->plagiarize
+plagiarised->plagiarized
+plagiarises->plagiarizes
+plagiarising->plagiarizing
+polarise->polarize
+polarised->polarized
+polarises->polarizes
+polarising->polarizing
+practicing->practising
+pretense->pretence
+pretenses->pretences
+prioritisation->prioritization
+prioritise->prioritize
+prioritised->prioritized
+prioritises->prioritizes
+prioritising->prioritizing
+publicise->publicize
+publicised->publicized
+publicises->publicizes
+publicising->publicizing
+randomise->randomize
+randomised->randomized
+randomises->randomizes
+randomising->randomizing
+rasterisation->rasterization
+rasterise->rasterize
+rasterised->rasterized
+rasterises->rasterizes
+rasterising->rasterizing
+rationalisation->rationalization
+rationalise->rationalize
+rationalised->rationalized
+rationalising->rationalizing
+realisable->realizable
+realisation->realization
+realisations->realizations
+realise->realize
+realised->realized
+realises->realizes
+realising->realizing
+recognisable->recognizable
+recognise->recognize
+recognised->recognized
+recognises->recognizes
+recognising->recognizing
+refocused->refocussed
+refocuses->refocusses
+refocusing->refocussing
+refueled->refuelled
+refueling->refuelling
+regularisation->regularization
+regularise->regularize
+regularised->regularized
+regularises->regularizes
+regularising->regularizing
+reinitialise->reinitialize
+reinitialised->reinitialized
+reinitialises->reinitializes
+reinitialising->reinitializing
+reorganisation->reorganization
+reorganisations->reorganizations
+reorganise->reorganize
+reorganised->reorganized
+reorganises->reorganizes
+reorganising->reorganizing
+reparameterise->reparameterize
+reparameterised->reparameterized
+reparameterises->reparameterizes
+reparameterising->reparameterizing
+rigor->rigour
+routing->routeing
+salable->saleable
+sanitisation->sanitization
+sanitise->sanitize
+sanitised->sanitized
+sanitiser->sanitizer
+sanitises->sanitizes
+sanitising->sanitizing
+sanitizers->sanitisers
+serialisation->serialization
+serialise->serialize
+serialised->serialized
+serialises->serializes
+serialising->serializing
+signaled->signalled
+signaling->signalling
+skeptical->sceptical
+skillful->skilful
+skillfully->skilfully
+skillfulness->skilfulness
+specialisation->specialization
+specialisations->specializations
+specialise->specialize
+specialised->specialized
+specialises->specializes
+specialising->specializing
+specialties->specialities
+specialty->speciality
+splendor->splendour
+standardisation->standardization
+standardise->standardize
+standardised->standardized
+standardises->standardizes
+standardising->standardizing
+sterilisation->sterilization
+sterilisations->sterilizations
+sterilise->sterilize
+sterilised->sterilized
+steriliser->sterilizer
+sterilises->sterilizes
+sterilising->sterilizing
+sulfate->sulphate
+sulfide->sulphide
+sulfur->sulphur
+sulfureous->sulphureous
+sulfuric->sulphuric
+sulfurous->sulphurous
+summarise->summarize
+summarised->summarized
+summarises->summarizes
+summarising->summarizing
+symbolise->symbolize
+symbolised->symbolized
+symbolises->symbolizes
+symbolising->symbolizing
+synchronisation->synchronization
+synchronisations->synchronizations
+synchronise->synchronize
+synchronised->synchronized
+synchroniser->synchronizer
+synchronises->synchronizes
+synchronising->synchronizing
+synchronizers->synchronisers
+synthesise->synthesize
+synthesised->synthesized
+synthesiser->synthesizer
+synthesises->synthesizes
+synthesising->synthesizing
+synthesizers->synthesisers
+tidbit->titbit
+tidbits->titbits
+totaled->totalled
+totaling->totalling
+unauthorised->unauthorized
+unfavorable->unfavourable
+unfavorably->unfavourably
+uninitialised->uninitialized
+unorganised->unorganized
+unrecognisable->unrecognizable
+unrecognised->unrecognized
+unsynchronised->unsynchronized
+utilisable->utilizable
+utilisation->utilization
+utilise->utilize
+utilised->utilized
+utilises->utilizes
+utilising->utilizing
+vectorisation->vectorization
+vectorisations->vectorizations
+vectorise->vectorize
+vectorised->vectorized
+vectorises->vectorizes
+vectorising->vectorizing
+virtualisation->virtualization
+virtualise->virtualize
+virtualised->virtualized
+virtualises->virtualizes
+virtualising->virtualizing
+visualisation->visualization
+visualisations->visualizations
+visualise->visualize
+visualised->visualized
+visualiser->visualizer
+visualises->visualizes
+visualising->visualizing
+writable->writeable
diff --git a/codespell_lib/data/dictionary_rare.txt b/codespell_lib/data/dictionary_rare.txt
index 675f9c7381..eac6735fcb 100644
--- a/codespell_lib/data/dictionary_rare.txt
+++ b/codespell_lib/data/dictionary_rare.txt
@@ -82,6 +82,8 @@ degrate->degrade
degrates->degrades
dependant->dependent
derails->details
+dervice->device, service,
+dervices->devices, services,
descried->described
descries->describes
dirivative->derivative
@@ -92,6 +94,7 @@ discontentment->discontent
discreet->discrete
discus->discuss
discuses->discusses
+disjointness->disjointedness
disturbative->distributive, disruptive,
doest->does, doesn't,
empress->impress
@@ -144,6 +147,8 @@ infarction->infraction
infarctions->infractions
ingenuous->ingenious
inly->only
+insteam->instead
+intensional->intentional
irregardless->regardless
joo->you
knifes->knives
@@ -154,8 +159,6 @@ lamdas->lambdas
leaded->led, lead,
leas->least, lease,
lief->leaf, life,
-lien->line
-liens->lines
lightening->lightning, lighting,
loafing->loading
lod->load, loud, lode,
@@ -179,6 +182,7 @@ mistakingly->mistakenly
moil->soil, mohel,
mot->not
moue->mouse
+mouting->moulting, mounting, mouthing, muting, pouting,
multistory->multistorey, multi-storey,
nickle->nickel
noes->nose, knows, nodes, does,
@@ -220,7 +224,8 @@ protestors->protesters
provence->province
purportive->supportive
purvue->purview
-ques->quest
+quater->quarter
+ques->quest, queues, cues,
readd->re-add, read,
readded->re-added, read,
readding->re-adding, reading,
diff --git a/codespell_lib/data/dictionary_usage.txt b/codespell_lib/data/dictionary_usage.txt
index 8b3a15038c..91b67cf9c2 100644
--- a/codespell_lib/data/dictionary_usage.txt
+++ b/codespell_lib/data/dictionary_usage.txt
@@ -2,7 +2,6 @@ black-hat->malicious actor, attacker,
blackhat->malicious actor, attacker,
blacklist->blocklist
blacklists->blocklists
-blueish->bluish
cripples->slows down, hinders, obstructs,
crippling->attenuating, incapacitating,
dummy-value->placeholder value
diff --git a/codespell_lib/tests/test_basic.py b/codespell_lib/tests/test_basic.py
index a6c05fc089..5120e1e8a1 100644
--- a/codespell_lib/tests/test_basic.py
+++ b/codespell_lib/tests/test_basic.py
@@ -5,10 +5,11 @@
import re
import subprocess
import sys
+from collections.abc import Generator
from io import StringIO
from pathlib import Path
from shutil import copyfile
-from typing import Any, Generator, Optional, Tuple, Union
+from typing import Any, Optional, Union
from unittest import mock
import pytest
@@ -39,7 +40,7 @@ def main(
*args: Any,
count: bool = True,
std: bool = False,
- ) -> Union[int, Tuple[int, str, str]]:
+ ) -> Union[int, tuple[int, str, str]]:
args = tuple(str(arg) for arg in args)
if count:
args = ("--count", *args)
@@ -65,7 +66,7 @@ def main(
def run_codespell(
- args: Tuple[Any, ...] = (),
+ args: tuple[Any, ...] = (),
cwd: Optional[Path] = None,
) -> int:
"""Run codespell."""
@@ -168,6 +169,31 @@ def test_basic(
assert cs.main(tmp_path) == 0
+def test_write_changes_lists_changes(
+ tmp_path: Path,
+ capsys: pytest.CaptureFixture[str],
+) -> None:
+ """Test that -w flag shows list of changes made to file."""
+
+ fname = tmp_path / "misspelled.txt"
+ fname.write_text("This is abandonned\nAnd this is occured\nAlso teh typo\n")
+
+ result = cs.main("-w", fname, std=True)
+ assert isinstance(result, tuple)
+ code, _, stderr = result
+ assert code == 0
+
+ assert "FIXED:" in stderr
+
+ # Check that changes are listed with format: filename:line: wrong ==> right
+ assert "misspelled.txt:1: abandonned ==> abandoned" in stderr
+ assert "misspelled.txt:2: occured ==> occurred" in stderr
+ assert "misspelled.txt:3: teh ==> the" in stderr
+
+ corrected = fname.read_text()
+ assert corrected == "This is abandoned\nAnd this is occurred\nAlso the typo\n"
+
+
def test_default_word_parsing(
tmp_path: Path,
capsys: pytest.CaptureFixture[str],
@@ -951,19 +977,19 @@ def test_ignore_multiline_regex_option(
assert code == EX_USAGE
assert "usage:" in stdout
+ text = """
+ Please see http://example.com/abandonned for info
+ # codespell:ignore-begin
+ '''
+ abandonned
+ abandonned
+ '''
+ # codespell:ignore-end
+ abandonned
+ """
+
fname = tmp_path / "flag.txt"
- fname.write_text(
- """
- Please see http://example.com/abandonned for info
- # codespell:ignore-begin
- '''
- abandonned
- abandonned
- '''
- # codespell:ignore-end
- abandonned
- """
- )
+ fname.write_text(text)
assert cs.main(fname) == 4
assert (
cs.main(
@@ -974,6 +1000,44 @@ def test_ignore_multiline_regex_option(
== 2
)
+ with FakeStdin(text):
+ assert (
+ cs.main(
+ "-",
+ "--ignore-multiline-regex",
+ "codespell:ignore-begin.*codespell:ignore-end",
+ )
+ == 2
+ )
+
+ fname.write_text("This\nThsi")
+ cs.main(
+ fname,
+ "-w",
+ "--ignore-multiline-regex",
+ "codespell:ignore-begin.*codespell:ignore-end",
+ )
+ assert fname.read_text() == "This\nThis"
+
+ fname.write_text(text)
+ cs.main(
+ fname,
+ "-w",
+ "--ignore-multiline-regex",
+ "codespell:ignore-begin.*codespell:ignore-end",
+ )
+ fixed_text = """
+ Please see http://example.com/abandoned for info
+ # codespell:ignore-begin
+ '''
+ abandonned
+ abandonned
+ '''
+ # codespell:ignore-end
+ abandoned
+ """
+ assert fname.read_text() == fixed_text
+
def test_uri_regex_option(
tmp_path: Path,
@@ -1373,7 +1437,7 @@ def FakeStdin(text: str) -> Generator[None, None, None]:
def run_codespell_stdin(
text: str,
- args: Tuple[Any, ...],
+ args: tuple[Any, ...],
cwd: Optional[Path] = None,
) -> int:
"""Run codespell in stdin mode and return number of lines in output."""
@@ -1390,14 +1454,14 @@ def run_codespell_stdin(
return output.count("\n")
-def test_stdin(tmp_path: Path) -> None:
+def test_stdin(tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None:
"""Test running the codespell executable."""
input_file_lines = 4
text = ""
for _ in range(input_file_lines):
text += "abandonned\n"
for single_line_per_error in (True, False):
- args: Tuple[str, ...] = ()
+ args: tuple[str, ...] = ()
if single_line_per_error:
args = ("--stdin-single-line",)
# we expect 'input_file_lines' number of lines with
@@ -1405,3 +1469,58 @@ def test_stdin(tmp_path: Path) -> None:
assert run_codespell_stdin(
text, args=args, cwd=tmp_path
) == input_file_lines * (2 - int(single_line_per_error))
+
+ with FakeStdin("Thsi is a line"):
+ result = cs.main("-", "-w", std=True)
+ assert isinstance(result, tuple)
+ code, stdout, _ = result
+ assert stdout == "---\nThis is a line"
+ assert code == 0
+
+ with FakeStdin("Thsi is a line"):
+ result = cs.main("-", "--stdin-single-line", std=True)
+ assert isinstance(result, tuple)
+ code, stdout, _ = result
+ assert stdout == "1: Thsi ==> This\n"
+ assert code == 1
+
+
+def test_args_from_file(
+ tmp_path: Path,
+ capsys: pytest.CaptureFixture[str],
+) -> None:
+ import textwrap
+
+ print()
+ fname1 = tmp_path / "tmp1"
+ fname2 = tmp_path / "tmp2"
+ fname3 = tmp_path / "tmp3"
+ fname_list = tmp_path / "tmp_list"
+ fname_list.write_text(f"{fname1} {fname2}\n{fname3}")
+ fname1.write_text("abandonned\ncode")
+ fname2.write_text("exmaple\n")
+ fname3.write_text("abilty\n")
+ print(f"{fname_list=}")
+ args = ["codespell", f"@{fname_list}"]
+ print(f"Running: {args=}")
+ cp = subprocess.run( # noqa: S603
+ args,
+ check=False,
+ text=True,
+ capture_output=True,
+ )
+ code = cp.returncode
+ stdout = cp.stdout
+ stderr = cp.stderr
+ print(f"{code=}")
+ print(f"stdout:\n{textwrap.indent(stdout, ' ')}")
+ print(f"stderr:\n{textwrap.indent(stderr, ' ')}")
+ assert "tmp1:1: abandonned ==> abandoned\n" in stdout, f"{stdout=}"
+ assert "tmp2:1: exmaple ==> example\n" in stdout, f"{stdout=}"
+ assert "tmp3:1: abilty ==> ability\n" in stdout, f"{stdout=}"
+ assert code, f"{code=}"
+
+ # Run same test via cs_.main() so code coverage checks work.
+ print("Testing with direct call to cs_.main()")
+ r = cs_.main(*args[1:])
+ print(f"{r=}")
diff --git a/codespell_lib/tests/test_dictionary.py b/codespell_lib/tests/test_dictionary.py
index 8270087116..4411c49225 100644
--- a/codespell_lib/tests/test_dictionary.py
+++ b/codespell_lib/tests/test_dictionary.py
@@ -3,7 +3,8 @@
import os.path as op
import pathlib
import re
-from typing import Any, Dict, Iterable, Optional, Set, Tuple
+from collections.abc import Iterable
+from typing import Any, Optional
import pytest
@@ -37,8 +38,8 @@
)
raise RuntimeError(msg) from e
-global_err_dicts: Dict[str, Dict[str, Any]] = {}
-global_pairs: Set[Tuple[str, str]] = set()
+global_err_dicts: dict[str, dict[str, Any]] = {}
+global_pairs: set[tuple[str, str]] = set()
# Filename, should be seen as errors in aspell or not
_data_dir = op.join(op.dirname(__file__), "..", "data")
@@ -61,8 +62,8 @@ def test_dictionaries_exist() -> None:
@fname_params
def test_dictionary_formatting(
fname: str,
- in_aspell: Tuple[bool, bool],
- in_dictionary: Tuple[Iterable[str], Iterable[str]],
+ in_aspell: tuple[bool, bool],
+ in_dictionary: tuple[Iterable[str], Iterable[str]],
) -> None:
"""Test that all dictionary entries are valid."""
errors = []
@@ -137,9 +138,9 @@ def _check_aspell(
def _check_err_rep(
err: str,
rep: str,
- in_aspell: Tuple[Optional[bool], Optional[bool]],
+ in_aspell: tuple[Optional[bool], Optional[bool]],
fname: str,
- languages: Tuple[Iterable[str], Iterable[str]],
+ languages: tuple[Iterable[str], Iterable[str]],
) -> None:
assert whitespace.search(err) is None, f"error {err!r} has whitespace"
assert "," not in err, f"error {err!r} has a comma"
@@ -283,12 +284,19 @@ def test_error_checking_in_aspell(
allowed_dups = {
("dictionary.txt", "dictionary_code.txt"),
("dictionary.txt", "dictionary_en-GB_to_en-US.txt"),
+ ("dictionary.txt", "dictionary_en_to_en-OX_AUTOGENERATED.txt"),
("dictionary.txt", "dictionary_names.txt"),
("dictionary.txt", "dictionary_rare.txt"),
("dictionary.txt", "dictionary_usage.txt"),
("dictionary_code.txt", "dictionary_rare.txt"),
+ ("dictionary_code.txt", "dictionary_en_to_en-OX_AUTOGENERATED.txt"),
("dictionary_rare.txt", "dictionary_en-GB_to_en-US.txt"),
+ ("dictionary_rare.txt", "dictionary_en_to_en-OX_AUTOGENERATED.txt"),
("dictionary_rare.txt", "dictionary_usage.txt"),
+ ("dictionary_en-GB_to_en-US.txt", "dictionary_en_to_en-OX_AUTOGENERATED.txt"),
+ ("dictionary_en_to_en-OX_AUTOGENERATED.txt", "dictionary_en-GB_to_en-US.txt"),
+ ("dictionary_en_to_en-OX_AUTOGENERATED.txt", "dictionary_rare.txt"),
+ ("dictionary_en_to_en-OX_AUTOGENERATED.txt", "dictionary_code.txt"),
}
@@ -296,8 +304,8 @@ def test_error_checking_in_aspell(
@pytest.mark.dependency(name="dictionary loop")
def test_dictionary_looping(
fname: str,
- in_aspell: Tuple[bool, bool],
- in_dictionary: Tuple[bool, bool],
+ in_aspell: tuple[bool, bool],
+ in_dictionary: tuple[bool, bool],
) -> None:
"""Test that all dictionary entries are valid."""
this_err_dict = {}
@@ -329,8 +337,8 @@ def test_dictionary_looping(
global_pairs.add(pair)
for other_fname, other_err_dict in global_err_dicts.items():
# error duplication (eventually maybe we should just merge?)
- for err in this_err_dict:
- assert err not in other_err_dict, (
+ for err, fix in this_err_dict.items():
+ assert err not in other_err_dict or fix == other_err_dict[err], (
f"error {err!r} in dictionary {short_fname} "
f"already exists in dictionary {other_fname}"
)
diff --git a/pyproject.toml b/pyproject.toml
index c07ab9601b..58bc385343 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,14 +4,13 @@
name = "codespell"
description = "Fix common misspellings in text files"
readme = { file = "README.rst", content-type = "text/x-rst" }
-requires-python = ">=3.8"
-license = {text = "GPL-2.0-only"}
+requires-python = ">=3.9"
+license = "GPL-2.0-only"
authors = [
{name = "Lucas De Marchi", email = "lucas.de.marchi@gmail.com"},
]
classifiers = [
"Intended Audience :: Developers",
- "License :: OSI Approved",
"Programming Language :: Python",
"Topic :: Software Development",
"Operating System :: Microsoft :: Windows",
@@ -21,7 +20,6 @@ classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
- "Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
@@ -67,7 +65,7 @@ repository = "https://github.com/codespell-project/codespell"
[build-system]
build-backend = "setuptools.build_meta"
-requires = ["setuptools>=64", "setuptools_scm[toml]>=6.2, != 8.0.0"]
+requires = ["setuptools>=77", "setuptools_scm[toml]>=6.2, != 8.0.0"]
[tool.setuptools_scm]
write_to = "codespell_lib/_version.py"
@@ -137,6 +135,7 @@ select = [
]
ignore = [
"B904",
+ "PLC0415",
"PLR0914",
"PLR6201",
"PLW2901",
@@ -144,7 +143,6 @@ ignore = [
"S404",
"SIM105",
"SIM115",
- "UP038", # https://github.com/astral-sh/ruff/issues/7871
# https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules
"W191",
"E111",
@@ -173,4 +171,4 @@ allow-magic-value-types = ["bytes", "int", "str",]
max-args = 13
max-branches = 48
max-returns = 12
-max-statements = 119
+max-statements = 120
diff --git a/tools/gen_OX.sh b/tools/gen_OX.sh
new file mode 100755
index 0000000000..6c45efe18f
--- /dev/null
+++ b/tools/gen_OX.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+one_of() {
+ LIST="$*"
+ echo '\(\('"${LIST// /\\)\\|\\(}"'\)\)'
+}
+
+SUFFIXES=(
+ "ize"
+ "izes"
+ "izer"
+ "izable"
+ "ized"
+ "izing"
+ "izement"
+ "ization"
+ "izations"
+)
+PAT1="$(one_of "${SUFFIXES[@]}")$"
+
+# choose US for these ones
+EXCEPTIONS=(
+ 'defenc'
+ 'focuss'
+)
+PAT2="^$(one_of "${EXCEPTIONS[@]}")"
+
+# these one should be left out
+IGNORE=(
+ 'storey'
+ 'practise'
+ 'programme'
+ 'licence'
+ 'metre'
+)
+PAT3="^$(one_of "${IGNORE[@]}")"
+
+(
+ grep -e "$PAT1" -e "$PAT2" "$1" | grep -v "$PAT3" | grep -v '^\(colouris\)\|\(favouris\)'
+ for i in e es ed ing ation ations er able; do
+ echo "colouris$i->colouriz$i"
+ echo "coloriz$i->colouriz$i"
+ done
+ for i in e es ed ing able; do
+ echo "favouris$i->favouriz$i"
+ echo "favoriz$i->favouriz$i"
+ done
+ grep -v -e "$PAT1" -e "$PAT2" "$1" | grep -v "$PAT3" | sed 's/^\(.*\)->\(.*\)$/\2->\1/'
+) | sort -f -t- -k 1b,1
diff --git a/tox.ini b/tox.ini
index 2876ddeffe..6e0850475b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -2,6 +2,12 @@
min_version = 4.0
env_list = unitest,type,dictionaries
+[testenv:dictionaries]
+description = run dictionary checks
+skip_install = true
+allowlist_externals = make
+commands = make check-dictionaries
+
[testenv:unitest]
description = run unit tests
extras = dev
@@ -11,9 +17,3 @@ commands = pytest --cov=codespell_lib codespell_lib
description = run type checks
extras = types
commands = mypy codespell_lib
-
-[testenv:dictionaries]
-description = run dictionary checks
-skip_install = true
-allowlist_externals = make
-commands = make check-dictionaries