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.24.1.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

typos-1.24.1-py3-none-win_amd64.whl (2.5 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

typos-1.24.1-py3-none-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

typos-1.24.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

typos-1.24.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (3.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

typos-1.24.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

typos-1.24.1-py3-none-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

typos-1.24.1-py3-none-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for typos-1.24.1.tar.gz
Algorithm Hash digest
SHA256 16f81284e185f1ef65ff6d7bc1b187b05b77a55382c73186d289495f3a00f627
MD5 4f47e51c3c456e727e473194d84e028b
BLAKE2b-256 2217f37242d9e1144ebbc6898b1af5a6e95b78342c85dd23930523a34f477a64

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for typos-1.24.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f73136cccfd732927b75f6d31dc4408fd21944a9bee18977da056babbd06ceee
MD5 42215a26672a89e3b5ec8029d2e806b2
BLAKE2b-256 103f889b20cbabbb41ff5504eb606d035117ba0ea161887f1e9c9c238b77596b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: typos-1.24.1-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.1

File hashes

Hashes for typos-1.24.1-py3-none-win32.whl
Algorithm Hash digest
SHA256 ccc0026863eaaa62686a0ad259c39c51a908281a4e76a3f5200813f372f45db1
MD5 ae3640d2fa64ad1825580ac44646cb3a
BLAKE2b-256 071e64cda2759cbdcfdf1ada5c9904bbd8601e5b17ea45e0e3d242214121d6fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.24.1-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 112163011f7360448b7514e682e2ae978eba886c26e269725de02abf3faffc63
MD5 e32bcd67f92794765d575349dee6074a
BLAKE2b-256 9601fc9bbfda70c29add2853fbb2053b586abebdbf488142ab004baa2aab89b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.24.1-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e4acf04c1b92c3083eb0f3025e5c4bf19d9ff84ddd3ef60aafa5079e2a2e017e
MD5 0752b0a8bac0abb5578eb192c92b057c
BLAKE2b-256 f3a146185dde55514017e8fb249c6fa2efee7dc4a79febec4014ffd8f00c1227

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.24.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0a55d3f03d9f99a076a6aec3f43bff6d9100529ccb2cd76e69b455fd58b7191
MD5 f28d05a36972fbb527e84f72f8b71926
BLAKE2b-256 28b7d1fddab5779ceb2b872a6e79a3f5151404e32c06212105a60d6c4be61af4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.24.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 42412b7107161743b0ebb9e871ce53f89197e2a4727fb7ba0851db7651919093
MD5 512df891182da4458855326f74dce289
BLAKE2b-256 765f93a8fc0a70acb43172c8592c0dcae705a36ceced4b51b5485b6f49baa2e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.24.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0d1852d248b56c17a15461ae8b50a38cdb960e180542e429a0ce33dbe1132e27
MD5 ee37f88a3e119ded92c2229f3b2cab36
BLAKE2b-256 464792ac4989791a7d2092397d46b22b57c409974c0c1ba78a353b7e50adda54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.24.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 acc675f1fec90e24a17a2627fa6d742bc56d05e3dcca002691b4ed6eab3113a6
MD5 0d27bee34ff29a829463ae1d9f0e98ab
BLAKE2b-256 57fa156c64334ab090a168e0354b43c4d728b38edb7112d67692e83878dffa6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.24.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 927336ba9fa62926606226aa3c7b42f20e146988d183d90f90e67ce1dfe9b4b7
MD5 40a79a73bd69a68c05e9e1b502dd4004
BLAKE2b-256 30841691f4a4b5e05783f30e2b2796cf7aef35dc45ff160071a8578abc3c2636

See more details on using hashes here.

Supported by

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