Registry / testing / atheris

atheris

JSON →
library3.1.0pypypi✓ verified 84d ago

A coverage-guided fuzzer for Python and Python extensions, developed by Google. It integrates with libFuzzer and supports fuzzing Python code and native extensions. Version 3.0.0; released active, follow-on of stable API.

pip install atheris
INSTALL
IMPORT
SIG · ATHERIS
A
atheris
testingpythonv3.1.0
Install
2.5s avg
Import
107ms
Disk
148MB
Pass rate
3/ 10
Env Coverage3 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v3.0.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✕ build_error
✕ build_error
py 3.11
✕ build_error
✓ 2.4s
py 3.12
✕ build_error
✓ 2.4s
py 3.13
✕ build_error
✓ 2.6s
py 3.9
✕ build_error
✕ build_error
148MB installed
● package 148MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

atheris
import atheris
Setup
from atheris import Setup
FuzzedDataProvider
from atheris import FuzzedDataProvider
Mutate
from atheris import Mutate
Deprecated in v3; use FuzzedDataProvider instead

Basic fuzzer with FuzzedDataProvider.

import atheris import sys def TestOneInput(data): fdp = atheris.FuzzedDataProvider(data) if len(data) >= 2 and data[0] == ord('b') and data[1] == ord('u'): raise RuntimeError('Bug!') atheris.Setup(sys.argv, TestOneInput) atheris.Fuzz()
Debug
Known issues
deprecatedatheris.Mutate is deprecated in v3. Use FuzzedDataProvider for structured mutation.
fix
Replace any usage of atheris.Mutate with FuzzedDataProvider methods (e.g., ConsumeInt, ConsumeString, etc.).
affects: >=3.0.0
breakingIn v3, the way FuzzedDataProvider is initialized changed. old: atheris.FuzzedDataProvider(data, to_use_bytes) no longer valid.
fix
Instantiate as FuzzedDataProvider(data) and use its methods.
affects: >=3.0.0
gotchaatheris requires a recent C++ compiler and libFuzzer support. It may not install on Windows or older Linux. Use manylinux wheels or compile from source.
fix
On Linux, ensure clang and libfuzzer-dev are installed. For Windows, use WSL.
affects: all
gotchaCorpus directory: if not specified, atheris uses default; but crashes saved to current directory. Ensure write permissions.
fix
Pass a corpus directory to Setup: atheris.Setup(sys.argv, TestOneInput, corpus_prefix='corpus/')
affects: all
breakingIn v2, the TestOneInput function signature was different: it took two arguments (data and size). v3 expects one argument (bytes).
fix
Define TestOneInput(data) with a single parameter.
affects: >=3.0.0
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'atheris'
atheris is not installed or not available for the current platform.
fix
Install with pip install atheris. On Linux, install clang and libfuzzer-dev. On macOS, it works. On Windows, use WSL.
ImportError: cannot import name 'FuzzedDataProvider' from 'atheris'
Version <3.0.0: FuzzedDataProvider was not available. Or using wrong import path.
fix
Upgrade atheris: pip install --upgrade atheris, and use from atheris import FuzzedDataProvider.
TypeError: TestOneInput() takes 2 positional arguments but 3 were given
User defined TestOneInput with two parameters (data, size) but atheris v3 expects one parameter.
fix
Change function signature to TestOneInput(data). Use FuzzedDataProvider to extract size if needed.
RuntimeError: Atheris requires libFuzzer, but it is not available
libFuzzer not found at runtime, typically because compiler not configured with -fsanitize=fuzzer.
fix
Build/install atheris with the correct sanitizer flags. For pip, ensure clang is installed and libfuzzer-dev is present.
Upgrade
Version history
3.1.0latest on PyPI · released Jun 17, 2026
Audit
Dependencies

No dependency data recorded yet.

Agent activity
18 hits · last 30 days
node
14
OpenAI (training)
1
Resources
atheris — pip install atheris · libregistry