Skip to content

Generator

lcp.generator

Generator module for converting scanned data to LCP format.

generate_lcp

generate_lcp(scanned_module: ScannedModule) -> LCPDocument

Generate an LCP document from scanned module data.

Source code in src/lcp/generator.py
def generate_lcp(scanned_module: ScannedModule) -> LCPDocument:
    """Generate an LCP document from scanned module data."""
    # Build manifest
    manifest = Manifest(
        schema_version="1.0",
        library=Library(
            name=scanned_module.name,
            version=scanned_module.version,
            language="python",
        ),
        distribution=Distribution.PYPI,
        generation=Generation(
            tool="lcp",
            version="0.1.0",
            date=datetime.now(timezone.utc),
        ),
        symbol_resolution="fully-qualified",
    )

    # Convert all symbols
    symbols: dict[str, Symbol] = {}
    detailed_index: dict[str, DetailedIndexEntry] = {}

    for scanned in scanned_module.symbols:
        symbol_id, symbol = _convert_symbol(scanned)
        symbols[symbol_id] = symbol

        # Add detailed index if source info available
        index_entry = _build_detailed_index_entry(scanned)
        if index_entry:
            detailed_index[symbol_id] = index_entry

        # Process class members
        for member in scanned.members:
            member_id, member_symbol = _convert_symbol(member)
            symbols[member_id] = member_symbol

    return LCPDocument(
        manifest=manifest,
        symbols=symbols,
        deprecations=None,
        detailed_index=detailed_index if detailed_index else None,
    )