drawlib 0.2.4.dev1__tar.gz → 0.3.0__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 (616) hide show
  1. drawlib-0.3.0/PKG-INFO +252 -0
  2. drawlib-0.3.0/docs/README_PYPI.md +231 -0
  3. drawlib-0.3.0/pyproject.toml +154 -0
  4. drawlib-0.3.0/src/drawlib/__init__.py +91 -0
  5. {drawlib-0.2.4.dev1 → drawlib-0.3.0/src}/drawlib/__main__.py +6 -4
  6. drawlib-0.3.0/src/drawlib/_anim/__init__.py +16 -0
  7. drawlib-0.3.0/src/drawlib/_anim/_animation.py +200 -0
  8. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/duml.py → drawlib-0.3.0/src/drawlib/_builder/__init__.py +3 -3
  9. drawlib-0.3.0/src/drawlib/_builder/_common/__init__.py +56 -0
  10. drawlib-0.3.0/src/drawlib/_builder/_common/cache.py +712 -0
  11. drawlib-0.3.0/src/drawlib/_builder/_common/cache_manager.py +100 -0
  12. drawlib-0.3.0/src/drawlib/_builder/_common/progress.py +142 -0
  13. drawlib-0.3.0/src/drawlib/_builder/_common/styles_loader.py +245 -0
  14. drawlib-0.3.0/src/drawlib/_builder/_image_ast.py +319 -0
  15. drawlib-0.3.0/src/drawlib/_builder/doc_builder/__init__.py +161 -0
  16. drawlib-0.3.0/src/drawlib/_builder/doc_builder/compiler/__init__.py +22 -0
  17. drawlib-0.3.0/src/drawlib/_builder/doc_builder/compiler/base.py +226 -0
  18. drawlib-0.3.0/src/drawlib/_builder/doc_builder/compiler/html.py +572 -0
  19. drawlib-0.3.0/src/drawlib/_builder/doc_builder/compiler/markdown.py +211 -0
  20. drawlib-0.3.0/src/drawlib/_builder/doc_builder/compiler/pdf.py +200 -0
  21. drawlib-0.3.0/src/drawlib/_builder/doc_builder/detector.py +174 -0
  22. drawlib-0.3.0/src/drawlib/_builder/doc_builder/exporter_html.py +175 -0
  23. drawlib-0.3.0/src/drawlib/_builder/doc_builder/exporter_md.py +25 -0
  24. drawlib-0.3.0/src/drawlib/_builder/doc_builder/exporter_pdf.py +292 -0
  25. drawlib-0.3.0/src/drawlib/_builder/doc_builder/highlight.py +66 -0
  26. drawlib-0.3.0/src/drawlib/_builder/doc_builder/merger.py +380 -0
  27. drawlib-0.3.0/src/drawlib/_builder/doc_builder/navbar.py +210 -0
  28. drawlib-0.3.0/src/drawlib/_builder/doc_builder/parser_md.py +60 -0
  29. drawlib-0.3.0/src/drawlib/_builder/doc_builder/processor/__init__.py +44 -0
  30. drawlib-0.3.0/src/drawlib/_builder/doc_builder/processor/options.py +225 -0
  31. drawlib-0.3.0/src/drawlib/_builder/doc_builder/processor/parser.py +151 -0
  32. drawlib-0.3.0/src/drawlib/_builder/doc_builder/processor/processor.py +447 -0
  33. drawlib-0.3.0/src/drawlib/_builder/doc_builder/processor/viewer.py +265 -0
  34. drawlib-0.3.0/src/drawlib/_builder/doc_builder/progress.py +99 -0
  35. drawlib-0.3.0/src/drawlib/_builder/doc_builder/styles_utils.py +26 -0
  36. drawlib-0.3.0/src/drawlib/_builder/image_builder.py +733 -0
  37. drawlib-0.3.0/src/drawlib/_builder/rules_builder.py +293 -0
  38. drawlib-0.3.0/src/drawlib/_cached_assets/.gitignore +4 -0
  39. {drawlib-0.2.4.dev1/drawlib/assets/v0_2/fonts → drawlib-0.3.0/src/drawlib/_cached_assets}/__init__.py +2 -2
  40. drawlib-0.3.0/src/drawlib/_charts/__init__.py +54 -0
  41. drawlib-0.3.0/src/drawlib/_charts/_common/__init__.py +33 -0
  42. drawlib-0.3.0/src/drawlib/_charts/_common/_axis.py +326 -0
  43. drawlib-0.3.0/src/drawlib/_charts/_common/_base.py +275 -0
  44. drawlib-0.3.0/src/drawlib/_charts/_common/_legend.py +128 -0
  45. drawlib-0.3.0/src/drawlib/_charts/_common/_style_utils.py +72 -0
  46. drawlib-0.3.0/src/drawlib/_charts/_common/_types.py +62 -0
  47. drawlib-0.3.0/src/drawlib/_charts/area_chart/__init__.py +20 -0
  48. drawlib-0.3.0/src/drawlib/_charts/area_chart/_chart.py +176 -0
  49. drawlib-0.3.0/src/drawlib/_charts/area_chart/_series.py +68 -0
  50. drawlib-0.3.0/src/drawlib/_charts/bar_chart/__init__.py +20 -0
  51. drawlib-0.3.0/src/drawlib/_charts/bar_chart/_chart.py +171 -0
  52. drawlib-0.3.0/src/drawlib/_charts/bar_chart/_renderer.py +600 -0
  53. drawlib-0.3.0/src/drawlib/_charts/bar_chart/_series.py +55 -0
  54. drawlib-0.3.0/src/drawlib/_charts/gantt_chart/__init__.py +30 -0
  55. drawlib-0.3.0/src/drawlib/_charts/gantt_chart/_chart.py +317 -0
  56. drawlib-0.3.0/src/drawlib/_charts/gantt_chart/_item.py +169 -0
  57. drawlib-0.3.0/src/drawlib/_charts/gantt_chart/_renderer.py +488 -0
  58. drawlib-0.3.0/src/drawlib/_charts/line_chart/__init__.py +20 -0
  59. drawlib-0.3.0/src/drawlib/_charts/line_chart/_base.py +66 -0
  60. drawlib-0.3.0/src/drawlib/_charts/line_chart/_line.py +166 -0
  61. drawlib-0.3.0/src/drawlib/_charts/line_chart/_renderer.py +564 -0
  62. drawlib-0.3.0/src/drawlib/_charts/line_chart/_series.py +65 -0
  63. drawlib-0.3.0/src/drawlib/_charts/pie_chart/__init__.py +20 -0
  64. drawlib-0.3.0/src/drawlib/_charts/pie_chart/_chart.py +152 -0
  65. drawlib-0.3.0/src/drawlib/_charts/pie_chart/_renderer.py +171 -0
  66. drawlib-0.3.0/src/drawlib/_charts/pie_chart/_slice.py +50 -0
  67. drawlib-0.3.0/src/drawlib/_charts/radar_chart/__init__.py +20 -0
  68. drawlib-0.3.0/src/drawlib/_charts/radar_chart/_chart.py +225 -0
  69. drawlib-0.3.0/src/drawlib/_charts/radar_chart/_renderer.py +282 -0
  70. drawlib-0.3.0/src/drawlib/_charts/radar_chart/_series.py +67 -0
  71. drawlib-0.3.0/src/drawlib/_charts/scatter_chart/__init__.py +21 -0
  72. drawlib-0.3.0/src/drawlib/_charts/scatter_chart/_chart.py +219 -0
  73. drawlib-0.3.0/src/drawlib/_charts/scatter_chart/_point.py +89 -0
  74. drawlib-0.3.0/src/drawlib/_charts/scatter_chart/_renderer.py +340 -0
  75. drawlib-0.3.0/src/drawlib/_cli/__init__.py +17 -0
  76. drawlib-0.3.0/src/drawlib/_cli/_drawlib.py +140 -0
  77. drawlib-0.3.0/src/drawlib/_cli/_help.py +26 -0
  78. drawlib-0.3.0/src/drawlib/_cli/_visualizers/__init__.py +30 -0
  79. drawlib-0.3.0/src/drawlib/_cli/_visualizers/_common.py +26 -0
  80. drawlib-0.3.0/src/drawlib/_cli/_visualizers/colors/__init__.py +83 -0
  81. drawlib-0.3.0/src/drawlib/_cli/_visualizers/colors/base.py +267 -0
  82. drawlib-0.3.0/src/drawlib/_cli/_visualizers/colors/css.py +18 -0
  83. drawlib-0.3.0/src/drawlib/_cli/_visualizers/colors/default.py +18 -0
  84. drawlib-0.3.0/src/drawlib/_cli/_visualizers/colors/google.py +18 -0
  85. drawlib-0.3.0/src/drawlib/_cli/_visualizers/colors/monochrome.py +18 -0
  86. drawlib-0.3.0/src/drawlib/_cli/_visualizers/styles/__init__.py +48 -0
  87. drawlib-0.3.0/src/drawlib/_cli/_visualizers/styles/base.py +611 -0
  88. drawlib-0.3.0/src/drawlib/_cli/_visualizers/styles/default.py +42 -0
  89. drawlib-0.3.0/src/drawlib/_cli/_visualizers/styles/google.py +42 -0
  90. drawlib-0.3.0/src/drawlib/_cli/_visualizers/styles/monochrome.py +42 -0
  91. drawlib-0.3.0/src/drawlib/_cli/commands/__init__.py +35 -0
  92. drawlib-0.3.0/src/drawlib/_cli/commands/build.py +303 -0
  93. drawlib-0.3.0/src/drawlib/_cli/commands/cache.py +138 -0
  94. drawlib-0.3.0/src/drawlib/_cli/commands/colors.py +150 -0
  95. drawlib-0.3.0/src/drawlib/_cli/commands/css.py +202 -0
  96. drawlib-0.3.0/src/drawlib/_cli/commands/init.py +279 -0
  97. drawlib-0.3.0/src/drawlib/_cli/commands/rules.py +187 -0
  98. drawlib-0.3.0/src/drawlib/_cli/commands/serve.py +70 -0
  99. drawlib-0.3.0/src/drawlib/_cli/commands/show.py +90 -0
  100. drawlib-0.3.0/src/drawlib/_cli/commands/styles.py +163 -0
  101. drawlib-0.3.0/src/drawlib/_cli/main.py +23 -0
  102. drawlib-0.3.0/src/drawlib/_core/__init__.py +24 -0
  103. drawlib-0.3.0/src/drawlib/_core/l1_core/__init__.py +52 -0
  104. drawlib-0.3.0/src/drawlib/_core/l1_core/_const.py +26 -0
  105. drawlib-0.2.4.dev1/drawlib/v0_2/private/logging.py → drawlib-0.3.0/src/drawlib/_core/l1_core/_logging.py +5 -3
  106. drawlib-0.3.0/src/drawlib/_core/l1_core/_path_utils.py +160 -0
  107. drawlib-0.2.4.dev1/drawlib/v0_2/private/dutil/settings.py → drawlib-0.3.0/src/drawlib/_core/l1_core/_settings.py +70 -16
  108. drawlib-0.3.0/src/drawlib/_core/l2_types/__init__.py +147 -0
  109. drawlib-0.3.0/src/drawlib/_core/l2_types/_color.py +28 -0
  110. drawlib-0.3.0/src/drawlib/_core/l2_types/_font.py +67 -0
  111. drawlib-0.3.0/src/drawlib/_core/l2_types/_geometry.py +21 -0
  112. drawlib-0.3.0/src/drawlib/_core/l2_types/_image.py +30 -0
  113. drawlib-0.3.0/src/drawlib/_core/l2_types/_path.py +76 -0
  114. drawlib-0.3.0/src/drawlib/_core/l2_types/_primitive.py +33 -0
  115. drawlib-0.3.0/src/drawlib/_core/l2_types/_style.py +247 -0
  116. drawlib-0.3.0/src/drawlib/_core/l3_colors/__init__.py +37 -0
  117. drawlib-0.3.0/src/drawlib/_core/l3_colors/_base_colors.py +176 -0
  118. drawlib-0.3.0/src/drawlib/_core/l3_colors/_color.py +296 -0
  119. drawlib-0.3.0/src/drawlib/_core/l3_colors/_color_utils.py +292 -0
  120. drawlib-0.3.0/src/drawlib/_core/l3_external/__init__.py +47 -0
  121. drawlib-0.3.0/src/drawlib/_core/l3_external/_cache.py +71 -0
  122. drawlib-0.3.0/src/drawlib/_core/l3_external/_download.py +97 -0
  123. drawlib-0.3.0/src/drawlib/_core/l3_external/_package.py +300 -0
  124. drawlib-0.3.0/src/drawlib/_core/l3_fonts/__init__.py +60 -0
  125. drawlib-0.3.0/src/drawlib/_core/l3_fonts/_metadata.py +46 -0
  126. drawlib-0.3.0/src/drawlib/_core/l3_fonts/_names.py +281 -0
  127. drawlib-0.3.0/src/drawlib/_core/l3_fonts/_resources.py +585 -0
  128. drawlib-0.3.0/src/drawlib/_core/l3_images/__init__.py +20 -0
  129. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/dimage.py → drawlib-0.3.0/src/drawlib/_core/l3_images/_dimage.py +236 -163
  130. drawlib-0.3.0/src/drawlib/_core/l3_math/__init__.py +54 -0
  131. drawlib-0.3.0/src/drawlib/_core/l3_math/_geometry.py +439 -0
  132. drawlib-0.3.0/src/drawlib/_core/l3_math/_routing.py +101 -0
  133. drawlib-0.3.0/src/drawlib/_core/l3_styles/__init__.py +34 -0
  134. drawlib-0.3.0/src/drawlib/_core/l3_styles/_base_styles.py +564 -0
  135. drawlib-0.3.0/src/drawlib/_core/l3_styles/_style.py +300 -0
  136. drawlib-0.3.0/src/drawlib/_core/l4_canvas/__init__.py +153 -0
  137. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_base.py +520 -0
  138. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_canvas.py +472 -0
  139. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_image.py +177 -0
  140. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_image_code.py +123 -0
  141. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_line.py +342 -0
  142. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_line_utils.py +212 -0
  143. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/__init__.py +45 -0
  144. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_arrow.py +347 -0
  145. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_arrow_builders.py +494 -0
  146. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_badge.py +430 -0
  147. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_badge_builders.py +629 -0
  148. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_basic.py +335 -0
  149. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_container.py +401 -0
  150. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_container_builders.py +1102 -0
  151. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_path_utils.py +665 -0
  152. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_polygon.py +545 -0
  153. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_shape_utils.py +488 -0
  154. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_symbol.py +485 -0
  155. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_shapes/_symbol_builders.py +1413 -0
  156. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_text.py +93 -0
  157. drawlib-0.3.0/src/drawlib/_core/l4_canvas/_text_utils.py +225 -0
  158. drawlib-0.3.0/src/drawlib/_diagrams/__init__.py +35 -0
  159. drawlib-0.3.0/src/drawlib/_diagrams/_common.py +540 -0
  160. drawlib-0.3.0/src/drawlib/_diagrams/architecture/__init__.py +98 -0
  161. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_diagram.py +229 -0
  162. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_edge.py +173 -0
  163. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_group.py +212 -0
  164. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_icons.py +4781 -0
  165. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_junction.py +117 -0
  166. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_node.py +209 -0
  167. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_render_edges.py +210 -0
  168. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_renderer.py +216 -0
  169. drawlib-0.3.0/src/drawlib/_diagrams/architecture/_types.py +127 -0
  170. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/__init__.py +34 -0
  171. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/_class_node.py +256 -0
  172. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/_diagram.py +243 -0
  173. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/_relationship.py +116 -0
  174. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/_render_node.py +203 -0
  175. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/_render_relationship.py +441 -0
  176. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/_renderer.py +103 -0
  177. drawlib-0.3.0/src/drawlib/_diagrams/class_diagram/_types.py +122 -0
  178. drawlib-0.3.0/src/drawlib/_diagrams/er/__init__.py +27 -0
  179. drawlib-0.3.0/src/drawlib/_diagrams/er/_diagram.py +216 -0
  180. drawlib-0.3.0/src/drawlib/_diagrams/er/_entity.py +242 -0
  181. drawlib-0.3.0/src/drawlib/_diagrams/er/_relationship.py +90 -0
  182. drawlib-0.3.0/src/drawlib/_diagrams/er/_renderer.py +482 -0
  183. drawlib-0.3.0/src/drawlib/_diagrams/er/_types.py +53 -0
  184. drawlib-0.3.0/src/drawlib/_diagrams/flow/__init__.py +40 -0
  185. drawlib-0.3.0/src/drawlib/_diagrams/flow/_diagram.py +296 -0
  186. drawlib-0.3.0/src/drawlib/_diagrams/flow/_edge.py +135 -0
  187. drawlib-0.3.0/src/drawlib/_diagrams/flow/_junction.py +128 -0
  188. drawlib-0.3.0/src/drawlib/_diagrams/flow/_lane.py +50 -0
  189. drawlib-0.3.0/src/drawlib/_diagrams/flow/_node.py +206 -0
  190. drawlib-0.3.0/src/drawlib/_diagrams/flow/_nodes.py +184 -0
  191. drawlib-0.3.0/src/drawlib/_diagrams/flow/_render_edges.py +242 -0
  192. drawlib-0.3.0/src/drawlib/_diagrams/flow/_render_lanes.py +170 -0
  193. drawlib-0.3.0/src/drawlib/_diagrams/flow/_renderer.py +186 -0
  194. drawlib-0.3.0/src/drawlib/_diagrams/flow/_types.py +46 -0
  195. drawlib-0.3.0/src/drawlib/_diagrams/sequence/__init__.py +28 -0
  196. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_block.py +71 -0
  197. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_diagram.py +441 -0
  198. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_group.py +71 -0
  199. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_layout.py +240 -0
  200. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_message.py +154 -0
  201. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_note.py +91 -0
  202. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_participant.py +246 -0
  203. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_render_elements.py +517 -0
  204. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_renderer.py +125 -0
  205. drawlib-0.3.0/src/drawlib/_diagrams/sequence/_types.py +128 -0
  206. drawlib-0.3.0/src/drawlib/_diagrams/state/__init__.py +46 -0
  207. drawlib-0.3.0/src/drawlib/_diagrams/state/_diagram.py +297 -0
  208. drawlib-0.3.0/src/drawlib/_diagrams/state/_render_node.py +420 -0
  209. drawlib-0.3.0/src/drawlib/_diagrams/state/_render_transition.py +509 -0
  210. drawlib-0.3.0/src/drawlib/_diagrams/state/_renderer.py +105 -0
  211. drawlib-0.3.0/src/drawlib/_diagrams/state/_state_node.py +340 -0
  212. drawlib-0.3.0/src/drawlib/_diagrams/state/_transition.py +133 -0
  213. drawlib-0.3.0/src/drawlib/_diagrams/state/_types.py +75 -0
  214. drawlib-0.3.0/src/drawlib/_graph/__init__.py +44 -0
  215. drawlib-0.3.0/src/drawlib/_graph/_architecture/__init__.py +16 -0
  216. drawlib-0.3.0/src/drawlib/_graph/_architecture/_graph.py +159 -0
  217. drawlib-0.3.0/src/drawlib/_graph/_architecture/_solver.py +709 -0
  218. drawlib-0.3.0/src/drawlib/_graph/_common/__init__.py +46 -0
  219. drawlib-0.3.0/src/drawlib/_graph/_common/_base.py +338 -0
  220. drawlib-0.3.0/src/drawlib/_graph/_common/_models.py +325 -0
  221. drawlib-0.3.0/src/drawlib/_graph/_common/_routing.py +204 -0
  222. drawlib-0.3.0/src/drawlib/_graph/_grid/__init__.py +16 -0
  223. drawlib-0.3.0/src/drawlib/_graph/_grid/_graph.py +238 -0
  224. drawlib-0.3.0/src/drawlib/_graph/_grid/_solver.py +191 -0
  225. drawlib-0.3.0/src/drawlib/_graph/_layered/__init__.py +16 -0
  226. drawlib-0.3.0/src/drawlib/_graph/_layered/_graph.py +142 -0
  227. drawlib-0.3.0/src/drawlib/_graph/_layered/_solver.py +346 -0
  228. drawlib-0.3.0/src/drawlib/_graph/_radial/__init__.py +18 -0
  229. drawlib-0.3.0/src/drawlib/_graph/_radial/_graph.py +165 -0
  230. drawlib-0.3.0/src/drawlib/_graph/_radial/_solver.py +256 -0
  231. drawlib-0.3.0/src/drawlib/_graph/_tree/__init__.py +18 -0
  232. drawlib-0.3.0/src/drawlib/_graph/_tree/_graph.py +279 -0
  233. drawlib-0.3.0/src/drawlib/_graph/_tree/_solver.py +232 -0
  234. drawlib-0.3.0/src/drawlib/_http_server/__init__.py +15 -0
  235. drawlib-0.3.0/src/drawlib/_http_server/_link_scanner.py +105 -0
  236. drawlib-0.3.0/src/drawlib/_http_server/_server.py +147 -0
  237. drawlib-0.3.0/src/drawlib/_icons/__init__.py +90 -0
  238. drawlib-0.3.0/src/drawlib/_icons/_utils.py +54 -0
  239. drawlib-0.3.0/src/drawlib/_icons/font_icons/__init__.py +20 -0
  240. drawlib-0.3.0/src/drawlib/_icons/font_icons/_base.py +117 -0
  241. drawlib-0.3.0/src/drawlib/_icons/font_icons/_font_icon.py +60 -0
  242. drawlib-0.3.0/src/drawlib/_icons/font_icons/phosphor/__init__.py +14 -0
  243. drawlib-0.3.0/src/drawlib/_icons/font_icons/phosphor/_base.py +60 -0
  244. drawlib-0.3.0/src/drawlib/_icons/font_icons/phosphor/_generated.py +27556 -0
  245. drawlib-0.3.0/src/drawlib/_icons/png_icons/__init__.py +84 -0
  246. drawlib-0.3.0/src/drawlib/_icons/png_icons/_base.py +124 -0
  247. drawlib-0.3.0/src/drawlib/_icons/png_icons/ai/__init__.py +14 -0
  248. drawlib-0.3.0/src/drawlib/_icons/png_icons/ai/_base.py +22 -0
  249. drawlib-0.3.0/src/drawlib/_icons/png_icons/ai/_generated.py +1218 -0
  250. drawlib-0.2.4.dev1/drawlib/apis.py → drawlib-0.3.0/src/drawlib/_icons/png_icons/aws/__init__.py +4 -5
  251. drawlib-0.3.0/src/drawlib/_icons/png_icons/aws/_base.py +22 -0
  252. drawlib-0.3.0/src/drawlib/_icons/png_icons/aws/_generated.py +6598 -0
  253. drawlib-0.3.0/src/drawlib/_icons/png_icons/azure/__init__.py +14 -0
  254. drawlib-0.3.0/src/drawlib/_icons/png_icons/azure/_base.py +22 -0
  255. drawlib-0.3.0/src/drawlib/_icons/png_icons/azure/_generated.py +5018 -0
  256. drawlib-0.3.0/src/drawlib/_icons/png_icons/business/__init__.py +14 -0
  257. drawlib-0.3.0/src/drawlib/_icons/png_icons/business/_base.py +22 -0
  258. drawlib-0.3.0/src/drawlib/_icons/png_icons/business/_generated.py +978 -0
  259. drawlib-0.2.4.dev1/drawlib/v0_2/__main__.py → drawlib-0.3.0/src/drawlib/_icons/png_icons/client/__init__.py +4 -5
  260. drawlib-0.3.0/src/drawlib/_icons/png_icons/client/_base.py +22 -0
  261. drawlib-0.3.0/src/drawlib/_icons/png_icons/client/_generated.py +1218 -0
  262. drawlib-0.3.0/src/drawlib/_icons/png_icons/cloud/__init__.py +14 -0
  263. drawlib-0.3.0/src/drawlib/_icons/png_icons/cloud/_base.py +22 -0
  264. drawlib-0.3.0/src/drawlib/_icons/png_icons/cloud/_generated.py +918 -0
  265. drawlib-0.3.0/src/drawlib/_icons/png_icons/cnative/__init__.py +14 -0
  266. drawlib-0.3.0/src/drawlib/_icons/png_icons/cnative/_base.py +22 -0
  267. drawlib-0.3.0/src/drawlib/_icons/png_icons/cnative/_generated.py +1478 -0
  268. drawlib-0.3.0/src/drawlib/_icons/png_icons/code/__init__.py +14 -0
  269. drawlib-0.3.0/src/drawlib/_icons/png_icons/code/_base.py +22 -0
  270. drawlib-0.3.0/src/drawlib/_icons/png_icons/code/_generated.py +1958 -0
  271. drawlib-0.3.0/src/drawlib/_icons/png_icons/data/__init__.py +14 -0
  272. drawlib-0.2.4.dev1/drawlib/v0_2/private/dutil/dutil_script.py → drawlib-0.3.0/src/drawlib/_icons/png_icons/data/_base.py +11 -11
  273. drawlib-0.3.0/src/drawlib/_icons/png_icons/data/_generated.py +1418 -0
  274. drawlib-0.3.0/src/drawlib/_icons/png_icons/devops/__init__.py +14 -0
  275. drawlib-0.3.0/src/drawlib/_icons/png_icons/devops/_base.py +22 -0
  276. drawlib-0.3.0/src/drawlib/_icons/png_icons/devops/_generated.py +1178 -0
  277. drawlib-0.3.0/src/drawlib/_icons/png_icons/facility/__init__.py +14 -0
  278. drawlib-0.3.0/src/drawlib/_icons/png_icons/facility/_base.py +22 -0
  279. drawlib-0.3.0/src/drawlib/_icons/png_icons/facility/_generated.py +998 -0
  280. {drawlib-0.2.4.dev1/drawlib/assets/v0_2/fonticons → drawlib-0.3.0/src/drawlib/_icons/png_icons/gcp}/__init__.py +6 -2
  281. drawlib-0.3.0/src/drawlib/_icons/png_icons/gcp/_base.py +22 -0
  282. drawlib-0.3.0/src/drawlib/_icons/png_icons/gcp/_generated.py +5018 -0
  283. drawlib-0.3.0/src/drawlib/_icons/png_icons/itservice/__init__.py +14 -0
  284. drawlib-0.3.0/src/drawlib/_icons/png_icons/itservice/_base.py +22 -0
  285. drawlib-0.3.0/src/drawlib/_icons/png_icons/itservice/_generated.py +898 -0
  286. drawlib-0.3.0/src/drawlib/_icons/png_icons/network/__init__.py +14 -0
  287. drawlib-0.3.0/src/drawlib/_icons/png_icons/network/_base.py +22 -0
  288. drawlib-0.3.0/src/drawlib/_icons/png_icons/network/_generated.py +1418 -0
  289. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_ai/__init__.py +14 -0
  290. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_ai/_base.py +22 -0
  291. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_ai/_generated.py +1618 -0
  292. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_business/__init__.py +14 -0
  293. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_business/_base.py +22 -0
  294. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_business/_generated.py +1538 -0
  295. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_client/__init__.py +14 -0
  296. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_client/_base.py +22 -0
  297. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_client/_generated.py +1858 -0
  298. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_cloud/__init__.py +14 -0
  299. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_cloud/_base.py +22 -0
  300. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_cloud/_generated.py +2958 -0
  301. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_cnative/__init__.py +14 -0
  302. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_cnative/_base.py +22 -0
  303. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_cnative/_generated.py +1478 -0
  304. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_code/__init__.py +14 -0
  305. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_code/_base.py +22 -0
  306. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_code/_generated.py +2438 -0
  307. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_data/__init__.py +14 -0
  308. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_data/_base.py +22 -0
  309. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_data/_generated.py +1738 -0
  310. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_devops/__init__.py +14 -0
  311. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_devops/_base.py +22 -0
  312. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_devops/_generated.py +1578 -0
  313. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_facility/__init__.py +14 -0
  314. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_facility/_base.py +22 -0
  315. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_facility/_generated.py +1738 -0
  316. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_itservice/__init__.py +14 -0
  317. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_itservice/_base.py +22 -0
  318. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_itservice/_generated.py +1298 -0
  319. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_network/__init__.py +14 -0
  320. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_network/_base.py +22 -0
  321. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_network/_generated.py +1418 -0
  322. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_security/__init__.py +14 -0
  323. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_security/_base.py +22 -0
  324. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_security/_generated.py +2078 -0
  325. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_server/__init__.py +14 -0
  326. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_server/_base.py +22 -0
  327. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_server/_generated.py +1618 -0
  328. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_social/__init__.py +14 -0
  329. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_social/_base.py +22 -0
  330. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_social/_generated.py +1338 -0
  331. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_workspace/__init__.py +14 -0
  332. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_workspace/_base.py +22 -0
  333. drawlib-0.3.0/src/drawlib/_icons/png_icons/original_workspace/_generated.py +1158 -0
  334. drawlib-0.3.0/src/drawlib/_icons/png_icons/security/__init__.py +14 -0
  335. drawlib-0.3.0/src/drawlib/_icons/png_icons/security/_base.py +22 -0
  336. drawlib-0.3.0/src/drawlib/_icons/png_icons/security/_generated.py +1498 -0
  337. drawlib-0.3.0/src/drawlib/_icons/png_icons/server/__init__.py +14 -0
  338. drawlib-0.3.0/src/drawlib/_icons/png_icons/server/_base.py +22 -0
  339. drawlib-0.3.0/src/drawlib/_icons/png_icons/server/_generated.py +1658 -0
  340. drawlib-0.3.0/src/drawlib/_icons/png_icons/social/__init__.py +14 -0
  341. drawlib-0.3.0/src/drawlib/_icons/png_icons/social/_base.py +22 -0
  342. drawlib-0.3.0/src/drawlib/_icons/png_icons/social/_generated.py +1018 -0
  343. drawlib-0.3.0/src/drawlib/_icons/png_icons/workspace/__init__.py +14 -0
  344. drawlib-0.3.0/src/drawlib/_icons/png_icons/workspace/_base.py +22 -0
  345. drawlib-0.3.0/src/drawlib/_icons/png_icons/workspace/_generated.py +818 -0
  346. drawlib-0.3.0/src/drawlib/_preset_colors/__init__.py +40 -0
  347. drawlib-0.3.0/src/drawlib/_preset_colors/_color_css.py +165 -0
  348. drawlib-0.3.0/src/drawlib/_preset_colors/_color_default.py +585 -0
  349. drawlib-0.3.0/src/drawlib/_preset_colors/_color_google.py +580 -0
  350. drawlib-0.3.0/src/drawlib/_preset_colors/_color_monochrome.py +129 -0
  351. drawlib-0.3.0/src/drawlib/_preset_styles/__init__.py +40 -0
  352. drawlib-0.3.0/src/drawlib/_preset_styles/_style_default.py +4961 -0
  353. drawlib-0.3.0/src/drawlib/_preset_styles/_style_google.py +5551 -0
  354. drawlib-0.3.0/src/drawlib/_preset_styles/_style_monochrome.py +935 -0
  355. drawlib-0.3.0/src/drawlib/_preset_styles/_utils.py +368 -0
  356. drawlib-0.3.0/src/drawlib/_release_assets.py +4571 -0
  357. {drawlib-0.2.4.dev1/drawlib/assets → drawlib-0.3.0/src/drawlib/_rules}/__init__.py +2 -2
  358. drawlib-0.3.0/src/drawlib/_rules/_assets/avenger/readme.txt +40 -0
  359. drawlib-0.3.0/src/drawlib/_rules/_assets/avenger/regular.ttf +0 -0
  360. drawlib-0.3.0/src/drawlib/_rules/_assets/linux.png +0 -0
  361. drawlib-0.3.0/src/drawlib/_rules/agent_instruction.md +118 -0
  362. drawlib-0.3.0/src/drawlib/_rules/anim_guide.md +334 -0
  363. drawlib-0.3.0/src/drawlib/_rules/api.md +789 -0
  364. drawlib-0.3.0/src/drawlib/_rules/cli.md +1123 -0
  365. drawlib-0.3.0/src/drawlib/_rules/lib_anim.md +194 -0
  366. drawlib-0.3.0/src/drawlib/_rules/lib_canvas.md +230 -0
  367. drawlib-0.3.0/src/drawlib/_rules/lib_charts.md +1025 -0
  368. drawlib-0.3.0/src/drawlib/_rules/lib_diagrams.md +1132 -0
  369. drawlib-0.3.0/src/drawlib/_rules/lib_fonts.md +191 -0
  370. drawlib-0.3.0/src/drawlib/_rules/lib_graph.md +696 -0
  371. drawlib-0.3.0/src/drawlib/_rules/lib_icons.md +1030 -0
  372. drawlib-0.3.0/src/drawlib/_rules/lib_images.md +188 -0
  373. drawlib-0.3.0/src/drawlib/_rules/lib_lines.md +1112 -0
  374. drawlib-0.3.0/src/drawlib/_rules/lib_math.md +259 -0
  375. drawlib-0.3.0/src/drawlib/_rules/lib_preset_colors.md +212 -0
  376. drawlib-0.3.0/src/drawlib/_rules/lib_preset_styles.md +932 -0
  377. drawlib-0.3.0/src/drawlib/_rules/lib_shapes.md +2686 -0
  378. drawlib-0.3.0/src/drawlib/_rules/lib_slide.md +219 -0
  379. drawlib-0.3.0/src/drawlib/_rules/lib_smartarts.md +1518 -0
  380. drawlib-0.3.0/src/drawlib/_rules/lib_styles.md +166 -0
  381. drawlib-0.3.0/src/drawlib/_rules/lib_text.md +409 -0
  382. drawlib-0.3.0/src/drawlib/_rules/lib_tools.md +283 -0
  383. drawlib-0.3.0/src/drawlib/_rules/lib_types.md +231 -0
  384. drawlib-0.3.0/src/drawlib/_rules/overview.md +885 -0
  385. drawlib-0.3.0/src/drawlib/_rules/project_doc.md +173 -0
  386. drawlib-0.3.0/src/drawlib/_rules/project_images.md +180 -0
  387. drawlib-0.3.0/src/drawlib/_rules/project_overview.md +212 -0
  388. drawlib-0.3.0/src/drawlib/_rules/project_site.md +221 -0
  389. drawlib-0.3.0/src/drawlib/_rules/project_slide.md +405 -0
  390. drawlib-0.3.0/src/drawlib/_rules/review_guide.md +302 -0
  391. drawlib-0.3.0/src/drawlib/_rules/slide_guide.md +310 -0
  392. drawlib-0.3.0/src/drawlib/_rules/style_guide.md +370 -0
  393. drawlib-0.3.0/src/drawlib/_slide/__init__.py +40 -0
  394. drawlib-0.3.0/src/drawlib/_slide/_assets.py +284 -0
  395. drawlib-0.3.0/src/drawlib/_slide/_blocks.py +218 -0
  396. drawlib-0.3.0/src/drawlib/_slide/base.py +141 -0
  397. drawlib-0.3.0/src/drawlib/_slide/compiler.py +393 -0
  398. drawlib-0.3.0/src/drawlib/_slide/helpers.py +650 -0
  399. drawlib-0.3.0/src/drawlib/_smartarts/__init__.py +75 -0
  400. drawlib-0.3.0/src/drawlib/_smartarts/_boxlist.py +185 -0
  401. drawlib-0.3.0/src/drawlib/_smartarts/_bulletpoints.py +200 -0
  402. drawlib-0.3.0/src/drawlib/_smartarts/_calendar/__init__.py +24 -0
  403. drawlib-0.3.0/src/drawlib/_smartarts/_calendar/_day.py +564 -0
  404. drawlib-0.3.0/src/drawlib/_smartarts/_calendar/_models.py +395 -0
  405. drawlib-0.3.0/src/drawlib/_smartarts/_calendar/_month.py +546 -0
  406. drawlib-0.3.0/src/drawlib/_smartarts/_calendar/_week.py +704 -0
  407. drawlib-0.3.0/src/drawlib/_smartarts/_cardlist.py +441 -0
  408. drawlib-0.3.0/src/drawlib/_smartarts/_chevronprocess.py +241 -0
  409. drawlib-0.3.0/src/drawlib/_smartarts/_common/__init__.py +22 -0
  410. drawlib-0.3.0/src/drawlib/_smartarts/_common/_card_helpers.py +83 -0
  411. drawlib-0.3.0/src/drawlib/_smartarts/_cycle.py +610 -0
  412. drawlib-0.3.0/src/drawlib/_smartarts/_geomap/__init__.py +42 -0
  413. drawlib-0.3.0/src/drawlib/_smartarts/_geomap/_geomap.py +436 -0
  414. drawlib-0.3.0/src/drawlib/_smartarts/_geomap/_loader.py +456 -0
  415. drawlib-0.3.0/src/drawlib/_smartarts/_geomap/_presets.py +315 -0
  416. drawlib-0.3.0/src/drawlib/_smartarts/_geomap/_projection.py +251 -0
  417. drawlib-0.3.0/src/drawlib/_smartarts/_geomap/_types.py +101 -0
  418. drawlib-0.3.0/src/drawlib/_smartarts/_gridlayout.py +281 -0
  419. drawlib-0.3.0/src/drawlib/_smartarts/_kpicards.py +399 -0
  420. drawlib-0.3.0/src/drawlib/_smartarts/_mindmap.py +834 -0
  421. drawlib-0.3.0/src/drawlib/_smartarts/_panel.py +454 -0
  422. drawlib-0.3.0/src/drawlib/_smartarts/_pyramid.py +414 -0
  423. drawlib-0.3.0/src/drawlib/_smartarts/_roadmap.py +483 -0
  424. drawlib-0.3.0/src/drawlib/_smartarts/_sourcecode.py +611 -0
  425. drawlib-0.3.0/src/drawlib/_smartarts/_table.py +584 -0
  426. drawlib-0.3.0/src/drawlib/_smartarts/_tree.py +332 -0
  427. drawlib-0.3.0/src/drawlib/_templates/__init__.py +58 -0
  428. drawlib-0.3.0/src/drawlib/_templates/_css.py +250 -0
  429. drawlib-0.3.0/src/drawlib/_templates/_models.py +42 -0
  430. drawlib-0.3.0/src/drawlib/_templates/_project.py +320 -0
  431. drawlib-0.3.0/src/drawlib/_templates/css/components/code.css +39 -0
  432. drawlib-0.3.0/src/drawlib/_templates/css/components/markdown.css +207 -0
  433. drawlib-0.3.0/src/drawlib/_templates/css/targets/doc.css +168 -0
  434. drawlib-0.3.0/src/drawlib/_templates/css/targets/pdf.css +93 -0
  435. drawlib-0.3.0/src/drawlib/_templates/css/targets/site.css +307 -0
  436. drawlib-0.3.0/src/drawlib/_templates/css/targets/slide.css +1017 -0
  437. drawlib-0.3.0/src/drawlib/_templates/css/themes/default-auto.css.template +69 -0
  438. drawlib-0.3.0/src/drawlib/_templates/css/themes/default-dark.css.template +36 -0
  439. drawlib-0.3.0/src/drawlib/_templates/css/themes/default.css.template +80 -0
  440. drawlib-0.3.0/src/drawlib/_templates/css/themes/github.css.template +59 -0
  441. drawlib-0.3.0/src/drawlib/_templates/css/themes/google-auto.css.template +70 -0
  442. drawlib-0.3.0/src/drawlib/_templates/css/themes/google-dark.css.template +37 -0
  443. drawlib-0.3.0/src/drawlib/_templates/css/themes/google.css.template +46 -0
  444. drawlib-0.3.0/src/drawlib/_templates/css/themes/minimal.css.template +59 -0
  445. drawlib-0.3.0/src/drawlib/_templates/css/themes/monochrome.css.template +72 -0
  446. drawlib-0.3.0/src/drawlib/_templates/langs/__init__.py +53 -0
  447. drawlib-0.3.0/src/drawlib/_templates/langs/_map_css.py +86 -0
  448. drawlib-0.3.0/src/drawlib/_templates/langs/_map_html.py +41 -0
  449. drawlib-0.3.0/src/drawlib/_templates/langs/_map_style_font.py +129 -0
  450. drawlib-0.3.0/src/drawlib/_templates/langs/_models.py +111 -0
  451. drawlib-0.3.0/src/drawlib/_templates/langs/_patch.py +166 -0
  452. drawlib-0.3.0/src/drawlib/_templates/langs/_registry.py +56 -0
  453. {drawlib-0.2.4.dev1/drawlib/assets/v0_2 → drawlib-0.3.0/src/drawlib/_templates/project}/__init__.py +4 -2
  454. drawlib-0.3.0/src/drawlib/_templates/project/_assets/_logo.png +0 -0
  455. drawlib-0.3.0/src/drawlib/_templates/project/_assets/_logo_dark.png +0 -0
  456. drawlib-0.3.0/src/drawlib/_templates/project/_assets/favicon.png +0 -0
  457. drawlib-0.3.0/src/drawlib/_templates/project/_assets/linux.png +0 -0
  458. drawlib-0.3.0/src/drawlib/_templates/project/_shared/output_html_readme.md +25 -0
  459. drawlib-0.3.0/src/drawlib/_templates/project/_shared/styles.py.template +32 -0
  460. drawlib-0.3.0/src/drawlib/_templates/project/_shared/utils.py +76 -0
  461. drawlib-0.3.0/src/drawlib/_templates/project/doc/build.sh.template +18 -0
  462. drawlib-0.3.0/src/drawlib/_templates/project/doc/build_html.sh.template +31 -0
  463. drawlib-0.3.0/src/drawlib/_templates/project/doc/build_image.sh.template +31 -0
  464. drawlib-0.3.0/src/drawlib/_templates/project/doc/build_markdown.sh.template +31 -0
  465. drawlib-0.3.0/src/drawlib/_templates/project/doc/build_pdf.sh.template +31 -0
  466. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/en/00_cover.md +9 -0
  467. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/en/01_overview.md +23 -0
  468. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/en/02_design.md +28 -0
  469. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/en/README.md +45 -0
  470. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/ja/00_cover.md +3 -0
  471. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/ja/01_overview.md +23 -0
  472. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/ja/02_design.md +28 -0
  473. drawlib-0.3.0/src/drawlib/_templates/project/doc/docs/ja/README.md +45 -0
  474. drawlib-0.3.0/src/drawlib/_templates/project/doc/serve.sh.template +34 -0
  475. drawlib-0.3.0/src/drawlib/_templates/project/doc/template.html.template +35 -0
  476. drawlib-0.3.0/src/drawlib/_templates/project/images/build.sh.template +9 -0
  477. drawlib-0.3.0/src/drawlib/_templates/project/images/build_image.sh.template +30 -0
  478. drawlib-0.3.0/src/drawlib/_templates/project/images/docs/en/README.md +95 -0
  479. drawlib-0.3.0/src/drawlib/_templates/project/images/docs/en/sample1.py +44 -0
  480. drawlib-0.3.0/src/drawlib/_templates/project/images/docs/en/sample2.py +35 -0
  481. drawlib-0.3.0/src/drawlib/_templates/project/images/docs/ja/README.md +95 -0
  482. drawlib-0.3.0/src/drawlib/_templates/project/images/docs/ja/sample1.py +44 -0
  483. drawlib-0.3.0/src/drawlib/_templates/project/images/docs/ja/sample2.py +35 -0
  484. drawlib-0.3.0/src/drawlib/_templates/project/site/build.sh.template +15 -0
  485. drawlib-0.3.0/src/drawlib/_templates/project/site/build_html.sh.template +30 -0
  486. drawlib-0.3.0/src/drawlib/_templates/project/site/build_image.sh.template +31 -0
  487. drawlib-0.3.0/src/drawlib/_templates/project/site/build_markdown.sh.template +30 -0
  488. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/en/README.md +171 -0
  489. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/en/architecture/index.md +22 -0
  490. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/en/index.md +52 -0
  491. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/en/navbar.md +7 -0
  492. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/en/workflow/index.md +23 -0
  493. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/ja/README.md +170 -0
  494. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/ja/architecture/index.md +22 -0
  495. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/ja/index.md +52 -0
  496. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/ja/navbar.md +7 -0
  497. drawlib-0.3.0/src/drawlib/_templates/project/site/docs/ja/workflow/index.md +23 -0
  498. drawlib-0.3.0/src/drawlib/_templates/project/site/serve.sh.template +29 -0
  499. drawlib-0.3.0/src/drawlib/_templates/project/site/template.html.template +115 -0
  500. drawlib-0.3.0/src/drawlib/_templates/project/slide/build.sh.template +15 -0
  501. drawlib-0.3.0/src/drawlib/_templates/project/slide/build_html.sh.template +30 -0
  502. drawlib-0.3.0/src/drawlib/_templates/project/slide/build_image.sh.template +31 -0
  503. drawlib-0.3.0/src/drawlib/_templates/project/slide/build_pdf.sh.template +30 -0
  504. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/en/01_title.md +20 -0
  505. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/en/02_agenda.md +54 -0
  506. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/en/03_architecture.md +31 -0
  507. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/en/README.md +40 -0
  508. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/ja/01_title.md +20 -0
  509. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/ja/02_agenda.md +54 -0
  510. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/ja/03_architecture.md +31 -0
  511. drawlib-0.3.0/src/drawlib/_templates/project/slide/docs/ja/README.md +40 -0
  512. drawlib-0.3.0/src/drawlib/_templates/project/slide/output_readme.md +43 -0
  513. drawlib-0.3.0/src/drawlib/_templates/project/slide/serve.sh.template +33 -0
  514. drawlib-0.3.0/src/drawlib/_templates/project/slide/slide.js +1316 -0
  515. drawlib-0.3.0/src/drawlib/anim.py +16 -0
  516. drawlib-0.3.0/src/drawlib/canvas.py +30 -0
  517. drawlib-0.3.0/src/drawlib/charts/__init__.py +34 -0
  518. drawlib-0.3.0/src/drawlib/charts/area.py +36 -0
  519. drawlib-0.3.0/src/drawlib/charts/bar.py +38 -0
  520. drawlib-0.3.0/src/drawlib/charts/gantt.py +32 -0
  521. drawlib-0.3.0/src/drawlib/charts/line.py +36 -0
  522. drawlib-0.3.0/src/drawlib/charts/pie.py +25 -0
  523. drawlib-0.3.0/src/drawlib/charts/radar.py +32 -0
  524. drawlib-0.3.0/src/drawlib/charts/scatter.py +36 -0
  525. drawlib-0.3.0/src/drawlib/diagrams/__init__.py +30 -0
  526. drawlib-0.3.0/src/drawlib/diagrams/architecture.py +100 -0
  527. drawlib-0.3.0/src/drawlib/diagrams/class_diagram.py +34 -0
  528. drawlib-0.3.0/src/drawlib/diagrams/er.py +27 -0
  529. drawlib-0.3.0/src/drawlib/diagrams/flow.py +40 -0
  530. drawlib-0.3.0/src/drawlib/diagrams/sequence.py +104 -0
  531. drawlib-0.3.0/src/drawlib/diagrams/state.py +46 -0
  532. drawlib-0.3.0/src/drawlib/fonts.py +46 -0
  533. drawlib-0.3.0/src/drawlib/graph.py +48 -0
  534. drawlib-0.3.0/src/drawlib/icons.py +126 -0
  535. drawlib-0.3.0/src/drawlib/images.py +21 -0
  536. drawlib-0.3.0/src/drawlib/lines.py +34 -0
  537. drawlib-0.3.0/src/drawlib/math.py +52 -0
  538. drawlib-0.3.0/src/drawlib/preset_colors.py +46 -0
  539. drawlib-0.3.0/src/drawlib/preset_styles.py +38 -0
  540. drawlib-0.3.0/src/drawlib/shapes.py +113 -0
  541. drawlib-0.3.0/src/drawlib/slide.py +30 -0
  542. drawlib-0.3.0/src/drawlib/smartarts.py +84 -0
  543. drawlib-0.3.0/src/drawlib/styles.py +36 -0
  544. drawlib-0.3.0/src/drawlib/text.py +22 -0
  545. drawlib-0.3.0/src/drawlib/tools.py +65 -0
  546. drawlib-0.3.0/src/drawlib/types.py +34 -0
  547. drawlib-0.3.0/src/drawlib/utils.py +67 -0
  548. drawlib-0.2.4.dev1/LICENSE.txt +0 -202
  549. drawlib-0.2.4.dev1/PKG-INFO +0 -96
  550. drawlib-0.2.4.dev1/drawlib/__init__.py +0 -87
  551. drawlib-0.2.4.dev1/drawlib/v0_2/__init__.py +0 -21
  552. drawlib-0.2.4.dev1/drawlib/v0_2/apis.py +0 -113
  553. drawlib-0.2.4.dev1/drawlib/v0_2/private/__init__.py +0 -10
  554. drawlib-0.2.4.dev1/drawlib/v0_2/private/command.py +0 -559
  555. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/__init__.py +0 -10
  556. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/colors.py +0 -237
  557. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/fonts.py +0 -803
  558. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/model.py +0 -1561
  559. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/model_system_default.py +0 -85
  560. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/theme.py +0 -1227
  561. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/theme_officials.py +0 -671
  562. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/theme_style_caches.py +0 -5578
  563. drawlib-0.2.4.dev1/drawlib/v0_2/private/core/util.py +0 -835
  564. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/__init__.py +0 -10
  565. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/base.py +0 -630
  566. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/canvas.py +0 -328
  567. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/image.py +0 -203
  568. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/line.py +0 -548
  569. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/original_arrow.py +0 -718
  570. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/original_polygon.py +0 -456
  571. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/patches.py +0 -455
  572. drawlib-0.2.4.dev1/drawlib/v0_2/private/core_canvas/text.py +0 -113
  573. drawlib-0.2.4.dev1/drawlib/v0_2/private/download.py +0 -91
  574. drawlib-0.2.4.dev1/drawlib/v0_2/private/dutil/__init__.py +0 -10
  575. drawlib-0.2.4.dev1/drawlib/v0_2/private/dutil/dutil_canvas.py +0 -48
  576. drawlib-0.2.4.dev1/drawlib/v0_2/private/dutil/dutil_color.py +0 -112
  577. drawlib-0.2.4.dev1/drawlib/v0_2/private/icons/__init__.py +0 -10
  578. drawlib-0.2.4.dev1/drawlib/v0_2/private/icons/phosphor.py +0 -30740
  579. drawlib-0.2.4.dev1/drawlib/v0_2/private/icons/util.py +0 -64
  580. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/__init__.py +0 -10
  581. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/boxlist.py +0 -253
  582. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/boxtree.py +0 -114
  583. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/bubblespeech.py +0 -110
  584. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/bulletpoints.py +0 -188
  585. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/dsart.py +0 -25
  586. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/gridlayout.py +0 -327
  587. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/pyramid.py +0 -431
  588. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/sourcecode.py +0 -279
  589. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/table.py +0 -683
  590. drawlib-0.2.4.dev1/drawlib/v0_2/private/smartarts/tree.py +0 -309
  591. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/activity.py +0 -10
  592. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/class_.py +0 -10
  593. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/communication.py +0 -10
  594. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/component.py +0 -10
  595. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/deployment.py +0 -10
  596. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/object.py +0 -10
  597. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/package.py +0 -10
  598. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/sequence.py +0 -10
  599. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/state_machine.py +0 -10
  600. drawlib-0.2.4.dev1/drawlib/v0_2/private/umls/usecase.py +0 -10
  601. drawlib-0.2.4.dev1/drawlib/v0_2/private/util.py +0 -446
  602. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/__init__.py +0 -10
  603. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/args.py +0 -418
  604. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/color.py +0 -75
  605. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/coordinate.py +0 -189
  606. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/icon.py +0 -30
  607. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/image.py +0 -32
  608. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/line.py +0 -61
  609. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/shape.py +0 -65
  610. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/smartarts.py +0 -27
  611. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/style.py +0 -103
  612. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/text.py +0 -35
  613. drawlib-0.2.4.dev1/drawlib/v0_2/private/validators/types.py +0 -126
  614. drawlib-0.2.4.dev1/pypi.md +0 -77
  615. drawlib-0.2.4.dev1/pyproject.toml +0 -99
  616. {drawlib-0.2.4.dev1 → drawlib-0.3.0/src}/drawlib/py.typed +0 -0
drawlib-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,252 @@
1
+ Metadata-Version: 2.3
2
+ Name: drawlib
3
+ Version: 0.3.0
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
+ # Drawlib
23
+
24
+ **Pure-Python Library for "Illustration as Code" & "Illustrated Documentation as Code"**
25
+
26
+ Drawlib is a declarative Python drawing library and integrated documentation compiler designed for software engineers and **autonomous AI coding agents**. Instead of maintaining brittle diagrams in external GUI tools (draw.io, Visio, PowerPoint) and manually pasting exported images into wikis, Drawlib lets you author, version-control, and build architectural diagrams, data charts, technical documents, and presentation slide decks entirely from code in Git.
27
+
28
+ ![Drawlib Hero Concept](https://www.drawlib.com/pypi_images/01_hero_concept.png)
29
+
30
+ - **Official Website & Documentation**: [https://www.drawlib.com/](https://www.drawlib.com/)
31
+ - **Repository Guides & Whitepapers**:
32
+ - [Quickstart Guide (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/quickstart.pdf)
33
+ - [16:9 Presentation Slide Deck (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/slide_about_drawlib.pdf)
34
+ - [Dogfooding Whitepaper — English (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/drawlib-dogfooding-en.pdf) | [日本語版 (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/drawlib-dogfooding.pdf)
35
+
36
+ ---
37
+
38
+ ## Why Drawlib v0.3?
39
+
40
+ ### 1. Cloud & Software Engineering Diagrams
41
+ Stop assembling complex architectures out of raw coordinates. Drawlib provides high-level diagramming engines (`drawlib.diagrams`, `drawlib.graph`) and standardized icon sets (`drawlib.icons.gcp`, `phosphor`, `fontawesome`):
42
+
43
+ ![Cloud Architecture Showcase](https://www.drawlib.com/pypi_images/02_showcase_diagrams.png)
44
+
45
+ - **Auto-Layout Graphs (`drawlib.graph`)**: Declarative graph layout solvers (`ArchitectureGraph`, `LayerGraph`, `TreeGraph`, `RadialGraph`, `GridGraph`) that compute overlap-free coordinates (`get_layout()`), nested cluster bounds, and `offset()` fine-tuning for rendering with `drawlib.diagrams` and `drawlib.shapes`.
46
+ - **Technical Diagrams (`drawlib.diagrams`)**:
47
+ - **Cloud Architecture (`ArchitectureDiagram`)**: VPC boundaries, subnets, tiers, and official cloud service icons.
48
+ - **Flowcharts (`FlowDiagram`)**: Process stages, decision branches, and orthogonal connectors.
49
+ - **Sequence Diagrams (`SequenceDiagram`)**: Client/server lifelines, synchronous/asynchronous messages, and activation bars.
50
+ - **UML Class, ER & State Diagrams (`ClassDiagram`, `ERDiagram`, `StateDiagram`)**: Object-oriented models, database schemas, and state machines.
51
+
52
+ ---
53
+
54
+ ### 2. Quantitative Charts & SmartArt Infographics
55
+ Compose presentation-ready infographics (`drawlib.smartarts`) and quantitative data plots (`drawlib.charts`) side by side on the same canvas:
56
+
57
+ ![Charts and SmartArts Showcase](https://www.drawlib.com/pypi_images/03_showcase_charts_smartarts.png)
58
+
59
+ - **SmartArts (`drawlib.smartarts`)**: `ChevronProcess`, `Cycle`, `Table`, `TreeNode`, `MindMapNode`, `Pyramid`, `BoxList`, `BulletPoints`, `GridLayout`, and syntax-highlighted `SourceCode`.
60
+ - **Charts (`drawlib.charts`)**: Pure-Python `BarChart`, `LineChart`, `AreaChart`, `PieChart`, `RadarChart`, `ScatterChart`, and `GanttChart` styled with the same design tokens as your diagrams.
61
+
62
+ ---
63
+
64
+ ### 3. Rich Primitives & Semantic Design System
65
+ At its foundation, Drawlib separates **Content** (geometry, coordinates, structure) from **Style** (colors, typography, borders, themes)—just like HTML and CSS:
66
+
67
+ ![Primitives and Styles Showcase](https://www.drawlib.com/pypi_images/04_showcase_primitives.png)
68
+
69
+ - **5 Core Primitive Categories**:
70
+ - **Icons (`drawlib.icons`)**: 1,500+ Phosphor icons (5 weights), FontAwesome, and official Google Cloud (GCP) icons.
71
+ - **Images (`drawlib.images`)**: Non-destructive `Dimage` processing pipeline (`sepia()`, `grayscale()`, `mosaic()`, `mirror()`, `crop()`, borders, rotation).
72
+ - **Lines (`drawlib.lines`)**: Straight, curved (`bend`), quadratic/cubic Bezier, and rounded multi-point polylines with customizable arrowheads (`"->"`, `"<-"`, `"<->"`).
73
+ - **Shapes (`drawlib.shapes`)**: 23 geometric primitives (`rectangle`, `circle`, `ellipse`, `rhombus`, `star`, `arrow`, `chevron`, `bubblespeech`, `polygon`, etc.).
74
+ - **Text (`drawlib.text`, `drawlib.fonts`)**: Multilingual typography with automatic on-demand font caching (`FontRoboto`, `FontSansSerif`, `FontSerif`, `FontSourceCode`, `FontJapanese`, `FontChinese`, `FontKorean`, `FontArabic`, etc.).
75
+ - **7-Role Semantic Style System (`drawlib.styles`)**:
76
+ - Built-in presets (`default`, `google`, `essentials`, `monochrome`, `warm`, `cold`) accessed via `Styles.<Token>` (`Styles.PrimaryFlat`, `Styles.Neutral`, `Styles.SecondaryNeutral`, `Styles.MutedDashed`, `Styles.SuccessNeutral`, `Styles.WarningNeutral`, `Styles.DangerNeutral`).
77
+
78
+ ---
79
+
80
+ ### 4. Illustrated Documentation & Slide as Code
81
+ Write Markdown files with embedded ```` ```drawlib ```` code blocks. A single `drawlib build` command compiles your repository into multiple publication formats:
82
+
83
+ ![Documentation as Code Workflow](https://www.drawlib.com/pypi_images/05_workflow_doc_as_code.png)
84
+
85
+ - **4 Project Scaffolds (`drawlib init <type>`)**:
86
+ - `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`).
89
+ - `drawlib init images`: Standalone batch Python illustration scripts (`images_src/` -> `images/`).
90
+
91
+ ---
92
+
93
+ ### 5. AI Inner Loop & Human Outer Loop
94
+ Drawlib is engineered from the ground up for **AI-native documentation and diagram engineering** (Claude Code, Cursor, Gemini, Codex), separating high-frequency visual self-correction from high-level human review:
95
+
96
+ ![AI Inner Loop and Human Outer Loop](https://www.drawlib.com/pypi_images/06_ai_agent_loop.png)
97
+
98
+ - **AI Inner Loop (Autonomous Visual Self-Correction)**:
99
+ 1. **On-Demand Spec & Codebase Lookup**: The AI agent autonomously queries **`drawlib rules show <topic>`** for detailed API specifications and design best practices, while directly inspecting **repository source code, schemas, and design docs** as the single source of truth.
100
+ 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
+ 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
+ - **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.
104
+
105
+ ---
106
+
107
+ ## Installation
108
+
109
+ Install `drawlib` from PyPI using `pip` or `uv`:
110
+
111
+ ```bash
112
+ pip install drawlib
113
+ ```
114
+
115
+ To enable headless PDF export for documentation sites, linear documents, and slide decks, install the `[pdf]` extra and Chromium:
116
+
117
+ ```bash
118
+ pip install "drawlib[pdf]"
119
+ playwright install chromium
120
+ ```
121
+
122
+ Verify the installation:
123
+
124
+ ```bash
125
+ drawlib --version
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Quick Start
131
+
132
+ ### 1. Standalone Python Script
133
+
134
+ Create a file named `architecture.py`:
135
+
136
+ ```python
137
+ from drawlib.canvas import save, setup
138
+ from drawlib.lines import line
139
+ from drawlib.shapes import rectangle
140
+ from drawlib.styles import Styles
141
+ from drawlib.text import text
142
+
143
+ setup(width=120, height=50)
144
+
145
+ # 1. Structural Boundary (Muted)
146
+ rectangle((60, 25), width=112, height=42, r=3, style=Styles.MutedDashed)
147
+ text((22, 42.5), "Production VPC", style=Styles.MutedBold.patch(text_size=9))
148
+
149
+ # 2. Entrypoint & Hero Service
150
+ rectangle((22, 24), width=24, height=16, r=2, style=Styles.Neutral, text="Client App")
151
+ rectangle(
152
+ (58, 24),
153
+ width=26,
154
+ height=16,
155
+ r=2,
156
+ style=Styles.PrimaryFlat,
157
+ text="API Gateway",
158
+ text_style=Styles.WhiteBold,
159
+ )
160
+
161
+ # 3. Downstream Services (Tinted Neutral Cards)
162
+ rectangle((96, 33), width=24, height=12, r=2, style=Styles.SecondaryNeutral, text="Auth Service")
163
+ rectangle((96, 15), width=24, height=12, r=2, style=Styles.SuccessNeutral, text="Audit Log DB")
164
+
165
+ # 4. Directional Connectors
166
+ line((34, 24), (45, 24), arrow_head="->", style=Styles.DarkBold)
167
+ line((71, 28), (84, 33), arrow_head="->", style=Styles.DarkBold)
168
+ line((71, 20), (84, 15), arrow_head="->", style=Styles.DarkBold)
169
+
170
+ save()
171
+ ```
172
+
173
+ Run the script with Python or `drawlib` to generate `architecture.png`:
174
+
175
+ ```bash
176
+ python architecture.py
177
+ ```
178
+
179
+ #### Core Principles at a Glance
180
+ - **Bottom-Left Origin `(0, 0)`**: `setup(width=120, height=50)` defines a Cartesian coordinate canvas where `x` spans `0..120` (left to right) and `y` spans `0..50` (bottom to top).
181
+ - **Center Alignment by Default**: Shapes (`rectangle`, `circle`, `icon`, `image`, `text`) are positioned by their center `(x, y)`, making horizontal and vertical alignment effortless.
182
+ - **50%+ Neutral Baseline**: Ground supporting nodes in calm neutral styles (`Styles.Neutral`, `Styles.SecondaryNeutral`, `Styles.SuccessNeutral`) and reserve saturated fills (`Styles.PrimaryFlat`) for primary focal points.
183
+ - **Style Patching (`.patch()`)**: Customize any preset token non-destructively via `Styles.MutedBold.patch(text_size=9)` or `Styles.Primary.patch(shape_line_width=2)`.
184
+
185
+ ---
186
+
187
+ ### 2. Illustrated Documentation & Slide Deck Workflow
188
+
189
+ Scaffold a new documentation website, technical spec, or 16:9 slide deck in seconds:
190
+
191
+ ```bash
192
+ # Initialize a multi-page documentation site in docs_src/
193
+ drawlib init site
194
+
195
+ # Or initialize a 16:9 presentation slide deck in slide_src/
196
+ drawlib init slide
197
+ ```
198
+
199
+ Inside your Markdown files (`docs_src/index.md`), embed Python drawing blocks using the ```` ```drawlib ```` fence:
200
+
201
+ ````markdown
202
+ # System Architecture
203
+
204
+ Below is our core request routing pipeline:
205
+
206
+ ```drawlib 600px center file:service_routing.png caption:"Service Routing Pipeline"
207
+ from drawlib.canvas import setup
208
+ from drawlib.shapes import rectangle
209
+ from drawlib.lines import line
210
+ from drawlib.styles import Styles
211
+
212
+ setup(width=100, height=40)
213
+ rectangle((25, 20), width=30, height=16, r=2, style=Styles.Neutral, text="Ingress")
214
+ rectangle((75, 20), width=30, height=16, r=2, style=Styles.PrimaryFlat, text="Core API", text_style=Styles.WhiteBold)
215
+ line((40, 20), (60, 20), arrow_head="->", style=Styles.DarkBold)
216
+ ```
217
+ ````
218
+
219
+ Compile or preview with the `drawlib` CLI:
220
+
221
+ ```bash
222
+ # Build HTML site, GitHub Markdown, or PDF
223
+ ./docs_src/build.sh
224
+
225
+ # Launch local HTTP server with broken-link check at http://localhost:8000
226
+ drawlib serve docs_html/
227
+
228
+ # Render a single diagram with coordinate grid (-g) for layout inspection
229
+ drawlib show docs_src/index.md service_routing.png -g -o preview_grid.png
230
+ ```
231
+
232
+ ---
233
+
234
+ ### 3. CLI Reference Summary
235
+
236
+ | Command | Description |
237
+ | :--- | :--- |
238
+ | `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 |
240
+ | `drawlib serve <html_dir> [--check]` | Start a local HTTP server for built HTML docs/slides with pre-flight link checks |
241
+ | `drawlib show <file> [target] [-g]` | Render and inspect a single script or embedded Markdown diagram (with optional grid) |
242
+ | `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`) |
244
+
245
+ ---
246
+
247
+ ## Links & Resources
248
+
249
+ - **Official Website & Documentation**: [https://www.drawlib.com/](https://www.drawlib.com/)
250
+ - **PyPI Package**: [https://pypi.org/project/drawlib/](https://pypi.org/project/drawlib/)
251
+ - **GitHub Repository**: [https://github.com/yuichi110/drawlib](https://github.com/yuichi110/drawlib)
252
+ - **License**: Apache License 2.0
@@ -0,0 +1,231 @@
1
+ # Drawlib
2
+
3
+ **Pure-Python Library for "Illustration as Code" & "Illustrated Documentation as Code"**
4
+
5
+ Drawlib is a declarative Python drawing library and integrated documentation compiler designed for software engineers and **autonomous AI coding agents**. Instead of maintaining brittle diagrams in external GUI tools (draw.io, Visio, PowerPoint) and manually pasting exported images into wikis, Drawlib lets you author, version-control, and build architectural diagrams, data charts, technical documents, and presentation slide decks entirely from code in Git.
6
+
7
+ ![Drawlib Hero Concept](https://www.drawlib.com/pypi_images/01_hero_concept.png)
8
+
9
+ - **Official Website & Documentation**: [https://www.drawlib.com/](https://www.drawlib.com/)
10
+ - **Repository Guides & Whitepapers**:
11
+ - [Quickstart Guide (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/quickstart.pdf)
12
+ - [16:9 Presentation Slide Deck (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/slide_about_drawlib.pdf)
13
+ - [Dogfooding Whitepaper — English (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/drawlib-dogfooding-en.pdf) | [日本語版 (PDF)](https://github.com/yuichi110/drawlib/blob/main/docs/drawlib-dogfooding.pdf)
14
+
15
+ ---
16
+
17
+ ## Why Drawlib v0.3?
18
+
19
+ ### 1. Cloud & Software Engineering Diagrams
20
+ Stop assembling complex architectures out of raw coordinates. Drawlib provides high-level diagramming engines (`drawlib.diagrams`, `drawlib.graph`) and standardized icon sets (`drawlib.icons.gcp`, `phosphor`, `fontawesome`):
21
+
22
+ ![Cloud Architecture Showcase](https://www.drawlib.com/pypi_images/02_showcase_diagrams.png)
23
+
24
+ - **Auto-Layout Graphs (`drawlib.graph`)**: Declarative graph layout solvers (`ArchitectureGraph`, `LayerGraph`, `TreeGraph`, `RadialGraph`, `GridGraph`) that compute overlap-free coordinates (`get_layout()`), nested cluster bounds, and `offset()` fine-tuning for rendering with `drawlib.diagrams` and `drawlib.shapes`.
25
+ - **Technical Diagrams (`drawlib.diagrams`)**:
26
+ - **Cloud Architecture (`ArchitectureDiagram`)**: VPC boundaries, subnets, tiers, and official cloud service icons.
27
+ - **Flowcharts (`FlowDiagram`)**: Process stages, decision branches, and orthogonal connectors.
28
+ - **Sequence Diagrams (`SequenceDiagram`)**: Client/server lifelines, synchronous/asynchronous messages, and activation bars.
29
+ - **UML Class, ER & State Diagrams (`ClassDiagram`, `ERDiagram`, `StateDiagram`)**: Object-oriented models, database schemas, and state machines.
30
+
31
+ ---
32
+
33
+ ### 2. Quantitative Charts & SmartArt Infographics
34
+ Compose presentation-ready infographics (`drawlib.smartarts`) and quantitative data plots (`drawlib.charts`) side by side on the same canvas:
35
+
36
+ ![Charts and SmartArts Showcase](https://www.drawlib.com/pypi_images/03_showcase_charts_smartarts.png)
37
+
38
+ - **SmartArts (`drawlib.smartarts`)**: `ChevronProcess`, `Cycle`, `Table`, `TreeNode`, `MindMapNode`, `Pyramid`, `BoxList`, `BulletPoints`, `GridLayout`, and syntax-highlighted `SourceCode`.
39
+ - **Charts (`drawlib.charts`)**: Pure-Python `BarChart`, `LineChart`, `AreaChart`, `PieChart`, `RadarChart`, `ScatterChart`, and `GanttChart` styled with the same design tokens as your diagrams.
40
+
41
+ ---
42
+
43
+ ### 3. Rich Primitives & Semantic Design System
44
+ At its foundation, Drawlib separates **Content** (geometry, coordinates, structure) from **Style** (colors, typography, borders, themes)—just like HTML and CSS:
45
+
46
+ ![Primitives and Styles Showcase](https://www.drawlib.com/pypi_images/04_showcase_primitives.png)
47
+
48
+ - **5 Core Primitive Categories**:
49
+ - **Icons (`drawlib.icons`)**: 1,500+ Phosphor icons (5 weights), FontAwesome, and official Google Cloud (GCP) icons.
50
+ - **Images (`drawlib.images`)**: Non-destructive `Dimage` processing pipeline (`sepia()`, `grayscale()`, `mosaic()`, `mirror()`, `crop()`, borders, rotation).
51
+ - **Lines (`drawlib.lines`)**: Straight, curved (`bend`), quadratic/cubic Bezier, and rounded multi-point polylines with customizable arrowheads (`"->"`, `"<-"`, `"<->"`).
52
+ - **Shapes (`drawlib.shapes`)**: 23 geometric primitives (`rectangle`, `circle`, `ellipse`, `rhombus`, `star`, `arrow`, `chevron`, `bubblespeech`, `polygon`, etc.).
53
+ - **Text (`drawlib.text`, `drawlib.fonts`)**: Multilingual typography with automatic on-demand font caching (`FontRoboto`, `FontSansSerif`, `FontSerif`, `FontSourceCode`, `FontJapanese`, `FontChinese`, `FontKorean`, `FontArabic`, etc.).
54
+ - **7-Role Semantic Style System (`drawlib.styles`)**:
55
+ - Built-in presets (`default`, `google`, `essentials`, `monochrome`, `warm`, `cold`) accessed via `Styles.<Token>` (`Styles.PrimaryFlat`, `Styles.Neutral`, `Styles.SecondaryNeutral`, `Styles.MutedDashed`, `Styles.SuccessNeutral`, `Styles.WarningNeutral`, `Styles.DangerNeutral`).
56
+
57
+ ---
58
+
59
+ ### 4. Illustrated Documentation & Slide as Code
60
+ Write Markdown files with embedded ```` ```drawlib ```` code blocks. A single `drawlib build` command compiles your repository into multiple publication formats:
61
+
62
+ ![Documentation as Code Workflow](https://www.drawlib.com/pypi_images/05_workflow_doc_as_code.png)
63
+
64
+ - **4 Project Scaffolds (`drawlib init <type>`)**:
65
+ - `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`).
68
+ - `drawlib init images`: Standalone batch Python illustration scripts (`images_src/` -> `images/`).
69
+
70
+ ---
71
+
72
+ ### 5. AI Inner Loop & Human Outer Loop
73
+ Drawlib is engineered from the ground up for **AI-native documentation and diagram engineering** (Claude Code, Cursor, Gemini, Codex), separating high-frequency visual self-correction from high-level human review:
74
+
75
+ ![AI Inner Loop and Human Outer Loop](https://www.drawlib.com/pypi_images/06_ai_agent_loop.png)
76
+
77
+ - **AI Inner Loop (Autonomous Visual Self-Correction)**:
78
+ 1. **On-Demand Spec & Codebase Lookup**: The AI agent autonomously queries **`drawlib rules show <topic>`** for detailed API specifications and design best practices, while directly inspecting **repository source code, schemas, and design docs** as the single source of truth.
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.
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.
81
+ - **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.
83
+
84
+ ---
85
+
86
+ ## Installation
87
+
88
+ Install `drawlib` from PyPI using `pip` or `uv`:
89
+
90
+ ```bash
91
+ pip install drawlib
92
+ ```
93
+
94
+ To enable headless PDF export for documentation sites, linear documents, and slide decks, install the `[pdf]` extra and Chromium:
95
+
96
+ ```bash
97
+ pip install "drawlib[pdf]"
98
+ playwright install chromium
99
+ ```
100
+
101
+ Verify the installation:
102
+
103
+ ```bash
104
+ drawlib --version
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Quick Start
110
+
111
+ ### 1. Standalone Python Script
112
+
113
+ Create a file named `architecture.py`:
114
+
115
+ ```python
116
+ from drawlib.canvas import save, setup
117
+ from drawlib.lines import line
118
+ from drawlib.shapes import rectangle
119
+ from drawlib.styles import Styles
120
+ from drawlib.text import text
121
+
122
+ setup(width=120, height=50)
123
+
124
+ # 1. Structural Boundary (Muted)
125
+ rectangle((60, 25), width=112, height=42, r=3, style=Styles.MutedDashed)
126
+ text((22, 42.5), "Production VPC", style=Styles.MutedBold.patch(text_size=9))
127
+
128
+ # 2. Entrypoint & Hero Service
129
+ rectangle((22, 24), width=24, height=16, r=2, style=Styles.Neutral, text="Client App")
130
+ rectangle(
131
+ (58, 24),
132
+ width=26,
133
+ height=16,
134
+ r=2,
135
+ style=Styles.PrimaryFlat,
136
+ text="API Gateway",
137
+ text_style=Styles.WhiteBold,
138
+ )
139
+
140
+ # 3. Downstream Services (Tinted Neutral Cards)
141
+ rectangle((96, 33), width=24, height=12, r=2, style=Styles.SecondaryNeutral, text="Auth Service")
142
+ rectangle((96, 15), width=24, height=12, r=2, style=Styles.SuccessNeutral, text="Audit Log DB")
143
+
144
+ # 4. Directional Connectors
145
+ line((34, 24), (45, 24), arrow_head="->", style=Styles.DarkBold)
146
+ line((71, 28), (84, 33), arrow_head="->", style=Styles.DarkBold)
147
+ line((71, 20), (84, 15), arrow_head="->", style=Styles.DarkBold)
148
+
149
+ save()
150
+ ```
151
+
152
+ Run the script with Python or `drawlib` to generate `architecture.png`:
153
+
154
+ ```bash
155
+ python architecture.py
156
+ ```
157
+
158
+ #### Core Principles at a Glance
159
+ - **Bottom-Left Origin `(0, 0)`**: `setup(width=120, height=50)` defines a Cartesian coordinate canvas where `x` spans `0..120` (left to right) and `y` spans `0..50` (bottom to top).
160
+ - **Center Alignment by Default**: Shapes (`rectangle`, `circle`, `icon`, `image`, `text`) are positioned by their center `(x, y)`, making horizontal and vertical alignment effortless.
161
+ - **50%+ Neutral Baseline**: Ground supporting nodes in calm neutral styles (`Styles.Neutral`, `Styles.SecondaryNeutral`, `Styles.SuccessNeutral`) and reserve saturated fills (`Styles.PrimaryFlat`) for primary focal points.
162
+ - **Style Patching (`.patch()`)**: Customize any preset token non-destructively via `Styles.MutedBold.patch(text_size=9)` or `Styles.Primary.patch(shape_line_width=2)`.
163
+
164
+ ---
165
+
166
+ ### 2. Illustrated Documentation & Slide Deck Workflow
167
+
168
+ Scaffold a new documentation website, technical spec, or 16:9 slide deck in seconds:
169
+
170
+ ```bash
171
+ # Initialize a multi-page documentation site in docs_src/
172
+ drawlib init site
173
+
174
+ # Or initialize a 16:9 presentation slide deck in slide_src/
175
+ drawlib init slide
176
+ ```
177
+
178
+ Inside your Markdown files (`docs_src/index.md`), embed Python drawing blocks using the ```` ```drawlib ```` fence:
179
+
180
+ ````markdown
181
+ # System Architecture
182
+
183
+ Below is our core request routing pipeline:
184
+
185
+ ```drawlib 600px center file:service_routing.png caption:"Service Routing Pipeline"
186
+ from drawlib.canvas import setup
187
+ from drawlib.shapes import rectangle
188
+ from drawlib.lines import line
189
+ from drawlib.styles import Styles
190
+
191
+ setup(width=100, height=40)
192
+ rectangle((25, 20), width=30, height=16, r=2, style=Styles.Neutral, text="Ingress")
193
+ rectangle((75, 20), width=30, height=16, r=2, style=Styles.PrimaryFlat, text="Core API", text_style=Styles.WhiteBold)
194
+ line((40, 20), (60, 20), arrow_head="->", style=Styles.DarkBold)
195
+ ```
196
+ ````
197
+
198
+ Compile or preview with the `drawlib` CLI:
199
+
200
+ ```bash
201
+ # Build HTML site, GitHub Markdown, or PDF
202
+ ./docs_src/build.sh
203
+
204
+ # Launch local HTTP server with broken-link check at http://localhost:8000
205
+ drawlib serve docs_html/
206
+
207
+ # Render a single diagram with coordinate grid (-g) for layout inspection
208
+ drawlib show docs_src/index.md service_routing.png -g -o preview_grid.png
209
+ ```
210
+
211
+ ---
212
+
213
+ ### 3. CLI Reference Summary
214
+
215
+ | Command | Description |
216
+ | :--- | :--- |
217
+ | `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 |
219
+ | `drawlib serve <html_dir> [--check]` | Start a local HTTP server for built HTML docs/slides with pre-flight link checks |
220
+ | `drawlib show <file> [target] [-g]` | Render and inspect a single script or embedded Markdown diagram (with optional grid) |
221
+ | `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`) |
223
+
224
+ ---
225
+
226
+ ## Links & Resources
227
+
228
+ - **Official Website & Documentation**: [https://www.drawlib.com/](https://www.drawlib.com/)
229
+ - **PyPI Package**: [https://pypi.org/project/drawlib/](https://pypi.org/project/drawlib/)
230
+ - **GitHub Repository**: [https://github.com/yuichi110/drawlib](https://github.com/yuichi110/drawlib)
231
+ - **License**: Apache License 2.0
@@ -0,0 +1,154 @@
1
+ [build-system]
2
+ requires = ["uv-build<0.12"]
3
+ build-backend = "uv_build"
4
+
5
+ [project]
6
+ name = "drawlib"
7
+ version = "0.3.0"
8
+ description = "Python drawing library. Illustration as Code."
9
+ readme = "docs/README_PYPI.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "Apache-2.0" }
12
+ authors = [{name = "Yuichi Ito", email = "yuichi@yuichi.com"}]
13
+ dependencies = [
14
+ "matplotlib>=3.8",
15
+ "pydantic>=2.8",
16
+ "pygments>=2.18",
17
+ "markdown-it-py>=3.0",
18
+ "jinja2>=3.1",
19
+ "typer>=0.12.0",
20
+ "rich>=13.0.0",
21
+ ]
22
+
23
+ [project.urls]
24
+ Homepage = "https://www.drawlib.com"
25
+ Repository = "https://github.com/yuichi110/drawlib"
26
+
27
+ [project.scripts]
28
+ drawlib = "drawlib._cli.main:main"
29
+
30
+ [project.optional-dependencies]
31
+ pdf = [
32
+ "playwright>=1.40.0",
33
+ ]
34
+
35
+ [dependency-groups]
36
+ dev = [
37
+ "types-pillow>=10.2.0.20240311",
38
+ "ruff>=0.9.0",
39
+ "pytest>=8.3.0",
40
+ "pytest-cov>=6.0.0",
41
+ "tomlkit>=0.14.0",
42
+ "ty>=0.0.35",
43
+ "pyright>=1.1.409",
44
+ "typer>=0.12.0",
45
+ "rich>=13.0.0",
46
+ "pytest-xdist>=3.8.0",
47
+ "playwright>=1.40.0",
48
+ ]
49
+
50
+ [tool.ruff]
51
+ preview = false
52
+ fix = true
53
+ unsafe-fixes = false
54
+ line-length = 120
55
+ exclude = ["docs"]
56
+
57
+ [tool.ruff.lint]
58
+ select = [
59
+ "C90", # mccabe
60
+ "F", # Pyflakes
61
+ "D", # pydocstyle
62
+ "E", # Pycodestyle Error
63
+ "I", # isort
64
+ "N", # pep8-naming (N)
65
+ "W", # Pycodestyle Warning
66
+ "ANN", # flake8-annotations (ANN)
67
+ "CPY", # flake8-copyright
68
+ "S", # flake8-bandit
69
+ "PL" # Pylint
70
+ ]
71
+
72
+ ignore = [
73
+ "D203", # 1 blank line required before class docstring
74
+ "D212", # Multi-line docstring summary should start at the first line
75
+ "D415", # First line should end with a period, question mark, or exclamation point
76
+ "F401", # imported but unused
77
+ "PLC0414", # Import alias does not rename original package
78
+ "PLC1901", # compare-to-empty-string
79
+ "PLR0904", # Too many public methods
80
+ "PLR0912", # Too many branches
81
+ "PLR0913", # Too many arguments in function definition
82
+ "PLR0914", # Too many local variables
83
+ "PLR0915", # Too many statements
84
+ "PLR0917", # Too many positional arguments
85
+ "PLR2004", # Magic value used in comparison
86
+ "PLW2901" # Outer variable overwritten by inner target
87
+ ]
88
+
89
+ [tool.ruff.lint.per-file-ignores]
90
+ "src/drawlib/_preset_colors/**.py" = [
91
+ "N803", # PascalCase argument names for design token patch methods
92
+ ]
93
+ "src/drawlib/_preset_styles/**.py" = [
94
+ "D417", # Style patch methods have hundreds of design tokens that do not need individual docstring entries
95
+ "N803", # PascalCase argument names for design token patch methods
96
+ ]
97
+ "tools/**.py" = [
98
+ "ANN", # flake8-annotations
99
+ "S101", # Use of assert detected
100
+ "S310", # Audit URL open for permitted schemes
101
+ "S404", # Subprocess module usage
102
+ "S603", # Subprocess call without shell=True
103
+ "S607", # Subprocess with partial executable path
104
+ "PLC2701", # Private name import from external module
105
+ "PLR6301", # Method could be a function/static method
106
+ ]
107
+ "tests*/**.py" = [
108
+ "F403", # undefined-local-with-import-star
109
+ "F405", # undefined-local-with-import-star-usage
110
+ "D100", # undocumented-public-module
111
+ "D101", # undocumented-public-class
112
+ "D102", # undocumented-public-method
113
+ "D103", # undocumented-public-function
114
+ "D104", # undocumented-public-package
115
+ "D107", # undocumented-public-init
116
+ "ANN", # flake8-annotations
117
+ "CPY", # flake8-copyright
118
+ "S101", # Use of assert detected
119
+ "PLC2701", # Private name import from external module (standard for unit tests)
120
+ "PLR6301" # Method could be a function/static method (standard for pytest classes)
121
+ ]
122
+ "src/drawlib/_builder/**.py" = [
123
+ "S102", # exec usage is intentional for dynamic code execution
124
+ "S701", # jinja2 autoescape
125
+ "PLC0415", # lazy import for optional dependencies
126
+ "C901", # complex functions in builder
127
+ "F403", # import star
128
+ "F405" # import star usage
129
+ ]
130
+ "test_build_target/**.py" = [
131
+ "F403", # undefined-local-with-import-star
132
+ "F405", # undefined-local-with-import-star-usage
133
+ "D100", # undocumented-public-module
134
+ "D103", # undocumented-public-function
135
+ ]
136
+
137
+ [tool.ruff.lint.pydocstyle]
138
+ convention = "google"
139
+
140
+ [tool.pyright]
141
+ include = ["src/drawlib", "tools"]
142
+ extraPaths = ["."]
143
+ typeCheckingMode = "basic"
144
+ reportMissingTypeArgument = "warning"
145
+ reportUnknownParameterType = "warning"
146
+ reportUnknownVariableType = "warning"
147
+ reportUnknownMemberType = "warning"
148
+ reportUnknownArgumentType = "warning"
149
+
150
+ [tool.pytest.ini_options]
151
+ testpaths = ["tests"]
152
+ markers = [
153
+ "image_threshold(threshold): custom pixel match threshold for image comparison",
154
+ ]