Parsley
Parsing and pattern matching made easy.
Decision gist · record as of 2026-08-14
No—unless you are maintaining legacy code already using Parsley. The package is abandoned (last release 2015, no commits since), with no Python version guarantee and no active maintenance. For new projects, use maintained PEG parsers like pyparsing or lark, which offer similar readability with ongoing support and bug fixes.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Installation is straightforward with no runtime dependencies.
- However, the package is abandoned—last released in 2015 with no commits or maintenance signals since.
- Use only if you accept that bugs and compatibility issues will not be addressed.
License · maintenance · safety
MIT License (permissive) — MIT License permits commercial and private use, modification, and distribution with minimal restrictions, making it legally safe to adopt from a licensing perspective.
last release 2015-09-09 (3992 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,344,853 downloads/mo, #4,025 on PyPI
Alternatives
Verify before relying
from parsley import makeGrammar
grammar = """
ones = '1' '1' -> 1
twos = '2' '2' -> 2
stuff = (ones | twos)+
"""
Example = makeGrammar(grammar, {})
g = Example("11221111")
result = g.stuff()- Whether Parsley remains compatible with current Python versions (no requires_python specified in metadata)
- Whether the OMeta semantics and PEG algorithm implementation are suitable for your specific parsing task
- Community forks or maintained alternatives that may have addressed issues since 2015
What it is and what it does
Parsley is a parsing library that implements OMeta, an object-oriented pattern-matching language. Instead of using traditional parser generators like yacc or ANTLR that compile to state machine tables, Parsley uses the PEG (Parsing Expression Grammar) algorithm, where each grammar rule reads like a Python expression. You define rules using a readable syntax—sequences, alternatives, repetition, lookahead, and embedded Python actions—then call makeGrammar() to compile them into a Python class with methods for each rule.
The library is designed for developers who find traditional parser generators intimidating or cumbersome. Rules are evaluated in order (unlike table-driven parsers), and you can bind values, call other rules, and execute Python expressions directly within the grammar. It trades the power of LR parsing for simplicity and readability, making it suitable for domain-specific languages, configuration formats, and other structured text parsing tasks where the grammar fits the PEG model.
Use it for
- Parse domain-specific languages or configuration file formats where PEG semantics are sufficient
- Build simple expression evaluators or query languages with embedded Python actions
- Tokenize and structure text when traditional regex or string splitting is too rigid
- Prototype parsers quickly without learning yacc, bison, or ANTLR state machine concepts
- Define grammar rules that read naturally as Python-like expressions for team readability
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
No—unless you are maintaining legacy code already using Parsley.
The package is abandoned (last release 2015, no commits since), with no Python version guarantee and no active maintenance. For new projects, use maintained PEG parsers like pyparsing or lark, which offer similar readability with ongoing support and bug fixes.
Install
parsley on PyPI
Before you install
Installation is straightforward with no runtime dependencies. However, the package is abandoned—last released in 2015 with no commits or maintenance signals since. Use only if you accept that bugs and compatibility issues will not be addressed.
License in practice
MIT License permits commercial and private use, modification, and distribution with minimal restrictions, making it legally safe to adopt from a licensing perspective.
Quickstart
from parsley import makeGrammar
grammar = """
ones = '1' '1' -> 1
twos = '2' '2' -> 2
stuff = (ones | twos)+
"""
Example = makeGrammar(grammar, {})
g = Example("11221111")
result = g.stuff()
Verify before relying
- Whether Parsley remains compatible with current Python versions (no requires_python specified in metadata)
- Whether the OMeta semantics and PEG algorithm implementation are suitable for your specific parsing task
- Community forks or maintained alternatives that may have addressed issues since 2015
Package facts
| License | MIT License permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Abandoned 3,992 days since the last release |
| First released | |
| Downloads | 1,344,853 / month, #4,025 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
Evidence: Parsley-1.3-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “readable parser DSL”
- ParsleyParsley is a PEG-based parsing library that compiles grammar rules…
- einshapeEinshape provides a DSL-based interface for tensor reshaping,…
- textXtextX is a meta-language for building Domain-Specific Languages…
Give your agent the search over MCP, or paste the wish link into any chat.
More Text Processing packages
A drop-in replacement for Python's standard `re` module that adds advanced regex features like nested sets, fuzzy matching, lookaround in conditionals, and full Unicode case-folding while maintaining backward compatibility.
pyparsing provides a library for building text parsers directly in Python code using composable grammar classes, handling quoted strings, whitespace variation, and embedded comments without regex or lex/yacc.
Install it if you need to parse text or define grammars programmatically.
fonttools manipulates font files in multiple formats (TrueType, OpenType, AFM, Type 1, Mac-specific) and includes TTX, a tool to convert fonts to and from XML text format.
Install it if you need to read, write, or manipulate fonts programmatically or via the TTX command-line tool.
Docutils converts plaintext documentation in reStructuredText format into multiple output formats including HTML, XML, and LaTeX using a modular processing system.
RapidFuzz provides fast fuzzy string matching using Levenshtein Distance and related metrics, implemented mostly in C++ with Python bindings for rapid similarity scoring and approximate string matching.
Install it if you need fuzzy string matching; it's a solid replacement for FuzzyWuzzy with better licensing and performance.
tinycss2 parses CSS strings into token and block objects, and generates CSS strings from those objects, following the CSS Syntax Level 3 specification without enforcing specific properties or values.
Install it if your project requires CSS tokenization or syntax manipulation.
See also PyMeta3 · pyPEG2 · parsimonious · parso · rply · mo-parsing · TatSu · rule-engine · parsy · ply