ASCII and character policy checks for text files
Project description
asciilint
Minimal, configurable, CI-friendly character policy checks for text files.
By default, asciilint recursively scans a project and fails when UTF-8
text files contain non-ASCII characters. It can also enforce arbitrary Unicode
allowlists and denylists, so it is useful for broader character policy checks.
Installation
pip install asciilint
With uv:
uv add asciilint
Usage
asciilint .
Example failing output:
> Checking characters in /path/to/project
Files found: 3, 2 text, 0 binary skipped, 1 ignored
Checking text: ✓x
Issues :-(
> Disallowed characters
1. docs/page.md
1. [L012:C018] U+2014 "\u2014" not allowed by policy
Summary: 1 disallowed character(s), 0 read error(s)
Exit code 0 means no issues. Exit code 1 means disallowed characters or
read errors were found.
Configuration
Create asciilint.toml:
[asciilint]
paths = ["."]
respect_gitignore = true
ignore_files = [".asciilintignore"]
allowed_ranges = ["U+0000-U+007F"]
allowed_chars = []
disallowed_ranges = []
disallowed_chars = []
max_issues_per_file = 5
Ignore files use gitignore syntax and are matched with pathspec.
.gitignore is respected by default.
You can add other ignore files, for example:
asciilint . --ignore-file .asciilintignore --ignore-file config/lint.ignore
Character ranges can be written as U+0000-U+007F, 0x20..0x7e, 32-126, or
single code points such as U+00A9. Deny rules take precedence over allow rules.
To allow any Unicode character except a small denylist:
asciilint . --allow-any --disallowed-char "→" --disallowed-range U+2000-U+206F
UTF-8 and binary files
asciilint assumes text files are UTF-8. Files that are classified as text but
cannot be decoded as UTF-8 are reported explicitly and skipped. Binary files are
skipped automatically using the zlib txtvsbin heuristic.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file asciilint-0.1.0.tar.gz.
File metadata
- Download URL: asciilint-0.1.0.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54c6240d0f0b8236f0ae1f2bc482f71eb5f4d21c51803ec19e32bfe57f05e77f
|
|
| MD5 |
3a9c12ab763b21774ed5cf9f72b838cb
|
|
| BLAKE2b-256 |
aea8ba59bd7c02371d48764de1bc4c83cfe7d5662d8a6bbe83708e3a57fc8cf9
|
File details
Details for the file asciilint-0.1.0-py3-none-any.whl.
File metadata
- Download URL: asciilint-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4414f9f97c99b2871d4962eb592ebf0660abda459da78dadad06f4655c92c9c
|
|
| MD5 |
97eff5f00549ae990ea4726ecc250534
|
|
| BLAKE2b-256 |
e1bed7db4e1d05f2779e1aeebfee69d4f572948ae9f76bbe85b684c3a48aaa27
|