pytex-preprocessor 1.0.0__tar.gz → 1.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/PKG-INFO +1 -1
  2. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/pyproject.toml +1 -1
  3. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/_render.py +40 -3
  4. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_preprocessor.egg-info/PKG-INFO +1 -1
  5. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/LICENSE +0 -0
  6. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/README.md +0 -0
  7. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/setup.cfg +0 -0
  8. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/__init__.py +0 -0
  9. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/__init__.py +0 -0
  10. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/biblatex.py +0 -0
  11. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/builtin.py +0 -0
  12. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/captions.py +0 -0
  13. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/cleveref.py +0 -0
  14. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/colors.py +0 -0
  15. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/conditionals.py +0 -0
  16. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/counters.py +0 -0
  17. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/definitions.py +0 -0
  18. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/floats.py +0 -0
  19. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/font.py +0 -0
  20. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/fontawesome.py +0 -0
  21. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/fontspec.py +0 -0
  22. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/geometry.py +0 -0
  23. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/glossaries.py +0 -0
  24. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/graphics.py +0 -0
  25. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/hooks.py +0 -0
  26. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/hyperref.py +0 -0
  27. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/lengths.py +0 -0
  28. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/listings.py +0 -0
  29. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/mdframed.py +0 -0
  30. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/picture.py +0 -0
  31. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/setspace.py +0 -0
  32. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/commands/tables.py +0 -0
  33. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/helpers/__init__.py +0 -0
  34. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/helpers/coerce.py +0 -0
  35. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/helpers/parenting.py +0 -0
  36. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/helpers/sanitize.py +0 -0
  37. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/helpers/with_package.py +0 -0
  38. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/interface/__init__.py +0 -0
  39. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/interface/control_sequence.py +0 -0
  40. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/interface/package.py +0 -0
  41. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/interface/tex.py +0 -0
  42. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/__init__.py +0 -0
  43. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/color.py +0 -0
  44. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/comment.py +0 -0
  45. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/concat.py +0 -0
  46. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/control_sequence.py +0 -0
  47. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/document.py +0 -0
  48. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/document_class.py +0 -0
  49. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/empty.py +0 -0
  50. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/environment.py +0 -0
  51. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/image.py +0 -0
  52. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/include.py +0 -0
  53. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/length.py +0 -0
  54. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/math.py +0 -0
  55. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/package.py +0 -0
  56. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/model/raw.py +0 -0
  57. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/packages.py +0 -0
  58. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/registry.py +0 -0
  59. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex/template.py +0 -0
  60. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_analyze/__init__.py +0 -0
  61. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_analyze/analyze.py +0 -0
  62. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_analyze/optimize.py +0 -0
  63. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/__init__.py +0 -0
  64. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/_compile.py +0 -0
  65. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/_models.py +0 -0
  66. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/_policy.py +0 -0
  67. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/_sandbox.py +0 -0
  68. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/_security.py +0 -0
  69. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_api/sandbox_init.py +0 -0
  70. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/__init__.py +0 -0
  71. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/build.py +0 -0
  72. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/console.py +0 -0
  73. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/render.py +0 -0
  74. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/tectonic.py +0 -0
  75. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/tex2py.py +0 -0
  76. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/tree.py +0 -0
  77. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_builder/variants.py +0 -0
  78. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/__init__.py +0 -0
  79. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/boxes.py +0 -0
  80. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/citations.py +0 -0
  81. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/cleveref_names.py +0 -0
  82. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/pagebreak.py +0 -0
  83. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/voting.py +0 -0
  84. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/watermark.py +0 -0
  85. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_components/wordcount.py +0 -0
  86. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/__init__.py +0 -0
  87. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Bold.ttf +0 -0
  88. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-BoldItalic.ttf +0 -0
  89. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Book.ttf +0 -0
  90. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-BookItalic.ttf +0 -0
  91. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Medium.ttf +0 -0
  92. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-MediumItalic.ttf +0 -0
  93. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Strong.ttf +0 -0
  94. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Thin.ttf +0 -0
  95. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-ThinItalic.ttf +0 -0
  96. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Black.ttf +0 -0
  97. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Bold.ttf +0 -0
  98. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-BoldItalic.ttf +0 -0
  99. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Italic.ttf +0 -0
  100. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Medium.ttf +0 -0
  101. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Regular.ttf +0 -0
  102. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/fonts/Times New Roman.ttf +0 -0
  103. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/ASTA.svg +0 -0
  104. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/DUMMY.png +0 -0
  105. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/DUMMY_FOOT.png +0 -0
  106. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/ECHO.svg +0 -0
  107. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/HSRT.pdf +0 -0
  108. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/INF.pdf +0 -0
  109. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/MAKERS-Icon.svg +0 -0
  110. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/MAKERS-RAlign.svg +0 -0
  111. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/MAKERS.svg +0 -0
  112. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/STUPA.pdf +0 -0
  113. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/assets/logos/Skyline.pdf +0 -0
  114. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/colors.py +0 -0
  115. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/document.py +0 -0
  116. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/fonts.py +0 -0
  117. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/glossary.py +0 -0
  118. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/hyperref_config.py +0 -0
  119. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/listings.py +0 -0
  120. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/logos.py +0 -0
  121. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/pagesetup.py +0 -0
  122. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/tex/pagesetup.tex +0 -0
  123. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/titlepage.py +0 -0
  124. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_hsrtreport/variants.py +0 -0
  125. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_koma/__init__.py +0 -0
  126. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_koma/commands.py +0 -0
  127. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_koma/document.py +0 -0
  128. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/__init__.py +0 -0
  129. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/convert.py +0 -0
  130. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/escape.py +0 -0
  131. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/frontmatter.py +0 -0
  132. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/glyphs.py +0 -0
  133. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/protocol/__init__.py +0 -0
  134. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/protocol/convert.py +0 -0
  135. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/protocol/document.py +0 -0
  136. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/protocol/entries.py +0 -0
  137. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/protocol/header.py +0 -0
  138. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/protocol/shortcodes.py +0 -0
  139. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_markdown/protocol/signatures.py +0 -0
  140. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_preprocessor.egg-info/SOURCES.txt +0 -0
  141. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_preprocessor.egg-info/dependency_links.txt +0 -0
  142. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_preprocessor.egg-info/entry_points.txt +0 -0
  143. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_preprocessor.egg-info/requires.txt +0 -0
  144. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_preprocessor.egg-info/top_level.txt +0 -0
  145. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_protocol/__init__.py +0 -0
  146. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_protocol/frontmatter.py +0 -0
  147. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_tikz/__init__.py +0 -0
  148. {pytex_preprocessor-1.0.0 → pytex_preprocessor-1.0.3}/src/pytex_tikz/tikz.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytex-preprocessor
3
- Version: 1.0.0
3
+ Version: 1.0.3
4
4
  Summary: Type-safe LaTeX document generation with Python
5
5
  Author-email: Frederik Beimgraben <frederik@beimgraben.net>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pytex-preprocessor"
7
- version = "1.0.0"
7
+ version = "1.0.3"
8
8
  authors = [
9
9
  { name="Frederik Beimgraben", email="frederik@beimgraben.net" },
10
10
  ]
@@ -47,13 +47,50 @@ def _render_python_source(source: bytes, workdir: Path) -> str:
47
47
  return get_tex_node(path).rendered
48
48
 
49
49
 
50
- def _render_markdown_source(req: BuildRequest, policy: TrustPolicy) -> str:
50
+ def _render_markdown_source(
51
+ req: BuildRequest, policy: TrustPolicy, workdir: Path
52
+ ) -> str:
51
53
  from pytex_builder.variants import build_document
52
54
 
53
55
  text = _decode(req.source)
54
56
  if not policy.allow_markdown_eval:
55
57
  text = strip_markdown_eval_comments(text)
56
- return build_document(text, variant=req.variant, config=req.config).rendered
58
+ document = build_document(text, variant=req.variant, config=req.config)
59
+ # Report/protocol variants embed bundled fonts via fontspec's ``Path=fonts/...``
60
+ # (HSRTFontSetup). Those TTFs must be materialised into the compile workdir,
61
+ # or XeTeX fails with "the font ... cannot be found". Plain documents lack the
62
+ # method and skip this no-op.
63
+ write_inline_fonts = getattr(document, "write_inline_fonts", None)
64
+ if callable(write_inline_fonts):
65
+ write_inline_fonts(str(workdir))
66
+ # Same for the (svg->pdf converted) logos and any inline images: the tikz
67
+ # title/footer overlays reference them by the relative ``logos/<file>`` path,
68
+ # so the files must exist next to the .tex or tectonic fails with
69
+ # "Unable to load picture or PDF file 'logos/...'". Best-effort: SVG logos are
70
+ # converted via ``inkscape``; if it is absent (e.g. a warm-up render with no
71
+ # converter on PATH) we log and continue rather than failing the whole render —
72
+ # PDF logos (the common report/protocol case) need no converter and still
73
+ # materialise. ``OSError`` covers a missing inkscape binary; ``CalledProcessError``
74
+ # a conversion error.
75
+ _materialise_best_effort(document, "write_inline_logos", workdir)
76
+ _materialise_best_effort(document, "write_inline_images", workdir)
77
+ return document.rendered
78
+
79
+
80
+ def _materialise_best_effort(document: object, method: str, workdir: Path) -> None:
81
+ """Call ``document.<method>(workdir)`` if present; swallow converter errors."""
82
+ import logging
83
+ import subprocess
84
+
85
+ fn = getattr(document, method, None)
86
+ if not callable(fn):
87
+ return
88
+ try:
89
+ fn(str(workdir))
90
+ except (OSError, subprocess.CalledProcessError) as exc: # pragma: no cover - infra
91
+ logging.getLogger("pytex_api").warning(
92
+ "%s could not materialise assets (%s); continuing without them", method, exc
93
+ )
57
94
 
58
95
 
59
96
  def render_to_latex(req: BuildRequest, policy: TrustPolicy, workdir: Path) -> str:
@@ -78,7 +115,7 @@ def render_to_latex(req: BuildRequest, policy: TrustPolicy, workdir: Path) -> st
78
115
  allow_replacements=policy.allow_tex_replacements,
79
116
  ).rendered
80
117
  elif kind is InputKind.MARKDOWN:
81
- latex = _render_markdown_source(req, policy)
118
+ latex = _render_markdown_source(req, policy, workdir)
82
119
  else: # pragma: no cover - exhaustive over InputKind
83
120
  raise ApiError(f"unsupported input kind: {kind}")
84
121
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytex-preprocessor
3
- Version: 1.0.0
3
+ Version: 1.0.3
4
4
  Summary: Type-safe LaTeX document generation with Python
5
5
  Author-email: Frederik Beimgraben <frederik@beimgraben.net>
6
6
  License: GNU GENERAL PUBLIC LICENSE