Module metametameta.from_importlib

Generate an about.py file from package metadata using importlib.metadata.

Expand source code
"""
Generate an __about__.py file from package metadata using importlib.metadata.
"""
import importlib.metadata as md
from typing import Any, cast

from metametameta import general
from metametameta.filesystem import write_to_file
from metametameta.general import any_metadict


def get_package_metadata(package_name: str) -> dict[str, Any]:
    """Get package metadata using importlib.metadata."""
    try:
        pkg_metadata: md.PackageMetadata = md.metadata(package_name)
        return {key: value for key, value in cast(dict, pkg_metadata).items()}
    except md.PackageNotFoundError:
        print(f"Package '{package_name}' not found.")
        return {}


def generate_from_importlib(name: str, source: str = "", output: str = "__about__.py") -> str:
    """Write package metadata to an __about__.py file."""
    pkg_metadata = get_package_metadata(name)
    if pkg_metadata:
        dir_path = "./"

        about_content, names = any_metadict(pkg_metadata)

        about_content = general.merge_sections(names, name, about_content)
        return write_to_file(dir_path, about_content, output)
    else:
        return "No [project] section found in pyproject.toml."


if __name__ == "__main__":
    generate_from_importlib("toml")

Functions

def generate_from_importlib(name: str, source: str = '', output: str = '__about__.py') ‑> str

Write package metadata to an about.py file.

Expand source code
def generate_from_importlib(name: str, source: str = "", output: str = "__about__.py") -> str:
    """Write package metadata to an __about__.py file."""
    pkg_metadata = get_package_metadata(name)
    if pkg_metadata:
        dir_path = "./"

        about_content, names = any_metadict(pkg_metadata)

        about_content = general.merge_sections(names, name, about_content)
        return write_to_file(dir_path, about_content, output)
    else:
        return "No [project] section found in pyproject.toml."
def get_package_metadata(package_name: str) ‑> dict[str, typing.Any]

Get package metadata using importlib.metadata.

Expand source code
def get_package_metadata(package_name: str) -> dict[str, Any]:
    """Get package metadata using importlib.metadata."""
    try:
        pkg_metadata: md.PackageMetadata = md.metadata(package_name)
        return {key: value for key, value in cast(dict, pkg_metadata).items()}
    except md.PackageNotFoundError:
        print(f"Package '{package_name}' not found.")
        return {}