deepdoc 2.3.3__tar.gz → 2.3.4__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 (149) hide show
  1. {deepdoc-2.3.3 → deepdoc-2.3.4}/PKG-INFO +1 -1
  2. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/__init__.py +1 -1
  3. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/generator/generation.py +10 -0
  4. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/generator/post_processors.py +51 -0
  5. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc.egg-info/PKG-INFO +1 -1
  6. {deepdoc-2.3.3 → deepdoc-2.3.4}/pyproject.toml +1 -1
  7. {deepdoc-2.3.3 → deepdoc-2.3.4}/LICENSE +0 -0
  8. {deepdoc-2.3.3 → deepdoc-2.3.4}/README.md +0 -0
  9. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/__main__.py +0 -0
  10. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/benchmark_v2.py +0 -0
  11. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/call_graph.py +0 -0
  12. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/changelog_writer.py +0 -0
  13. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/__init__.py +0 -0
  14. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/answer_mixin.py +0 -0
  15. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/chunker.py +0 -0
  16. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/constants.py +0 -0
  17. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/deep_research.py +0 -0
  18. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/docs_summary.py +0 -0
  19. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/embeddings.py +0 -0
  20. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/indexer.py +0 -0
  21. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/linking.py +0 -0
  22. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/live_fallback_mixin.py +0 -0
  23. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/persistence.py +0 -0
  24. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/providers.py +0 -0
  25. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/retrieval_mixin.py +0 -0
  26. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/routes.py +0 -0
  27. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/scaffold.py +0 -0
  28. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/service.py +0 -0
  29. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/settings.py +0 -0
  30. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/source_archive.py +0 -0
  31. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/symbol_index.py +0 -0
  32. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/chatbot/types.py +0 -0
  33. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/cli.py +0 -0
  34. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/config.py +0 -0
  35. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/generator/__init__.py +0 -0
  36. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/generator/evidence.py +0 -0
  37. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/generator/validation.py +0 -0
  38. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/llm/__init__.py +0 -0
  39. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/llm/client.py +0 -0
  40. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/llm/json_utils.py +0 -0
  41. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/llm/litellm_compat.py +0 -0
  42. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/manifest.py +0 -0
  43. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/openapi.py +0 -0
  44. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/__init__.py +0 -0
  45. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/api_detector.py +0 -0
  46. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/base.py +0 -0
  47. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/go_parser.py +0 -0
  48. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/js_ts_parser.py +0 -0
  49. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/php_parser.py +0 -0
  50. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/python_parser.py +0 -0
  51. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/registry.py +0 -0
  52. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/__init__.py +0 -0
  53. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/base.py +0 -0
  54. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/common.py +0 -0
  55. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/detector.py +0 -0
  56. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/django.py +0 -0
  57. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/express.py +0 -0
  58. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/falcon.py +0 -0
  59. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/fastify.py +0 -0
  60. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/go.py +0 -0
  61. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/js_shared.py +0 -0
  62. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/laravel.py +0 -0
  63. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/nestjs.py +0 -0
  64. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/python_shared.py +0 -0
  65. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/registry.py +0 -0
  66. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/routes/repo_resolver.py +0 -0
  67. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/parser/vue_parser.py +0 -0
  68. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/persistence_v2.py +0 -0
  69. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/pipeline_v2.py +0 -0
  70. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/__init__.py +0 -0
  71. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/bucket_injection.py +0 -0
  72. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/bucket_refinement.py +0 -0
  73. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/common.py +0 -0
  74. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/endpoint_refs.py +0 -0
  75. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/engine.py +0 -0
  76. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/flow_candidates.py +0 -0
  77. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/heuristics.py +0 -0
  78. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/nav_shaping.py +0 -0
  79. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/specializations.py +0 -0
  80. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/topology.py +0 -0
  81. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/planner/utils.py +0 -0
  82. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/prompts/__init__.py +0 -0
  83. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/prompts/bucket_types.py +0 -0
  84. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/prompts/page_types.py +0 -0
  85. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/prompts/selectors.py +0 -0
  86. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/prompts/system.py +0 -0
  87. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/prompts/update.py +0 -0
  88. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/py.typed +0 -0
  89. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/__init__.py +0 -0
  90. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/artifacts.py +0 -0
  91. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/clustering.py +0 -0
  92. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/common.py +0 -0
  93. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/database.py +0 -0
  94. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/endpoints.py +0 -0
  95. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/integrations.py +0 -0
  96. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/runtime.py +0 -0
  97. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/scanner/utils.py +0 -0
  98. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/__init__.py +0 -0
  99. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/builder/__init__.py +0 -0
  100. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/builder/chatbot_components.py +0 -0
  101. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/builder/common.py +0 -0
  102. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/builder/engine.py +0 -0
  103. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/builder/mdx_utils.py +0 -0
  104. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/builder/scaffold_files.py +0 -0
  105. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/site/builder/templates.py +0 -0
  106. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/smart_update_v2.py +0 -0
  107. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/source_metadata.py +0 -0
  108. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/updater_v2.py +0 -0
  109. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc/v2_models.py +0 -0
  110. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc.egg-info/SOURCES.txt +0 -0
  111. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc.egg-info/dependency_links.txt +0 -0
  112. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc.egg-info/entry_points.txt +0 -0
  113. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc.egg-info/requires.txt +0 -0
  114. {deepdoc-2.3.3 → deepdoc-2.3.4}/deepdoc.egg-info/top_level.txt +0 -0
  115. {deepdoc-2.3.3 → deepdoc-2.3.4}/setup.cfg +0 -0
  116. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_benchmark_scorecard.py +0 -0
  117. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_call_graph.py +0 -0
  118. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_changelog.py +0 -0
  119. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_config.py +0 -0
  120. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_embeddings.py +0 -0
  121. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_eval.py +0 -0
  122. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_index.py +0 -0
  123. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_persistence.py +0 -0
  124. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_providers.py +0 -0
  125. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_query.py +0 -0
  126. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_relationship.py +0 -0
  127. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_scaffold.py +0 -0
  128. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_chatbot_source_archive.py +0 -0
  129. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_classify.py +0 -0
  130. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_cli_generate.py +0 -0
  131. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_cli_serve.py +0 -0
  132. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_cli_update.py +0 -0
  133. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_flow_candidates.py +0 -0
  134. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_framework_fixtures.py +0 -0
  135. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_framework_support.py +0 -0
  136. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_fumadocs_builder.py +0 -0
  137. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_generation_evidence.py +0 -0
  138. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_internal_docs_metadata.py +0 -0
  139. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_litellm_compat.py +0 -0
  140. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_llm_json_utils.py +0 -0
  141. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_parallel_pipeline.py +0 -0
  142. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_parser_ranges.py +0 -0
  143. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_planner_consolidation.py +0 -0
  144. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_planner_granularity.py +0 -0
  145. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_route_registry.py +0 -0
  146. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_runtime_scan.py +0 -0
  147. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_smart_update.py +0 -0
  148. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_stale.py +0 -0
  149. {deepdoc-2.3.3 → deepdoc-2.3.4}/tests/test_state.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepdoc
3
- Version: 2.3.3
3
+ Version: 2.3.4
4
4
  Summary: Auto-generate beautiful docs from any codebase
5
5
  Author: Pranav Kumar
6
6
  License: MIT
@@ -1,3 +1,3 @@
1
1
  """DeepDoc — Auto-generate beautiful docs from any codebase."""
2
2
 
3
- __version__ = "2.3.3"
3
+ __version__ = "2.3.4"
@@ -613,6 +613,8 @@ class BucketGenerationEngine:
613
613
  content = repair_dangling_plain_fences(content)
614
614
  content = normalize_fumadocs_directives(content)
615
615
  content = fix_frontmatter_description(content)
616
+ content = fix_bare_mermaid_fences(content)
617
+ content = fix_leaf_card_directives(content)
616
618
  content = escape_mdx_angle_hazards(content)
617
619
  content = repair_internal_doc_links(
618
620
  content,
@@ -652,6 +654,10 @@ class BucketGenerationEngine:
652
654
  content = repair_unbalanced_code_fences(content)
653
655
  content = normalize_explanatory_lines_outside_fences(content)
654
656
  content = repair_dangling_plain_fences(content)
657
+ content = normalize_fumadocs_directives(content)
658
+ content = fix_frontmatter_description(content)
659
+ content = fix_bare_mermaid_fences(content)
660
+ content = fix_leaf_card_directives(content)
655
661
  content = escape_mdx_angle_hazards(content)
656
662
  content = repair_internal_doc_links(
657
663
  content,
@@ -694,6 +700,10 @@ class BucketGenerationEngine:
694
700
  content = repair_unbalanced_code_fences(content)
695
701
  content = normalize_explanatory_lines_outside_fences(content)
696
702
  content = repair_dangling_plain_fences(content)
703
+ content = normalize_fumadocs_directives(content)
704
+ content = fix_frontmatter_description(content)
705
+ content = fix_bare_mermaid_fences(content)
706
+ content = fix_leaf_card_directives(content)
697
707
  content = escape_mdx_angle_hazards(content)
698
708
  content = repair_internal_doc_links(
699
709
  content,
@@ -851,6 +851,57 @@ def fix_frontmatter_description(content: str) -> str:
851
851
  )
852
852
 
853
853
 
854
+ def fix_bare_mermaid_fences(content: str) -> str:
855
+ """Repair mermaid diagrams where the LLM omitted the opening code fence.
856
+
857
+ The LLM sometimes writes just the word 'mermaid' on its own line followed
858
+ by diagram content and a closing ``` — instead of the correct ```mermaid
859
+ opening fence. This produces a bare 'mermaid' paragraph in MDX and leaves
860
+ the diagram body (including {node} labels) unescaped, causing acorn parse
861
+ errors.
862
+
863
+ Pattern matched:
864
+ <text ending in : or .\n>
865
+ mermaid\n
866
+ <diagram type line, e.g. sequenceDiagram>\n
867
+ ...diagram body...
868
+ ```
869
+ """
870
+ return re.sub(
871
+ r'(?m)^mermaid\n(?=(sequenceDiagram|flowchart|graph|classDiagram|stateDiagram|erDiagram|gantt|pie|gitGraph|mindmap|timeline|journey|quadrantChart|xychart|block|packet|kanban|architecture))',
872
+ '```mermaid\n',
873
+ content,
874
+ )
875
+
876
+
877
+ def fix_leaf_card_directives(content: str) -> str:
878
+ """Convert LLM-invented ::card{...}\\nCONTENT\\n:: to :::card{...}\\nCONTENT\\n:::.
879
+
880
+ The fumadocs remark-directive plugin expects 'card' to be a *container*
881
+ directive (:::card ... :::) so it can carry child content. The LLM
882
+ frequently uses the *leaf* directive form (::card) with a standalone ::
883
+ close marker — which remark-directive does not recognise, rendering both
884
+ the content and the :: as raw text.
885
+ """
886
+ def fix_cards_block(m: re.Match) -> str:
887
+ inner = m.group(1)
888
+ # ::card{...}\nCONTENT\n:: → :::card{...}\nCONTENT\n:::
889
+ inner = re.sub(
890
+ r'^::card(\{[^}]*\})\n(.*?)\n^::$',
891
+ r':::card\1\n\2\n:::',
892
+ inner,
893
+ flags=re.MULTILINE | re.DOTALL,
894
+ )
895
+ return f':::cards\n{inner}\n:::'
896
+
897
+ return re.sub(
898
+ r':::cards\n(.*?)\n:::',
899
+ fix_cards_block,
900
+ content,
901
+ flags=re.DOTALL,
902
+ )
903
+
904
+
854
905
  def unwrap_markdown_trapped_in_code_fences(content: str) -> str:
855
906
  """Detect code fences that contain markdown content and unwrap them.
856
907
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepdoc
3
- Version: 2.3.3
3
+ Version: 2.3.4
4
4
  Summary: Auto-generate beautiful docs from any codebase
5
5
  Author: Pranav Kumar
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "deepdoc"
7
- version = "2.3.3"
7
+ version = "2.3.4"
8
8
  description = "Auto-generate beautiful docs from any codebase"
9
9
  readme = "README.md"
10
10
  authors = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes