Skip to main content

Source Code Spelling Correction

Project description

typos

Source code spell checker

Finds and corrects spelling mistakes among source code:

  • Fast enough to run on monorepos
  • Low false positives so you can run on PRs

Screenshot

codecov Documentation License Crates Status

Dual-licensed under MIT or Apache 2.0

Documentation

Install

Download a pre-built binary (installable via gh-install).

Or use rust to install:

cargo install typos-cli

Or use Homebrew to install:

brew install typos-cli

Or use Conda to install:

conda install typos

Or use Pacman to install:

sudo pacman -S typos

Getting Started

Most commonly, you'll either want to see what typos are available with

typos

Or have them fixed

typos --write-changes
typos -w

If there is any ambiguity (multiple possible corrections), typos will just report it to the user and move on.

False-positives

Sometimes, what looks like a typo is intentional, like with people's names, acronyms, or localized content.

To mark a word or an identifier (grouping of words) as valid, add it your _typos.toml by declaring itself as the valid spelling:

[default]
extend-ignore-identifiers-re = [
    # *sigh* this just isn't worth the cost of fixing
    "AttributeID.*Supress.*",
]

[default.extend-identifiers]
# *sigh* this just isn't worth the cost of fixing
AttributeIDSupressMenu = "AttributeIDSupressMenu"

[default.extend-words]
# Don't correct the surname "Teh"
teh = "teh"

For cases like localized content, you can disable spell checking of file contents while still checking the file name:

[type.po]
extend-glob = ["*.po"]
check-file = false

(run typos --type-list to see configured file types)

If you need some more flexibility, you can completely exclude some files from consideration:

[files]
extend-exclude = ["localized/*.po"]

Integrations

Custom

typos provides several building blocks for custom native integrations

  • - reads from stdin, --write-changes will be written to stdout
  • --diff to provide a diff
  • --format json to get jsonlines with exit code 0 on no errors, code 2 on typos, anything else is an error.

Examples:

# Read file from stdin, write corrected version to stdout
typos - --write-changes
# Creates a diff of what would change
typos dir/file --diff
# Fully programmatic control
typos dir/file --format json

Debugging

You can see what the effective config looks like by running

typos --dump-config -

You can then see how typos is processing your project with

typos --files
typos --identifiers
typos --words

If you need to dig in more, you can enable debug logging with -v

FAQ

Why was ... not corrected?

Does the file show up in typos --files? If not, check your config with typos --dump-config -. The [files] table controls how we walk files. If you are using files.extend-exclude, are you running into #593? If you are using files.ignore-vcs = true, is the file in your .gitignore but git tracks it anyways? Prefer allowing the file explicitly (see #909).

Does the identifier show up in typos --identifiers or the word show up in typos --words? If not, it might be subject to one of typos' heuristics for detecting non-words (like hashes) or unambiguous words (like words after a \ escape).

If it is showing up, likely typos doesn't know about it yet.

typos maintains a list of known typo corrections to keep the false positive count low so it can safely run unassisted.

This is in contrast to most spell checking UIs people use where there is a known list of valid words. In this case, the spell checker tries to guess your intent by finding the closest-looking word. It then has a gauge for when a word isn't close enough and assumes you know best. The user has the opportunity to verify these corrections and explicitly allow or reject them.

For more on the trade offs of these approaches, see Design.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

typos-1.27.3.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

typos-1.27.3-py3-none-win_amd64.whl (2.6 MB view details)

Uploaded Python 3 Windows x86-64

typos-1.27.3-py3-none-win32.whl (2.4 MB view details)

Uploaded Python 3 Windows x86

typos-1.27.3-py3-none-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded Python 3 musllinux: musl 1.2+ x86-64

typos-1.27.3-py3-none-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded Python 3 musllinux: musl 1.2+ ARM64

typos-1.27.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

typos-1.27.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (3.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ i686

typos-1.27.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

typos-1.27.3-py3-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3 macOS 11.0+ ARM64

typos-1.27.3-py3-none-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded Python 3 macOS 10.12+ x86-64

File details

Details for the file typos-1.27.3.tar.gz.

File metadata

  • Download URL: typos-1.27.3.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for typos-1.27.3.tar.gz
Algorithm Hash digest
SHA256 971948dcb8658ca54a9540eeb3e98e70fde0567be270211ea777e6a48f097a0d
MD5 5d003fbc1662638ba1eac924aa964b06
BLAKE2b-256 1993a26a423fa5d9feaee0f10f1b5ed5ba1629a9cbf311e56498033ec7732441

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-win_amd64.whl.

File metadata

  • Download URL: typos-1.27.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for typos-1.27.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 29cda6c1d3e68f419ee31b60f23e4c66bfa3be9e30e5df72df24566289da2852
MD5 96ad14b94efcbfe145052484a6e2a82a
BLAKE2b-256 9a4061626f683fabb0778553ee5e5d489c48c820064c3470389251e79fa64f81

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-win32.whl.

File metadata

  • Download URL: typos-1.27.3-py3-none-win32.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for typos-1.27.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 f48ab60939701ca4cb5749fea9654184a6bdb6a80a715f7bf7894bd434983ee8
MD5 271f30f226cf0a82f149af35463b8509
BLAKE2b-256 3fef9ac8bd186ecb304e5e43d4000dee362d3eb637f1215abbd2fa79155149c9

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for typos-1.27.3-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 360faa9967ca60685f403db564005117223cae7611325202f6c7c5cdd9dae57c
MD5 df63e87521cfc85b1adafdafdc2978ca
BLAKE2b-256 b6c84d4fc0785f489b811824da905905bc10d4f5ae95cdc384cda1c41f9b8730

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for typos-1.27.3-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cb6e7358da27be68fdd668f8cce15e5528349914384935fbfc321973764f493a
MD5 d5034d1640c14fb7d5bb5a603b4872ab
BLAKE2b-256 ca6e0bdf03999a7e966ca93f559ff3987bf7ac6906b588fa80764b7565a57029

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for typos-1.27.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cbdf22be5af91a6c7e6861d39e2ade680995d8ae8d8a0d2926a176da02dbd953
MD5 0f41143495fe6a9ef1f1435d1527df29
BLAKE2b-256 5da12fae2db480b9a5066dec7e07d8dc7ae4d89da0b037b39bfd18419d84e234

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for typos-1.27.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c45235fdd7a3feef0e9760e1ecb3a1decb59daa16bbb8b66e1eba42cf6db001e
MD5 26281ff494d8b16198893b2603adbd2d
BLAKE2b-256 a8fd48bcfd63bafd17b7c87215dd45e2feb539f75bdc80038951ca1274740556

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for typos-1.27.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a0adb86304e661e5e1a19f3cf5a7b45e424213373d548c71b7b066ba3bc50fce
MD5 324c1f129abc38638289bc3d78ffcf76
BLAKE2b-256 ed518ec8b4c3ecb5616c25865f3e75f77b979ee320455bcd7ae22928ec10791b

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for typos-1.27.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04b065ee1e543d93dbee0fd9983aecc6510eee13864127782965e6ba9f117af2
MD5 0cbf7afa268b549ff8544256bba55e2f
BLAKE2b-256 bf173285b1bc6484a453bddad48fedd07a74d7caa0d8404ba0d0ead01c4b7585

See more details on using hashes here.

File details

Details for the file typos-1.27.3-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for typos-1.27.3-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 baded84708fb2a26af211f5b3b254cac57fafec00d08b5a0e6fef028265207de
MD5 783061385801690a702c0897117a6af2
BLAKE2b-256 71c7c7fd35cacd427248cc22469d34a116a4b10d2fe8f10dfb17b0478f4f6896

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page