Skip to main content
Archived

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 parse
      • filename: Name to use for error reporting
      • search_paths: List of paths to search for included files
      • embed_path: Path used to search for embedded files
    • Returns: The root of the abstract syntax tree
    • Raises:
      • MetaphorParserError: If there are syntax errors
      • FileNotFoundError: 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 parse
      • search_paths: List of paths to search for included files
    • Returns: The root of the abstract syntax tree
    • Raises:
      • MetaphorParserError: If there are syntax errors
      • FileNotFoundError: 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 AST
  • TEXT (1): Text content node
  • ROLE (2): Role definition node
  • CONTEXT (3): Context definition node
  • ACTION (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 description
    • filename: str: File where error occurred
    • line: int: Line number of error
    • column: int: Column number of error
    • input_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)

Source distribution for m6rclib 0.6.1
File Size Uploaded Provenance
m6rclib-0.6.1.tar.gz 81.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for m6rclib 0.6.1
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page