Skip to main content

dslop

Detect AI writing patterns (slop) in your codebase.

dslop is a fast CLI linter for prose. It flags telltale LLM writing patterns (em-dashes, double-hyphen dashes, "it's not X, it's Y" constructions) and statistical tells (uniform sentence rhythm, flat word-frequency distributions) that human writing rarely produces.

Install

pip install dslop
# or
uvx dslop .

Use

dslop                       # check current directory
dslop README.md docs/       # check specific paths
dslop --config dslop.toml   # use a specific config

# Read from stdin:
echo "It's not a tool — it's a platform." | dslop -
pbpaste | dslop                                         # clipboard
git show HEAD:README.md | dslop                         # a past revision

Exits non-zero on violations, so it drops into CI or pre-commit unchanged.

Pre-commit

repos:
  - repo: https://github.com/prefectlabs/dslop
    rev: v0.1.0
    hooks:
      - id: dslop

Configure

Create dslop.toml at your repo root:

[patterns]
em-dash = true
double-hyphen = true
contrastive = true
demonstrative-is = true
filler-adverbs = true          # quietly, actually, really, simply, essentially, ...
weasel-connectives = true      # which means, in turn, the reality is, ...
banned-flourish = true         # worth noting, to be clear, at the end of the day, ...
banned-negation = true         # "not" / "n't"
negation-pair = true           # "not X, not Y"
symmetric-negation = true      # "fine if X, wrong if Y" / "not X but Y"
which-chain = true             # 3+ "which" in a single sentence
but-opener = true              # short sentences starting with "But"
aphorism = true                # "X does not Y." one-liners
summary-capstone = true        # paragraph-final "That is the X."
declarative-callback = true    # paragraph-final fragment callbacks
three-beat = true              # 3 consecutive short sentences in a paragraph

[metrics]
sentence-length-cv = 0.3
sentence-length-kurtosis = 1.5

[metrics.word-freq-dispersion]
threshold = 0.6
chunk-size = 200
top-n = 20

Each metric accepts a threshold (f64) or false to disable.

License

Apache-2.0. See LICENSE.

Metadata

Release files for dslop 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dslop 0.2.2
File Size Uploaded Provenance
dslop-0.2.2.tar.gz 181.8 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for dslop 0.2.2
File
dslop-0.2.2-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
dslop-0.2.2-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
dslop-0.2.2-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
dslop-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
dslop-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
dslop-0.2.2-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
dslop-0.2.2-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 8.4 MB

Release files / dslop-0.2.2.tar.gz

Download URL dslop-0.2.2.tar.gz
Size 181.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e9a1b396939431af10cc9e173805f07bebdc03a6e0688b89e9c60004168bd772
BLAKE2b-256 checksum
How to use checksums
cd5275955c5c092bf45988049335f8cbaa955369946ed4e561c5fad372422d4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Release files / dslop-0.2.2-py3-none-win_amd64.whl

Download URL dslop-0.2.2-py3-none-win_amd64.whl
Size 1.1 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
a0a5e7aeb2298fede2efbf83b60fa98b6c40484d298329e0efef8eb6786e58ab
BLAKE2b-256 checksum
How to use checksums
9df140e3e277fd0e586aca9534fd9021144385d4ffc372f32d8acf30b0304cf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Release files / dslop-0.2.2-py3-none-musllinux_1_2_x86_64.whl

Download URL dslop-0.2.2-py3-none-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
ddfa878d08ec3c4033a986e8525159b2197ead9fc99464c3b4326be32b7b0945
BLAKE2b-256 checksum
How to use checksums
3474d6466396787ffd6fe5a119a8eb1e373532aef6641a8ce7660a4060c00991
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Release files / dslop-0.2.2-py3-none-musllinux_1_2_aarch64.whl

Download URL dslop-0.2.2-py3-none-musllinux_1_2_aarch64.whl
Size 1.2 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
6a49a5803857f9ad2e04daca289ed3e21794aa29add85e1fdfd6f4fc6d301dac
BLAKE2b-256 checksum
How to use checksums
e0a4868bbf8992c1f862c8cf5d15db4725deadeb4b0a5bb905d459dba106ab2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Release files / dslop-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL dslop-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.2 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
68f5feb2cb199a0098c986263f5a2825154ecb3fdbef73f31f66c77b966dfe6b
BLAKE2b-256 checksum
How to use checksums
8f5ccfde2cda9f10292c5fab8d9b603d7b2e09afa11aca65f91acd801274ce46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Release files / dslop-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL dslop-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.1 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
f79038e556ff8c044973c4b2b374d831557ea73717fe1b46b7658bc27cb6ba0c
BLAKE2b-256 checksum
How to use checksums
78c0321fccf567763dcfe31cb94d8e59b733ede955b552160736019bbf61d0c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Release files / dslop-0.2.2-py3-none-macosx_11_0_arm64.whl

Download URL dslop-0.2.2-py3-none-macosx_11_0_arm64.whl
Size 1.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9d1493cbb7c806c8ecebee572734350b8c9985c55d47480d92db458be68e4d87
BLAKE2b-256 checksum
How to use checksums
5e6f854815f39c0cb7661fdbfbb44fd1be96abc5a445577753026914d31612b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Release files / dslop-0.2.2-py3-none-macosx_10_12_x86_64.whl

Download URL dslop-0.2.2-py3-none-macosx_10_12_x86_64.whl
Size 1.2 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
696e3448b03d521325aa5713f5843f4b98116a99f31afee713b75077d910d714
BLAKE2b-256 checksum
How to use checksums
485f9af58b91f74407ba5f7d085ba0979dfb91155818e91c3ccebc20bdd30af4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.13.1

Security for dslop 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page