strictdoc 0.1.0__tar.gz → 0.2.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 (530) hide show
  1. {strictdoc-0.1.0 → strictdoc-0.2.0}/PKG-INFO +1 -1
  2. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/__init__.py +1 -1
  3. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/grammar_reader.py +6 -6
  4. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/pickle_cache.py +18 -9
  5. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/reader.py +6 -6
  6. strictdoc-0.2.0/strictdoc/backend/sdoc_source_code/caching_reader.py +59 -0
  7. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/grammar.py +6 -1
  8. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/marker_parser.py +8 -1
  9. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/models/function_range_marker.py +16 -0
  10. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/models/range_marker.py +9 -0
  11. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/reader.py +38 -4
  12. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/reader_c.py +41 -5
  13. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/reader_python.py +37 -21
  14. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/document_finder.py +10 -6
  15. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/file_traceability_index.py +39 -12
  16. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/project_config.py +19 -0
  17. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/traceability_index_builder.py +9 -35
  18. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/create_requirement.py +1 -1
  19. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/update_requirement.py +1 -1
  20. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/requirement_form_object.py +1 -1
  21. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/html_templates.py +2 -6
  22. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/renderers/markup_renderer.py +1 -1
  23. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/files/index.jinja +4 -0
  24. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_view/requirement.jinja +5 -1
  25. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html2pdf/html2pdf.py +33 -14
  26. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html2pdf/pdf_print_driver.py +8 -1
  27. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/rst_to_html_fragment_writer.py +10 -9
  28. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/git/git_client.py +19 -22
  29. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/routers/other_router.py +2 -2
  30. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/server.py +16 -0
  31. strictdoc-0.1.0/strictdoc/export/html/templates/_shared/requirement_block/files_tree.jinja.html +0 -31
  32. {strictdoc-0.1.0 → strictdoc-0.2.0}/.gitignore +0 -0
  33. {strictdoc-0.1.0 → strictdoc-0.2.0}/LICENSE +0 -0
  34. {strictdoc-0.1.0 → strictdoc-0.2.0}/NOTICE +0 -0
  35. {strictdoc-0.1.0 → strictdoc-0.2.0}/README.md +0 -0
  36. {strictdoc-0.1.0 → strictdoc-0.2.0}/pyproject.toml +0 -0
  37. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/__init__.py +0 -0
  38. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/excel/__init__.py +0 -0
  39. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/excel/excel_import.py +0 -0
  40. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/excel/export/__init__.py +0 -0
  41. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/excel/export/excel_generator.py +0 -0
  42. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/excel/import_/__init__.py +0 -0
  43. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/excel/import_/excel_to_sdoc_converter.py +0 -0
  44. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/reqif/__init__.py +0 -0
  45. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/reqif/p01_sdoc/__init__.py +0 -0
  46. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py +0 -0
  47. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py +0 -0
  48. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/reqif/reqif_export.py +0 -0
  49. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/reqif/reqif_import.py +0 -0
  50. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/reqif/sdoc_reqif_fields.py +0 -0
  51. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/__init__.py +0 -0
  52. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/constants.py +0 -0
  53. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/document_reference.py +0 -0
  54. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/error_handling.py +0 -0
  55. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/errors/__init__.py +0 -0
  56. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/errors/document_tree_error.py +0 -0
  57. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/free_text_reader.py +0 -0
  58. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/grammar/__init__.py +0 -0
  59. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/grammar/grammar.py +0 -0
  60. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/grammar/grammar_builder.py +0 -0
  61. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/grammar/grammar_grammar.py +0 -0
  62. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/grammar/type_system.py +0 -0
  63. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/__init__.py +0 -0
  64. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/anchor.py +0 -0
  65. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/any_node.py +0 -0
  66. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/constants.py +0 -0
  67. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/document.py +0 -0
  68. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/document_config.py +0 -0
  69. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/document_from_file.py +0 -0
  70. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/document_grammar.py +0 -0
  71. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/document_view.py +0 -0
  72. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/free_text.py +0 -0
  73. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/inline_link.py +0 -0
  74. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/node.py +0 -0
  75. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/object.py +0 -0
  76. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/object_factory.py +0 -0
  77. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/reference.py +0 -0
  78. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/section.py +0 -0
  79. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/models/type_system.py +0 -0
  80. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/processor.py +0 -0
  81. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/validations/__init__.py +0 -0
  82. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/validations/sdoc_validator.py +0 -0
  83. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc/writer.py +0 -0
  84. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/__init__.py +0 -0
  85. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/models/__init__.py +0 -0
  86. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/models/function.py +0 -0
  87. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/models/requirement_marker.py +0 -0
  88. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/models/source_file_info.py +0 -0
  89. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/parse_context.py +0 -0
  90. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/processors/general_language_marker_processors.py +0 -0
  91. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/backend/sdoc_source_code/tree_sitter_helpers.py +0 -0
  92. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/cli/__init__.py +0 -0
  93. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/cli/argument_int_range.py +0 -0
  94. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/cli/cli_arg_parser.py +0 -0
  95. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/cli/command_parser_builder.py +0 -0
  96. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/cli/main.py +0 -0
  97. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/commands/__init__.py +0 -0
  98. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/commands/about_command.py +0 -0
  99. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/commands/diff_command.py +0 -0
  100. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/commands/dump_grammar_command.py +0 -0
  101. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/commands/manage_autouid_command.py +0 -0
  102. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/commands/version_command.py +0 -0
  103. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/__init__.py +0 -0
  104. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/actions/__init__.py +0 -0
  105. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/actions/export_action.py +0 -0
  106. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/actions/import_action.py +0 -0
  107. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/analyzers/document_stats.py +0 -0
  108. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/analyzers/document_uid_analyzer.py +0 -0
  109. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/asset_manager.py +0 -0
  110. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/document_iterator.py +0 -0
  111. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/document_meta.py +0 -0
  112. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/document_tree.py +0 -0
  113. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/document_tree_iterator.py +0 -0
  114. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/environment.py +0 -0
  115. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/file_tree.py +0 -0
  116. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/finders/__init__.py +0 -0
  117. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/finders/source_files_finder.py +0 -0
  118. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/graph/abstract_bucket.py +0 -0
  119. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/graph/many_to_many_set.py +0 -0
  120. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/graph/one_to_one_dictionary.py +0 -0
  121. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/graph/validations.py +0 -0
  122. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/graph_database.py +0 -0
  123. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/query_engine/grammar.py +0 -0
  124. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/query_engine/query_object.py +0 -0
  125. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/query_engine/query_reader.py +0 -0
  126. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/source_tree.py +0 -0
  127. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/traceability_index.py +0 -0
  128. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/constants.py +0 -0
  129. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/delete_requirement.py +0 -0
  130. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/delete_section.py +0 -0
  131. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/section.py +0 -0
  132. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/update_document_config.py +0 -0
  133. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/update_grammar.py +0 -0
  134. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/update_grammar_element.py +0 -0
  135. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/update_included_document.py +0 -0
  136. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/transforms/validation_error.py +0 -0
  137. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/core/tree_cycle_detector.py +0 -0
  138. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/__init__.py +0 -0
  139. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/__init__.py +0 -0
  140. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/autogen.css +0 -0
  141. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/base.css +0 -0
  142. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/collapsible_list.js +0 -0
  143. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/collapsible_toc.js +0 -0
  144. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/collapsible_tree.js +0 -0
  145. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/content.css +0 -0
  146. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/anchor_controller.js +0 -0
  147. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/copy_to_clipboard_controller.js +0 -0
  148. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/deletable_field_controller.js +0 -0
  149. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/draggable_list_controller.js +0 -0
  150. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/dropdown_menu_controller.js +0 -0
  151. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/editable_field_controller.js +0 -0
  152. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/modal_controller.js +0 -0
  153. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/movable_field_controller.js +0 -0
  154. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/scroll_into_view_controller.js +0 -0
  155. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/controllers/tabs_controller.js +0 -0
  156. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/diff.css +0 -0
  157. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/diff.js +0 -0
  158. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/element.css +0 -0
  159. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/favicon.ico +0 -0
  160. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/fonts/NotoSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  161. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/fonts/NotoSans-VariableFont_wdth,wght.ttf +0 -0
  162. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/fonts/NotoSansMono-VariableFont_wdth,wght.ttf +0 -0
  163. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/form.css +0 -0
  164. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/html2pdf/bundle.js +0 -0
  165. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/layout.css +0 -0
  166. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/node.css +0 -0
  167. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/pan_with_space.js +0 -0
  168. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/project_tree.css +0 -0
  169. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/project_tree.js +0 -0
  170. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/requirement-tree.css +0 -0
  171. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/requirement.css +0 -0
  172. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/requirement__temporary.css +0 -0
  173. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/requirements-coverage.js +0 -0
  174. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/resizable_bar.js +0 -0
  175. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/source-code-coverage.js +0 -0
  176. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/source.css +0 -0
  177. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/stimulus.min.js +0 -0
  178. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/table_vew.css +0 -0
  179. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/toc_highlighting.js +0 -0
  180. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/traceability_matrix.css +0 -0
  181. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/tree(not_in_use).css +0 -0
  182. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/turbo.min.js +0 -0
  183. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/viewtype_menu.js +0 -0
  184. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static/zoomable.js +0 -0
  185. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/LICENSE-MATHJAX +0 -0
  186. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/tex.js +0 -0
  187. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  188. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  189. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  190. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  191. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  192. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  193. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  194. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  195. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  196. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  197. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  198. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  199. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  200. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  201. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  202. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  203. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  204. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  205. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  206. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  207. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  208. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  209. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  210. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mathjax/tex-mml-chtml.js +0 -0
  211. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/mermaid/mermaid.min.js +0 -0
  212. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/nestor/bundle.umd.js +0 -0
  213. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/_static_extra/rapidoc/rapidoc-min.js +0 -0
  214. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/document_type.py +0 -0
  215. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/document_config_form_object.py +0 -0
  216. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/form_object.py +0 -0
  217. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/grammar_element_form_object.py +0 -0
  218. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/grammar_form_object.py +0 -0
  219. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/included_document_form_object.py +0 -0
  220. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/rows/row_with_grammar_element_form_object.py +0 -0
  221. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/form_objects/section_form_object.py +0 -0
  222. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/__init__.py +0 -0
  223. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/document.py +0 -0
  224. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/document_deep_trace.py +0 -0
  225. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/document_pdf.py +0 -0
  226. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/document_table.py +0 -0
  227. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/document_trace.py +0 -0
  228. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/document_tree.py +0 -0
  229. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/project_statistics.py +0 -0
  230. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/source_file_coverage.py +0 -0
  231. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/source_file_view_generator.py +0 -0
  232. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/traceability_matrix.py +0 -0
  233. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/diff_screen_results_view_object.py +0 -0
  234. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/diff_screen_view_object.py +0 -0
  235. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/document_screen_view_object.py +0 -0
  236. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/nestor_view_object.py +0 -0
  237. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/project_statistics_view_object.py +0 -0
  238. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/project_tree_stats.py +0 -0
  239. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/project_tree_view_object.py +0 -0
  240. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/search_screen_view_object.py +0 -0
  241. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/source_file_view_object.py +0 -0
  242. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/generators/view_objects/traceability_matrix_view_object.py +0 -0
  243. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/html_generator.py +0 -0
  244. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/renderers/__init__.py +0 -0
  245. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/renderers/html_fragment_writer.py +0 -0
  246. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/renderers/link_renderer.py +0 -0
  247. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/renderers/text_to_html_writer.py +0 -0
  248. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg__separator.jinja.html +0 -0
  249. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_add.jinja.html +0 -0
  250. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_add_above.jinja +0 -0
  251. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_add_below.jinja +0 -0
  252. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_add_child.jinja +0 -0
  253. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_anchor.jinja +0 -0
  254. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_back.jinja.html +0 -0
  255. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_book.jinja.html +0 -0
  256. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_close.jinja +0 -0
  257. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_code.jinja.html +0 -0
  258. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_copy.jinja +0 -0
  259. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_delete.jinja.html +0 -0
  260. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_diff.jinja +0 -0
  261. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_document.jinja.html +0 -0
  262. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_done.jinja +0 -0
  263. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html +0 -0
  264. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_expand.jinja.html +0 -0
  265. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_file.jinja +0 -0
  266. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_folder.jinja +0 -0
  267. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_folder_collapse.jinja +0 -0
  268. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_folder_sm.jinja +0 -0
  269. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_fragment.jinja +0 -0
  270. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_fragment_draft.jinja +0 -0
  271. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html +0 -0
  272. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_go_to_doc.jinja +0 -0
  273. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_index.jinja.html +0 -0
  274. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_list.jinja.html +0 -0
  275. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_maximize.jinja +0 -0
  276. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_minimize.jinja +0 -0
  277. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_minusminus.jinja.html +0 -0
  278. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_move_down.jinja.html +0 -0
  279. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_move_up.jinja.html +0 -0
  280. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_plusplus.jinja.html +0 -0
  281. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_project.jinja.html +0 -0
  282. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_requirement.jinja.html +0 -0
  283. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_reset.jinja +0 -0
  284. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_search.jinja +0 -0
  285. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_source.jinja.html +0 -0
  286. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_stat.jinja +0 -0
  287. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_sync.jinja +0 -0
  288. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_toc.jinja.html +0 -0
  289. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_res/svg_ico16_tree.jinja +0 -0
  290. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_shared/nav.jinja.html +0 -0
  291. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_shared/requirement_tree_left.jinja.html +0 -0
  292. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_shared/requirement_tree_right.jinja.html +0 -0
  293. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/_shared/tags.jinja.html +0 -0
  294. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/_shared/stream_refresh_document.jinja.html +0 -0
  295. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/_shared/stream_updated_toc.jinja.html +0 -0
  296. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/add_requirement_comment/stream_add_requirement_comment.jinja.html +0 -0
  297. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/add_requirement_relation/stream_add_requirement_relation.jinja.html +0 -0
  298. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/create_requirement/stream_cancel_new_requirement.jinja.html +0 -0
  299. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/create_requirement/stream_created_requirement.jinja.html +0 -0
  300. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/create_requirement/stream_new_requirement.jinja.html +0 -0
  301. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/create_section/stream_cancel_new_section.jinja.html +0 -0
  302. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/create_section/stream_created_section.jinja.html +0 -0
  303. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/create_section/stream_new_section.jinja.html +0 -0
  304. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_confirm_delete_requirement.jinja +0 -0
  305. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_delete_requirement.jinja.html +0 -0
  306. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/delete_section/stream_confirm_delete_section.jinja +0 -0
  307. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/delete_section/stream_delete_section.jinja.html +0 -0
  308. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_cancel_edit_document_config.jinja.html +0 -0
  309. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_edit_document_config.jinja.html +0 -0
  310. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_save_document_config.jinja.html +0 -0
  311. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_edit_requirement.jinja.html +0 -0
  312. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/edit_section/stream_edit_section.jinja.html +0 -0
  313. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/document/edit_section/stream_updated_section.jinja.html +0 -0
  314. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/node/show_full_node/stream_show_full_requirement.jinja +0 -0
  315. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/node/show_full_node/stream_show_full_section.jinja +0 -0
  316. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_form_import_reqif_document.jinja.html +0 -0
  317. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_refresh_with_imported_reqif_document.jinja.html +0 -0
  318. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/project_index/stream_create_document.jinja.html +0 -0
  319. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/actions/project_index/stream_new_document.jinja.html +0 -0
  320. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/base.jinja.html +0 -0
  321. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/anchor/index.jinja +0 -0
  322. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/badge/index.jinja +0 -0
  323. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/button/cancel.jinja +0 -0
  324. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/button/confirm.jinja +0 -0
  325. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/button/delete.jinja +0 -0
  326. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/button/diff.jinja +0 -0
  327. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/button/search.jinja +0 -0
  328. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/button/submit.jinja +0 -0
  329. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/confirm/_usage_example.jinja +0 -0
  330. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/confirm/index.jinja +0 -0
  331. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/field/index.jinja +0 -0
  332. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/field/contenteditable/index.jinja +0 -0
  333. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/field/file/index.jinja +0 -0
  334. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/field/text/index.jinja +0 -0
  335. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/field_action_button/index.jinja +0 -0
  336. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/index.jinja +0 -0
  337. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/row/index.jinja +0 -0
  338. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/example.jinja.html +0 -0
  339. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/frame.jinja +0 -0
  340. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/stream.jinja +0 -0
  341. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/row/row_with_comment.jinja +0 -0
  342. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/row/row_with_relation.jinja +0 -0
  343. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/row/row_with_text_field.jinja +0 -0
  344. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/form/search.jinja +0 -0
  345. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/grammar_form/index.jinja +0 -0
  346. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/grammar_form/row_with_grammar_element/index.jinja +0 -0
  347. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/grammar_form/row_with_new_grammar_element/index.jinja +0 -0
  348. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/grammar_form_element/index.jinja +0 -0
  349. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/grammar_form_element/row_with_custom_field/index.jinja +0 -0
  350. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/grammar_form_element/row_with_relation/index.jinja +0 -0
  351. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/grammar_form_element/row_with_reserved_field/index.jinja +0 -0
  352. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/header/_usage_example.jinja +0 -0
  353. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/header/header_pagetype.jinja +0 -0
  354. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/header/index.jinja +0 -0
  355. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/included_document_form/index.jinja +0 -0
  356. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/modal/_usage_example.jinja +0 -0
  357. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/modal/form.jinja +0 -0
  358. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/modal/index.jinja +0 -0
  359. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node/card.jinja +0 -0
  360. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node/index.jinja +0 -0
  361. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node/node_controls/card.jinja +0 -0
  362. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node/node_controls/index.jinja +0 -0
  363. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node/root.jinja +0 -0
  364. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/README.txt +0 -0
  365. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/comments/index.jinja +0 -0
  366. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/document_meta/index.jinja +0 -0
  367. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/document_title/index.jinja +0 -0
  368. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/links/index.jinja +0 -0
  369. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/meta/index.jinja +0 -0
  370. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/multiline/index.jinja +0 -0
  371. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/rationale/index.jinja +0 -0
  372. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/section_h/index.jinja +0 -0
  373. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/section_h/pdf.jinja +0 -0
  374. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/section_title/index.jinja +0 -0
  375. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/statement/index.jinja +0 -0
  376. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/text/index.jinja +0 -0
  377. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/title/index.jinja +0 -0
  378. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/title/pdf.jinja +0 -0
  379. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/uid/index.jinja +0 -0
  380. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/node_field/uid_standalone/index.jinja +0 -0
  381. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/requirement/card.jinja +0 -0
  382. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/requirement/card_extends_card.jinja +0 -0
  383. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/requirement/index.jinja +0 -0
  384. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/requirement/index_extends_node.jinja +0 -0
  385. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/requirement/pdf.jinja +0 -0
  386. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/requirement/tiny.jinja +0 -0
  387. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/requirement/tiny_extends_card.jinja +0 -0
  388. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/resizable_bar/index.jinja +0 -0
  389. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/section/card.jinja +0 -0
  390. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/section/card_extends_card.jinja +0 -0
  391. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/section/index.jinja +0 -0
  392. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/section/index_extends_node.jinja +0 -0
  393. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/section/pdf.jinja +0 -0
  394. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/section/tiny.jinja +0 -0
  395. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/section/tiny_extends_card.jinja +0 -0
  396. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/table_key_value/index.jinja +0 -0
  397. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/text_node/card.jinja +0 -0
  398. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/text_node/card_extends_card.jinja +0 -0
  399. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/text_node/index.jinja +0 -0
  400. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/text_node/index_extends_node.jinja +0 -0
  401. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/text_node/pdf.jinja +0 -0
  402. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/text_node/tiny.jinja +0 -0
  403. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/components/text_node/tiny_extends_card.jinja +0 -0
  404. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/rst/anchor.jinja +0 -0
  405. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/frame_header_document_title.jinja +0 -0
  406. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/frame_show_full_requirement.jinja +0 -0
  407. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/frame_show_full_section.jinja +0 -0
  408. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/frame_toc.jinja +0 -0
  409. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/project_tree.jinja +0 -0
  410. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/project_tree_child_documents.jinja +0 -0
  411. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_project_tree.jinja +0 -0
  412. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_toc.jinja +0 -0
  413. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/toc.jinja +0 -0
  414. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/_shared/viewtype_menu.jinja +0 -0
  415. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/actions.jinja +0 -0
  416. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/frame_document_config.jinja.html +0 -0
  417. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/frame_document_config_edit.jinja.html +0 -0
  418. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/frame_document_content.jinja.html +0 -0
  419. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/frame_requirement_form.jinja +0 -0
  420. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/frame_section_form.jinja +0 -0
  421. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/index.jinja +0 -0
  422. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/document/main.jinja +0 -0
  423. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/pdf/index.jinja +0 -0
  424. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/pdf/main.jinja +0 -0
  425. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/pdf/template/footer.jinja +0 -0
  426. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/pdf/template/frontpage.jinja +0 -0
  427. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/pdf/template/header.jinja +0 -0
  428. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/pdf/toc.jinja +0 -0
  429. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/table/index.jinja +0 -0
  430. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/table/main.jinja +0 -0
  431. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/traceability/index.jinja +0 -0
  432. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/traceability/main.jinja +0 -0
  433. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/traceability_deep/index.jinja +0 -0
  434. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/document/traceability_deep/main.jinja +0 -0
  435. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/changelog_content.jinja +0 -0
  436. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/diff_content.jinja +0 -0
  437. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/diff_controls.jinja +0 -0
  438. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/fields/document_fields.jinja +0 -0
  439. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/fields/requirement_fields.jinja +0 -0
  440. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/fields/section_fields.jinja +0 -0
  441. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/form.jinja +0 -0
  442. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/frame_changelog_result.jinja +0 -0
  443. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/frame_diff_result.jinja +0 -0
  444. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/index.jinja +0 -0
  445. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/legend.jinja +0 -0
  446. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/main.jinja +0 -0
  447. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/nav_tabs.jinja +0 -0
  448. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/node/requirement.jinja +0 -0
  449. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/node/section.jinja +0 -0
  450. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/skeleton.jinja +0 -0
  451. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/git/sync/button.jinja +0 -0
  452. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/nestor/index.jinja +0 -0
  453. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/actions.jinja +0 -0
  454. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/frame_form_import_reqif.jinja.html +0 -0
  455. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/frame_form_new_document.jinja.html +0 -0
  456. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/frame_project_tree.jinja.html +0 -0
  457. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/index.jinja +0 -0
  458. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/main.jinja +0 -0
  459. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/project_tree.jinja +0 -0
  460. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/project_tree_file.jinja +0 -0
  461. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_index/project_tree_folder.jinja +0 -0
  462. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_statistics/index.jinja +0 -0
  463. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/project_statistics/main.jinja +0 -0
  464. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/search/index.jinja +0 -0
  465. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/search/legend.jinja +0 -0
  466. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/search/main.jinja +0 -0
  467. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_coverage/file.jinja +0 -0
  468. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_coverage/folder.jinja +0 -0
  469. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_coverage/index.jinja +0 -0
  470. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_coverage/main.jinja +0 -0
  471. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_view/aside.jinja +0 -0
  472. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_view/header__source_file_name.jinja +0 -0
  473. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_view/index.jinja +0 -0
  474. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/source_file_view/main.jinja +0 -0
  475. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/traceability_matrix/file.jinja +0 -0
  476. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/traceability_matrix/index.jinja +0 -0
  477. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/traceability_matrix/main.jinja +0 -0
  478. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/traceability_matrix/project_tree_flat_anchor_list.jinja +0 -0
  479. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/traceability_matrix/requirement.jinja.html +0 -0
  480. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/screens/traceability_matrix/resizable_bar_with_project_tree.jinja +0 -0
  481. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/website/document/index.jinja +0 -0
  482. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/templates/websocket.jinja.html +0 -0
  483. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/tools/__init__.py +0 -0
  484. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html/tools/html_embedded.py +0 -0
  485. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/html2pdf/html2pdf_generator.py +0 -0
  486. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/json/json_generator.py +0 -0
  487. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/__init__.py +0 -0
  488. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/directives/raw_html_role.py +0 -0
  489. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/directives/wildcard_enhanced_image.py +0 -0
  490. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/document_rst_generator.py +0 -0
  491. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/rst_templates.py +0 -0
  492. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/templates/requirement.jinja.rst +0 -0
  493. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/rst/writer.py +0 -0
  494. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/spdx/spdx_generator.py +0 -0
  495. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/spdx/spdx_sdoc_container.py +0 -0
  496. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/export/spdx/spdx_to_sdoc_converter.py +0 -0
  497. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/git/change.py +0 -0
  498. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/git/change_generator.py +0 -0
  499. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/git/project_diff_analyzer.py +0 -0
  500. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/__init__.py +0 -0
  501. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/auto_described.py +0 -0
  502. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/cast.py +0 -0
  503. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/diff.py +0 -0
  504. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/exception.py +0 -0
  505. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/file_modification_time.py +0 -0
  506. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/file_system.py +0 -0
  507. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/form_data.py +0 -0
  508. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/git_client.py +0 -0
  509. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/math.py +0 -0
  510. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/md5.py +0 -0
  511. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/mid.py +0 -0
  512. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/ordered_set.py +0 -0
  513. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/parallelizer.py +0 -0
  514. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/path_filter.py +0 -0
  515. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/paths.py +0 -0
  516. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/pickle.py +0 -0
  517. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/rst.py +0 -0
  518. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/sha256.py +0 -0
  519. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/shard.py +0 -0
  520. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/sorting.py +0 -0
  521. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/string.py +0 -0
  522. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/textx.py +0 -0
  523. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/helpers/timing.py +0 -0
  524. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/__init__.py +0 -0
  525. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/app.py +0 -0
  526. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/config.py +0 -0
  527. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/error_object.py +0 -0
  528. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/helpers/turbo.py +0 -0
  529. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/main.py +0 -0
  530. {strictdoc-0.1.0 → strictdoc-0.2.0}/strictdoc/server/routers/main_router.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: strictdoc
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: StrictDoc is open-source software for technical documentation and requirements management.
5
5
  Project-URL: Changelog, https://github.com/strictdoc-project/strictdoc/blob/main/CHANGELOG.md
6
6
  Project-URL: Homepage, https://strictdoc.readthedocs.io/en/stable/
@@ -1,6 +1,6 @@
1
1
  from strictdoc.core.environment import SDocRuntimeEnvironment
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.2.0"
4
4
 
5
5
 
6
6
  environment = SDocRuntimeEnvironment(__file__)
@@ -12,6 +12,7 @@ from strictdoc.backend.sdoc.models.document_grammar import (
12
12
  DocumentGrammarWrapper,
13
13
  )
14
14
  from strictdoc.backend.sdoc.pickle_cache import PickleCache
15
+ from strictdoc.core.project_config import ProjectConfig
15
16
  from strictdoc.helpers.cast import assert_optional_cast
16
17
  from strictdoc.helpers.textx import (
17
18
  drop_textx_meta,
@@ -26,9 +27,6 @@ class SDocGrammarReader:
26
27
  use_regexp_group=True,
27
28
  )
28
29
 
29
- def __init__(self, path_to_output_root: str) -> None:
30
- self.path_to_output_root: str = path_to_output_root
31
-
32
30
  @staticmethod
33
31
  def read(
34
32
  input_string: str, file_path: Optional[str] = None
@@ -60,9 +58,11 @@ class SDocGrammarReader:
60
58
 
61
59
  return grammar
62
60
 
63
- def read_from_file(self, file_path: str) -> DocumentGrammar:
61
+ def read_from_file(
62
+ self, file_path: str, project_config: ProjectConfig
63
+ ) -> DocumentGrammar:
64
64
  unpickled_content: Optional[DocumentGrammar] = assert_optional_cast(
65
- PickleCache.read_from_cache(file_path, self.path_to_output_root),
65
+ PickleCache.read_from_cache(file_path, project_config, "grammar"),
66
66
  DocumentGrammar,
67
67
  )
68
68
  if unpickled_content is not None:
@@ -76,7 +76,7 @@ class SDocGrammarReader:
76
76
  grammar_content, file_path=file_path
77
77
  )
78
78
  PickleCache.save_to_cache(
79
- grammar, file_path, self.path_to_output_root
79
+ grammar, file_path, project_config, "grammar"
80
80
  )
81
81
 
82
82
  return grammar
@@ -1,18 +1,20 @@
1
1
  import hashlib
2
2
  import os
3
- import tempfile
4
3
  from pathlib import Path
5
4
  from typing import Any
6
5
 
6
+ from strictdoc.core.project_config import ProjectConfig
7
7
  from strictdoc.helpers.md5 import get_file_md5
8
8
  from strictdoc.helpers.pickle import pickle_dump, pickle_load
9
9
 
10
10
 
11
11
  class PickleCache:
12
12
  @staticmethod
13
- def read_from_cache(file_path: str, path_to_root: str) -> Any:
13
+ def read_from_cache(
14
+ file_path: str, project_config: ProjectConfig, content_kind: str
15
+ ) -> Any:
14
16
  path_to_cached_file: str = PickleCache.get_cached_file_path(
15
- file_path, path_to_root
17
+ file_path, project_config, content_kind
16
18
  )
17
19
  if os.path.isfile(path_to_cached_file):
18
20
  with open(path_to_cached_file, "rb") as cache_file:
@@ -30,9 +32,14 @@ class PickleCache:
30
32
  return None
31
33
 
32
34
  @staticmethod
33
- def save_to_cache(content: Any, file_path: str, path_to_root: str) -> None:
35
+ def save_to_cache(
36
+ content: Any,
37
+ file_path: str,
38
+ project_config: ProjectConfig,
39
+ content_kind: str,
40
+ ) -> None:
34
41
  path_to_cached_file: str = PickleCache.get_cached_file_path(
35
- file_path, path_to_root
42
+ file_path, project_config, content_kind
36
43
  )
37
44
  path_to_cached_file_dir: str = os.path.dirname(path_to_cached_file)
38
45
  Path(path_to_cached_file_dir).mkdir(parents=True, exist_ok=True)
@@ -41,8 +48,10 @@ class PickleCache:
41
48
  cache_file.write(pickled_content)
42
49
 
43
50
  @staticmethod
44
- def get_cached_file_path(file_path: str, path_to_output_root: str) -> str:
45
- path_to_tmp_dir = tempfile.gettempdir()
51
+ def get_cached_file_path(
52
+ file_path: str, project_config: ProjectConfig, content_kind: str
53
+ ) -> str:
54
+ path_to_tmp_dir = project_config.get_path_to_cache_dir()
46
55
 
47
56
  full_path_to_file = (
48
57
  file_path
@@ -57,7 +66,7 @@ class PickleCache:
57
66
  # contains a full path to the output root to prevent collisions
58
67
  # between StrictDoc invocations running against the same set of SDoc
59
68
  # files in parallel.
60
- unique_identifier = path_to_output_root + full_path_to_file
69
+ unique_identifier = project_config.output_dir + full_path_to_file
61
70
  unique_identifier_md5 = hashlib.md5(
62
71
  unique_identifier.encode("utf-8")
63
72
  ).hexdigest()
@@ -66,7 +75,7 @@ class PickleCache:
66
75
 
67
76
  path_to_cached_file = os.path.join(
68
77
  path_to_tmp_dir,
69
- "strictdoc_cache",
78
+ content_kind,
70
79
  file_name,
71
80
  )
72
81
 
@@ -11,6 +11,7 @@ from strictdoc.backend.sdoc.models.constants import DOCUMENT_MODELS
11
11
  from strictdoc.backend.sdoc.models.document import SDocDocument
12
12
  from strictdoc.backend.sdoc.pickle_cache import PickleCache
13
13
  from strictdoc.backend.sdoc.processor import ParseContext, SDocParsingProcessor
14
+ from strictdoc.core.project_config import ProjectConfig
14
15
  from strictdoc.helpers.cast import assert_cast
15
16
  from strictdoc.helpers.exception import StrictDocException
16
17
  from strictdoc.helpers.textx import drop_textx_meta
@@ -23,9 +24,6 @@ class SDReader:
23
24
  use_regexp_group=True,
24
25
  )
25
26
 
26
- def __init__(self, path_to_output_root: str = "NOT_RELEVANT"):
27
- self.path_to_output_root = path_to_output_root
28
-
29
27
  @staticmethod
30
28
  def _read(input_string, file_path=None):
31
29
  parse_context = ParseContext(path_to_sdoc_file=file_path)
@@ -54,14 +52,16 @@ class SDReader:
54
52
  document, parse_context = SDReader._read(input_string, file_path)
55
53
  return document, parse_context
56
54
 
57
- def read_from_file(self, file_path: str) -> SDocDocument:
55
+ def read_from_file(
56
+ self, file_path: str, project_config: ProjectConfig
57
+ ) -> SDocDocument:
58
58
  """
59
59
  This function parses the provided .sdoc file and returns a Document
60
60
  object.
61
61
  """
62
62
 
63
63
  unpickled_content = PickleCache.read_from_cache(
64
- file_path, self.path_to_output_root
64
+ file_path, project_config, "sdoc"
65
65
  )
66
66
  if unpickled_content:
67
67
  return assert_cast(unpickled_content, SDocDocument)
@@ -82,7 +82,7 @@ class SDReader:
82
82
  # are not used anyway.
83
83
  drop_textx_meta(sdoc)
84
84
 
85
- PickleCache.save_to_cache(sdoc, file_path, self.path_to_output_root)
85
+ PickleCache.save_to_cache(sdoc, file_path, project_config, "sdoc")
86
86
 
87
87
  return sdoc
88
88
  except StrictDocException as exception:
@@ -0,0 +1,59 @@
1
+ from typing import Union
2
+
3
+ from strictdoc.backend.sdoc.pickle_cache import PickleCache
4
+ from strictdoc.backend.sdoc_source_code.models.source_file_info import (
5
+ SourceFileTraceabilityInfo,
6
+ )
7
+ from strictdoc.backend.sdoc_source_code.reader import (
8
+ SourceFileTraceabilityReader,
9
+ )
10
+ from strictdoc.backend.sdoc_source_code.reader_c import (
11
+ SourceFileTraceabilityReader_C,
12
+ )
13
+ from strictdoc.backend.sdoc_source_code.reader_python import (
14
+ SourceFileTraceabilityReader_Python,
15
+ )
16
+ from strictdoc.core.project_config import ProjectConfig
17
+
18
+
19
+ class SourceFileTraceabilityCachingReader:
20
+ @staticmethod
21
+ def read_from_file(
22
+ path_to_file: str, project_config: ProjectConfig
23
+ ) -> SourceFileTraceabilityInfo:
24
+ unpickled_content = PickleCache.read_from_cache(
25
+ path_to_file, project_config, "source_file"
26
+ )
27
+ if unpickled_content is not None:
28
+ assert isinstance(unpickled_content, SourceFileTraceabilityInfo), (
29
+ path_to_file,
30
+ unpickled_content,
31
+ )
32
+ return unpickled_content
33
+
34
+ reader = SourceFileTraceabilityCachingReader._get_reader(
35
+ path_to_file, project_config
36
+ )
37
+ traceability_info: SourceFileTraceabilityInfo = reader.read_from_file(
38
+ path_to_file
39
+ )
40
+ PickleCache.save_to_cache(
41
+ traceability_info, path_to_file, project_config, "source_file"
42
+ )
43
+
44
+ return traceability_info
45
+
46
+ @staticmethod
47
+ def _get_reader(
48
+ path_to_file: str, project_config: ProjectConfig
49
+ ) -> Union[
50
+ SourceFileTraceabilityReader,
51
+ SourceFileTraceabilityReader_Python,
52
+ SourceFileTraceabilityReader_C,
53
+ ]:
54
+ if project_config.is_activated_source_file_language_parsers():
55
+ if path_to_file.endswith(".py"):
56
+ return SourceFileTraceabilityReader_Python()
57
+ if path_to_file.endswith(".c"):
58
+ return SourceFileTraceabilityReader_C()
59
+ return SourceFileTraceabilityReader()
@@ -7,7 +7,7 @@ Part[noskipws]:
7
7
  // The EmptyLine is needed in addition to the SingleLineString because
8
8
  // otherwise textX's get_location() ignores the whitespaces.
9
9
  // TODO: Maybe there is a trick to disable that and only use SingleLineString.
10
- EmptyLine | RangeMarker | LineMarker | SingleLineString
10
+ EmptyLine | RangeMarker | LineMarker | FunctionRangeMarker | SingleLineString
11
11
  ;
12
12
 
13
13
  EmptyLine[noskipws]:
@@ -31,6 +31,11 @@ RangeMarker[noskipws]:
31
31
  )
32
32
  ;
33
33
 
34
+ FunctionRangeMarker[noskipws]:
35
+ /^.*?@relation/
36
+ "(" (reqs_objs += Req[', ']) ', scope=file)' '\n'?
37
+ ;
38
+
34
39
  LineMarker[noskipws]:
35
40
  // It is a hard-won result: it is important that the "@sdoc" is within the
36
41
  // regex. Putting it next to the regex as "@sdoc" does not work.
@@ -1,5 +1,5 @@
1
1
  import re
2
- from typing import List, Union
2
+ from typing import List, Optional, Union
3
3
 
4
4
  from strictdoc.backend.sdoc_source_code.models.function_range_marker import (
5
5
  FunctionRangeMarker,
@@ -23,6 +23,7 @@ class MarkerParser:
23
23
  line_end: int,
24
24
  comment_line_start: int,
25
25
  comment_column_start: int,
26
+ entity_name: Optional[str] = None,
26
27
  ) -> List[Union[FunctionRangeMarker, RangeMarker, LineMarker]]:
27
28
  markers: List[Union[FunctionRangeMarker, RangeMarker, LineMarker]] = []
28
29
  for input_line_idx_, input_line_ in enumerate(
@@ -63,6 +64,12 @@ class MarkerParser:
63
64
  function_marker.ng_range_line_end = line_end
64
65
  function_marker.ng_marker_line = current_line
65
66
  function_marker.ng_marker_column = first_requirement_column
67
+ if marker_type == "file":
68
+ function_marker.set_description("the whole file")
69
+ elif marker_type == "function":
70
+ function_marker.set_description(f"function {entity_name}")
71
+ elif marker_type == "class":
72
+ function_marker.set_description(f"class {entity_name}")
66
73
  markers.append(function_marker)
67
74
  elif marker_type in ("range_start", "range_end"):
68
75
  start_or_end = marker_type == "range_start"
@@ -1,10 +1,17 @@
1
1
  # mypy: disable-error-code="no-untyped-def,type-arg"
2
+ from enum import Enum
2
3
  from typing import List, Optional
3
4
 
4
5
  from strictdoc.backend.sdoc_source_code.models.requirement_marker import Req
5
6
  from strictdoc.helpers.auto_described import auto_described
6
7
 
7
8
 
9
+ class RangeMarkerType(Enum):
10
+ FUNCTION = "function"
11
+ CLASS = "class"
12
+ FILE = "file"
13
+
14
+
8
15
  @auto_described
9
16
  class FunctionRangeMarker:
10
17
  def __init__(self, parent, reqs_objs: List[Req]):
@@ -33,6 +40,8 @@ class FunctionRangeMarker:
33
40
 
34
41
  self.ng_is_nodoc = "nosdoc" in self.reqs
35
42
 
43
+ self._description: Optional[str] = None
44
+
36
45
  def is_range_marker(self) -> bool:
37
46
  return True
38
47
 
@@ -45,6 +54,13 @@ class FunctionRangeMarker:
45
54
  def is_end(self) -> bool:
46
55
  return False
47
56
 
57
+ def get_description(self) -> Optional[str]:
58
+ return self._description
59
+
60
+ def set_description(self, description: str) -> None:
61
+ assert isinstance(description, str)
62
+ self._description = description
63
+
48
64
 
49
65
  @auto_described
50
66
  class ForwardFunctionRangeMarker(FunctionRangeMarker):
@@ -58,6 +58,9 @@ class RangeMarker:
58
58
  def is_line_marker(self) -> bool:
59
59
  return False
60
60
 
61
+ def get_description(self) -> Optional[str]:
62
+ return "range"
63
+
61
64
 
62
65
  @auto_described
63
66
  class LineMarker:
@@ -88,6 +91,9 @@ class LineMarker:
88
91
  def is_line_marker(self) -> bool:
89
92
  return True
90
93
 
94
+ def get_description(self) -> Optional[str]:
95
+ return "line"
96
+
91
97
 
92
98
  @auto_described
93
99
  class ForwardRangeMarker:
@@ -116,3 +122,6 @@ class ForwardRangeMarker:
116
122
 
117
123
  def is_line_marker(self) -> bool:
118
124
  return False
125
+
126
+ def get_description(self) -> Optional[str]:
127
+ return "range"
@@ -8,6 +8,9 @@ from textx import get_location, metamodel_from_str
8
8
 
9
9
  from strictdoc.backend.sdoc.error_handling import StrictDocSemanticError
10
10
  from strictdoc.backend.sdoc_source_code.grammar import SOURCE_FILE_GRAMMAR
11
+ from strictdoc.backend.sdoc_source_code.models.function_range_marker import (
12
+ FunctionRangeMarker,
13
+ )
11
14
  from strictdoc.backend.sdoc_source_code.models.range_marker import (
12
15
  LineMarker,
13
16
  RangeMarker,
@@ -206,22 +209,49 @@ def line_marker_processor(line_marker: LineMarker, parse_context: ParseContext):
206
209
  markers.append(line_marker)
207
210
 
208
211
 
212
+ def function_range_marker_processor(
213
+ function_range_marker: FunctionRangeMarker, parse_context: ParseContext
214
+ ):
215
+ location = get_location(function_range_marker)
216
+ line = location["line"]
217
+ column = location["col"]
218
+
219
+ if (
220
+ len(parse_context.marker_stack) > 0
221
+ and parse_context.marker_stack[-1].ng_is_nodoc
222
+ ):
223
+ # This marker is within a "nosdoc" block, so we ignore it.
224
+ return
225
+
226
+ parse_context.markers.append(function_range_marker)
227
+ function_range_marker.ng_source_line_begin = 1
228
+ function_range_marker.ng_range_line_begin = 1
229
+ function_range_marker.ng_range_line_end = parse_context.lines_total
230
+ function_range_marker.ng_marker_line = line
231
+ function_range_marker.ng_marker_column = column
232
+
233
+ for req in function_range_marker.reqs:
234
+ markers = parse_context.map_reqs_to_markers.setdefault(req, [])
235
+ markers.append(function_range_marker)
236
+
237
+
209
238
  class SourceFileTraceabilityReader:
210
239
  SOURCE_FILE_MODELS = [
211
- Req,
240
+ FunctionRangeMarker,
212
241
  LineMarker,
242
+ Req,
213
243
  SourceFileTraceabilityInfo,
214
244
  RangeMarker,
215
245
  ]
216
246
 
217
- def __init__(self):
247
+ def __init__(self) -> None:
218
248
  self.meta_model = metamodel_from_str(
219
249
  SOURCE_FILE_GRAMMAR,
220
250
  classes=SourceFileTraceabilityReader.SOURCE_FILE_MODELS,
221
251
  use_regexp_group=True,
222
252
  )
223
253
 
224
- def read(self, input_string, file_path=None):
254
+ def read(self, input_string, file_path=None) -> SourceFileTraceabilityInfo:
225
255
  # TODO: This might be possible to handle directly in the textx grammar.
226
256
  # AttributeError: 'str' object has no attribute '_tx_parser'
227
257
  file_size = len(input_string)
@@ -241,8 +271,12 @@ class SourceFileTraceabilityReader:
241
271
  parse_line_marker_processor = partial(
242
272
  line_marker_processor, parse_context=parse_context
243
273
  )
274
+ parse_function_range_marker_processor = partial(
275
+ function_range_marker_processor, parse_context=parse_context
276
+ )
244
277
 
245
278
  obj_processors = {
279
+ "FunctionRangeMarker": parse_function_range_marker_processor,
246
280
  "LineMarker": parse_line_marker_processor,
247
281
  "RangeMarker": parse_range_marker_processor,
248
282
  "Req": parse_req_processor,
@@ -271,7 +305,7 @@ class SourceFileTraceabilityReader:
271
305
  drop_textx_meta(source_file_traceability_info)
272
306
  return source_file_traceability_info
273
307
 
274
- def read_from_file(self, file_path):
308
+ def read_from_file(self, file_path) -> SourceFileTraceabilityInfo:
275
309
  try:
276
310
  with open(file_path, encoding="utf-8") as file:
277
311
  sdoc_content = file.read()
@@ -1,10 +1,10 @@
1
1
  # mypy: disable-error-code="no-redef,no-untyped-call,no-untyped-def,type-arg,var-annotated"
2
2
  import sys
3
3
  import traceback
4
- from typing import List, Union
4
+ from typing import List, Optional, Union
5
5
 
6
6
  import tree_sitter_c
7
- from tree_sitter import Language, Parser
7
+ from tree_sitter import Language, Node, Parser
8
8
 
9
9
  from strictdoc.backend.sdoc.error_handling import StrictDocSemanticError
10
10
  from strictdoc.backend.sdoc_source_code.marker_parser import MarkerParser
@@ -31,7 +31,9 @@ from strictdoc.helpers.string import get_lines_count
31
31
 
32
32
 
33
33
  class SourceFileTraceabilityReader_C:
34
- def read(self, input_buffer: bytes, file_path=None):
34
+ def read(
35
+ self, input_buffer: bytes, file_path=None
36
+ ) -> SourceFileTraceabilityInfo:
35
37
  assert isinstance(input_buffer, bytes)
36
38
 
37
39
  file_size = len(input_buffer)
@@ -55,7 +57,36 @@ class SourceFileTraceabilityReader_C:
55
57
 
56
58
  nodes = traverse_tree(tree)
57
59
  for node_ in nodes:
58
- if node_.type == "function_definition":
60
+ if node_.type == "translation_unit":
61
+ if (
62
+ len(node_.children) > 0
63
+ and node_.children[0].type == "comment"
64
+ and (comment_node := node_.children[0])
65
+ ):
66
+ if comment_node.text is not None:
67
+ comment_text = comment_node.text.decode("utf-8")
68
+ markers = MarkerParser.parse(
69
+ comment_text,
70
+ node_.start_point[0] + 1,
71
+ # It is important that +1 is not present here because
72
+ # currently StrictDoc does not display the last empty line (\n is 10).
73
+ node_.end_point[0]
74
+ if input_buffer[-1] == 10
75
+ else node_.end_point[0] + 1,
76
+ node_.start_point[0] + 1,
77
+ node_.start_point[1] + 1,
78
+ )
79
+ for marker_ in markers:
80
+ if isinstance(marker_, FunctionRangeMarker) and (
81
+ function_range_marker_ := marker_
82
+ ):
83
+ function_range_marker_processor(
84
+ function_range_marker_, parse_context
85
+ )
86
+ traceability_info.markers.append(
87
+ function_range_marker_
88
+ )
89
+ elif node_.type == "function_definition":
59
90
  function_name: str = ""
60
91
 
61
92
  for child_ in node_.children:
@@ -66,6 +97,7 @@ class SourceFileTraceabilityReader_C:
66
97
  function_name = child_.children[0].text.decode("utf8")
67
98
  assert function_name is not None, "Function name"
68
99
 
100
+ function_comment_node: Optional[Node] = None
69
101
  function_comment_text = None
70
102
  if (
71
103
  node_.prev_sibling is not None
@@ -87,6 +119,7 @@ class SourceFileTraceabilityReader_C:
87
119
  function_last_line,
88
120
  function_comment_node.start_point[0] + 1,
89
121
  function_comment_node.start_point[1] + 1,
122
+ entity_name=function_name,
90
123
  )
91
124
  for marker_ in markers:
92
125
  if isinstance(marker_, FunctionRangeMarker) and (
@@ -102,10 +135,13 @@ class SourceFileTraceabilityReader_C:
102
135
  function_range_marker_
103
136
  )
104
137
 
138
+ # The function range includes the top comment if it exists.
105
139
  new_function = Function(
106
140
  parent=None,
107
141
  name=function_name,
108
- line_begin=node_.range.start_point[0] + 1,
142
+ line_begin=function_comment_node.start_point[0] + 1
143
+ if function_comment_node is not None
144
+ else node_.range.start_point[0] + 1,
109
145
  line_end=node_.range.end_point[0] + 1,
110
146
  parts=[],
111
147
  )
@@ -1,7 +1,7 @@
1
1
  # mypy: disable-error-code="no-redef,no-untyped-call,no-untyped-def,type-arg,var-annotated"
2
2
  import sys
3
3
  import traceback
4
- from typing import List, Optional, Union
4
+ from typing import List, Optional, Sequence, Union
5
5
 
6
6
  import tree_sitter_python
7
7
  from tree_sitter import Language, Node, Parser
@@ -31,7 +31,9 @@ from strictdoc.helpers.string import get_lines_count
31
31
 
32
32
 
33
33
  class SourceFileTraceabilityReader_Python:
34
- def read(self, input_buffer: bytes, file_path=None):
34
+ def read(
35
+ self, input_buffer: bytes, file_path=None
36
+ ) -> SourceFileTraceabilityInfo:
35
37
  assert isinstance(input_buffer, bytes)
36
38
 
37
39
  file_size = len(input_buffer)
@@ -119,25 +121,9 @@ class SourceFileTraceabilityReader_Python:
119
121
 
120
122
  assert function_name is not None, "Function name"
121
123
 
122
- parent_class_name: Optional[str] = None
123
- if (function_parent_node := node_.parent) is not None and (
124
- class_node_or_node := function_parent_node.parent
125
- ) is not None:
126
- if (
127
- class_node_or_node.type == "class_definition"
128
- and len(class_node_or_node.children) > 1
129
- ):
130
- second_node_or_none = class_node_or_node.children[1]
131
- if (
132
- second_node_or_none.type == "identifier"
133
- and second_node_or_none.text is not None
134
- ):
135
- parent_class_name = second_node_or_none.text.decode(
136
- "utf8"
137
- )
138
-
139
- if parent_class_name is not None:
140
- function_name = parent_class_name + "." + function_name
124
+ parent_names = self.get_node_ns(node_)
125
+ if parent_names:
126
+ function_name = f"{'.'.join(parent_names)}.{function_name}"
141
127
 
142
128
  block_comment = None
143
129
  if (
@@ -168,6 +154,7 @@ class SourceFileTraceabilityReader_Python:
168
154
  node_.end_point[0] + 1,
169
155
  string_content.start_point[0] + 1,
170
156
  string_content.start_point[1] + 1,
157
+ function_name,
171
158
  )
172
159
  for marker_ in markers:
173
160
  if isinstance(
@@ -223,6 +210,7 @@ class SourceFileTraceabilityReader_Python:
223
210
  node_.end_point[0] + 1,
224
211
  node_.start_point[0] + 1,
225
212
  node_.start_point[1] + 1,
213
+ None,
226
214
  )
227
215
  for marker_ in markers:
228
216
  if isinstance(marker_, RangeMarker) and (
@@ -271,3 +259,31 @@ class SourceFileTraceabilityReader_Python:
271
259
  # TODO: when --debug is provided
272
260
  # traceback.print_exc() # noqa: ERA001
273
261
  sys.exit(1)
262
+
263
+ @staticmethod
264
+ def get_node_ns(node: Node) -> Sequence[str]:
265
+ """Walk up the tree and find parent classes"""
266
+ parent_scopes = []
267
+ cursor: Optional[Node] = node
268
+ while cursor:
269
+ if (block_node := cursor.parent) is not None and (
270
+ class_node_or_node := block_node.parent
271
+ ) is not None:
272
+ cursor = class_node_or_node
273
+ if (
274
+ class_node_or_node.type == "class_definition"
275
+ and len(class_node_or_node.children) > 1
276
+ ):
277
+ second_node_or_none = class_node_or_node.children[1]
278
+ if (
279
+ second_node_or_none.type == "identifier"
280
+ and second_node_or_none.text is not None
281
+ ):
282
+ parent_class_name = second_node_or_none.text.decode(
283
+ "utf8"
284
+ )
285
+ parent_scopes.append(parent_class_name)
286
+ else:
287
+ cursor = None
288
+ parent_scopes.reverse()
289
+ return parent_scopes
@@ -54,7 +54,7 @@ class DocumentFinder:
54
54
  @staticmethod
55
55
  def _process_worker_parse_document(
56
56
  document_triple: Tuple[Union[Folder, File], File, str],
57
- path_to_output_root: str,
57
+ project_config: ProjectConfig,
58
58
  ) -> Tuple[File, str, Union[SDocDocument, DocumentGrammar]]:
59
59
  _, doc_file, file_tree_mount_folder = document_triple
60
60
  doc_full_path = doc_file.get_full_path()
@@ -64,12 +64,16 @@ class DocumentFinder:
64
64
  ):
65
65
  document_or_grammar: Union[SDocDocument, DocumentGrammar]
66
66
  if doc_full_path.endswith(".sdoc"):
67
- sdoc_reader: SDReader = SDReader(path_to_output_root)
68
- document_or_grammar = sdoc_reader.read_from_file(doc_full_path)
67
+ sdoc_reader: SDReader = SDReader()
68
+ document_or_grammar = sdoc_reader.read_from_file(
69
+ doc_full_path, project_config
70
+ )
69
71
  assert isinstance(document_or_grammar, SDocDocument)
70
72
  elif doc_full_path.endswith(".sgra"):
71
- sgra_reader = SDocGrammarReader(path_to_output_root)
72
- document_or_grammar = sgra_reader.read_from_file(doc_full_path)
73
+ sgra_reader = SDocGrammarReader()
74
+ document_or_grammar = sgra_reader.read_from_file(
75
+ doc_full_path, project_config
76
+ )
73
77
  assert isinstance(document_or_grammar, DocumentGrammar)
74
78
  else:
75
79
  raise NotImplementedError
@@ -99,7 +103,7 @@ class DocumentFinder:
99
103
 
100
104
  process_document_binding = partial(
101
105
  DocumentFinder._process_worker_parse_document,
102
- path_to_output_root=project_config.output_dir,
106
+ project_config=project_config,
103
107
  )
104
108
 
105
109
  found_documents = parallelizer.run_parallel(