Transformers¶
Conversion registry exposing high-level helpers for assets.
ConverterRegistry ¶
ConverterRegistry()
Registry storing converter strategies.
Source code in src/texsmith/adapters/transformers/__init__.py
24 25 | |
convert ¶
convert(
name: str,
source: Path | str,
*,
output_dir: Path,
**options: Any,
) -> Any
Execute a converter strategy with the provided arguments.
Source code in src/texsmith/adapters/transformers/__init__.py
42 43 44 45 46 47 48 49 50 51 52 | |
get ¶
get(name: str) -> ConverterStrategy
Return a registered converter strategy or raise an execution error.
Source code in src/texsmith/adapters/transformers/__init__.py
31 32 33 34 35 36 | |
is_registered ¶
is_registered(name: str) -> bool
Return True when a converter has been registered under the given name.
Source code in src/texsmith/adapters/transformers/__init__.py
38 39 40 | |
register ¶
register(name: str, strategy: ConverterStrategy) -> None
Register a converter strategy under a unique name.
Source code in src/texsmith/adapters/transformers/__init__.py
27 28 29 | |
ConverterStrategy ¶
Bases: Protocol
Protocol implemented by concrete converter strategies.
DrawioToPdfStrategy ¶
DrawioToPdfStrategy(
image: str = "rlespinasse/drawio-desktop-headless",
)
Bases: CachedConversionStrategy
Convert draw.io diagrams using selectable backends (playwright, local, docker).
Source code in src/texsmith/adapters/transformers/strategies.py
1187 1188 1189 1190 1191 1192 1193 | |
MermaidToPdfStrategy ¶
MermaidToPdfStrategy(
image: str = "minlag/mermaid-cli",
*,
default_theme: str = "neutral",
)
Bases: CachedConversionStrategy
Render Mermaid diagrams to PDF using the official CLI image.
Source code in src/texsmith/adapters/transformers/strategies.py
906 907 908 909 910 911 912 913 914 | |
drawio2pdf ¶
drawio2pdf(
source: Path | str, output_dir: Path, **options: Any
) -> Path
Convert draw.io diagrams to PDF.
Source code in src/texsmith/adapters/transformers/__init__.py
86 87 88 | |
fetch_image ¶
fetch_image(
url: str, output_dir: Path, **options: Any
) -> Path
Fetch a remote image and normalise it to PDF.
Source code in src/texsmith/adapters/transformers/__init__.py
96 97 98 | |
get_pdf_page_sizes ¶
get_pdf_page_sizes(
source: Path | str, **options: Any
) -> dict[str, Any]
Inspect a PDF and return structured metadata.
Source code in src/texsmith/adapters/transformers/__init__.py
101 102 103 104 105 106 | |
has_converter ¶
has_converter(name: str) -> bool
Return True when a converter strategy is currently registered.
Source code in src/texsmith/adapters/transformers/__init__.py
71 72 73 | |
image2pdf ¶
image2pdf(
source: Path | str, output_dir: Path, **options: Any
) -> Path
Convert bitmap images to PDF.
Source code in src/texsmith/adapters/transformers/__init__.py
81 82 83 | |
mermaid2pdf ¶
mermaid2pdf(
source: Path | str, output_dir: Path, **options: Any
) -> Path
Convert Mermaid diagrams to PDF.
Source code in src/texsmith/adapters/transformers/__init__.py
91 92 93 | |
register_converter ¶
register_converter(
name: str, strategy: ConverterStrategy
) -> None
Expose a helper to register external strategies.
Source code in src/texsmith/adapters/transformers/__init__.py
66 67 68 | |
svg2pdf ¶
svg2pdf(
source: Path | str, output_dir: Path, **options: Any
) -> Path
Convert SVG assets to PDF.
Source code in src/texsmith/adapters/transformers/__init__.py
76 77 78 | |
Primitives used by asset converter strategies.
CachedConversionStrategy ¶
CachedConversionStrategy(
namespace: str,
*,
max_attempts: int = 3,
backoff: Callable[[int], float] | None = None,
)
Base class that adds caching and retry/backoff policies.
Source code in src/texsmith/adapters/transformers/base.py
38 39 40 41 42 43 44 45 46 47 | |
output_suffix ¶
output_suffix(source: Any, options: dict[str, Any]) -> str
Allow subclasses to customise the output suffix.
Source code in src/texsmith/adapters/transformers/base.py
110 111 112 | |
ConverterStrategy ¶
Bases: Protocol
Protocol implemented by concrete converter strategies.
exponential_backoff ¶
exponential_backoff(
base_delay: float = 0.5,
factor: float = 2.0,
max_delay: float = 5.0,
) -> Callable[[int], float]
Return a simple exponential backoff policy.
Source code in src/texsmith/adapters/transformers/base.py
21 22 23 24 25 26 27 28 29 30 | |
Concrete converter strategies with caching and error handling.
DrawioToPdfStrategy ¶
DrawioToPdfStrategy(
image: str = "rlespinasse/drawio-desktop-headless",
)
Bases: CachedConversionStrategy
Convert draw.io diagrams using selectable backends (playwright, local, docker).
Source code in src/texsmith/adapters/transformers/strategies.py
1187 1188 1189 1190 1191 1192 1193 | |
FetchImageStrategy ¶
FetchImageStrategy(timeout: float = 10.0)
Bases: CachedConversionStrategy
Fetch a remote image, normalise it to PDF, and cache the result.
Source code in src/texsmith/adapters/transformers/strategies.py
373 374 375 | |
ImageToPdfStrategy ¶
ImageToPdfStrategy()
Bases: CachedConversionStrategy
Convert bitmap images to PDF using Pillow.
Source code in src/texsmith/adapters/transformers/strategies.py
322 323 | |
MermaidToPdfStrategy ¶
MermaidToPdfStrategy(
image: str = "minlag/mermaid-cli",
*,
default_theme: str = "neutral",
)
Bases: CachedConversionStrategy
Render Mermaid diagrams to PDF using the official CLI image.
Source code in src/texsmith/adapters/transformers/strategies.py
906 907 908 909 910 911 912 913 914 | |
NotConfiguredStrategy ¶
NotConfiguredStrategy(name: str)
Strategy used to signal that a converter must be provided by the host.
Source code in src/texsmith/adapters/transformers/strategies.py
754 755 | |
PdfMetadataStrategy ¶
Inspect PDF files and expose structural metadata.
SvgToPdfStrategy ¶
SvgToPdfStrategy()
Bases: CachedConversionStrategy
Convert inline SVG payloads or files to PDF using CairoSVG.
Source code in src/texsmith/adapters/transformers/strategies.py
231 232 | |
Utility helpers shared across transformer strategies.
normalise_pdf_version ¶
normalise_pdf_version(
pdf_path: Path, *, target_version: str = "1.5"
) -> None
Re-write a PDF so its header advertises the requested version.
Source code in src/texsmith/adapters/transformers/utils.py
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | |
points_to_mm ¶
points_to_mm(points: float) -> float
Convert PDF points to millimetres.
Source code in src/texsmith/adapters/transformers/utils.py
10 11 12 | |