Skip to content

Input source

input_source

Résolution d'une source : chemin explicite, puis flux standard non interactif.

InputSourceError

Bases: ValueError

Erreur de lecture ou de décodage d'une source d'entrée.

Source code in packages/axm-smelt/src/axm_smelt/core/input_source.py
Python
class InputSourceError(ValueError):
    """Erreur de lecture ou de décodage d'une source d'entrée."""

read_source(input_path=None, *, stdin=None)

Lire le chemin explicite, sinon stdin s'il est non interactif.

Source code in packages/axm-smelt/src/axm_smelt/core/input_source.py
Python
def read_source(
    input_path: str | None = None,
    *,
    stdin: TextIO | None = None,
) -> str | None:
    """Lire le chemin explicite, sinon stdin s'il est non interactif."""
    if input_path is not None:
        try:
            return Path(input_path).read_text(encoding="utf-8")
        except (FileNotFoundError, IsADirectoryError, UnicodeDecodeError) as exc:
            raise InputSourceError(
                f"Impossible de lire la source {input_path}: {exc}"
            ) from exc

    if stdin is None or stdin.isatty():
        return None
    return stdin.read()

resolve_text_source(data, input_path=None, *, stdin=None)

Résoudre une donnée textuelle explicite, un chemin, puis stdin.

Source code in packages/axm-smelt/src/axm_smelt/core/input_source.py
Python
def resolve_text_source(
    data: str,
    input_path: str | None = None,
    *,
    stdin: TextIO | None = None,
) -> str:
    """Résoudre une donnée textuelle explicite, un chemin, puis stdin."""
    if data:
        return data
    if input_path is not None:
        return read_source(input_path, stdin=stdin) or ""
    try:
        return read_source(stdin=stdin) or ""
    except OSError:
        return ""