Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

plain-parser

Python parser for ***plain specification files.

Reads a .plain module and its import / requires chain, resolves Liquid templates, validates concepts and linked resources, and returns the marshalled specification tree plus the ordered list of functionalities (FRIDs).

Install

pip install plain-parser

Usage

Validate a module and its requires chain from the command line (<file>: OK and exit 0 when valid; Error: … on stderr and exit 1 otherwise):

plain-parser check my_spec.plain [--template-dir DIR] [--config-name NAME]

Modules and {% include %} templates are looked up in the .plain file's directory, then in --template-dir. When --template-dir is not given, it is read from the template-dir key of config.yaml (or the file named by --config-name), found next to the .plain file or in the working directory. Finding it in both is a usage error (exit 2). The config file is read even when --template-dir is given, so a malformed one fails the run either way. Other config keys are ignored.

Or from Python:

from plain_parser import plain_file_parser

module_name, plain_source_tree, required_modules = plain_file_parser("my_spec.plain", ["."])

plain_source_tree is a dict keyed by section (definitions, implementation reqs, test reqs, functional specs), each a list of {"markdown": ..., "linked_resources": [...]} entries. plain_parser.plain_spec has helpers for walking functionalities (get_frids, get_specifications_for_frid, collect_linked_resources).

Development

uv venv --python 3.11 && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
black . --check && isort . --check-only && flake8 . && mypy src

License

MIT, see LICENSE.

About

Python parser for ***plain specification files.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages