This project has been archived by its maintainers, and is no longer receiving any updates.
m6rclib API Documentation
m6rclib is a Python package that provides a parser and prompt compiler for the Metaphor language, a structured text format for defining roles, contexts, and actions.
Installation
pip install m6rclib
Basic Usage
from m6rclib import MetaphorParser
# Create a parser instance
parser = MetaphorParser()
# Parse a Metaphor string
input_text = """
Role:
You are a helpful assistant.
Context:
The user needs help with Python.
Action:
Provide clear Python examples.
"""
# Parse the input with search paths for Include: directives
syntax_tree = parser.parse(input_text, "example.m6r", ["/path/to/includes"])
Core Classes
MetaphorParser
The main class for parsing Metaphor documents.
Methods
-
parse(input_text: str, filename: str, search_paths: List[str], embed_path: Optional[str]) -> MetaphorASTNode- Parses a string containing Metaphor content
- Args:
input_text: The Metaphor content to parsefilename: Name to use for error reportingsearch_paths: List of paths to search for included filesembed_path: Path used to search for embedded files
- Returns: The root of the abstract syntax tree
- Raises:
MetaphorParserError: If there are syntax errorsFileNotFoundError: If a required file cannot be found
-
parse_file(filename: str, search_paths: List[str]) -> MetaphorASTNode- Parses a Metaphor file
- Args:
filename: Path to the file to parsesearch_paths: List of paths to search for included files
- Returns: The root of the abstract syntax tree
- Raises:
MetaphorParserError: If there are syntax errorsFileNotFoundError: If the file cannot be found
MetaphorASTNode
Represents a node in the abstract syntax tree (AST).
Properties
-
node_type: MetaphorASTNodeType- The type of the node
- Read-only
-
value: str- The raw text value of the node
- Read-only
-
parent: Optional[MetaphorASTNode]- The parent node, if any
- Read-only
-
children: List[MetaphorASTNode]- The node's child nodes (returns a shallow copy)
- Read-only
Methods
-
attach_child(child: MetaphorASTNode) -> None- Adds a child node to this node
- Args:
child: The node to attach as a child
-
detach_child(child: MetaphorASTNode) -> None- Removes a child node from this node
- Args:
child: The node to detach
- Raises:
ValueError: If the node is not a child of this node
-
get_children_of_type(self, node_type: MetaphorASTNodeType) -> List['MetaphorASTNode']- Returns a list of all immediate children that match the specified node type.
- Args:
node_type (MetaphorASTNodeType): The type of nodes to filter for
- Returns:List of child nodes matching the specified type
MetaphorASTNodeType
An enumeration of possible AST node types.
Values
ROOT (0): Root node of the ASTTEXT (1): Text content nodeROLE (2): Role definition nodeCONTEXT (3): Context definition nodeACTION (4): Action definition node
Formatting Functions
Helper functions for formatting nodes and errors.
-
format_ast(node: MetaphorASTNode) -> str- Format an AST node and its children as a string
- Args:
node: The root node to format
- Returns: Formatted string representation of the AST
-
format_errors(errors: List[MetaphorParserSyntaxError]) -> str- Format a list of syntax errors as a string
- Args:
errors: List of syntax errors to format
- Returns: Formatted error string with each error on separate lines
Exceptions
MetaphorParserError
Main exception wrapper for parser errors.
- Attributes:
errors: List[MetaphorParserSyntaxError]: List of syntax errors encountered
MetaphorParserSyntaxError
Detailed syntax error information.
- Attributes:
message: str: Error descriptionfilename: str: File where error occurredline: int: Line number of errorcolumn: int: Column number of errorinput_text: str: Input line containing error
File Format
Metaphor files use the following format:
Role:
Description of the role
Additional role details
Context:
Description of the context
Context details
Context: Subsection
More detailed context information
Action:
Description of the action
Step-by-step actions to take
Special Directives
-
Include: filename- Includes another Metaphor file
- File is searched for in the provided search paths
-
Embed: pattern- Embeds the contents of matching files
- Supports glob patterns
- Use
**/for recursive matching
Metadata
Release files for m6rclib 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| m6rclib-0.6.1.tar.gz | 81.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| m6rclib-0.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 104.6 kB
Release files / m6rclib-0.6.1.tar.gz
| Download URL | m6rclib-0.6.1.tar.gz |
|---|---|
| Size | 81.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dd262d9a946e0523b77d53fae20bfa5b10ddd8b01aa6d57c32a78781a833c4cd
|
|
BLAKE2b-256 checksum How to use checksums |
0a6c512c3a61fc916e88e2a59226de036a586160da8b38cbb427060be278939a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.1
|
Release files / m6rclib-0.6.1-py3-none-any.whl
| Download URL | m6rclib-0.6.1-py3-none-any.whl |
|---|---|
| Size | 23.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f4948c1e51fa41c5d6f108896d1ba68db7108a2fee2af8aae4e596be32647f8c
|
|
BLAKE2b-256 checksum How to use checksums |
548177dab95f39039bb16af4f5a35951534f7ccc54e0cc56974dfdbf5e2a647b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.1
|
Security for m6rclib 0.6.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.