perky
A simple, Pythonic file format. Provides load, loads, dump, and
What it is and what it does
Perky is a configuration file format and parser designed as an alternative to INI, TOML, and JSON files. It supports only three data types—strings, dicts (mappings), and lists (sequences)—deliberately leaving type inference to the caller. The parser is written in pure Python and achieves >450k lines per second throughput. Every string parsed via load() carries provenance metadata (file, line, column) through the big.string subclass, allowing your own error messages to point back into the config file with the same precision as Perky's parser errors.
The format is line-oriented and minimal: no quotes required for simple values, optional leading whitespace, comments with #, and a pragma mechanism for extensibility. Perky supports Python 3.6+ and passes its test suite with 100% coverage. The implementation is roughly 1k lines of Python, reducing surface area for bugs. You handle all data transformation yourself—whether by hand, a library like Marshmallow, or custom validation—which aligns with the Zen of Python's principle of refusing to guess at types.
Use it for:
- Parse application configuration files where you want human-readable syntax without JSON's verbosity or TOML's complexity
- Build error messages that point into config files by leveraging big.string provenance to show users exactly where validation failed
- Store nested configuration hierarchies (dicts and lists) without committing to a rigid schema or type system upfront
- Extend config file semantics with custom pragma handlers for domain-specific directives
- Replace hand-rolled INI or simple text parsers in existing Python projects with a standardized, well-tested format
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Perky parses a minimal, human-friendly text file format for configuration and data, returning dicts, lists, and strings with optional provenance tracking via the big library.
Yes. Perky is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a real problem—config file parsing—with a genuinely different philosophy (explicit type handling, provenance tracking). It's suitable for projects that value human-readable config and precise error reporting. Start with it if you're tired of JSON's noise or TOML's complexity and want strings with location metadata. Not a fit if you need automatic type coercion or a mature ecosystem of tooling.
Install
perky on PyPI
pip
pip install perkyuv
uv add perkypoetry
poetry add perkyInstalling perky
Before you install
Low install friction; pure Python wheel. Active maintenance with recent release (29 days old). Single runtime dependency on big.
License in practice
MIT license (permissive); no restrictions on use, modification, or distribution in proprietary or open-source projects.
Quickstart
pip install perky
import perky
config = perky.load('config.pky')
value = config['key']
Verify before relying
- Whether big.string provenance tracking adds meaningful overhead for large config files
- Performance characteristics compared to standard JSON or TOML parsers on typical workloads
- Stability guarantees before 1.0 release (deprecated transformation submodule removal timeline)
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — big |
| Maintenance | actively maintained — 29 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 166,285/month — #10,500 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: perky-0.10-py3-none-any.whl
Tags
More Text Processing packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyparsingpyparsing provides a library for building text…
permissive · top 1,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
RapidFuzzRapidFuzz provides fast fuzzy string matching…
permissive · top 1,000 on PyPI
tinycss2tinycss2 parses CSS strings into token and…
permissive · top 1,000 on PyPI
llama-parseLlamaParse parses complex documents (PDFs,…
permissive · top 1,000 on PyPI
json5Parses and writes JSON5 data format, which…
permissive · top 1,000 on PyPI
hjsonParses and generates Hjson (a human-friendly…
permissive · top 5,000 on PyPI
compact-jsonFormats JSON into compact, human-readable…
permissive · top 5,000 on PyPI
tabulateFormats and prints tabular data in plain text…
permissive · top 1,000 on PyPI
tox-toml-fmtFormats tox.toml files with consistent style…
permissive · top 15,000 on PyPI
iniconfiginiconfig parses INI configuration files while…
permissive · top 100 on PyPI
anyconfigLoads, dumps, and merges configuration files in…
permissive · top 15,000 on PyPI
commented-configparserExtends Python's standard ConfigParser to…
permissive · top 15,000 on PyPI
tomlrtReads and writes TOML files while preserving…
permissive · top 15,000 on PyPI
crudinicrudini is a command-line utility for reading,…
copyleft · top 15,000 on PyPI