drawlib 0.3.1__tar.gz → 0.3.2__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 (631) hide show
  1. drawlib-0.3.1/docs/README_PYPI.md → drawlib-0.3.2/PKG-INFO +35 -10
  2. drawlib-0.3.1/PKG-INFO → drawlib-0.3.2/docs/README_PYPI.md +13 -31
  3. {drawlib-0.3.1 → drawlib-0.3.2}/pyproject.toml +4 -7
  4. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/_common/__init__.py +16 -0
  5. drawlib-0.3.2/src/drawlib/_builder/_common/browser.py +267 -0
  6. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/_common/cache.py +11 -4
  7. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/_common/cache_manager.py +9 -2
  8. drawlib-0.3.2/src/drawlib/_builder/_common/office.py +128 -0
  9. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/__init__.py +16 -3
  10. drawlib-0.3.2/src/drawlib/_builder/doc_builder/_docx_xml.py +683 -0
  11. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/compiler/__init__.py +3 -1
  12. drawlib-0.3.2/src/drawlib/_builder/doc_builder/compiler/docx.py +134 -0
  13. drawlib-0.3.2/src/drawlib/_builder/doc_builder/exporter_docx.py +1069 -0
  14. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/exporter_pdf.py +40 -126
  15. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/processor/processor.py +15 -1
  16. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/rules_builder.py +133 -57
  17. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/build.py +140 -0
  18. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/cache.py +7 -3
  19. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/rules.py +77 -10
  20. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/agent_instruction.md +28 -19
  21. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/anim_guide.md +6 -5
  22. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/api.md +171 -57
  23. drawlib-0.3.2/src/drawlib/_rules/charts/area.md +171 -0
  24. drawlib-0.3.2/src/drawlib/_rules/charts/bar.md +194 -0
  25. drawlib-0.3.2/src/drawlib/_rules/charts/gantt.md +215 -0
  26. drawlib-0.3.2/src/drawlib/_rules/charts/heatmap.md +222 -0
  27. drawlib-0.3.2/src/drawlib/_rules/charts/line.md +180 -0
  28. drawlib-0.3.2/src/drawlib/_rules/charts/overview.md +345 -0
  29. drawlib-0.3.2/src/drawlib/_rules/charts/pie.md +141 -0
  30. drawlib-0.3.2/src/drawlib/_rules/charts/radar.md +167 -0
  31. drawlib-0.3.2/src/drawlib/_rules/charts/scatter.md +185 -0
  32. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/cli.md +237 -115
  33. drawlib-0.3.2/src/drawlib/_rules/diagrams/architecture.md +333 -0
  34. drawlib-0.3.2/src/drawlib/_rules/diagrams/class_diagram.md +271 -0
  35. drawlib-0.3.2/src/drawlib/_rules/diagrams/er.md +273 -0
  36. drawlib-0.3.2/src/drawlib/_rules/diagrams/flow.md +266 -0
  37. drawlib-0.3.2/src/drawlib/_rules/diagrams/overview.md +213 -0
  38. drawlib-0.3.2/src/drawlib/_rules/diagrams/sequence.md +272 -0
  39. drawlib-0.3.2/src/drawlib/_rules/diagrams/state.md +275 -0
  40. drawlib-0.3.2/src/drawlib/_rules/graph/architecture.md +161 -0
  41. drawlib-0.3.2/src/drawlib/_rules/graph/grid.md +150 -0
  42. drawlib-0.3.2/src/drawlib/_rules/graph/layer.md +126 -0
  43. drawlib-0.3.2/src/drawlib/_rules/graph/overview.md +268 -0
  44. drawlib-0.3.2/src/drawlib/_rules/graph/radial.md +130 -0
  45. drawlib-0.3.2/src/drawlib/_rules/graph/tree.md +130 -0
  46. drawlib-0.3.2/src/drawlib/_rules/icons/ai.md +104 -0
  47. drawlib-0.3.2/src/drawlib/_rules/icons/aws.md +89 -0
  48. drawlib-0.3.2/src/drawlib/_rules/icons/azure.md +86 -0
  49. drawlib-0.3.2/src/drawlib/_rules/icons/business.md +93 -0
  50. drawlib-0.3.2/src/drawlib/_rules/icons/client.md +94 -0
  51. drawlib-0.3.2/src/drawlib/_rules/icons/cloud.md +94 -0
  52. drawlib-0.3.2/src/drawlib/_rules/icons/cnative.md +101 -0
  53. drawlib-0.3.2/src/drawlib/_rules/icons/code.md +91 -0
  54. drawlib-0.3.2/src/drawlib/_rules/icons/data.md +104 -0
  55. drawlib-0.3.2/src/drawlib/_rules/icons/devops.md +107 -0
  56. drawlib-0.3.2/src/drawlib/_rules/icons/facility.md +92 -0
  57. drawlib-0.3.2/src/drawlib/_rules/icons/gcp.md +111 -0
  58. drawlib-0.3.2/src/drawlib/_rules/icons/itservice.md +108 -0
  59. drawlib-0.3.2/src/drawlib/_rules/icons/network.md +106 -0
  60. drawlib-0.3.2/src/drawlib/_rules/icons/overview.md +109 -0
  61. drawlib-0.3.2/src/drawlib/_rules/icons/phosphor.md +128 -0
  62. drawlib-0.3.2/src/drawlib/_rules/icons/security.md +94 -0
  63. drawlib-0.3.2/src/drawlib/_rules/icons/server.md +98 -0
  64. drawlib-0.3.2/src/drawlib/_rules/icons/social.md +103 -0
  65. drawlib-0.3.2/src/drawlib/_rules/icons/workspace.md +105 -0
  66. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_anim.md +4 -2
  67. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_canvas.md +1 -1
  68. drawlib-0.3.2/src/drawlib/_rules/lib_images.md +249 -0
  69. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_lines.md +29 -29
  70. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_math.md +2 -2
  71. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_preset_colors.md +29 -6
  72. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_preset_styles.md +144 -147
  73. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_slide.md +47 -3
  74. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_tools.md +63 -9
  75. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_types.md +1 -1
  76. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/overview.md +166 -125
  77. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/project_doc.md +49 -21
  78. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/project_images.md +5 -4
  79. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/project_overview.md +25 -20
  80. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/project_site.md +9 -8
  81. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/project_slide.md +43 -6
  82. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/review_guide.md +14 -12
  83. drawlib-0.3.2/src/drawlib/_rules/shapes/arrow.md +234 -0
  84. drawlib-0.3.2/src/drawlib/_rules/shapes/badge.md +276 -0
  85. drawlib-0.3.2/src/drawlib/_rules/shapes/basic.md +289 -0
  86. drawlib-0.3.2/src/drawlib/_rules/shapes/container.md +234 -0
  87. drawlib-0.3.2/src/drawlib/_rules/shapes/overview.md +214 -0
  88. drawlib-0.3.2/src/drawlib/_rules/shapes/polygon.md +337 -0
  89. drawlib-0.3.2/src/drawlib/_rules/shapes/symbol.md +231 -0
  90. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/slide_guide.md +9 -9
  91. drawlib-0.3.2/src/drawlib/_rules/smartarts/box_list.md +99 -0
  92. drawlib-0.3.2/src/drawlib/_rules/smartarts/bullet_points.md +123 -0
  93. drawlib-0.3.2/src/drawlib/_rules/smartarts/calendar.md +305 -0
  94. drawlib-0.3.2/src/drawlib/_rules/smartarts/card_list.md +158 -0
  95. drawlib-0.3.2/src/drawlib/_rules/smartarts/chevron_process.md +109 -0
  96. drawlib-0.3.2/src/drawlib/_rules/smartarts/cycle.md +145 -0
  97. drawlib-0.3.2/src/drawlib/_rules/smartarts/geomap.md +100 -0
  98. drawlib-0.3.2/src/drawlib/_rules/smartarts/grid_layout.md +133 -0
  99. drawlib-0.3.2/src/drawlib/_rules/smartarts/kpi_cards.md +150 -0
  100. drawlib-0.3.2/src/drawlib/_rules/smartarts/mindmap.md +192 -0
  101. drawlib-0.3.2/src/drawlib/_rules/smartarts/overview.md +226 -0
  102. drawlib-0.3.2/src/drawlib/_rules/smartarts/panel.md +161 -0
  103. drawlib-0.3.2/src/drawlib/_rules/smartarts/pyramid.md +114 -0
  104. drawlib-0.3.2/src/drawlib/_rules/smartarts/roadmap.md +183 -0
  105. drawlib-0.3.2/src/drawlib/_rules/smartarts/source_code.md +165 -0
  106. drawlib-0.3.2/src/drawlib/_rules/smartarts/table.md +183 -0
  107. drawlib-0.3.2/src/drawlib/_rules/smartarts/tree.md +177 -0
  108. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/style_guide.md +13 -10
  109. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_slide/__init__.py +2 -0
  110. drawlib-0.3.2/src/drawlib/_slide/_pptx_dom.py +1293 -0
  111. drawlib-0.3.2/src/drawlib/_slide/_pptx_writer.py +628 -0
  112. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_slide/compiler.py +83 -11
  113. drawlib-0.3.2/src/drawlib/_slide/compiler_pptx.py +117 -0
  114. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/targets/doc.css +16 -2
  115. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/targets/pdf.css +16 -2
  116. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/targets/site.css +134 -4
  117. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/template.html.template +72 -12
  118. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/slide.py +2 -0
  119. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/tools.py +6 -1
  120. drawlib-0.3.1/src/drawlib/_rules/lib_charts.md +0 -1123
  121. drawlib-0.3.1/src/drawlib/_rules/lib_diagrams.md +0 -1132
  122. drawlib-0.3.1/src/drawlib/_rules/lib_graph.md +0 -696
  123. drawlib-0.3.1/src/drawlib/_rules/lib_icons.md +0 -1030
  124. drawlib-0.3.1/src/drawlib/_rules/lib_images.md +0 -188
  125. drawlib-0.3.1/src/drawlib/_rules/lib_shapes.md +0 -2686
  126. drawlib-0.3.1/src/drawlib/_rules/lib_smartarts.md +0 -1518
  127. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/__init__.py +0 -0
  128. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/__main__.py +0 -0
  129. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_anim/__init__.py +0 -0
  130. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_anim/_animation.py +0 -0
  131. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/__init__.py +0 -0
  132. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/_common/progress.py +0 -0
  133. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/_common/styles_loader.py +0 -0
  134. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/_image_ast.py +0 -0
  135. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/compiler/base.py +0 -0
  136. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/compiler/html.py +0 -0
  137. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/compiler/markdown.py +0 -0
  138. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/compiler/pdf.py +0 -0
  139. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/detector.py +0 -0
  140. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/exporter_html.py +0 -0
  141. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/exporter_md.py +0 -0
  142. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/highlight.py +0 -0
  143. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/merger.py +0 -0
  144. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/navbar.py +0 -0
  145. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/parser_md.py +0 -0
  146. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/processor/__init__.py +0 -0
  147. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/processor/options.py +0 -0
  148. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/processor/parser.py +0 -0
  149. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/processor/viewer.py +0 -0
  150. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/progress.py +0 -0
  151. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/doc_builder/styles_utils.py +0 -0
  152. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_builder/image_builder.py +0 -0
  153. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cached_assets/.gitignore +0 -0
  154. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cached_assets/__init__.py +0 -0
  155. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/__init__.py +0 -0
  156. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/_common/__init__.py +0 -0
  157. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/_common/_axis.py +0 -0
  158. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/_common/_base.py +0 -0
  159. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/_common/_legend.py +0 -0
  160. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/_common/_style_utils.py +0 -0
  161. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/_common/_types.py +0 -0
  162. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/area_chart/__init__.py +0 -0
  163. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/area_chart/_chart.py +0 -0
  164. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/area_chart/_series.py +0 -0
  165. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/bar_chart/__init__.py +0 -0
  166. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/bar_chart/_chart.py +0 -0
  167. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/bar_chart/_renderer.py +0 -0
  168. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/bar_chart/_series.py +0 -0
  169. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/gantt_chart/__init__.py +0 -0
  170. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/gantt_chart/_chart.py +0 -0
  171. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/gantt_chart/_item.py +0 -0
  172. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/gantt_chart/_renderer.py +0 -0
  173. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/heatmap_chart/__init__.py +0 -0
  174. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/heatmap_chart/_chart.py +0 -0
  175. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/heatmap_chart/_models.py +0 -0
  176. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/heatmap_chart/_overlay.py +0 -0
  177. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/heatmap_chart/_overlay_renderer.py +0 -0
  178. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/heatmap_chart/_renderer.py +0 -0
  179. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/line_chart/__init__.py +0 -0
  180. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/line_chart/_base.py +0 -0
  181. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/line_chart/_line.py +0 -0
  182. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/line_chart/_renderer.py +0 -0
  183. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/line_chart/_series.py +0 -0
  184. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/pie_chart/__init__.py +0 -0
  185. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/pie_chart/_chart.py +0 -0
  186. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/pie_chart/_renderer.py +0 -0
  187. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/pie_chart/_slice.py +0 -0
  188. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/radar_chart/__init__.py +0 -0
  189. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/radar_chart/_chart.py +0 -0
  190. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/radar_chart/_renderer.py +0 -0
  191. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/radar_chart/_series.py +0 -0
  192. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/scatter_chart/__init__.py +0 -0
  193. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/scatter_chart/_chart.py +0 -0
  194. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/scatter_chart/_point.py +0 -0
  195. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_charts/scatter_chart/_renderer.py +0 -0
  196. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/__init__.py +0 -0
  197. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_drawlib.py +0 -0
  198. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_help.py +0 -0
  199. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/__init__.py +0 -0
  200. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/_common.py +0 -0
  201. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/colors/__init__.py +0 -0
  202. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/colors/base.py +0 -0
  203. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/colors/css.py +0 -0
  204. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/colors/default.py +0 -0
  205. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/colors/google.py +0 -0
  206. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/colors/monochrome.py +0 -0
  207. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/styles/__init__.py +0 -0
  208. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/styles/base.py +0 -0
  209. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/styles/default.py +0 -0
  210. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/styles/google.py +0 -0
  211. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/_visualizers/styles/monochrome.py +0 -0
  212. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/__init__.py +0 -0
  213. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/colors.py +0 -0
  214. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/css.py +0 -0
  215. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/init.py +0 -0
  216. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/serve.py +0 -0
  217. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/show.py +0 -0
  218. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/commands/styles.py +0 -0
  219. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_cli/main.py +0 -0
  220. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/__init__.py +0 -0
  221. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l1_core/__init__.py +0 -0
  222. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l1_core/_const.py +0 -0
  223. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l1_core/_logging.py +0 -0
  224. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l1_core/_path_utils.py +0 -0
  225. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l1_core/_settings.py +0 -0
  226. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l1_core/_validator.py +0 -0
  227. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/__init__.py +0 -0
  228. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/_color.py +0 -0
  229. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/_font.py +0 -0
  230. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/_geometry.py +0 -0
  231. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/_image.py +0 -0
  232. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/_path.py +0 -0
  233. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/_primitive.py +0 -0
  234. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l2_types/_style.py +0 -0
  235. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_colors/__init__.py +0 -0
  236. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_colors/_base_colors.py +0 -0
  237. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_colors/_color.py +0 -0
  238. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_colors/_color_utils.py +0 -0
  239. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_external/__init__.py +0 -0
  240. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_external/_cache.py +0 -0
  241. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_external/_download.py +0 -0
  242. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_external/_package.py +0 -0
  243. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_fonts/__init__.py +0 -0
  244. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_fonts/_metadata.py +0 -0
  245. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_fonts/_names.py +0 -0
  246. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_fonts/_resources.py +0 -0
  247. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_images/__init__.py +0 -0
  248. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_images/_dimage.py +0 -0
  249. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_math/__init__.py +0 -0
  250. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_math/_geometry.py +0 -0
  251. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_math/_routing.py +0 -0
  252. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_styles/__init__.py +0 -0
  253. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_styles/_base_styles.py +0 -0
  254. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l3_styles/_style.py +0 -0
  255. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/__init__.py +0 -0
  256. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_base.py +0 -0
  257. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_canvas.py +0 -0
  258. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_image.py +0 -0
  259. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_image_code.py +0 -0
  260. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_line.py +0 -0
  261. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_line_utils.py +0 -0
  262. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/__init__.py +0 -0
  263. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_arrow.py +0 -0
  264. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_arrow_builders.py +0 -0
  265. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_badge.py +0 -0
  266. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_badge_builders.py +0 -0
  267. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_basic.py +0 -0
  268. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_container.py +0 -0
  269. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_container_builders.py +0 -0
  270. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_path_utils.py +0 -0
  271. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_polygon.py +0 -0
  272. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_shape_utils.py +0 -0
  273. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_symbol.py +0 -0
  274. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_shapes/_symbol_builders.py +0 -0
  275. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_text.py +0 -0
  276. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_core/l4_canvas/_text_utils.py +0 -0
  277. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/__init__.py +0 -0
  278. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/_common.py +0 -0
  279. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/__init__.py +0 -0
  280. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_diagram.py +0 -0
  281. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_edge.py +0 -0
  282. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_group.py +0 -0
  283. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_icons.py +0 -0
  284. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_junction.py +0 -0
  285. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_node.py +0 -0
  286. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_render_edges.py +0 -0
  287. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_renderer.py +0 -0
  288. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/architecture/_types.py +0 -0
  289. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/__init__.py +0 -0
  290. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/_class_node.py +0 -0
  291. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/_diagram.py +0 -0
  292. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/_relationship.py +0 -0
  293. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/_render_node.py +0 -0
  294. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/_render_relationship.py +0 -0
  295. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/_renderer.py +0 -0
  296. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/class_diagram/_types.py +0 -0
  297. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/er/__init__.py +0 -0
  298. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/er/_diagram.py +0 -0
  299. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/er/_entity.py +0 -0
  300. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/er/_relationship.py +0 -0
  301. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/er/_renderer.py +0 -0
  302. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/er/_types.py +0 -0
  303. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/__init__.py +0 -0
  304. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_diagram.py +0 -0
  305. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_edge.py +0 -0
  306. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_junction.py +0 -0
  307. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_lane.py +0 -0
  308. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_node.py +0 -0
  309. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_nodes.py +0 -0
  310. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_render_edges.py +0 -0
  311. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_render_lanes.py +0 -0
  312. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_renderer.py +0 -0
  313. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/flow/_types.py +0 -0
  314. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/__init__.py +0 -0
  315. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_block.py +0 -0
  316. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_diagram.py +0 -0
  317. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_group.py +0 -0
  318. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_layout.py +0 -0
  319. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_message.py +0 -0
  320. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_note.py +0 -0
  321. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_participant.py +0 -0
  322. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_render_elements.py +0 -0
  323. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_renderer.py +0 -0
  324. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/sequence/_types.py +0 -0
  325. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/__init__.py +0 -0
  326. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/_diagram.py +0 -0
  327. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/_render_node.py +0 -0
  328. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/_render_transition.py +0 -0
  329. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/_renderer.py +0 -0
  330. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/_state_node.py +0 -0
  331. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/_transition.py +0 -0
  332. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_diagrams/state/_types.py +0 -0
  333. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/__init__.py +0 -0
  334. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_architecture/__init__.py +0 -0
  335. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_architecture/_graph.py +0 -0
  336. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_architecture/_solver.py +0 -0
  337. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_common/__init__.py +0 -0
  338. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_common/_base.py +0 -0
  339. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_common/_models.py +0 -0
  340. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_common/_routing.py +0 -0
  341. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_grid/__init__.py +0 -0
  342. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_grid/_graph.py +0 -0
  343. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_grid/_solver.py +0 -0
  344. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_layered/__init__.py +0 -0
  345. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_layered/_graph.py +0 -0
  346. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_layered/_solver.py +0 -0
  347. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_radial/__init__.py +0 -0
  348. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_radial/_graph.py +0 -0
  349. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_radial/_solver.py +0 -0
  350. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_tree/__init__.py +0 -0
  351. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_tree/_graph.py +0 -0
  352. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_graph/_tree/_solver.py +0 -0
  353. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_http_server/__init__.py +0 -0
  354. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_http_server/_link_scanner.py +0 -0
  355. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_http_server/_server.py +0 -0
  356. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/__init__.py +0 -0
  357. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/_utils.py +0 -0
  358. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/font_icons/__init__.py +0 -0
  359. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/font_icons/_base.py +0 -0
  360. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/font_icons/_font_icon.py +0 -0
  361. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/font_icons/phosphor/__init__.py +0 -0
  362. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/font_icons/phosphor/_base.py +0 -0
  363. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/font_icons/phosphor/_generated.py +0 -0
  364. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/__init__.py +0 -0
  365. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/_base.py +0 -0
  366. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/ai/__init__.py +0 -0
  367. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/ai/_base.py +0 -0
  368. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/ai/_generated.py +0 -0
  369. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/aws/__init__.py +0 -0
  370. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/aws/_base.py +0 -0
  371. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/aws/_generated.py +0 -0
  372. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/azure/__init__.py +0 -0
  373. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/azure/_base.py +0 -0
  374. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/azure/_generated.py +0 -0
  375. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/business/__init__.py +0 -0
  376. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/business/_base.py +0 -0
  377. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/business/_generated.py +0 -0
  378. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/client/__init__.py +0 -0
  379. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/client/_base.py +0 -0
  380. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/client/_generated.py +0 -0
  381. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/cloud/__init__.py +0 -0
  382. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/cloud/_base.py +0 -0
  383. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/cloud/_generated.py +0 -0
  384. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/cnative/__init__.py +0 -0
  385. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/cnative/_base.py +0 -0
  386. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/cnative/_generated.py +0 -0
  387. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/code/__init__.py +0 -0
  388. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/code/_base.py +0 -0
  389. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/code/_generated.py +0 -0
  390. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/data/__init__.py +0 -0
  391. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/data/_base.py +0 -0
  392. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/data/_generated.py +0 -0
  393. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/devops/__init__.py +0 -0
  394. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/devops/_base.py +0 -0
  395. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/devops/_generated.py +0 -0
  396. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/facility/__init__.py +0 -0
  397. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/facility/_base.py +0 -0
  398. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/facility/_generated.py +0 -0
  399. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/gcp/__init__.py +0 -0
  400. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/gcp/_base.py +0 -0
  401. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/gcp/_generated.py +0 -0
  402. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/itservice/__init__.py +0 -0
  403. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/itservice/_base.py +0 -0
  404. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/itservice/_generated.py +0 -0
  405. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/network/__init__.py +0 -0
  406. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/network/_base.py +0 -0
  407. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/network/_generated.py +0 -0
  408. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_ai/__init__.py +0 -0
  409. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_ai/_base.py +0 -0
  410. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_ai/_generated.py +0 -0
  411. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_business/__init__.py +0 -0
  412. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_business/_base.py +0 -0
  413. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_business/_generated.py +0 -0
  414. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_client/__init__.py +0 -0
  415. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_client/_base.py +0 -0
  416. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_client/_generated.py +0 -0
  417. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_cloud/__init__.py +0 -0
  418. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_cloud/_base.py +0 -0
  419. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_cloud/_generated.py +0 -0
  420. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_cnative/__init__.py +0 -0
  421. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_cnative/_base.py +0 -0
  422. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_cnative/_generated.py +0 -0
  423. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_code/__init__.py +0 -0
  424. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_code/_base.py +0 -0
  425. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_code/_generated.py +0 -0
  426. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_data/__init__.py +0 -0
  427. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_data/_base.py +0 -0
  428. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_data/_generated.py +0 -0
  429. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_devops/__init__.py +0 -0
  430. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_devops/_base.py +0 -0
  431. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_devops/_generated.py +0 -0
  432. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_facility/__init__.py +0 -0
  433. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_facility/_base.py +0 -0
  434. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_facility/_generated.py +0 -0
  435. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_itservice/__init__.py +0 -0
  436. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_itservice/_base.py +0 -0
  437. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_itservice/_generated.py +0 -0
  438. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_network/__init__.py +0 -0
  439. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_network/_base.py +0 -0
  440. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_network/_generated.py +0 -0
  441. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_security/__init__.py +0 -0
  442. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_security/_base.py +0 -0
  443. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_security/_generated.py +0 -0
  444. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_server/__init__.py +0 -0
  445. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_server/_base.py +0 -0
  446. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_server/_generated.py +0 -0
  447. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_social/__init__.py +0 -0
  448. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_social/_base.py +0 -0
  449. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_social/_generated.py +0 -0
  450. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_workspace/__init__.py +0 -0
  451. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_workspace/_base.py +0 -0
  452. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/original_workspace/_generated.py +0 -0
  453. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/security/__init__.py +0 -0
  454. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/security/_base.py +0 -0
  455. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/security/_generated.py +0 -0
  456. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/server/__init__.py +0 -0
  457. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/server/_base.py +0 -0
  458. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/server/_generated.py +0 -0
  459. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/social/__init__.py +0 -0
  460. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/social/_base.py +0 -0
  461. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/social/_generated.py +0 -0
  462. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/workspace/__init__.py +0 -0
  463. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/workspace/_base.py +0 -0
  464. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_icons/png_icons/workspace/_generated.py +0 -0
  465. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_colors/__init__.py +0 -0
  466. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_colors/_color_css.py +0 -0
  467. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_colors/_color_default.py +0 -0
  468. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_colors/_color_google.py +0 -0
  469. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_colors/_color_monochrome.py +0 -0
  470. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_styles/__init__.py +0 -0
  471. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_styles/_style_default.py +0 -0
  472. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_styles/_style_google.py +0 -0
  473. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_styles/_style_monochrome.py +0 -0
  474. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_preset_styles/_utils.py +0 -0
  475. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_release_assets.py +0 -0
  476. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/__init__.py +0 -0
  477. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/_assets/avenger/readme.txt +0 -0
  478. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/_assets/avenger/regular.ttf +0 -0
  479. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/_assets/linux.png +0 -0
  480. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_fonts.md +0 -0
  481. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_styles.md +0 -0
  482. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_rules/lib_text.md +0 -0
  483. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_slide/_assets.py +0 -0
  484. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_slide/_blocks.py +0 -0
  485. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_slide/base.py +0 -0
  486. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_slide/helpers.py +0 -0
  487. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/__init__.py +0 -0
  488. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_boxlist.py +0 -0
  489. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_bulletpoints.py +0 -0
  490. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_calendar/__init__.py +0 -0
  491. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_calendar/_day.py +0 -0
  492. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_calendar/_models.py +0 -0
  493. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_calendar/_month.py +0 -0
  494. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_calendar/_week.py +0 -0
  495. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_cardlist.py +0 -0
  496. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_chevronprocess.py +0 -0
  497. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_common/__init__.py +0 -0
  498. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_common/_card_helpers.py +0 -0
  499. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_cycle.py +0 -0
  500. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_geomap/__init__.py +0 -0
  501. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_geomap/_geomap.py +0 -0
  502. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_geomap/_loader.py +0 -0
  503. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_geomap/_presets.py +0 -0
  504. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_geomap/_projection.py +0 -0
  505. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_geomap/_types.py +0 -0
  506. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_gridlayout.py +0 -0
  507. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_kpicards.py +0 -0
  508. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_mindmap.py +0 -0
  509. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_panel.py +0 -0
  510. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_pyramid.py +0 -0
  511. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_roadmap.py +0 -0
  512. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_sourcecode.py +0 -0
  513. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_table.py +0 -0
  514. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_smartarts/_tree.py +0 -0
  515. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/__init__.py +0 -0
  516. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/_css.py +0 -0
  517. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/_models.py +0 -0
  518. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/_project.py +0 -0
  519. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/components/code.css +0 -0
  520. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/components/markdown.css +0 -0
  521. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/targets/slide.css +0 -0
  522. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/default-auto.css.template +0 -0
  523. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/default-dark.css.template +0 -0
  524. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/default.css.template +0 -0
  525. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/github.css.template +0 -0
  526. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/google-auto.css.template +0 -0
  527. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/google-dark.css.template +0 -0
  528. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/google.css.template +0 -0
  529. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/minimal.css.template +0 -0
  530. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/css/themes/monochrome.css.template +0 -0
  531. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/langs/__init__.py +0 -0
  532. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/langs/_map_css.py +0 -0
  533. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/langs/_map_html.py +0 -0
  534. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/langs/_map_style_font.py +0 -0
  535. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/langs/_models.py +0 -0
  536. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/langs/_patch.py +0 -0
  537. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/langs/_registry.py +0 -0
  538. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/__init__.py +0 -0
  539. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/_assets/_logo.png +0 -0
  540. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/_assets/_logo_dark.png +0 -0
  541. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/_assets/favicon.png +0 -0
  542. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/_assets/linux.png +0 -0
  543. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/_shared/output_html_readme.md +0 -0
  544. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/_shared/styles.py.template +0 -0
  545. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/_shared/utils.py +0 -0
  546. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/build.sh.template +0 -0
  547. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/build_html.sh.template +0 -0
  548. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/build_image.sh.template +0 -0
  549. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/build_markdown.sh.template +0 -0
  550. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/build_pdf.sh.template +0 -0
  551. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/en/00_cover.md +0 -0
  552. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/en/01_overview.md +0 -0
  553. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/en/02_design.md +0 -0
  554. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/en/README.md +0 -0
  555. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/ja/00_cover.md +0 -0
  556. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/ja/01_overview.md +0 -0
  557. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/ja/02_design.md +0 -0
  558. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/docs/ja/README.md +0 -0
  559. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/serve.sh.template +0 -0
  560. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/doc/template.html.template +0 -0
  561. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/build.sh.template +0 -0
  562. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/build_image.sh.template +0 -0
  563. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/docs/en/README.md +0 -0
  564. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/docs/en/sample1.py +0 -0
  565. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/docs/en/sample2.py +0 -0
  566. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/docs/ja/README.md +0 -0
  567. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/docs/ja/sample1.py +0 -0
  568. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/images/docs/ja/sample2.py +0 -0
  569. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/build.sh.template +0 -0
  570. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/build_html.sh.template +0 -0
  571. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/build_image.sh.template +0 -0
  572. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/build_markdown.sh.template +0 -0
  573. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/en/README.md +0 -0
  574. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/en/architecture/index.md +0 -0
  575. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/en/index.md +0 -0
  576. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/en/navbar.md +0 -0
  577. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/en/workflow/index.md +0 -0
  578. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/ja/README.md +0 -0
  579. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/ja/architecture/index.md +0 -0
  580. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/ja/index.md +0 -0
  581. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/ja/navbar.md +0 -0
  582. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/docs/ja/workflow/index.md +0 -0
  583. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/site/serve.sh.template +0 -0
  584. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/build.sh.template +0 -0
  585. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/build_html.sh.template +0 -0
  586. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/build_image.sh.template +0 -0
  587. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/build_pdf.sh.template +0 -0
  588. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/en/01_title.md +0 -0
  589. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/en/02_agenda.md +0 -0
  590. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/en/03_architecture.md +0 -0
  591. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/en/README.md +0 -0
  592. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/ja/01_title.md +0 -0
  593. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/ja/02_agenda.md +0 -0
  594. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/ja/03_architecture.md +0 -0
  595. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/docs/ja/README.md +0 -0
  596. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/output_readme.md +0 -0
  597. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/serve.sh.template +0 -0
  598. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/_templates/project/slide/slide.js +0 -0
  599. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/anim.py +0 -0
  600. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/canvas.py +0 -0
  601. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/__init__.py +0 -0
  602. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/area.py +0 -0
  603. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/bar.py +0 -0
  604. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/gantt.py +0 -0
  605. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/heatmap.py +0 -0
  606. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/line.py +0 -0
  607. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/pie.py +0 -0
  608. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/radar.py +0 -0
  609. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/charts/scatter.py +0 -0
  610. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/diagrams/__init__.py +0 -0
  611. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/diagrams/architecture.py +0 -0
  612. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/diagrams/class_diagram.py +0 -0
  613. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/diagrams/er.py +0 -0
  614. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/diagrams/flow.py +0 -0
  615. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/diagrams/sequence.py +0 -0
  616. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/diagrams/state.py +0 -0
  617. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/fonts.py +0 -0
  618. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/graph.py +0 -0
  619. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/icons.py +0 -0
  620. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/images.py +0 -0
  621. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/lines.py +0 -0
  622. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/math.py +0 -0
  623. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/preset_colors.py +0 -0
  624. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/preset_styles.py +0 -0
  625. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/py.typed +0 -0
  626. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/shapes.py +0 -0
  627. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/smartarts.py +0 -0
  628. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/styles.py +0 -0
  629. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/text.py +0 -0
  630. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/types.py +0 -0
  631. {drawlib-0.3.1 → drawlib-0.3.2}/src/drawlib/utils.py +0 -0
@@ -1,3 +1,25 @@
1
+ Metadata-Version: 2.3
2
+ Name: drawlib
3
+ Version: 0.3.2
4
+ Summary: Python drawing library. Illustration as Code.
5
+ Author: Yuichi Ito
6
+ Author-email: Yuichi Ito <yuichi@yuichi.com>
7
+ License: Apache-2.0
8
+ Requires-Dist: matplotlib>=3.8
9
+ Requires-Dist: pydantic>=2.8
10
+ Requires-Dist: pygments>=2.18
11
+ Requires-Dist: markdown-it-py>=3.0
12
+ Requires-Dist: jinja2>=3.1
13
+ Requires-Dist: typer>=0.12.0
14
+ Requires-Dist: rich>=13.0.0
15
+ Requires-Dist: playwright>=1.49.0
16
+ Requires-Dist: python-docx>=1.2.0
17
+ Requires-Dist: python-pptx>=1.0.2
18
+ Requires-Python: >=3.11
19
+ Project-URL: Homepage, https://www.drawlib.com
20
+ Project-URL: Repository, https://github.com/yuichi110/drawlib
21
+ Description-Content-Type: text/markdown
22
+
1
23
  # Drawlib
2
24
 
3
25
  **Pure-Python Library for "Illustration as Code" & "Illustrated Documentation as Code"**
@@ -63,8 +85,8 @@ Write Markdown files with embedded ```` ```drawlib ```` code blocks. A single `d
63
85
 
64
86
  - **4 Project Scaffolds (`drawlib init <type>`)**:
65
87
  - `drawlib init site`: Multi-page documentation website (`docs_html/`), GitHub Markdown (`docs/`), and PDF.
66
- - `drawlib init doc`: Linear technical specification / whitepaper (`*_html/`, `*_markdown/`, `*.pdf`).
67
- - `drawlib init slide`: 16:9 presentation slide deck with native SVG text and keyboard navigation (`slide_html/`, `slide.pdf`).
88
+ - `drawlib init doc`: Linear technical specification / whitepaper (`*_html/`, `*_markdown/`, `*.pdf`, plus on-demand editable MS Word `*.docx` via `drawlib build docx`).
89
+ - `drawlib init slide`: 16:9 presentation slide deck with native SVG text, Presenter View, and keyboard navigation (`slide_html/`, `slide.pdf`, plus on-demand editable MS PowerPoint `slide.pptx` via `drawlib build pptx`).
68
90
  - `drawlib init images`: Standalone batch Python illustration scripts (`images_src/` -> `images/`).
69
91
 
70
92
  ---
@@ -79,7 +101,7 @@ Drawlib is engineered from the ground up for **AI-native documentation and diagr
79
101
  2. **Code Synthesis & Grid Preview (`drawlib show -g`)**: The agent writes Python drawing blocks and Markdown prose, then renders a headless preview with a coordinate grid overlay.
80
102
  3. **Multimodal Inspection & Self-Repair**: The agent visually inspects the rendered PNG for text clipping, overlapping labels, or style imbalances, repairing coordinates and styles autonomously until the diagram passes inspection.
81
103
  - **Human Outer Loop (Intent & Review)**:
82
- - The developer stays focused on high-level architecture and intent—providing initial goals, reviewing the compiled **Published Docs** (HTML / PDF / GitHub MD / Slide), and iterating on direction without ever nudging pixels in a GUI tool.
104
+ - The developer stays focused on high-level architecture and intent—providing initial goals, reviewing the compiled **Published Docs** (HTML / PDF / MS Word / GitHub MD / Slide / MS PowerPoint), and iterating on direction without ever nudging pixels in a GUI tool.
83
105
 
84
106
  ---
85
107
 
@@ -89,14 +111,13 @@ Install `drawlib` from PyPI using `pip` or `uv`:
89
111
 
90
112
  ```bash
91
113
  pip install drawlib
114
+ # or: uv add drawlib
92
115
  ```
93
116
 
94
- To enable headless PDF export for documentation sites, linear documents, and slide decks, install the `[pdf]` extra and Chromium:
117
+ PDF, MS Word (`.docx`), and MS PowerPoint (`.pptx`) export work out of the box—`playwright`, `python-docx`, and `python-pptx` are standard dependencies, and headless Chromium (`chromium-headless-shell`) is downloaded automatically on your first `drawlib build pdf` or `drawlib build pptx` run.
95
118
 
96
- ```bash
97
- pip install "drawlib[pdf]"
98
- playwright install chromium
99
- ```
119
+ - **Offline / Air-Gapped / CI Environments**: Pre-download all fonts, icons, maps, and headless Chromium ahead of time with `drawlib cache download --all` (or headless Chromium only with `drawlib cache download --browser`).
120
+ - **Minimal Linux Containers** (e.g., `python:3.12-slim` lacking OS shared libraries such as `libnss3` or `libgbm1`): Install OS browser dependencies once via `playwright install-deps chromium` (or `playwright install --with-deps --only-shell chromium`).
100
121
 
101
122
  Verify the installation:
102
123
 
@@ -201,6 +222,10 @@ Compile or preview with the `drawlib` CLI:
201
222
  # Build HTML site, GitHub Markdown, or PDF
202
223
  ./docs_src/build.sh
203
224
 
225
+ # Optional on-demand export to editable MS Word (.docx) or MS PowerPoint (.pptx)
226
+ drawlib build docx doc_src/ -o spec.docx --generate-index
227
+ drawlib build pptx slide_src/ -o deck.pptx
228
+
204
229
  # Launch local HTTP server with broken-link check at http://localhost:8000
205
230
  drawlib serve docs_html/
206
231
 
@@ -215,11 +240,11 @@ drawlib show docs_src/index.md service_routing.png -g -o preview_grid.png
215
240
  | Command | Description |
216
241
  | :--- | :--- |
217
242
  | `drawlib init <site\|doc\|slide\|images>` | Scaffold a new documentation, slide deck, or image project |
218
- | `drawlib build <html\|markdown\|pdf\|image>` | Compile source files into HTML, Markdown, PDF, or PNG/WebP images |
243
+ | `drawlib build <html\|markdown\|pdf\|docx\|slide\|pptx\|image>` | Compile source files into HTML, Markdown, PDF, MS Word (`.docx`), HTML Slides, MS PowerPoint (`.pptx`), or PNG/WebP images |
219
244
  | `drawlib serve <html_dir> [--check]` | Start a local HTTP server for built HTML docs/slides with pre-flight link checks |
220
245
  | `drawlib show <file> [target] [-g]` | Render and inspect a single script or embedded Markdown diagram (with optional grid) |
221
246
  | `drawlib rules show [topic]` | On-demand CLI reference for AI agents to look up detailed API specs & best practices (`overview`, `style-guide`, `api`, `lib-*`) |
222
- | `drawlib cache <list\|download\|clear>` | Manage local font and icon asset caches (supports offline pre-caching via `--all`) |
247
+ | `drawlib cache <list\|download\|clear>` | Manage local font, icon, map, and headless Chromium caches (supports offline pre-caching via `--all` or `--browser`) |
223
248
 
224
249
  ---
225
250
 
@@ -1,24 +1,3 @@
1
- Metadata-Version: 2.3
2
- Name: drawlib
3
- Version: 0.3.1
4
- Summary: Python drawing library. Illustration as Code.
5
- Author: Yuichi Ito
6
- Author-email: Yuichi Ito <yuichi@yuichi.com>
7
- License: Apache-2.0
8
- Requires-Dist: matplotlib>=3.8
9
- Requires-Dist: pydantic>=2.8
10
- Requires-Dist: pygments>=2.18
11
- Requires-Dist: markdown-it-py>=3.0
12
- Requires-Dist: jinja2>=3.1
13
- Requires-Dist: typer>=0.12.0
14
- Requires-Dist: rich>=13.0.0
15
- Requires-Dist: playwright>=1.40.0 ; extra == 'pdf'
16
- Requires-Python: >=3.11
17
- Project-URL: Homepage, https://www.drawlib.com
18
- Project-URL: Repository, https://github.com/yuichi110/drawlib
19
- Provides-Extra: pdf
20
- Description-Content-Type: text/markdown
21
-
22
1
  # Drawlib
23
2
 
24
3
  **Pure-Python Library for "Illustration as Code" & "Illustrated Documentation as Code"**
@@ -84,8 +63,8 @@ Write Markdown files with embedded ```` ```drawlib ```` code blocks. A single `d
84
63
 
85
64
  - **4 Project Scaffolds (`drawlib init <type>`)**:
86
65
  - `drawlib init site`: Multi-page documentation website (`docs_html/`), GitHub Markdown (`docs/`), and PDF.
87
- - `drawlib init doc`: Linear technical specification / whitepaper (`*_html/`, `*_markdown/`, `*.pdf`).
88
- - `drawlib init slide`: 16:9 presentation slide deck with native SVG text and keyboard navigation (`slide_html/`, `slide.pdf`).
66
+ - `drawlib init doc`: Linear technical specification / whitepaper (`*_html/`, `*_markdown/`, `*.pdf`, plus on-demand editable MS Word `*.docx` via `drawlib build docx`).
67
+ - `drawlib init slide`: 16:9 presentation slide deck with native SVG text, Presenter View, and keyboard navigation (`slide_html/`, `slide.pdf`, plus on-demand editable MS PowerPoint `slide.pptx` via `drawlib build pptx`).
89
68
  - `drawlib init images`: Standalone batch Python illustration scripts (`images_src/` -> `images/`).
90
69
 
91
70
  ---
@@ -100,7 +79,7 @@ Drawlib is engineered from the ground up for **AI-native documentation and diagr
100
79
  2. **Code Synthesis & Grid Preview (`drawlib show -g`)**: The agent writes Python drawing blocks and Markdown prose, then renders a headless preview with a coordinate grid overlay.
101
80
  3. **Multimodal Inspection & Self-Repair**: The agent visually inspects the rendered PNG for text clipping, overlapping labels, or style imbalances, repairing coordinates and styles autonomously until the diagram passes inspection.
102
81
  - **Human Outer Loop (Intent & Review)**:
103
- - The developer stays focused on high-level architecture and intent—providing initial goals, reviewing the compiled **Published Docs** (HTML / PDF / GitHub MD / Slide), and iterating on direction without ever nudging pixels in a GUI tool.
82
+ - The developer stays focused on high-level architecture and intent—providing initial goals, reviewing the compiled **Published Docs** (HTML / PDF / MS Word / GitHub MD / Slide / MS PowerPoint), and iterating on direction without ever nudging pixels in a GUI tool.
104
83
 
105
84
  ---
106
85
 
@@ -110,14 +89,13 @@ Install `drawlib` from PyPI using `pip` or `uv`:
110
89
 
111
90
  ```bash
112
91
  pip install drawlib
92
+ # or: uv add drawlib
113
93
  ```
114
94
 
115
- To enable headless PDF export for documentation sites, linear documents, and slide decks, install the `[pdf]` extra and Chromium:
95
+ PDF, MS Word (`.docx`), and MS PowerPoint (`.pptx`) export work out of the box—`playwright`, `python-docx`, and `python-pptx` are standard dependencies, and headless Chromium (`chromium-headless-shell`) is downloaded automatically on your first `drawlib build pdf` or `drawlib build pptx` run.
116
96
 
117
- ```bash
118
- pip install "drawlib[pdf]"
119
- playwright install chromium
120
- ```
97
+ - **Offline / Air-Gapped / CI Environments**: Pre-download all fonts, icons, maps, and headless Chromium ahead of time with `drawlib cache download --all` (or headless Chromium only with `drawlib cache download --browser`).
98
+ - **Minimal Linux Containers** (e.g., `python:3.12-slim` lacking OS shared libraries such as `libnss3` or `libgbm1`): Install OS browser dependencies once via `playwright install-deps chromium` (or `playwright install --with-deps --only-shell chromium`).
121
99
 
122
100
  Verify the installation:
123
101
 
@@ -222,6 +200,10 @@ Compile or preview with the `drawlib` CLI:
222
200
  # Build HTML site, GitHub Markdown, or PDF
223
201
  ./docs_src/build.sh
224
202
 
203
+ # Optional on-demand export to editable MS Word (.docx) or MS PowerPoint (.pptx)
204
+ drawlib build docx doc_src/ -o spec.docx --generate-index
205
+ drawlib build pptx slide_src/ -o deck.pptx
206
+
225
207
  # Launch local HTTP server with broken-link check at http://localhost:8000
226
208
  drawlib serve docs_html/
227
209
 
@@ -236,11 +218,11 @@ drawlib show docs_src/index.md service_routing.png -g -o preview_grid.png
236
218
  | Command | Description |
237
219
  | :--- | :--- |
238
220
  | `drawlib init <site\|doc\|slide\|images>` | Scaffold a new documentation, slide deck, or image project |
239
- | `drawlib build <html\|markdown\|pdf\|image>` | Compile source files into HTML, Markdown, PDF, or PNG/WebP images |
221
+ | `drawlib build <html\|markdown\|pdf\|docx\|slide\|pptx\|image>` | Compile source files into HTML, Markdown, PDF, MS Word (`.docx`), HTML Slides, MS PowerPoint (`.pptx`), or PNG/WebP images |
240
222
  | `drawlib serve <html_dir> [--check]` | Start a local HTTP server for built HTML docs/slides with pre-flight link checks |
241
223
  | `drawlib show <file> [target] [-g]` | Render and inspect a single script or embedded Markdown diagram (with optional grid) |
242
224
  | `drawlib rules show [topic]` | On-demand CLI reference for AI agents to look up detailed API specs & best practices (`overview`, `style-guide`, `api`, `lib-*`) |
243
- | `drawlib cache <list\|download\|clear>` | Manage local font and icon asset caches (supports offline pre-caching via `--all`) |
225
+ | `drawlib cache <list\|download\|clear>` | Manage local font, icon, map, and headless Chromium caches (supports offline pre-caching via `--all` or `--browser`) |
244
226
 
245
227
  ---
246
228
 
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "drawlib"
7
- version = "0.3.1"
7
+ version = "0.3.2"
8
8
  description = "Python drawing library. Illustration as Code."
9
9
  readme = "docs/README_PYPI.md"
10
10
  requires-python = ">=3.11"
@@ -18,6 +18,9 @@ dependencies = [
18
18
  "jinja2>=3.1",
19
19
  "typer>=0.12.0",
20
20
  "rich>=13.0.0",
21
+ "playwright>=1.49.0",
22
+ "python-docx>=1.2.0",
23
+ "python-pptx>=1.0.2",
21
24
  ]
22
25
 
23
26
  [project.urls]
@@ -27,11 +30,6 @@ Repository = "https://github.com/yuichi110/drawlib"
27
30
  [project.scripts]
28
31
  drawlib = "drawlib._cli.main:main"
29
32
 
30
- [project.optional-dependencies]
31
- pdf = [
32
- "playwright>=1.40.0",
33
- ]
34
-
35
33
  [dependency-groups]
36
34
  dev = [
37
35
  "types-pillow>=10.2.0.20240311",
@@ -44,7 +42,6 @@ dev = [
44
42
  "typer>=0.12.0",
45
43
  "rich>=13.0.0",
46
44
  "pytest-xdist>=3.8.0",
47
- "playwright>=1.40.0",
48
45
  ]
49
46
 
50
47
  [tool.ruff]
@@ -11,6 +11,11 @@
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
+ from drawlib._builder._common.browser import (
15
+ import_sync_playwright,
16
+ install_headless_chromium,
17
+ launch_headless_chromium,
18
+ )
14
19
  from drawlib._builder._common.cache import (
15
20
  BuildImageCache,
16
21
  CliImageCache,
@@ -23,6 +28,11 @@ from drawlib._builder._common.cache_manager import (
23
28
  download_cache,
24
29
  list_cache,
25
30
  )
31
+ from drawlib._builder._common.office import (
32
+ ensure_static_office_image,
33
+ normalize_opc_zip_timestamps,
34
+ resolve_office_datetime,
35
+ )
26
36
  from drawlib._builder._common.progress import (
27
37
  BAR_WIDTH,
28
38
  FileBuildProgress,
@@ -44,13 +54,19 @@ __all__ = [
44
54
  "clear_cache",
45
55
  "clear_image_cache",
46
56
  "download_cache",
57
+ "ensure_static_office_image",
47
58
  "format_duplicate_output_error",
48
59
  "format_progress_line",
49
60
  "hash_file",
50
61
  "hash_text",
62
+ "import_sync_playwright",
63
+ "install_headless_chromium",
64
+ "launch_headless_chromium",
51
65
  "list_cache",
52
66
  "load_styles",
53
67
  "load_styles_and_utils",
54
68
  "load_utils",
69
+ "normalize_opc_zip_timestamps",
70
+ "resolve_office_datetime",
55
71
  "resolve_styles_and_utils",
56
72
  ]
@@ -0,0 +1,267 @@
1
+ # Copyright (c) 2026 Yuichi Ito (yuichi@yuichi.com)
2
+ #
3
+ # This software is licensed under the Apache License, Version 2.0.
4
+ # For more information, please visit: https://github.com/yuichi110/drawlib
5
+ #
6
+ # This software is provided "as is", without warranty of any kind,
7
+ # express or implied, including but not limited to the warranties of
8
+ # merchantability, fitness for a particular purpose and noninfringement.
9
+
10
+ """Shared Playwright headless Chromium launcher and on-demand installer."""
11
+
12
+ from __future__ import annotations
13
+
14
+ import contextlib
15
+ import os
16
+ import subprocess # noqa: S404
17
+ import sys
18
+ import tempfile
19
+ import threading
20
+ from collections.abc import Callable, Iterator, Sequence
21
+ from pathlib import Path
22
+ from typing import TYPE_CHECKING, Final
23
+
24
+ from drawlib._core.l1_core import logger
25
+
26
+ if TYPE_CHECKING:
27
+ from playwright.sync_api import Browser, Playwright, PlaywrightContextManager
28
+
29
+ _INSTALL_ARGS: Final[tuple[str, ...]] = ("install", "--only-shell", "chromium")
30
+ _DEFAULT_CHROMIUM_ARGS: Final[tuple[str, ...]] = (
31
+ "--font-render-hinting=medium",
32
+ "--enable-font-antialiasing",
33
+ )
34
+ _INSTALL_THREAD_LOCK = threading.Lock()
35
+
36
+
37
+ def _resolve_lock_file_paths() -> list[Path]:
38
+ """Return candidate per-user lock file paths in priority order."""
39
+ candidates: list[Path] = []
40
+ browsers_path = os.environ.get("PLAYWRIGHT_BROWSERS_PATH", "").strip()
41
+ if browsers_path and browsers_path != "0":
42
+ candidates.append(Path(browsers_path).expanduser() / ".drawlib_browser_install.lock")
43
+
44
+ if sys.platform == "win32":
45
+ local_app_data = os.environ.get("LOCALAPPDATA", str(Path.home()))
46
+ candidates.append(Path(local_app_data) / "drawlib" / "playwright_install.lock")
47
+ else:
48
+ xdg_cache = os.environ.get("XDG_CACHE_HOME", str(Path.home() / ".cache"))
49
+ candidates.append(Path(xdg_cache) / "drawlib" / "playwright_install.lock")
50
+
51
+ uid_suffix = str(os.getuid()) if hasattr(os, "getuid") else "user"
52
+ candidates.append(Path(tempfile.gettempdir()) / f"drawlib_{uid_suffix}" / "playwright_install.lock")
53
+ return candidates
54
+
55
+
56
+ @contextlib.contextmanager
57
+ def _browser_install_lock() -> Iterator[None]:
58
+ """Serialize concurrent headless Chromium downloads across threads and processes."""
59
+ with _INSTALL_THREAD_LOCK:
60
+ lock_handle = None
61
+ for lock_path in _resolve_lock_file_paths():
62
+ try:
63
+ lock_path.parent.mkdir(parents=True, exist_ok=True)
64
+ lock_handle = lock_path.open("a+", encoding="utf-8")
65
+ break
66
+ except OSError:
67
+ continue
68
+
69
+ if lock_handle is None:
70
+ yield
71
+ return
72
+
73
+ locked = False
74
+ try:
75
+ with contextlib.suppress(ImportError, OSError):
76
+ import fcntl
77
+
78
+ fcntl.flock(lock_handle.fileno(), fcntl.LOCK_EX)
79
+ locked = True
80
+ yield
81
+ finally:
82
+ if locked:
83
+ with contextlib.suppress(ImportError, OSError):
84
+ import fcntl
85
+
86
+ fcntl.flock(lock_handle.fileno(), fcntl.LOCK_UN)
87
+ with contextlib.suppress(OSError):
88
+ lock_handle.close()
89
+
90
+
91
+ def _is_missing_browser_executable_error(err: BaseException) -> bool:
92
+ """Return True if Playwright failed because the browser binary is not downloaded yet."""
93
+ err_lower = str(err).lower()
94
+ return (
95
+ "executable doesn't exist" in err_lower
96
+ or "looks like playwright was just installed or updated" in err_lower
97
+ )
98
+
99
+
100
+ def _is_missing_system_deps_error(err: BaseException) -> bool:
101
+ """Return True if Chromium failed due to missing Linux OS shared libraries."""
102
+ err_lower = str(err).lower()
103
+ return any(
104
+ marker in err_lower
105
+ for marker in (
106
+ "host system is missing dependencies",
107
+ "error while loading shared libraries",
108
+ "cannot open shared object file",
109
+ "install-deps",
110
+ )
111
+ )
112
+
113
+
114
+ def _format_missing_playwright_error(context_label: str) -> str:
115
+ """Format an actionable error message when the playwright Python package is missing."""
116
+ return (
117
+ f"\n[{context_label} Error]\n"
118
+ f"{context_label} requires the 'playwright' package.\n\n"
119
+ "Reinstall drawlib or install Playwright:\n"
120
+ " - For uv users:\n"
121
+ " uv sync\n"
122
+ " (or: uv add playwright)\n\n"
123
+ " - For pip users:\n"
124
+ " pip install drawlib\n"
125
+ " (or: pip install playwright)\n"
126
+ )
127
+
128
+
129
+ def _format_missing_system_deps_error(context_label: str, err: BaseException) -> str:
130
+ """Format an actionable error message for CI / minimal Linux containers missing OS libraries."""
131
+ return (
132
+ f"\n[{context_label} Error]\n"
133
+ "Headless Chromium could not start because required OS shared libraries are missing\n"
134
+ "(common in minimal Linux containers and CI pipelines).\n\n"
135
+ "Install the required system dependencies (requires root/sudo privileges):\n"
136
+ " - For uv users:\n"
137
+ " uv run playwright install --with-deps chromium\n"
138
+ " (or OS libraries only: uv run playwright install-deps chromium)\n\n"
139
+ " - For pip / Docker users:\n"
140
+ " playwright install --with-deps chromium\n"
141
+ " (or OS libraries only: playwright install-deps chromium)\n\n"
142
+ f"Details:\n{err}"
143
+ )
144
+
145
+
146
+ def _format_missing_browser_error(context_label: str, detail: str = "") -> str:
147
+ """Format an actionable error message when headless Chromium cannot be downloaded."""
148
+ extra = f"\nDetails:\n{detail}\n" if detail else ""
149
+ return (
150
+ f"\n[{context_label} Error]\n"
151
+ "Headless Chromium browser is not installed and could not be downloaded automatically.\n\n"
152
+ "To pre-download headless Chromium manually, run:\n"
153
+ " - Via drawlib CLI:\n"
154
+ " uv run drawlib cache download --browser\n"
155
+ " (or: drawlib cache download --browser)\n\n"
156
+ " - Via Playwright CLI:\n"
157
+ " uv run playwright install --only-shell chromium\n"
158
+ " (or: playwright install --only-shell chromium)\n"
159
+ f"{extra}"
160
+ )
161
+
162
+
163
+ def import_sync_playwright(
164
+ context_label: str = "PDF Export",
165
+ ) -> Callable[[], PlaywrightContextManager]:
166
+ """Lazily import and return `playwright.sync_api.sync_playwright`.
167
+
168
+ Args:
169
+ context_label (str): Human-readable feature name for error messages.
170
+
171
+ Returns:
172
+ Callable[[], PlaywrightContextManager]: Playwright sync context manager factory.
173
+
174
+ Raises:
175
+ RuntimeError: If the `playwright` package is not installed.
176
+ """
177
+ try:
178
+ from playwright.sync_api import sync_playwright
179
+ except ImportError as err:
180
+ raise RuntimeError(_format_missing_playwright_error(context_label)) from err
181
+ return sync_playwright
182
+
183
+
184
+ def install_headless_chromium(context_label: str = "Browser Setup") -> None:
185
+ """Download Playwright's lightweight `chromium-headless-shell` via its bundled driver.
186
+
187
+ Args:
188
+ context_label (str): Human-readable feature name for error messages.
189
+
190
+ Raises:
191
+ RuntimeError: If Playwright is missing, driver binaries are invalid, or download fails.
192
+ """
193
+ try:
194
+ from playwright._impl._driver import ( # noqa: PLC2701
195
+ compute_driver_executable,
196
+ get_driver_env,
197
+ )
198
+ except ImportError as err:
199
+ raise RuntimeError(_format_missing_playwright_error(context_label)) from err
200
+
201
+ driver_executable, driver_cli = compute_driver_executable()
202
+ exec_path = Path(driver_executable).resolve()
203
+ cli_path = Path(driver_cli).resolve()
204
+ if not exec_path.is_file() or not cli_path.is_file():
205
+ detail = f"Playwright driver executable not found ({exec_path}, {cli_path})."
206
+ raise RuntimeError(_format_missing_browser_error(context_label, detail=detail))
207
+
208
+ with _browser_install_lock():
209
+ logger.info("Downloading headless Chromium browser (first-time setup)...")
210
+ proc = subprocess.run( # noqa: S603
211
+ [str(exec_path), str(cli_path), *_INSTALL_ARGS],
212
+ env=get_driver_env(),
213
+ capture_output=True,
214
+ text=True,
215
+ check=False,
216
+ )
217
+ if proc.returncode != 0:
218
+ output = (proc.stderr or proc.stdout or "").strip()
219
+ detail = output or f"Playwright driver exited with status code {proc.returncode}."
220
+ raise RuntimeError(_format_missing_browser_error(context_label, detail=detail))
221
+ logger.info("Headless Chromium browser is ready.")
222
+
223
+
224
+ def launch_headless_chromium(
225
+ playwright: Playwright,
226
+ *,
227
+ args: Sequence[str] | None = None,
228
+ auto_install: bool = True,
229
+ context_label: str = "PDF Export",
230
+ ) -> Browser:
231
+ """Launch headless Chromium, automatically downloading `chromium-headless-shell` on first use.
232
+
233
+ Args:
234
+ playwright (Playwright): Active Playwright instance from `sync_playwright()`.
235
+ args (Sequence[str] | None): Chromium launch flags. Uses font-hinting defaults when None.
236
+ auto_install (bool): Automatically download `chromium-headless-shell` if missing.
237
+ context_label (str): Human-readable feature name for error messages.
238
+
239
+ Returns:
240
+ Browser: Launched headless Chromium browser instance.
241
+
242
+ Raises:
243
+ RuntimeError: If browser launch or on-demand installation fails.
244
+ """
245
+ launch_args = list(args) if args is not None else list(_DEFAULT_CHROMIUM_ARGS)
246
+ try:
247
+ return playwright.chromium.launch(headless=True, args=launch_args)
248
+ except Exception as err:
249
+ if _is_missing_system_deps_error(err):
250
+ raise RuntimeError(_format_missing_system_deps_error(context_label, err)) from err
251
+ if not _is_missing_browser_executable_error(err):
252
+ raise RuntimeError(f"Failed to launch Chromium browser: {err}") from err
253
+ if not auto_install:
254
+ raise RuntimeError(_format_missing_browser_error(context_label, detail=str(err))) from err
255
+
256
+ install_headless_chromium(context_label=context_label)
257
+
258
+ try:
259
+ return playwright.chromium.launch(headless=True, args=launch_args)
260
+ except Exception as retry_err:
261
+ if _is_missing_system_deps_error(retry_err):
262
+ raise RuntimeError(_format_missing_system_deps_error(context_label, retry_err)) from retry_err
263
+ if _is_missing_browser_executable_error(retry_err):
264
+ raise RuntimeError(
265
+ _format_missing_browser_error(context_label, detail=str(retry_err))
266
+ ) from retry_err
267
+ raise RuntimeError(f"Failed to launch Chromium browser: {retry_err}") from retry_err
@@ -12,13 +12,12 @@
12
12
  from __future__ import annotations
13
13
 
14
14
  import hashlib
15
+ import importlib.metadata
15
16
  import os
16
17
  import re
17
18
  import sqlite3
18
19
  import time
19
20
 
20
- import matplotlib
21
-
22
21
  from drawlib._core.l1_core import (
23
22
  LIB_VERSION,
24
23
  ensure_cache_dir_ignores,
@@ -31,6 +30,14 @@ SCHEMA_VERSION = "1"
31
30
  _STRING_LITERAL_RE = re.compile(r"""['"]([^'"\n]{1,128}\.[a-zA-Z0-9]{1,8})['"]""")
32
31
 
33
32
 
33
+ def _get_matplotlib_version() -> str:
34
+ """Return installed matplotlib package version without eagerly importing matplotlib."""
35
+ try:
36
+ return importlib.metadata.version("matplotlib")
37
+ except importlib.metadata.PackageNotFoundError:
38
+ return ""
39
+
40
+
34
41
  def hash_text(text: str) -> str:
35
42
  """Compute SHA-256 hex digest of a UTF-8 string."""
36
43
  return hashlib.sha256(text.encode("utf-8")).hexdigest()
@@ -148,7 +155,7 @@ class BuildImageCache:
148
155
  self._max_size_bytes = max_size_bytes
149
156
  self._lib_version = lib_version or LIB_VERSION
150
157
  self._matplotlib_version = (
151
- matplotlib_version if matplotlib_version is not None else getattr(matplotlib, "__version__", "")
158
+ matplotlib_version if matplotlib_version is not None else _get_matplotlib_version()
152
159
  )
153
160
  resolved_path = db_path or DEFAULT_CACHE_REL_PATH
154
161
  self._db_path = os.path.abspath(resolved_path)
@@ -528,7 +535,7 @@ class CliImageCache:
528
535
  self._enabled = enabled
529
536
  self._lib_version = lib_version or LIB_VERSION
530
537
  self._matplotlib_version = (
531
- matplotlib_version if matplotlib_version is not None else getattr(matplotlib, "__version__", "")
538
+ matplotlib_version if matplotlib_version is not None else _get_matplotlib_version()
532
539
  )
533
540
  resolved_path = db_path or get_default_cache_db_path()
534
541
  self._db_path = os.path.abspath(resolved_path)
@@ -13,6 +13,7 @@ from __future__ import annotations
13
13
 
14
14
  from typing import Any
15
15
 
16
+ from drawlib._builder._common.browser import install_headless_chromium
16
17
  from drawlib._builder._common.cache import BuildImageCache, CliImageCache
17
18
  from drawlib._core.l3_external import (
18
19
  download_all_assets,
@@ -78,23 +79,29 @@ def download_cache(
78
79
  fonts: bool = False,
79
80
  icons: bool = False,
80
81
  maps: bool = False,
82
+ browser: bool = False,
81
83
  ) -> None:
82
- """Pre-download font, icon, and/or map packages into the local drawlib cache.
84
+ """Pre-download font, icon, map, and/or headless browser assets into local cache.
83
85
 
84
86
  Args:
85
87
  all_assets (bool): Download all assets (default True if no specific category is set).
86
88
  fonts (bool): Download font packages only.
87
89
  icons (bool): Download icon packages only.
88
90
  maps (bool): Download map packages only.
91
+ browser (bool): Download headless Chromium browser (`chromium-headless-shell`) only.
89
92
  """
90
- if fonts or icons or maps:
93
+ if fonts or icons or maps or browser:
91
94
  if fonts:
92
95
  download_all_fonts()
93
96
  if icons:
94
97
  download_all_icons()
95
98
  if maps:
96
99
  download_all_maps()
100
+ if browser:
101
+ install_headless_chromium(context_label="Cache Download")
97
102
  elif all_assets:
98
103
  download_all_assets()
104
+ install_headless_chromium(context_label="Cache Download")
99
105
  else:
100
106
  download_all_assets()
107
+ install_headless_chromium(context_label="Cache Download")