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.26.8.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.26.8-py3-none-win_amd64.whl (2.5 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: typos-1.26.8.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.26.8.tar.gz
Algorithm Hash digest
SHA256 b750d19531f6299d1c88d09af8db6998a5d92c2cca039220773140b3eb887cf3
MD5 74a88fb102273fc3cc039ce7703a0361
BLAKE2b-256 92649f13aeaf33f0ea40681508151bb3393d1d6461bceab70bd695c4ebbd4ce8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: typos-1.26.8-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.4

File hashes

Hashes for typos-1.26.8-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3da10e7560856a042de65b099f5f9bc846f3545ae3b121172872a533bea69e06
MD5 51391d3031b6ed4e69b1c387c0c83227
BLAKE2b-256 983061a936a904d99b67830cbed4f168102547fe687cac22acdb6d8a32c1b36b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: typos-1.26.8-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.26.8-py3-none-win32.whl
Algorithm Hash digest
SHA256 b7282faf0504dd5a1484c0edbaa7daf5b2965e264d92dd1754161691fd77ed29
MD5 9c256b1c8d44b78c4662dcbc4087ce32
BLAKE2b-256 556be1711105f6e2c2b8520224d7958f8c0d2479b85d83f5cc5f4648c0323c1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.26.8-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 77006a3246d749d7fc0e46c35075607cd94b0fc64d19797ed840e6009fad5379
MD5 84d7a9212e026bd77aab5815b03fe4c1
BLAKE2b-256 c4a7a45ebf25850da3cba1abbaa4735958a52f006d25600d842fc1cd5475510b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.26.8-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 34eb03b2ab984ec2e3f59f16994b7c9f7bc9f8af3d0b013e9d344ebf59018df6
MD5 2baec05ede1eff4fbc96dde96c01289c
BLAKE2b-256 c4e45d39b6c0bbe94f938f2156472799c60e7bad384d78b40ceef4ea381f09cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.26.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 985af8d669dd2fa124fc180de57ca82a5138d6ee49827784605c4717d0609105
MD5 ddbd7882f72f63fe2679b52f06b51a7b
BLAKE2b-256 70c272da48ec76ac693fba2087def4aeed0e19facbe61713f03faa83aa066125

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.26.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a926bc4b2ba76eda508da0d1f46eeaf4f1446cffff5cb0721aa0246e7d20654f
MD5 edf418d5ac843236f5ad890fd7ce732b
BLAKE2b-256 12ebcc320d11f77913a345b0a7d2ff682f56f467585e483fb37e3dedf8d3b909

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.26.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 526514dda6ac262626226ad0adbe7388c2a690c0ba972118c2c3eb245cf12e10
MD5 38cb3048e40e968686a6aed126ff7f8c
BLAKE2b-256 053e9abdb26cebe1091e2cf83627a54a555633a4aa375ed3982d4afce3159cbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.26.8-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d9769ec255ef3291fcfadc2d270773f6491eeaf0f3120e370ccdb08d218e600
MD5 83caa4ebe8b0d2215fdf598c520c2be2
BLAKE2b-256 9429fad80812079127beb9997424ac81c5d8c156eb6ae26f4495f116da46ec59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typos-1.26.8-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 77093a1aa72b3fa34b1914e73d149fa70c02157fbe39bd13d20a0cd64a7b7fdf
MD5 af83a3e6ff73c7ca1322b258934c9505
BLAKE2b-256 522cb31a5be42d4ff91a0a7ba70f299cfc07826992c87a0e75cd7ba81432cf0f

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