markdown-to-confluence 0.5.4__tar.gz → 0.5.5__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 (169) hide show
  1. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/PKG-INFO +95 -53
  2. markdown_to_confluence-0.5.4/markdown_to_confluence.egg-info/PKG-INFO → markdown_to_confluence-0.5.5/README.md +89 -93
  3. markdown_to_confluence-0.5.4/README.md → markdown_to_confluence-0.5.5/markdown_to_confluence.egg-info/PKG-INFO +135 -47
  4. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/markdown_to_confluence.egg-info/SOURCES.txt +5 -0
  5. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/markdown_to_confluence.egg-info/requires.txt +5 -5
  6. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/__init__.py +1 -1
  7. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/__main__.py +23 -172
  8. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/api.py +32 -67
  9. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/attachment.py +4 -3
  10. markdown_to_confluence-0.5.5/md2conf/clio.py +226 -0
  11. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/compatibility.py +5 -0
  12. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/converter.py +235 -143
  13. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/csf.py +89 -9
  14. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/drawio/render.py +2 -0
  15. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/frontmatter.py +18 -6
  16. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/image.py +7 -5
  17. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/latex.py +8 -1
  18. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/markdown.py +68 -1
  19. markdown_to_confluence-0.5.5/md2conf/options.py +187 -0
  20. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/plantuml/extension.py +1 -1
  21. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/publisher.py +81 -16
  22. markdown_to_confluence-0.5.5/md2conf/reflection.py +74 -0
  23. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/scanner.py +9 -5
  24. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/serializer.py +12 -1
  25. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/svg.py +5 -2
  26. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/toc.py +1 -1
  27. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/xml.py +45 -0
  28. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/pyproject.toml +5 -5
  29. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/alert.md +2 -2
  30. markdown_to_confluence-0.5.5/tests/source/skip_nodes.md +36 -0
  31. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/alert.xml +2 -6
  32. markdown_to_confluence-0.5.5/tests/target/skip_nodes.xml +33 -0
  33. markdown_to_confluence-0.5.5/tests/test_clio.py +66 -0
  34. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_conversion.py +23 -13
  35. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_dockerhub_description.py +8 -0
  36. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_document.py +17 -3
  37. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_processor.py +13 -1
  38. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_text.py +1 -1
  39. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_toc.py +1 -1
  40. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_unit.py +38 -3
  41. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_xml.py +2 -0
  42. markdown_to_confluence-0.5.4/md2conf/options.py +0 -118
  43. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/LICENSE +0 -0
  44. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/MANIFEST.in +0 -0
  45. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/markdown_to_confluence.egg-info/dependency_links.txt +0 -0
  46. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/markdown_to_confluence.egg-info/entry_points.txt +0 -0
  47. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/markdown_to_confluence.egg-info/top_level.txt +0 -0
  48. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/markdown_to_confluence.egg-info/zip-safe +0 -0
  49. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/coalesce.py +0 -0
  50. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/collection.py +0 -0
  51. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/drawio/__init__.py +0 -0
  52. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/drawio/extension.py +0 -0
  53. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/emoticon.py +0 -0
  54. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/entities.dtd +0 -0
  55. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/environment.py +0 -0
  56. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/extension.py +0 -0
  57. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/external.py +0 -0
  58. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/formatting.py +0 -0
  59. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/local.py +0 -0
  60. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/matcher.py +0 -0
  61. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/mermaid/__init__.py +0 -0
  62. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/mermaid/config.py +0 -0
  63. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/mermaid/extension.py +0 -0
  64. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/mermaid/puppeteer-config.json +0 -0
  65. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/mermaid/render.py +0 -0
  66. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/mermaid/scanner.py +0 -0
  67. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/metadata.py +0 -0
  68. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/plantuml/__init__.py +0 -0
  69. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/plantuml/config.py +0 -0
  70. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/plantuml/render.py +0 -0
  71. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/plantuml/scanner.py +0 -0
  72. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/png.py +0 -0
  73. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/processor.py +0 -0
  74. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/py.typed +0 -0
  75. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/text.py +0 -0
  76. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/md2conf/uri.py +0 -0
  77. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/setup.cfg +0 -0
  78. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/setup.py +0 -0
  79. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/__init__.py +0 -0
  80. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/emoji.py +0 -0
  81. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/relative.txt +0 -0
  82. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/scanner/frontmatter.md +0 -0
  83. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/scanner/id_only.md +0 -0
  84. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/scanner/id_space_title.md +0 -0
  85. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/.mdignore +0 -0
  86. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/admonition.md +0 -0
  87. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/alignment.md +0 -0
  88. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/anchors.md +0 -0
  89. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/basic.md +0 -0
  90. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/code.md +0 -0
  91. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/collapsed.md +0 -0
  92. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/docs/sample.docx +0 -0
  93. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/docs/sample.ods +0 -0
  94. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/docs/sample.odt +0 -0
  95. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/docs/sample.pdf +0 -0
  96. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/docs/sample.xlsx +0 -0
  97. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/fenced.md +0 -0
  98. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/figure/diagram.drawio +0 -0
  99. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/figure/diagram.drawio.png +0 -0
  100. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/figure/diagram.drawio.svg +0 -0
  101. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/figure/raster.png +0 -0
  102. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/figure/vector.svg +0 -0
  103. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/footnote.md +0 -0
  104. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/ignore.md +0 -0
  105. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/images/images.md +0 -0
  106. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/images.md +0 -0
  107. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/macro.md +0 -0
  108. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/math.md +0 -0
  109. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/mermaid.md +0 -0
  110. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/missing.md +0 -0
  111. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/plantuml.md +0 -0
  112. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/sections.md +0 -0
  113. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/skip_title_heading.md +0 -0
  114. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/skip_title_heading_abstract.md +0 -0
  115. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/skip_title_heading_frontmatter.md +0 -0
  116. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/skip_title_heading_multiple.md +0 -0
  117. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/status.md +0 -0
  118. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/table.md +0 -0
  119. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/tags.md +0 -0
  120. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/tasklist.md +0 -0
  121. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/title.md +0 -0
  122. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/source/toc.md +0 -0
  123. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/admonition.xml +0 -0
  124. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/alignment.xml +0 -0
  125. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/anchors.xml +0 -0
  126. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/basic.xml +0 -0
  127. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/code.xml +0 -0
  128. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/collapsed.xml +0 -0
  129. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/fenced.xml +0 -0
  130. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/footnote.xml +0 -0
  131. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/images/images.xml +0 -0
  132. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/images.xml +0 -0
  133. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/macro.xml +0 -0
  134. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/math.xml +0 -0
  135. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/mermaid/class.mmd +0 -0
  136. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/mermaid/mindmap.mmd +0 -0
  137. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/mermaid/pie.mmd +0 -0
  138. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/mermaid/quadrant.mmd +0 -0
  139. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/mermaid/sequence.mmd +0 -0
  140. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/mermaid/timeline.mmd +0 -0
  141. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/mermaid.xml +0 -0
  142. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/missing.xml +0 -0
  143. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/panel.xml +0 -0
  144. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/plantuml/class.puml +0 -0
  145. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/plantuml/component.puml +0 -0
  146. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/plantuml/sequence.puml +0 -0
  147. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/plantuml/usecase.puml +0 -0
  148. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/plantuml.xml +0 -0
  149. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/sections.xml +0 -0
  150. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/skip_title_heading.xml +0 -0
  151. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/skip_title_heading_abstract.xml +0 -0
  152. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/skip_title_heading_abstract_removed.xml +0 -0
  153. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/skip_title_heading_frontmatter.xml +0 -0
  154. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/skip_title_heading_multiple.xml +0 -0
  155. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/skip_title_heading_preserved.xml +0 -0
  156. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/skip_title_heading_removed.xml +0 -0
  157. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/status.xml +0 -0
  158. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/table.xml +0 -0
  159. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/tags.xml +0 -0
  160. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/tasklist.xml +0 -0
  161. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/target/toc.xml +0 -0
  162. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_drawio.py +0 -0
  163. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_matcher.py +0 -0
  164. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_mermaid.py +0 -0
  165. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_plantuml.py +0 -0
  166. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_png.py +0 -0
  167. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_scanner.py +0 -0
  168. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/test_svg.py +0 -0
  169. {markdown_to_confluence-0.5.4 → markdown_to_confluence-0.5.5}/tests/utility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markdown-to-confluence
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Summary: Publish Markdown files to Confluence wiki
5
5
  Author-email: Levente Hunyadi <hunyadi@gmail.com>
6
6
  Maintainer-email: Levente Hunyadi <hunyadi@gmail.com>
@@ -27,18 +27,18 @@ Requires-Dist: cattrs>=25.3
27
27
  Requires-Dist: lxml>=6.0
28
28
  Requires-Dist: markdown>=3.10
29
29
  Requires-Dist: orjson>=3.11
30
- Requires-Dist: pymdown-extensions>=10.19
30
+ Requires-Dist: pymdown-extensions>=10.20
31
31
  Requires-Dist: PyYAML>=6.0
32
32
  Requires-Dist: requests>=2.32
33
33
  Requires-Dist: truststore>=0.10
34
- Requires-Dist: typing-extensions>=4.15; python_version < "3.12"
34
+ Requires-Dist: typing-extensions>=4.15; python_version < "3.11"
35
35
  Provides-Extra: dev
36
- Requires-Dist: markdown_doc>=0.1.6; extra == "dev"
37
- Requires-Dist: types-lxml>=2025.11.25; extra == "dev"
36
+ Requires-Dist: markdown_doc>=0.1.7; extra == "dev"
37
+ Requires-Dist: types-lxml>=2026.1.1; extra == "dev"
38
38
  Requires-Dist: types-markdown>=3.10; extra == "dev"
39
39
  Requires-Dist: types-PyYAML>=6.0; extra == "dev"
40
40
  Requires-Dist: types-requests>=2.32; extra == "dev"
41
- Requires-Dist: mypy>=1.19; extra == "dev"
41
+ Requires-Dist: mypy[faster-cache]>=1.19; extra == "dev"
42
42
  Requires-Dist: ruff>=0.14; extra == "dev"
43
43
  Provides-Extra: formulas
44
44
  Requires-Dist: matplotlib>=3.9; extra == "formulas"
@@ -612,6 +612,35 @@ This Markdown document is neither parsed, nor synchronized with Confluence.
612
612
 
613
613
  This is useful if you have a page in a hierarchy that participates in parent-child relationships but whose content is edited directly in Confluence. Specifically, these documents can be referenced with relative links from other Markdown documents in the file system tree.
614
614
 
615
+ ### Excluding content sections
616
+
617
+ When maintaining documentation in both Git repositories and Confluence, you may want certain content to appear only in the repository but not on Confluence pages. Use HTML comment markers to wrap and exclude specific sections from synchronization:
618
+
619
+ ```markdown
620
+ # Project Documentation
621
+
622
+ This content appears in both Git and Confluence.
623
+
624
+ <!-- confluence-skip-start -->
625
+ ## Internal References
626
+ - See [internal design doc](../internal/design.md)
627
+ - Related to issue #123
628
+ - Development notes for the team
629
+ <!-- confluence-skip-end -->
630
+
631
+ ## Getting Started
632
+ This section is published to Confluence.
633
+ ```
634
+
635
+ Content between `<!-- confluence-skip-start -->` and `<!-- confluence-skip-end -->` markers is removed before conversion and will not appear on the Confluence page. This is useful for:
636
+
637
+ - Repository-specific navigation and cross-references
638
+ - GitLab/GitHub-specific metadata
639
+ - Content relevant only for developers with repository access
640
+
641
+ Multiple exclusion blocks can be used in the same document.
642
+
643
+
615
644
  ### Labels
616
645
 
617
646
  If a Markdown document has the front-matter attribute `tags`, *md2conf* assigns the specified tags to the Confluence page as labels.
@@ -681,36 +710,46 @@ options:
681
710
  Use this option to set the log verbosity.
682
711
  -r ROOT_PAGE Root Confluence page to create new pages. If omitted, will raise exception when creating new pages.
683
712
  --keep-hierarchy Maintain source directory structure when exporting to Confluence.
684
- --flatten-hierarchy Flatten directories with no index.md or README.md when exporting to Confluence.
713
+ --skip-hierarchy Flatten directories with no `index.md` or `README.md` when exporting to Confluence.
685
714
  --generated-by MARKDOWN
686
- Add prompt to pages (default: 'This page has been generated with a tool.').
715
+ Add prompt to pages.
687
716
  --no-generated-by Do not add 'generated by a tool' prompt to pages.
688
717
  --skip-update Skip saving Confluence page ID in Markdown files.
689
- --render-drawio Render draw.io diagrams as image files. (Installed utility required to covert.)
718
+ --heading-anchors Place an anchor at each section heading with GitHub-style same-page identifiers.
719
+ --no-heading-anchors Omit the extra anchor from section headings. (May break manually placed same-page references.) (default)
720
+ --force-valid-url Raise an error when relative URLs point to an invalid location. (default)
721
+ --no-force-valid-url Emit a warning but otherwise ignore relative URLs that point to an invalid location.
722
+ --skip-title-heading Remove the first heading from document body when it is used as the page title (does not apply if title comes from front-matter).
723
+ --keep-title-heading Keep the first heading in document body even when used as page title. (default)
724
+ --prefer-raster Prefer PNG over SVG when both exist. (default)
725
+ --no-prefer-raster Use SVG files directly instead of preferring PNG equivalents.
726
+ --render-drawio Render draw.io diagrams as image files. (Installed utility required to covert.) (default)
690
727
  --no-render-drawio Upload draw.io diagram sources as Confluence page attachments. (Marketplace app required to display.)
691
- --render-mermaid Render Mermaid diagrams as image files. (Installed utility required to convert.)
728
+ --render-mermaid Render Mermaid diagrams as image files. (Installed utility required to convert.) (default)
692
729
  --no-render-mermaid Upload Mermaid diagram sources as Confluence page attachments. (Marketplace app required to display.)
693
- --render-plantuml Render PlantUML diagrams as image files. (Installed utility required to convert.)
730
+ --render-plantuml Render PlantUML diagrams as image files. (Installed utility required to convert.) (default)
694
731
  --no-render-plantuml Upload PlantUML diagram sources as Confluence page attachments. (Marketplace app required to display.)
695
- --render-latex Render LaTeX formulas as image files. (Matplotlib required to convert.)
732
+ --render-latex Render LaTeX formulas as image files. (Matplotlib required to convert.) (default)
696
733
  --no-render-latex Inline LaTeX formulas in Confluence page. (Marketplace app required to display.)
697
734
  --diagram-output-format {png,svg}
698
- Format for rendering Mermaid and draw.io diagrams (default: 'png').
699
- --prefer-raster Prefer PNG over SVG when both exist (default: enabled).
700
- --no-prefer-raster Use SVG files directly instead of preferring PNG equivalents.
701
- --heading-anchors Place an anchor at each section heading with GitHub-style same-page identifiers.
702
- --no-heading-anchors Don't place an anchor at each section heading.
703
- --ignore-invalid-url Emit a warning but otherwise ignore relative URLs that point to ill-specified locations.
704
- --skip-title-heading Skip the first heading from document body when it is used as the page title (does not apply if title comes from front-matter).
705
- --no-skip-title-heading
706
- Keep the first heading in document body even when used as page title (default).
707
- --title-prefix TEXT String to prepend to Confluence page title for each published page.
735
+ Format for rendering Mermaid and draw.io diagrams. (default: png)
708
736
  --webui-links Enable Confluence Web UI links. (Typically required for on-prem versions of Confluence.)
709
- --alignment {center,left,right}
710
- Alignment for block-level images and formulas (default: 'center').
711
- --max-image-width MAX_IMAGE_WIDTH
712
- Maximum display width for images [px]. Wider images are scaled down for page display. Original size kept for full-size viewing.
737
+ --no-webui-links Use hierarchical links including space and page ID. (default)
713
738
  --use-panel Transform admonitions and alerts into a Confluence custom panel.
739
+ --no-use-panel Use standard Confluence macro types for admonitions and alerts (info, tip, note and warning). (default)
740
+ --layout-image-alignment {center,left,right,None}
741
+ Alignment for block-level images and formulas.
742
+ --layout-image-max-width INT
743
+ Maximum display width for images [px]. Wider images are scaled down for page display.
744
+ --layout-table-width INT
745
+ Maximum table width in pixels.
746
+ --layout-table-display-mode {responsive,fixed}
747
+ Set table display mode. (default: responsive)
748
+ --layout-alignment {center,left,right,None}
749
+ Default alignment for block-level content.
750
+ --ignore-invalid-url Emit a warning but otherwise ignore relative URLs that point to ill-specified locations.
751
+ --title-prefix TEXT String to prepend to Confluence page title for each published page.
752
+ --line-numbers Inject line numbers in Markdown source to help localize conversion errors.
714
753
  --local Write XHTML-based Confluence Storage Format files locally without invoking Confluence API.
715
754
  --headers KEY=VALUE [KEY=VALUE ...]
716
755
  Apply custom headers to all Confluence API requests.
@@ -723,46 +762,49 @@ options:
723
762
  ```python
724
763
  from md2conf.api import ConfluenceAPI
725
764
  from md2conf.environment import ConnectionProperties
726
- from md2conf.options import ConverterOptions, DocumentOptions, ImageLayoutOptions, LayoutOptions, TableLayoutOptions
765
+ from md2conf.options import ConfluencePageID, ConverterOptions, DocumentOptions, ImageLayoutOptions, LayoutOptions, TableLayoutOptions
727
766
  from md2conf.publisher import Publisher
728
767
 
729
768
  properties = ConnectionProperties(
730
- api_url=...,
731
- domain=...,
732
- base_path=...,
733
- user_name=...,
734
- api_key=...,
735
- space_key=...,
736
- headers=...,
769
+ domain=str() or None,
770
+ base_path=str() or None,
771
+ space_key=str() or None,
772
+ api_url=str() or None,
773
+ user_name=str() or None,
774
+ api_key=str(),
775
+ headers={str(): str()} or None,
737
776
  )
738
777
  options = DocumentOptions(
739
- root_page_id=...,
740
- keep_hierarchy=...,
741
- title_prefix=...,
742
- generated_by=...,
778
+ root_page_id=ConfluencePageID() or None,
779
+ keep_hierarchy=bool(),
780
+ title_prefix=str() or None,
781
+ generated_by=str() or None,
782
+ skip_update=bool(),
743
783
  converter=ConverterOptions(
744
- heading_anchors=...,
745
- ignore_invalid_url=...,
746
- skip_title_heading=...,
747
- prefer_raster=...,
748
- render_drawio=...,
749
- render_mermaid=...,
750
- render_plantuml=...,
751
- render_latex=...,
752
- diagram_output_format=...,
753
- webui_links=...,
754
- use_panel=...,
784
+ heading_anchors=bool(),
785
+ force_valid_url=bool(),
786
+ skip_title_heading=bool(),
787
+ prefer_raster=bool(),
788
+ render_drawio=bool(),
789
+ render_mermaid=bool(),
790
+ render_plantuml=bool(),
791
+ render_latex=bool(),
792
+ diagram_output_format='png' or 'svg',
793
+ webui_links=bool(),
794
+ use_panel=bool(),
755
795
  layout=LayoutOptions(
756
796
  image=ImageLayoutOptions(
757
- alignment=...,
758
- max_width=...,
797
+ alignment='center' or 'left' or 'right' or None,
798
+ max_width=int() or None,
759
799
  ),
760
800
  table=TableLayoutOptions(
761
- width=...,
762
- display_mode=...,
801
+ width=int() or None,
802
+ display_mode='responsive' or 'fixed',
763
803
  ),
804
+ alignment='center' or 'left' or 'right' or None,
764
805
  ),
765
806
  ),
807
+ line_numbers=bool(),
766
808
  )
767
809
  with ConfluenceAPI(properties) as api:
768
810
  Publisher(api, options).process(mdpath)
@@ -1,49 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: markdown-to-confluence
3
- Version: 0.5.4
4
- Summary: Publish Markdown files to Confluence wiki
5
- Author-email: Levente Hunyadi <hunyadi@gmail.com>
6
- Maintainer-email: Levente Hunyadi <hunyadi@gmail.com>
7
- License-Expression: MIT
8
- Project-URL: Homepage, https://github.com/hunyadi/md2conf
9
- Project-URL: Source, https://github.com/hunyadi/md2conf
10
- Keywords: markdown,converter,confluence
11
- Classifier: Development Status :: 5 - Production/Stable
12
- Classifier: Environment :: Console
13
- Classifier: Intended Audience :: End Users/Desktop
14
- Classifier: Operating System :: OS Independent
15
- Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Programming Language :: Python :: 3.13
20
- Classifier: Programming Language :: Python :: 3.14
21
- Classifier: Programming Language :: Python :: 3 :: Only
22
- Classifier: Typing :: Typed
23
- Requires-Python: >=3.10
24
- Description-Content-Type: text/markdown
25
- License-File: LICENSE
26
- Requires-Dist: cattrs>=25.3
27
- Requires-Dist: lxml>=6.0
28
- Requires-Dist: markdown>=3.10
29
- Requires-Dist: orjson>=3.11
30
- Requires-Dist: pymdown-extensions>=10.19
31
- Requires-Dist: PyYAML>=6.0
32
- Requires-Dist: requests>=2.32
33
- Requires-Dist: truststore>=0.10
34
- Requires-Dist: typing-extensions>=4.15; python_version < "3.12"
35
- Provides-Extra: dev
36
- Requires-Dist: markdown_doc>=0.1.6; extra == "dev"
37
- Requires-Dist: types-lxml>=2025.11.25; extra == "dev"
38
- Requires-Dist: types-markdown>=3.10; extra == "dev"
39
- Requires-Dist: types-PyYAML>=6.0; extra == "dev"
40
- Requires-Dist: types-requests>=2.32; extra == "dev"
41
- Requires-Dist: mypy>=1.19; extra == "dev"
42
- Requires-Dist: ruff>=0.14; extra == "dev"
43
- Provides-Extra: formulas
44
- Requires-Dist: matplotlib>=3.9; extra == "formulas"
45
- Dynamic: license-file
46
-
47
1
  # Publish Markdown files to Confluence wiki
48
2
 
49
3
  Contributors to software projects typically write documentation in Markdown format and host Markdown files in collaborative version control systems (VCS) such as GitHub or GitLab to track changes and facilitate the review process. However, not everyone at a company has access to VCS, and documents are often circulated in Confluence wiki instead.
@@ -612,6 +566,35 @@ This Markdown document is neither parsed, nor synchronized with Confluence.
612
566
 
613
567
  This is useful if you have a page in a hierarchy that participates in parent-child relationships but whose content is edited directly in Confluence. Specifically, these documents can be referenced with relative links from other Markdown documents in the file system tree.
614
568
 
569
+ ### Excluding content sections
570
+
571
+ When maintaining documentation in both Git repositories and Confluence, you may want certain content to appear only in the repository but not on Confluence pages. Use HTML comment markers to wrap and exclude specific sections from synchronization:
572
+
573
+ ```markdown
574
+ # Project Documentation
575
+
576
+ This content appears in both Git and Confluence.
577
+
578
+ <!-- confluence-skip-start -->
579
+ ## Internal References
580
+ - See [internal design doc](../internal/design.md)
581
+ - Related to issue #123
582
+ - Development notes for the team
583
+ <!-- confluence-skip-end -->
584
+
585
+ ## Getting Started
586
+ This section is published to Confluence.
587
+ ```
588
+
589
+ Content between `<!-- confluence-skip-start -->` and `<!-- confluence-skip-end -->` markers is removed before conversion and will not appear on the Confluence page. This is useful for:
590
+
591
+ - Repository-specific navigation and cross-references
592
+ - GitLab/GitHub-specific metadata
593
+ - Content relevant only for developers with repository access
594
+
595
+ Multiple exclusion blocks can be used in the same document.
596
+
597
+
615
598
  ### Labels
616
599
 
617
600
  If a Markdown document has the front-matter attribute `tags`, *md2conf* assigns the specified tags to the Confluence page as labels.
@@ -681,36 +664,46 @@ options:
681
664
  Use this option to set the log verbosity.
682
665
  -r ROOT_PAGE Root Confluence page to create new pages. If omitted, will raise exception when creating new pages.
683
666
  --keep-hierarchy Maintain source directory structure when exporting to Confluence.
684
- --flatten-hierarchy Flatten directories with no index.md or README.md when exporting to Confluence.
667
+ --skip-hierarchy Flatten directories with no `index.md` or `README.md` when exporting to Confluence.
685
668
  --generated-by MARKDOWN
686
- Add prompt to pages (default: 'This page has been generated with a tool.').
669
+ Add prompt to pages.
687
670
  --no-generated-by Do not add 'generated by a tool' prompt to pages.
688
671
  --skip-update Skip saving Confluence page ID in Markdown files.
689
- --render-drawio Render draw.io diagrams as image files. (Installed utility required to covert.)
672
+ --heading-anchors Place an anchor at each section heading with GitHub-style same-page identifiers.
673
+ --no-heading-anchors Omit the extra anchor from section headings. (May break manually placed same-page references.) (default)
674
+ --force-valid-url Raise an error when relative URLs point to an invalid location. (default)
675
+ --no-force-valid-url Emit a warning but otherwise ignore relative URLs that point to an invalid location.
676
+ --skip-title-heading Remove the first heading from document body when it is used as the page title (does not apply if title comes from front-matter).
677
+ --keep-title-heading Keep the first heading in document body even when used as page title. (default)
678
+ --prefer-raster Prefer PNG over SVG when both exist. (default)
679
+ --no-prefer-raster Use SVG files directly instead of preferring PNG equivalents.
680
+ --render-drawio Render draw.io diagrams as image files. (Installed utility required to covert.) (default)
690
681
  --no-render-drawio Upload draw.io diagram sources as Confluence page attachments. (Marketplace app required to display.)
691
- --render-mermaid Render Mermaid diagrams as image files. (Installed utility required to convert.)
682
+ --render-mermaid Render Mermaid diagrams as image files. (Installed utility required to convert.) (default)
692
683
  --no-render-mermaid Upload Mermaid diagram sources as Confluence page attachments. (Marketplace app required to display.)
693
- --render-plantuml Render PlantUML diagrams as image files. (Installed utility required to convert.)
684
+ --render-plantuml Render PlantUML diagrams as image files. (Installed utility required to convert.) (default)
694
685
  --no-render-plantuml Upload PlantUML diagram sources as Confluence page attachments. (Marketplace app required to display.)
695
- --render-latex Render LaTeX formulas as image files. (Matplotlib required to convert.)
686
+ --render-latex Render LaTeX formulas as image files. (Matplotlib required to convert.) (default)
696
687
  --no-render-latex Inline LaTeX formulas in Confluence page. (Marketplace app required to display.)
697
688
  --diagram-output-format {png,svg}
698
- Format for rendering Mermaid and draw.io diagrams (default: 'png').
699
- --prefer-raster Prefer PNG over SVG when both exist (default: enabled).
700
- --no-prefer-raster Use SVG files directly instead of preferring PNG equivalents.
701
- --heading-anchors Place an anchor at each section heading with GitHub-style same-page identifiers.
702
- --no-heading-anchors Don't place an anchor at each section heading.
703
- --ignore-invalid-url Emit a warning but otherwise ignore relative URLs that point to ill-specified locations.
704
- --skip-title-heading Skip the first heading from document body when it is used as the page title (does not apply if title comes from front-matter).
705
- --no-skip-title-heading
706
- Keep the first heading in document body even when used as page title (default).
707
- --title-prefix TEXT String to prepend to Confluence page title for each published page.
689
+ Format for rendering Mermaid and draw.io diagrams. (default: png)
708
690
  --webui-links Enable Confluence Web UI links. (Typically required for on-prem versions of Confluence.)
709
- --alignment {center,left,right}
710
- Alignment for block-level images and formulas (default: 'center').
711
- --max-image-width MAX_IMAGE_WIDTH
712
- Maximum display width for images [px]. Wider images are scaled down for page display. Original size kept for full-size viewing.
691
+ --no-webui-links Use hierarchical links including space and page ID. (default)
713
692
  --use-panel Transform admonitions and alerts into a Confluence custom panel.
693
+ --no-use-panel Use standard Confluence macro types for admonitions and alerts (info, tip, note and warning). (default)
694
+ --layout-image-alignment {center,left,right,None}
695
+ Alignment for block-level images and formulas.
696
+ --layout-image-max-width INT
697
+ Maximum display width for images [px]. Wider images are scaled down for page display.
698
+ --layout-table-width INT
699
+ Maximum table width in pixels.
700
+ --layout-table-display-mode {responsive,fixed}
701
+ Set table display mode. (default: responsive)
702
+ --layout-alignment {center,left,right,None}
703
+ Default alignment for block-level content.
704
+ --ignore-invalid-url Emit a warning but otherwise ignore relative URLs that point to ill-specified locations.
705
+ --title-prefix TEXT String to prepend to Confluence page title for each published page.
706
+ --line-numbers Inject line numbers in Markdown source to help localize conversion errors.
714
707
  --local Write XHTML-based Confluence Storage Format files locally without invoking Confluence API.
715
708
  --headers KEY=VALUE [KEY=VALUE ...]
716
709
  Apply custom headers to all Confluence API requests.
@@ -723,46 +716,49 @@ options:
723
716
  ```python
724
717
  from md2conf.api import ConfluenceAPI
725
718
  from md2conf.environment import ConnectionProperties
726
- from md2conf.options import ConverterOptions, DocumentOptions, ImageLayoutOptions, LayoutOptions, TableLayoutOptions
719
+ from md2conf.options import ConfluencePageID, ConverterOptions, DocumentOptions, ImageLayoutOptions, LayoutOptions, TableLayoutOptions
727
720
  from md2conf.publisher import Publisher
728
721
 
729
722
  properties = ConnectionProperties(
730
- api_url=...,
731
- domain=...,
732
- base_path=...,
733
- user_name=...,
734
- api_key=...,
735
- space_key=...,
736
- headers=...,
723
+ domain=str() or None,
724
+ base_path=str() or None,
725
+ space_key=str() or None,
726
+ api_url=str() or None,
727
+ user_name=str() or None,
728
+ api_key=str(),
729
+ headers={str(): str()} or None,
737
730
  )
738
731
  options = DocumentOptions(
739
- root_page_id=...,
740
- keep_hierarchy=...,
741
- title_prefix=...,
742
- generated_by=...,
732
+ root_page_id=ConfluencePageID() or None,
733
+ keep_hierarchy=bool(),
734
+ title_prefix=str() or None,
735
+ generated_by=str() or None,
736
+ skip_update=bool(),
743
737
  converter=ConverterOptions(
744
- heading_anchors=...,
745
- ignore_invalid_url=...,
746
- skip_title_heading=...,
747
- prefer_raster=...,
748
- render_drawio=...,
749
- render_mermaid=...,
750
- render_plantuml=...,
751
- render_latex=...,
752
- diagram_output_format=...,
753
- webui_links=...,
754
- use_panel=...,
738
+ heading_anchors=bool(),
739
+ force_valid_url=bool(),
740
+ skip_title_heading=bool(),
741
+ prefer_raster=bool(),
742
+ render_drawio=bool(),
743
+ render_mermaid=bool(),
744
+ render_plantuml=bool(),
745
+ render_latex=bool(),
746
+ diagram_output_format='png' or 'svg',
747
+ webui_links=bool(),
748
+ use_panel=bool(),
755
749
  layout=LayoutOptions(
756
750
  image=ImageLayoutOptions(
757
- alignment=...,
758
- max_width=...,
751
+ alignment='center' or 'left' or 'right' or None,
752
+ max_width=int() or None,
759
753
  ),
760
754
  table=TableLayoutOptions(
761
- width=...,
762
- display_mode=...,
755
+ width=int() or None,
756
+ display_mode='responsive' or 'fixed',
763
757
  ),
758
+ alignment='center' or 'left' or 'right' or None,
764
759
  ),
765
760
  ),
761
+ line_numbers=bool(),
766
762
  )
767
763
  with ConfluenceAPI(properties) as api:
768
764
  Publisher(api, options).process(mdpath)