A library for extracting metadata out of a source repository.
Project description
repo-parser
This is a set of python scripts and tools for extracting metadata and structure out of a monorepo, for the purposes of generating a service registry, unified documentation, or other types of data out of the contents. It also contains some tooling designed around a new concept called "Implementation Decision Records" (idrs), designed to aid both implementation (especially where assisted by LLMs) and later code archaeology efforts.
It should be considered an experiment, rather than production software. It is inspired by my experiences in the software industry and being frustrated with current solutions being some combination of:
- Time consuming to configure and maintain
- Requiring the specification of redundant metadata (which is bound to get out of date)
Current assumptions:
- The files you want to process fit into memory
- You don't care about history (repo-parser gives a snapshot in time)
You can see a demo of a documentation site generated from this repo at:
https://repo-parser-demo.netlify.app/
[!NOTE] repo-parser is partly created with LLMs (specifically, Claude Code and ChatGPT), with heavy human curation.
Usage
Creating IDRs (Implementation Decision Records)
repo-parser includes a CLI tool (rp) for creating Implementation Decision Records (IDRs). IDRs are lightweight documents that capture both the intent and implementation details of code changes, designed to be committed alongside your code.
They are intended to be useful for both humans and computational agents (LLMs).
Why IDRs? Traditional design docs are too heavyweight for implementation. ADRs are great for decisions but lack implementation detail. IDRs bridge the gap—detailed enough to guide implementation, ephemeral enough to not become stale documentation.
Create a new IDR:
rp idr new "Your Feature Title"
This will create a new markdown file in the idrs/ directory with:
- A UTC timestamp prefix (e.g.,
202512301600) - A slugified version of your title
- Pre-filled template with your git author name
Example:
rp idr new "Add last modified metadata"
# Creates: idrs/202512301600-add-last-modified-metadata.md
The IDR template includes sections for:
- Problem Statement
- Context
- Goals and Non-Goals
- Proposed Solution
- Detailed Design
- Implementation notes (ephemeral)
This feature was itself implemented using an IDR—see idrs/202512301631-idrs.md for more about the IDR format and philosophy.
Using repo-parser as a Library
For documentation generation and metadata extraction, see the example in example/example_parser.py.
An early version of repo-parser is available on pypi as https://pypi.org/project/repo-parser. Use at your own risk!
Local development
You can experiment with the local demo by running make example.
It should live-reload as you make changes in the example/repo directory.
For other tasks, look at the (very simple) Makefile in the root directory.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repo_parser-0.0.3.tar.gz.
File metadata
- Download URL: repo_parser-0.0.3.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cef7f316a1986c50f910092d7bc69fe8f9320148f7bbf112af5da2642b0ed91
|
|
| MD5 |
4ff6d73042326b6bd1f1f6a299658f18
|
|
| BLAKE2b-256 |
69c9d15b5939bc47bb184b3d38b6e74f072b3bb9e3fe699ea26c512d6f6bef89
|
Provenance
The following attestation bundles were made for repo_parser-0.0.3.tar.gz:
Publisher:
publish-to-pypi.yml on wlach/repo-parser
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_parser-0.0.3.tar.gz -
Subject digest:
8cef7f316a1986c50f910092d7bc69fe8f9320148f7bbf112af5da2642b0ed91 - Sigstore transparency entry: 803458387
- Sigstore integration time:
-
Permalink:
wlach/repo-parser@afff121f5b5188997c8f1507c7b6df7a64e890be -
Branch / Tag:
refs/tags/0.0.3 - Owner: https://github.com/wlach
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@afff121f5b5188997c8f1507c7b6df7a64e890be -
Trigger Event:
release
-
Statement type:
File details
Details for the file repo_parser-0.0.3-py3-none-any.whl.
File metadata
- Download URL: repo_parser-0.0.3-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6058db4ff0d8cef0941cf5fca233dcf466dcfcad67f1d51c66f6b6f8542c123
|
|
| MD5 |
29190eb6d0d6665ecab6fd5c282aaffc
|
|
| BLAKE2b-256 |
89d1d12d0ca430d2e3c67eb94621cb023ab416788bdd3b0932bc59e0d80cdc61
|
Provenance
The following attestation bundles were made for repo_parser-0.0.3-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on wlach/repo-parser
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_parser-0.0.3-py3-none-any.whl -
Subject digest:
e6058db4ff0d8cef0941cf5fca233dcf466dcfcad67f1d51c66f6b6f8542c123 - Sigstore transparency entry: 803458424
- Sigstore integration time:
-
Permalink:
wlach/repo-parser@afff121f5b5188997c8f1507c7b6df7a64e890be -
Branch / Tag:
refs/tags/0.0.3 - Owner: https://github.com/wlach
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@afff121f5b5188997c8f1507c7b6df7a64e890be -
Trigger Event:
release
-
Statement type: