strictdoc 0.0.49a7__tar.gz → 0.0.50a1__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 (528) hide show
  1. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/PKG-INFO +2 -1
  2. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/pyproject.toml +2 -0
  3. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/__init__.py +1 -1
  4. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/free_text_reader.py +1 -1
  5. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/include_reader.py +1 -3
  6. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/document.py +5 -0
  7. strictdoc-0.0.50a1/strictdoc/backend/sdoc/models/fragment_from_file.py +41 -0
  8. strictdoc-0.0.50a1/strictdoc/backend/sdoc/pickle_cache.py +39 -0
  9. strictdoc-0.0.50a1/strictdoc/backend/sdoc/post_processing/sdoc_fragment_post_processor.py +39 -0
  10. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/processor.py +24 -24
  11. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/reader.py +30 -54
  12. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/writer.py +107 -3
  13. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/actions/passthrough_action.py +10 -1
  14. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/document_iterator.py +19 -17
  15. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/traceability_index.py +1 -1
  16. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/traceability_index_builder.py +9 -3
  17. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html2pdf/pdf_print_driver.py +5 -1
  18. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/routers/main_router.py +12 -74
  19. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/tasks.py +4 -0
  20. strictdoc-0.0.49a7/strictdoc/backend/sdoc/models/fragment_from_file.py +0 -35
  21. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/.gitignore +0 -0
  22. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/CHANGELOG.md +0 -0
  23. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/CONTRIBUTING.md +0 -0
  24. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/Dockerfile +0 -0
  25. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/LICENSE +0 -0
  26. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/NOTICE +0 -0
  27. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/README.md +0 -0
  28. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/docs_extra/DO178_requirements.sdoc +0 -0
  29. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/docs_extra/Zephyr_requirements.sdoc +0 -0
  30. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/drafts/requirements/strictdoc.toml +0 -0
  31. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/drafts/strictdoc_low_level_requirements.sdoc_.sdoc +0 -0
  32. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/mypy.ini +0 -0
  33. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/requirements.bootstrap.txt +0 -0
  34. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/requirements.check.txt +0 -0
  35. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/ruff.toml +0 -0
  36. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/__init__.py +0 -0
  37. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/excel/__init__.py +0 -0
  38. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/excel/excel_import.py +0 -0
  39. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/excel/export/__init__.py +0 -0
  40. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/excel/export/excel_generator.py +0 -0
  41. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/excel/import_/__init__.py +0 -0
  42. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/excel/import_/excel_to_sdoc_converter.py +0 -0
  43. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/__init__.py +0 -0
  44. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/p01_sdoc/__init__.py +0 -0
  45. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py +0 -0
  46. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py +0 -0
  47. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/p11_polarion/__init__.py +0 -0
  48. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/p11_polarion/reqif_to_sdoc_converter.py +0 -0
  49. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/reqif_export.py +0 -0
  50. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/reqif_import.py +0 -0
  51. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/reqif/sdoc_reqif_fields.py +0 -0
  52. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/__init__.py +0 -0
  53. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/document_reference.py +0 -0
  54. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/error_handling.py +0 -0
  55. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/errors/__init__.py +0 -0
  56. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/errors/document_tree_error.py +0 -0
  57. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/grammar/__init__.py +0 -0
  58. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/grammar/grammar.py +0 -0
  59. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/grammar/grammar_builder.py +0 -0
  60. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/grammar/type_system.py +0 -0
  61. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/__init__.py +0 -0
  62. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/anchor.py +0 -0
  63. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/constants.py +0 -0
  64. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/document_bibliography.py +0 -0
  65. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/document_config.py +0 -0
  66. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/document_grammar.py +0 -0
  67. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/document_view.py +0 -0
  68. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/fragment.py +0 -0
  69. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/free_text.py +0 -0
  70. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/inline_link.py +0 -0
  71. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/node.py +0 -0
  72. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/object.py +0 -0
  73. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/object_factory.py +0 -0
  74. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/reference.py +0 -0
  75. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/section.py +0 -0
  76. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/models/type_system.py +0 -0
  77. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/validations/__init__.py +0 -0
  78. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/validations/requirement.py +0 -0
  79. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc/validations/sdoc_validator.py +0 -0
  80. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc_source_code/__init__.py +0 -0
  81. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc_source_code/grammar.py +0 -0
  82. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc_source_code/models/__init__.py +0 -0
  83. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc_source_code/models/range_marker.py +0 -0
  84. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc_source_code/models/requirement_marker.py +0 -0
  85. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc_source_code/models/source_file_info.py +0 -0
  86. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/backend/sdoc_source_code/reader.py +0 -0
  87. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/cli/__init__.py +0 -0
  88. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/cli/argument_int_range.py +0 -0
  89. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/cli/cli_arg_parser.py +0 -0
  90. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/cli/command_parser_builder.py +0 -0
  91. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/cli/main.py +0 -0
  92. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/commands/__init__.py +0 -0
  93. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/commands/about_command.py +0 -0
  94. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/commands/diff_command.py +0 -0
  95. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/commands/dump_grammar_command.py +0 -0
  96. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/commands/manage_autouid_command.py +0 -0
  97. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/commands/version_command.py +0 -0
  98. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/__init__.py +0 -0
  99. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/actions/__init__.py +0 -0
  100. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/actions/export_action.py +0 -0
  101. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/actions/import_action.py +0 -0
  102. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/analyzers/document_stats.py +0 -0
  103. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/analyzers/document_uid_analyzer.py +0 -0
  104. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/document_finder.py +0 -0
  105. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/document_meta.py +0 -0
  106. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/document_tree.py +0 -0
  107. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/document_tree_iterator.py +0 -0
  108. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/environment.py +0 -0
  109. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/file_traceability_index.py +0 -0
  110. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/file_tree.py +0 -0
  111. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/finders/__init__.py +0 -0
  112. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/finders/source_files_finder.py +0 -0
  113. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/graph/abstract_bucket.py +0 -0
  114. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/graph/many_to_many_set.py +0 -0
  115. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/graph/one_to_one_dictionary.py +0 -0
  116. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/graph/validations.py +0 -0
  117. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/graph_database.py +0 -0
  118. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/level_counter.py +0 -0
  119. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/project_config.py +0 -0
  120. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/query_engine/grammar.py +0 -0
  121. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/query_engine/query_object.py +0 -0
  122. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/query_engine/query_reader.py +0 -0
  123. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/source_tree.py +0 -0
  124. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/constants.py +0 -0
  125. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/create_requirement.py +0 -0
  126. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/delete_section.py +0 -0
  127. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/section.py +0 -0
  128. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/update_document_config.py +0 -0
  129. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/update_free_text.py +0 -0
  130. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/update_grammar.py +0 -0
  131. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/update_grammar_element.py +0 -0
  132. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/update_requirement.py +0 -0
  133. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/transforms/validation_error.py +0 -0
  134. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/core/tree_cycle_detector.py +0 -0
  135. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/__init__.py +0 -0
  136. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/document_dot_generator.py +0 -0
  137. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/dot_templates.py +0 -0
  138. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile1/document.dot +0 -0
  139. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile1/folder.dot +0 -0
  140. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile1/legend.dot +0 -0
  141. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile1/requirement.dot +0 -0
  142. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile1/section.dot +0 -0
  143. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile1/top_level.dot +0 -0
  144. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile2/document.dot +0 -0
  145. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile2/folder.dot +0 -0
  146. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile2/requirement.dot +0 -0
  147. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile2/section.dot +0 -0
  148. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/dot/templates/profile2/top_level.dot +0 -0
  149. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/__init__.py +0 -0
  150. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/autogen.css +0 -0
  151. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/base.css +0 -0
  152. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/collapsible_list.js +0 -0
  153. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/content.css +0 -0
  154. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/anchor_controller.js +0 -0
  155. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/copy_to_clipboard_controller.js +0 -0
  156. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/deletable_field_controller.js +0 -0
  157. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/draggable_list_controller.js +0 -0
  158. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/dropdown_menu_controller.js +0 -0
  159. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/editable_field_controller.js +0 -0
  160. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/modal_controller.js +0 -0
  161. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/movable_field_controller.js +0 -0
  162. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/scroll_into_view_controller.js +0 -0
  163. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/controllers/tabs_controller.js +0 -0
  164. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/diff.css +0 -0
  165. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/diff.js +0 -0
  166. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/element.css +0 -0
  167. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/favicon.ico +0 -0
  168. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/fonts/NotoSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  169. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/fonts/NotoSans-VariableFont_wdth,wght.ttf +0 -0
  170. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/fonts/NotoSansMono-VariableFont_wdth,wght.ttf +0 -0
  171. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/form.css +0 -0
  172. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/html2pdf/bundle.js +0 -0
  173. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/layout.css +0 -0
  174. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/node.css +0 -0
  175. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/pan_with_space.js +0 -0
  176. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/requirement-tree.css +0 -0
  177. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/requirement.css +0 -0
  178. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/requirement__temporary.css +0 -0
  179. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/requirements-coverage.js +0 -0
  180. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/resizable_bar.js +0 -0
  181. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/source-code-coverage.js +0 -0
  182. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/source.css +0 -0
  183. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/stimulus.min.js +0 -0
  184. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/table_vew.css +0 -0
  185. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/toc_highlighting.js +0 -0
  186. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/traceability_matrix.css +0 -0
  187. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/tree.css +0 -0
  188. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/turbo.min.js +0 -0
  189. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static/viewtype_menu.js +0 -0
  190. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/LICENSE-MATHJAX +0 -0
  191. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/tex.js +0 -0
  192. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  193. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  194. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  195. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  196. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  197. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  198. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  199. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  200. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  201. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  202. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  203. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  204. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  205. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  206. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  207. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  208. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  209. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  210. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  211. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  212. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  213. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  214. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  215. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mathjax/tex-mml-chtml.js +0 -0
  216. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/mermaid/mermaid.min.js +0 -0
  217. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/_static_extra/rapidoc/rapidoc-min.js +0 -0
  218. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/document_type.py +0 -0
  219. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/form_objects/document_config_form_object.py +0 -0
  220. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/form_objects/document_grammar_form_object.py +0 -0
  221. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/form_objects/form_object.py +0 -0
  222. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/form_objects/grammar_form_object.py +0 -0
  223. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/form_objects/requirement_form_object.py +0 -0
  224. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/form_objects/rows/row_with_grammar_element_form_object.py +0 -0
  225. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/form_objects/section_form_object.py +0 -0
  226. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/__init__.py +0 -0
  227. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/document.py +0 -0
  228. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/document_deep_trace.py +0 -0
  229. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/document_pdf.py +0 -0
  230. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/document_table.py +0 -0
  231. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/document_trace.py +0 -0
  232. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/document_tree.py +0 -0
  233. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/project_statistics.py +0 -0
  234. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/source_file_coverage.py +0 -0
  235. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/source_file_view_generator.py +0 -0
  236. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/traceability_matrix.py +0 -0
  237. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/diff_screen_results_view_object.py +0 -0
  238. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/diff_screen_view_object.py +0 -0
  239. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/document_screen_view_object.py +0 -0
  240. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/project_statistics_view_object.py +0 -0
  241. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/project_tree_stats.py +0 -0
  242. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/project_tree_view_object.py +0 -0
  243. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/search_screen_view_object.py +0 -0
  244. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/generators/view_objects/source_file_view_object.py +0 -0
  245. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/html_generator.py +0 -0
  246. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/html_templates.py +0 -0
  247. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/renderers/__init__.py +0 -0
  248. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/renderers/html_fragment_writer.py +0 -0
  249. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/renderers/link_renderer.py +0 -0
  250. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/renderers/markup_renderer.py +0 -0
  251. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/renderers/text_to_html_writer.py +0 -0
  252. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg__separator.jinja.html +0 -0
  253. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_add.jinja.html +0 -0
  254. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_add_above.jinja +0 -0
  255. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_add_below.jinja +0 -0
  256. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_add_child.jinja +0 -0
  257. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_anchor.jinja +0 -0
  258. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_back.jinja.html +0 -0
  259. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_book.jinja.html +0 -0
  260. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_close.jinja +0 -0
  261. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_code.jinja.html +0 -0
  262. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_copy.jinja +0 -0
  263. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_delete.jinja.html +0 -0
  264. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_diff.jinja +0 -0
  265. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_document.jinja.html +0 -0
  266. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_done.jinja +0 -0
  267. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html +0 -0
  268. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_expand.jinja.html +0 -0
  269. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_folder.jinja +0 -0
  270. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_folder_sm.jinja +0 -0
  271. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html +0 -0
  272. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_go_to_doc.jinja +0 -0
  273. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_index.jinja.html +0 -0
  274. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_list.jinja.html +0 -0
  275. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_maximize.jinja +0 -0
  276. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_minimize.jinja +0 -0
  277. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_minusminus.jinja.html +0 -0
  278. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_move_down.jinja.html +0 -0
  279. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_move_up.jinja.html +0 -0
  280. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_plusplus.jinja.html +0 -0
  281. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_project.jinja.html +0 -0
  282. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_requirement.jinja.html +0 -0
  283. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_reset.jinja +0 -0
  284. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_search.jinja +0 -0
  285. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_source.jinja.html +0 -0
  286. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_stat.jinja +0 -0
  287. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_sync.jinja +0 -0
  288. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_toc.jinja.html +0 -0
  289. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_res/svg_ico16_tree.jinja +0 -0
  290. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_shared/nav.jinja.html +0 -0
  291. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_shared/requirement_block/files_tree.jinja.html +0 -0
  292. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_shared/requirement_tree_left.jinja.html +0 -0
  293. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_shared/requirement_tree_right.jinja.html +0 -0
  294. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/_shared/tags.jinja.html +0 -0
  295. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/_shared/stream_refresh_document.jinja.html +0 -0
  296. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/_shared/stream_updated_toc.jinja.html +0 -0
  297. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/add_requirement_comment/stream_add_requirement_comment.jinja.html +0 -0
  298. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/add_requirement_relation/stream_add_requirement_relation.jinja.html +0 -0
  299. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/create_requirement/stream_cancel_new_requirement.jinja.html +0 -0
  300. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/create_requirement/stream_created_requirement.jinja.html +0 -0
  301. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/create_requirement/stream_new_requirement.jinja.html +0 -0
  302. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/create_section/stream_cancel_new_section.jinja.html +0 -0
  303. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/create_section/stream_created_section.jinja.html +0 -0
  304. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/create_section/stream_new_section.jinja.html +0 -0
  305. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_confirm_delete_requirement.jinja +0 -0
  306. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_delete_requirement.jinja.html +0 -0
  307. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/delete_section/stream_confirm_delete_section.jinja +0 -0
  308. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/delete_section/stream_delete_section.jinja.html +0 -0
  309. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_cancel_edit_document_config.jinja.html +0 -0
  310. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_edit_document_config.jinja.html +0 -0
  311. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_save_document_config.jinja.html +0 -0
  312. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_edit_requirement.jinja.html +0 -0
  313. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_update_requirement.jinja.html +0 -0
  314. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/edit_section/stream_edit_section.jinja.html +0 -0
  315. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/edit_section/stream_updated_section.jinja.html +0 -0
  316. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/document/move_node/stream_update_document_content.jinja +0 -0
  317. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/node/show_full_node/stream_show_full_requirement.jinja +0 -0
  318. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/node/show_full_node/stream_show_full_section.jinja +0 -0
  319. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_form_import_reqif_document.jinja.html +0 -0
  320. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_refresh_with_imported_reqif_document.jinja.html +0 -0
  321. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/project_index/stream_create_document.jinja.html +0 -0
  322. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/actions/project_index/stream_new_document.jinja.html +0 -0
  323. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/base.jinja.html +0 -0
  324. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/abstract/index.jinja +0 -0
  325. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/abstract/pdf.jinja +0 -0
  326. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/anchor/index.jinja +0 -0
  327. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/badge/index.jinja +0 -0
  328. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/button/cancel.jinja +0 -0
  329. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/button/confirm.jinja +0 -0
  330. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/button/delete.jinja +0 -0
  331. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/button/diff.jinja +0 -0
  332. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/button/search.jinja +0 -0
  333. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/button/submit.jinja +0 -0
  334. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/confirm/_usage_example.jinja +0 -0
  335. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/confirm/index.jinja +0 -0
  336. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/document_title/index.jinja +0 -0
  337. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/field/index.jinja +0 -0
  338. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/field/contenteditable/index.jinja +0 -0
  339. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/field/file/index.jinja +0 -0
  340. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/field/text/index.jinja +0 -0
  341. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/field_action_button/index.jinja +0 -0
  342. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/index.jinja +0 -0
  343. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/row/index.jinja +0 -0
  344. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/example.jinja.html +0 -0
  345. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/frame.jinja +0 -0
  346. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/stream.jinja +0 -0
  347. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/row/row_with_comment.jinja +0 -0
  348. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/row/row_with_relation.jinja +0 -0
  349. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/row/row_with_text_field.jinja +0 -0
  350. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/form/search.jinja +0 -0
  351. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/grammar_form/index.jinja +0 -0
  352. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/grammar_form/row_with_grammar_element/index.jinja +0 -0
  353. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/grammar_form/row_with_new_grammar_element/index.jinja +0 -0
  354. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/grammar_form_element/index.jinja +0 -0
  355. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/grammar_form_element/row_with_custom_field/index.jinja +0 -0
  356. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/grammar_form_element/row_with_relation/index.jinja +0 -0
  357. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/grammar_form_element/row_with_reserved_field/index.jinja +0 -0
  358. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/header/_usage_example.jinja +0 -0
  359. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/header/header_pagetype.jinja +0 -0
  360. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/header/index.jinja +0 -0
  361. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/meta/index.jinja +0 -0
  362. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/modal/_usage_example.jinja +0 -0
  363. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/modal/form.jinja +0 -0
  364. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/modal/index.jinja +0 -0
  365. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/node/card.jinja +0 -0
  366. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/node/index.jinja +0 -0
  367. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/node/node_controls/card.jinja +0 -0
  368. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/node/node_controls/index.jinja +0 -0
  369. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/node/root.jinja +0 -0
  370. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/card.jinja +0 -0
  371. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/card_extends_card.jinja +0 -0
  372. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/comments/index.jinja +0 -0
  373. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/files/index.jinja +0 -0
  374. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/index.jinja +0 -0
  375. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/index_extends_node.jinja +0 -0
  376. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/links/index.jinja +0 -0
  377. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/meta/index.jinja +0 -0
  378. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/multiline/index.jinja +0 -0
  379. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/pdf.jinja +0 -0
  380. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/rationale/index.jinja +0 -0
  381. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/statement/index.jinja +0 -0
  382. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/tiny.jinja +0 -0
  383. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/tiny_extends_card.jinja +0 -0
  384. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/title/index.jinja +0 -0
  385. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/title/pdf.jinja +0 -0
  386. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/requirement/uid/index.jinja +0 -0
  387. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/resizable_bar/index.jinja +0 -0
  388. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/card.jinja +0 -0
  389. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/card_extends_card.jinja +0 -0
  390. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/h/index.jinja +0 -0
  391. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/h/pdf.jinja +0 -0
  392. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/index.jinja +0 -0
  393. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/index_extends_node.jinja +0 -0
  394. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/pdf.jinja +0 -0
  395. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/text/index.jinja +0 -0
  396. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/tiny.jinja +0 -0
  397. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/tiny_extends_card.jinja +0 -0
  398. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/title/index.jinja +0 -0
  399. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/section/uid/index.jinja +0 -0
  400. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/components/table_key_value/index.jinja +0 -0
  401. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/rst/anchor.jinja +0 -0
  402. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/frame_header_document_title.jinja +0 -0
  403. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/frame_show_full_requirement.jinja +0 -0
  404. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/frame_show_full_section.jinja +0 -0
  405. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/frame_toc.jinja +0 -0
  406. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/project_tree.jinja +0 -0
  407. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_project_tree.jinja +0 -0
  408. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_toc.jinja +0 -0
  409. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/toc.jinja +0 -0
  410. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/_shared/viewtype_menu.jinja +0 -0
  411. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/actions.jinja +0 -0
  412. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/frame_document_config.jinja.html +0 -0
  413. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/frame_document_config_edit.jinja.html +0 -0
  414. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/frame_document_content.jinja.html +0 -0
  415. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/frame_requirement_form.jinja +0 -0
  416. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/frame_section_form.jinja +0 -0
  417. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/index.jinja +0 -0
  418. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/document/main.jinja +0 -0
  419. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/pdf/index.jinja +0 -0
  420. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/pdf/main.jinja +0 -0
  421. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/pdf/template/footer.jinja +0 -0
  422. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/pdf/template/frontpage.jinja +0 -0
  423. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/pdf/template/header.jinja +0 -0
  424. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/pdf/toc.jinja +0 -0
  425. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/table/index.jinja +0 -0
  426. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/table/main.jinja +0 -0
  427. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/traceability/index.jinja +0 -0
  428. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/traceability/main.jinja +0 -0
  429. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/traceability_deep/index.jinja +0 -0
  430. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/document/traceability_deep/main.jinja +0 -0
  431. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/changelog_content.jinja +0 -0
  432. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/diff_content.jinja +0 -0
  433. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/diff_controls.jinja +0 -0
  434. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/fields/document_fields.jinja +0 -0
  435. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/fields/requirement_fields.jinja +0 -0
  436. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/fields/section_fields.jinja +0 -0
  437. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/form.jinja +0 -0
  438. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/frame_changelog_result.jinja +0 -0
  439. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/frame_diff_result.jinja +0 -0
  440. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/index.jinja +0 -0
  441. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/legend.jinja +0 -0
  442. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/main.jinja +0 -0
  443. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/nav_tabs.jinja +0 -0
  444. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/node/requirement.jinja +0 -0
  445. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/node/section.jinja +0 -0
  446. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/skeleton.jinja +0 -0
  447. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/git/sync/button.jinja +0 -0
  448. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_index/actions.jinja +0 -0
  449. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_index/frame_form_import_reqif.jinja.html +0 -0
  450. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_index/frame_form_new_document.jinja.html +0 -0
  451. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_index/frame_project_tree.jinja.html +0 -0
  452. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_index/index.jinja +0 -0
  453. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_index/main.jinja +0 -0
  454. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_statistics/index.jinja +0 -0
  455. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/project_statistics/main.jinja +0 -0
  456. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/search/index.jinja +0 -0
  457. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/search/legend.jinja +0 -0
  458. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/search/main.jinja +0 -0
  459. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/source_file_coverage/index.jinja +0 -0
  460. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/source_file_coverage/main.jinja +0 -0
  461. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/source_file_view/aside.jinja +0 -0
  462. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/source_file_view/header__source_file_name.jinja +0 -0
  463. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/source_file_view/index.jinja +0 -0
  464. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/source_file_view/main.jinja +0 -0
  465. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/source_file_view/requirement.jinja +0 -0
  466. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/traceability_matrix/file.jinja +0 -0
  467. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/traceability_matrix/index.jinja +0 -0
  468. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/traceability_matrix/main.jinja +0 -0
  469. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/traceability_matrix/project_tree_flat_anchor_list.jinja +0 -0
  470. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/traceability_matrix/requirement.jinja.html +0 -0
  471. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/screens/traceability_matrix/resizable_bar_with_project_tree.jinja +0 -0
  472. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/templates/websocket.jinja.html +0 -0
  473. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/tools/__init__.py +0 -0
  474. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html/tools/html_embedded.py +0 -0
  475. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html2pdf/html2pdf.py +0 -0
  476. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/html2pdf/html2pdf_generator.py +0 -0
  477. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/json/json_generator.py +0 -0
  478. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/__init__.py +0 -0
  479. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/directives/raw_html_role.py +0 -0
  480. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/directives/wildcard_enhanced_image.py +0 -0
  481. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/document_rst_generator.py +0 -0
  482. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/rst_templates.py +0 -0
  483. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/rst_to_html_fragment_writer.py +0 -0
  484. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/templates/requirement.jinja.rst +0 -0
  485. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/rst/writer.py +0 -0
  486. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/spdx/spdx_generator.py +0 -0
  487. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/spdx/spdx_sdoc_container.py +0 -0
  488. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/export/spdx/spdx_to_sdoc_converter.py +0 -0
  489. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/git/change.py +0 -0
  490. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/git/change_generator.py +0 -0
  491. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/git/git_client.py +0 -0
  492. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/git/project_diff_analyzer.py +0 -0
  493. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/__init__.py +0 -0
  494. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/auto_described.py +0 -0
  495. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/cast.py +0 -0
  496. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/diff.py +0 -0
  497. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/exception.py +0 -0
  498. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/file_modification_time.py +0 -0
  499. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/file_system.py +0 -0
  500. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/form_data.py +0 -0
  501. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/git_client.py +0 -0
  502. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/math.py +0 -0
  503. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/md5.py +0 -0
  504. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/mid.py +0 -0
  505. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/ordered_set.py +0 -0
  506. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/parallelizer.py +0 -0
  507. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/path_filter.py +0 -0
  508. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/pickle.py +0 -0
  509. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/rst.py +0 -0
  510. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/sha256.py +0 -0
  511. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/shard.py +0 -0
  512. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/sorting.py +0 -0
  513. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/string.py +0 -0
  514. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/textx.py +0 -0
  515. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/helpers/timing.py +0 -0
  516. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/__init__.py +0 -0
  517. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/app.py +0 -0
  518. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/config.py +0 -0
  519. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/error_object.py +0 -0
  520. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/helpers/turbo.py +0 -0
  521. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/main.py +0 -0
  522. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/routers/other_router.py +0 -0
  523. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc/server/server.py +0 -0
  524. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/strictdoc.toml +0 -0
  525. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/tasks_wine.py +0 -0
  526. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/tools/confluence_html_table_import.py +0 -0
  527. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/tools/link_health.py +0 -0
  528. {strictdoc-0.0.49a7 → strictdoc-0.0.50a1}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strictdoc
3
- Version: 0.0.49a7
3
+ Version: 0.0.50a1
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/
@@ -32,6 +32,7 @@ Requires-Dist: pygments==2.*,>=2.10.0
32
32
  Requires-Dist: python-datauri==0.*,>=0.2.9
33
33
  Requires-Dist: python-multipart
34
34
  Requires-Dist: reqif==0.*,>=0.0.39
35
+ Requires-Dist: requests
35
36
  Requires-Dist: selenium
36
37
  Requires-Dist: setuptools
37
38
  Requires-Dist: spdx-tools
@@ -97,6 +97,8 @@ dependencies = [
97
97
  # HTML2PDF dependencies
98
98
  "selenium",
99
99
  "webdriver-manager",
100
+ # requests is used by StrictDoc's custom HTML2PDF_HTTPClient.
101
+ "requests",
100
102
  ]
101
103
  # @sdoc[/SDOC-SRS-89]
102
104
 
@@ -1,6 +1,6 @@
1
1
  from strictdoc.core.environment import SDocRuntimeEnvironment
2
2
 
3
- __version__ = "0.0.49a7"
3
+ __version__ = "0.0.50a1"
4
4
 
5
5
 
6
6
  environment = SDocRuntimeEnvironment(__file__)
@@ -17,7 +17,7 @@ class SDFreeTextReader:
17
17
  use_regexp_group=True,
18
18
  )
19
19
 
20
- parse_context = ParseContext()
20
+ parse_context = ParseContext(file_path)
21
21
 
22
22
  document = meta_model.model_from_str(input_string, file_name=file_path)
23
23
  parse_context.document_reference.set_document(document)
@@ -20,9 +20,7 @@ class SDIncludeReader:
20
20
  )
21
21
  assert isinstance(parse_context, ParseContext)
22
22
 
23
- processor = SDocParsingProcessor(
24
- parse_context=parse_context, delegate=None
25
- )
23
+ processor = SDocParsingProcessor(parse_context=parse_context)
26
24
  meta_model.register_obj_processors(processor.get_default_processors())
27
25
 
28
26
  section = meta_model.model_from_str(input_string, file_name=file_path)
@@ -6,6 +6,7 @@ from strictdoc.backend.sdoc.models.document_bibliography import (
6
6
  from strictdoc.backend.sdoc.models.document_config import DocumentConfig
7
7
  from strictdoc.backend.sdoc.models.document_grammar import DocumentGrammar
8
8
  from strictdoc.backend.sdoc.models.document_view import DocumentView
9
+ from strictdoc.backend.sdoc.models.fragment_from_file import FragmentFromFile
9
10
  from strictdoc.backend.sdoc.models.free_text import FreeText
10
11
  from strictdoc.core.document_meta import DocumentMeta
11
12
  from strictdoc.helpers.auto_described import auto_described
@@ -77,6 +78,10 @@ class SDocDocument: # pylint: disable=too-many-instance-attributes
77
78
  task_list = list(self.section_contents)
78
79
  while len(task_list) > 0:
79
80
  section_or_requirement = task_list.pop(0)
81
+ if isinstance(section_or_requirement, FragmentFromFile):
82
+ if section_or_requirement.has_any_requirements():
83
+ return True
84
+ continue
80
85
  if section_or_requirement.is_requirement:
81
86
  return True
82
87
  assert section_or_requirement.is_section, section_or_requirement
@@ -0,0 +1,41 @@
1
+ from typing import List, Optional
2
+
3
+ from strictdoc.backend.sdoc.models.fragment import Fragment
4
+ from strictdoc.helpers.auto_described import auto_described
5
+
6
+
7
+ @auto_described
8
+ class FragmentFromFile:
9
+ def __init__(
10
+ self,
11
+ parent,
12
+ file,
13
+ ):
14
+ self.parent = parent
15
+ self.file = file
16
+
17
+ self.ng_level = None
18
+ self.ng_has_requirements = False
19
+ self.resolved_fragment: Optional[Fragment] = None
20
+
21
+ @property
22
+ def document(self):
23
+ raise NotImplementedError
24
+
25
+ def has_any_requirements(self) -> bool:
26
+ task_list = list(self.section_contents)
27
+ while len(task_list) > 0:
28
+ section_or_requirement = task_list.pop(0)
29
+ if isinstance(section_or_requirement, FragmentFromFile):
30
+ if section_or_requirement.has_any_requirements():
31
+ return True
32
+ if section_or_requirement.is_requirement:
33
+ return True
34
+ assert section_or_requirement.is_section, section_or_requirement
35
+ task_list.extend(section_or_requirement.section_contents)
36
+ return False
37
+
38
+ @property
39
+ def section_contents(self) -> List:
40
+ assert self.resolved_fragment is not None, self.resolved_fragment
41
+ return self.resolved_fragment.section_contents
@@ -0,0 +1,39 @@
1
+ import hashlib
2
+ import os
3
+ import tempfile
4
+
5
+ from strictdoc.helpers.md5 import get_file_md5
6
+
7
+
8
+ class PickleCache:
9
+ @staticmethod
10
+ def get_cached_file_path(file_path: str, path_to_output_root: str):
11
+ path_to_tmp_dir = tempfile.gettempdir()
12
+
13
+ full_path_to_file = (
14
+ file_path
15
+ if os.path.abspath(file_path)
16
+ else os.path.abspath(file_path)
17
+ )
18
+
19
+ file_md5 = get_file_md5(file_path)
20
+
21
+ # File name contains an MD5 hash of its full path to ensure the
22
+ # uniqueness of the cached items. Additionally, the unique file name
23
+ # contains a full path to the output root to prevent collisions
24
+ # between StrictDoc invocations running against the same set of SDoc
25
+ # files in parallel.
26
+ unique_identifier = path_to_output_root + full_path_to_file
27
+ unique_identifier_md5 = hashlib.md5(
28
+ unique_identifier.encode("utf-8")
29
+ ).hexdigest()
30
+ file_name = os.path.basename(full_path_to_file)
31
+ file_name += "_" + unique_identifier_md5 + "_" + file_md5
32
+
33
+ path_to_cached_file = os.path.join(
34
+ path_to_tmp_dir,
35
+ "strictdoc_cache",
36
+ file_name,
37
+ )
38
+
39
+ return path_to_cached_file
@@ -0,0 +1,39 @@
1
+ import os
2
+
3
+ from strictdoc.backend.sdoc.include_reader import SDIncludeReader
4
+ from strictdoc.backend.sdoc.models.document import SDocDocument
5
+ from strictdoc.backend.sdoc.models.fragment import Fragment
6
+ from strictdoc.backend.sdoc.models.fragment_from_file import FragmentFromFile
7
+ from strictdoc.backend.sdoc.processor import ParseContext
8
+
9
+
10
+ class SDocFragmentPostProcessor:
11
+ @staticmethod
12
+ def process_document(_: SDocDocument, parse_context: ParseContext):
13
+ fragment_from_file_: FragmentFromFile
14
+ for fragment_from_file_ in parse_context.fragments_from_files:
15
+ assert isinstance(
16
+ fragment_from_file_, FragmentFromFile
17
+ ), fragment_from_file_
18
+ fragment: Fragment = SDocFragmentPostProcessor.parse_fragment(
19
+ fragment_from_file_, parse_context
20
+ )
21
+ fragment_from_file_.resolved_fragment = fragment
22
+
23
+ @staticmethod
24
+ def parse_fragment(
25
+ fragment_from_file: FragmentFromFile, parse_context: ParseContext
26
+ ):
27
+ path_to_fragment = (
28
+ os.path.join(
29
+ parse_context.path_to_sdoc_dir, fragment_from_file.file
30
+ )
31
+ if parse_context.path_to_sdoc_dir is not None
32
+ else fragment_from_file.file
33
+ )
34
+ reader = SDIncludeReader()
35
+ fragment = reader.read_from_file(
36
+ file_path=path_to_fragment, context=parse_context
37
+ )
38
+ assert isinstance(fragment, Fragment)
39
+ return fragment
@@ -1,4 +1,5 @@
1
- from typing import Optional
1
+ import os.path
2
+ from typing import List, Optional
2
3
 
3
4
  from textx import get_location, get_model
4
5
 
@@ -20,7 +21,13 @@ from strictdoc.helpers.exception import StrictDocException
20
21
 
21
22
 
22
23
  class ParseContext:
23
- def __init__(self):
24
+ def __init__(self, path_to_sdoc_file: Optional[str]):
25
+ self.path_to_sdoc_file: Optional[str] = path_to_sdoc_file
26
+ self.path_to_sdoc_dir: Optional[str] = None
27
+ if path_to_sdoc_file is not None:
28
+ assert os.path.isfile(path_to_sdoc_file), path_to_sdoc_file
29
+ self.path_to_sdoc_dir = os.path.dirname(path_to_sdoc_file)
30
+
24
31
  self.document_reference: DocumentReference = DocumentReference()
25
32
  self.document_config: Optional[DocumentConfig] = None
26
33
  self.document_grammar: DocumentGrammar = DocumentGrammar.create_default(
@@ -31,14 +38,17 @@ class ParseContext:
31
38
  self.uses_old_refs_field: bool = False
32
39
  self.at_least_one_relations_field: bool = False
33
40
 
41
+ # FIXME: Plain list of all fragments found in the document.
42
+ self.fragments_from_files: List = []
43
+
34
44
 
35
45
  class SDocParsingProcessor:
36
- def __init__(self, parse_context: ParseContext, delegate):
46
+ def __init__(self, parse_context: ParseContext):
37
47
  self.parse_context: ParseContext = parse_context
38
- self.delegate = delegate
39
48
 
40
49
  def process_document(self, document: SDocDocument):
41
50
  document.grammar = self.parse_context.document_grammar
51
+ self.parse_context.document = document
42
52
 
43
53
  def get_default_processors(self):
44
54
  return {
@@ -47,7 +57,7 @@ class SDocParsingProcessor:
47
57
  "DocumentGrammar": self.process_document_grammar,
48
58
  "DocumentView": self.process_document_view,
49
59
  "SDocSection": self.process_section,
50
- "FragmentFromFile": self.process_include,
60
+ "FragmentFromFile": self.process_fragment_from_file,
51
61
  "CompositeRequirement": self.process_composite_requirement,
52
62
  "SDocNode": self.process_requirement,
53
63
  "FreeText": self.process_free_text,
@@ -98,25 +108,15 @@ class SDocParsingProcessor:
98
108
  self._resolve_parents(section)
99
109
  assert section.ng_level > 0
100
110
 
101
- def process_include(self, include: FragmentFromFile):
102
- self._resolve_parents(include)
103
- self.parse_context.current_include_parent = include.parent
104
-
105
- assert self.delegate is not None
106
- fragment = self.delegate(include, self.parse_context)
107
-
108
- parent_section_contents = include.parent.section_contents
109
- index = parent_section_contents.index(include)
110
- before = parent_section_contents[:index]
111
- index = (
112
- index + 1
113
- ) # black and flake8 fight to put a space before ':' otherwise
114
- after = parent_section_contents[index:]
115
-
116
- include.parent.section_contents = []
117
- include.parent.section_contents.extend(before)
118
- include.parent.section_contents.extend(fragment.section_contents)
119
- include.parent.section_contents.extend(after)
111
+ def process_fragment_from_file(self, fragment_from_file: FragmentFromFile):
112
+ assert isinstance(
113
+ fragment_from_file, FragmentFromFile
114
+ ), fragment_from_file
115
+
116
+ self._resolve_parents(fragment_from_file)
117
+ self.parse_context.current_include_parent = fragment_from_file.parent
118
+
119
+ self.parse_context.fragments_from_files.append(fragment_from_file)
120
120
 
121
121
  def process_composite_requirement(
122
122
  self, composite_requirement: CompositeRequirement
@@ -1,23 +1,23 @@
1
- import hashlib
2
1
  import os.path
3
2
  import sys
4
- import tempfile
5
3
  import traceback
6
4
  from pathlib import Path
5
+ from typing import Tuple
7
6
 
8
7
  from textx import metamodel_from_str
9
8
 
10
9
  from strictdoc.backend.sdoc.error_handling import StrictDocSemanticError
11
10
  from strictdoc.backend.sdoc.grammar.grammar_builder import SDocGrammarBuilder
12
- from strictdoc.backend.sdoc.include_reader import SDIncludeReader
13
11
  from strictdoc.backend.sdoc.models.constants import DOCUMENT_MODELS
14
12
  from strictdoc.backend.sdoc.models.document import SDocDocument
15
- from strictdoc.backend.sdoc.models.fragment import Fragment
13
+ from strictdoc.backend.sdoc.pickle_cache import PickleCache
14
+ from strictdoc.backend.sdoc.post_processing.sdoc_fragment_post_processor import (
15
+ SDocFragmentPostProcessor,
16
+ )
16
17
  from strictdoc.backend.sdoc.processor import ParseContext, SDocParsingProcessor
17
18
  from strictdoc.backend.sdoc.validations.sdoc_validator import SDocValidator
18
19
  from strictdoc.helpers.cast import assert_cast
19
20
  from strictdoc.helpers.exception import StrictDocException
20
- from strictdoc.helpers.md5 import get_file_md5
21
21
  from strictdoc.helpers.pickle import pickle_dump, pickle_load
22
22
  from strictdoc.helpers.textx import drop_textx_meta
23
23
 
@@ -34,10 +34,8 @@ class SDReader:
34
34
  use_regexp_group=True,
35
35
  )
36
36
 
37
- parse_context = ParseContext()
38
- processor = SDocParsingProcessor(
39
- parse_context=parse_context, delegate=SDReader.parse_include
40
- )
37
+ parse_context = ParseContext(path_to_sdoc_file=file_path)
38
+ processor = SDocParsingProcessor(parse_context=parse_context)
41
39
  meta_model.register_obj_processors(processor.get_default_processors())
42
40
 
43
41
  document: SDocDocument = meta_model.model_from_str(
@@ -69,17 +67,18 @@ class SDReader:
69
67
  return document, parse_context
70
68
 
71
69
  @staticmethod
72
- def read(input_string, file_path=None):
73
- document, _ = SDReader._read(input_string, file_path)
74
- SDocValidator.validate_document(document)
70
+ def read(input_string, file_path=None) -> SDocDocument:
71
+ document, _ = SDReader.read_with_parse_context(input_string, file_path)
72
+ return document
75
73
 
76
- # HACK:
77
- # ProcessPoolExecutor doesn't work because of non-picklable parts
78
- # of textx. The offending fields are stripped down because they
79
- # are not used anyway.
80
- drop_textx_meta(document)
74
+ @staticmethod
75
+ def read_with_parse_context(
76
+ input_string, file_path=None
77
+ ) -> Tuple[SDocDocument, ParseContext]:
78
+ document, parse_context = SDReader._read(input_string, file_path)
79
+ SDocValidator.validate_document(document)
81
80
 
82
- return document
81
+ return document, parse_context
83
82
 
84
83
  def read_from_file(self, file_path: str) -> SDocDocument:
85
84
  """
@@ -87,32 +86,8 @@ class SDReader:
87
86
  object.
88
87
  """
89
88
 
90
- path_to_tmp_dir = tempfile.gettempdir()
91
-
92
- full_path_to_file = (
93
- file_path
94
- if os.path.abspath(file_path)
95
- else os.path.abspath(file_path)
96
- )
97
-
98
- file_md5 = get_file_md5(file_path)
99
-
100
- # File name contains an MD5 hash of its full path to ensure the
101
- # uniqueness of the cached items. Additionally, the unique file name
102
- # contains a full path to the output root to prevent collisions
103
- # between StrictDoc invocations running against the same set of SDoc
104
- # files in parallel.
105
- unique_identifier = self.path_to_output_root + full_path_to_file
106
- unique_identifier_md5 = hashlib.md5(
107
- unique_identifier.encode("utf-8")
108
- ).hexdigest()
109
- file_name = os.path.basename(full_path_to_file)
110
- file_name += "_" + unique_identifier_md5 + "_" + file_md5
111
-
112
- path_to_cached_file = os.path.join(
113
- path_to_tmp_dir,
114
- "strictdoc_cache",
115
- file_name,
89
+ path_to_cached_file = PickleCache.get_cached_file_path(
90
+ file_path, self.path_to_output_root
116
91
  )
117
92
  if os.path.isfile(path_to_cached_file):
118
93
  with open(path_to_cached_file, "rb") as cache_file:
@@ -126,7 +101,17 @@ class SDReader:
126
101
  sdoc_content = file.read()
127
102
 
128
103
  try:
129
- sdoc = self.read(sdoc_content, file_path=file_path)
104
+ sdoc, parse_context = self.read_with_parse_context(
105
+ sdoc_content, file_path=file_path
106
+ )
107
+
108
+ SDocFragmentPostProcessor.process_document(sdoc, parse_context)
109
+
110
+ # HACK:
111
+ # ProcessPoolExecutor doesn't work because of non-picklable parts
112
+ # of textx. The offending fields are stripped down because they
113
+ # are not used anyway.
114
+ drop_textx_meta(sdoc)
130
115
 
131
116
  sdoc_pickled = pickle_dump(sdoc)
132
117
  with open(path_to_cached_file, "wb") as cache_file:
@@ -150,12 +135,3 @@ class SDReader:
150
135
  # TODO: when --debug is provided
151
136
  traceback.print_exc()
152
137
  sys.exit(1)
153
-
154
- @staticmethod
155
- def parse_include(include, parse_context):
156
- reader = SDIncludeReader()
157
- fragment = reader.read_from_file(
158
- file_path=include.file, context=parse_context
159
- )
160
- assert isinstance(fragment, Fragment)
161
- return fragment
@@ -1,5 +1,7 @@
1
+ import os.path
1
2
  from enum import Enum
2
- from typing import List, Optional
3
+ from pathlib import Path
4
+ from typing import Dict, List, Optional, Tuple
3
5
 
4
6
  from strictdoc.backend.sdoc.models.anchor import Anchor
5
7
  from strictdoc.backend.sdoc.models.document import SDocDocument
@@ -9,6 +11,8 @@ from strictdoc.backend.sdoc.models.document_bibliography import (
9
11
  from strictdoc.backend.sdoc.models.document_config import DocumentConfig
10
12
  from strictdoc.backend.sdoc.models.document_grammar import DocumentGrammar
11
13
  from strictdoc.backend.sdoc.models.document_view import DefaultViewElement
14
+ from strictdoc.backend.sdoc.models.fragment import Fragment
15
+ from strictdoc.backend.sdoc.models.fragment_from_file import FragmentFromFile
12
16
  from strictdoc.backend.sdoc.models.inline_link import InlineLink
13
17
  from strictdoc.backend.sdoc.models.node import CompositeRequirement, SDocNode
14
18
  from strictdoc.backend.sdoc.models.reference import (
@@ -30,6 +34,7 @@ from strictdoc.backend.sdoc.models.type_system import (
30
34
  RequirementFieldType,
31
35
  )
32
36
  from strictdoc.core.document_iterator import DocumentCachingIterator
37
+ from strictdoc.core.document_meta import DocumentMeta
33
38
  from strictdoc.helpers.cast import assert_cast
34
39
 
35
40
 
@@ -43,7 +48,37 @@ class SDWriter:
43
48
  def __init__(self):
44
49
  pass
45
50
 
51
+ def write_to_file(self, document: SDocDocument):
52
+ document_content, fragments_dict = self.write_with_fragments(document)
53
+
54
+ document_meta: DocumentMeta = assert_cast(document.meta, DocumentMeta)
55
+
56
+ with open(
57
+ document_meta.input_doc_full_path, "w", encoding="utf8"
58
+ ) as output_file:
59
+ output_file.write(document_content)
60
+
61
+ path_to_output_file_dir = os.path.dirname(
62
+ document_meta.input_doc_full_path
63
+ )
64
+ Path(path_to_output_file_dir).mkdir(parents=True, exist_ok=True)
65
+
66
+ for fragment_path_, fragment_content_ in fragments_dict.items():
67
+ path_to_output_fragment = os.path.join(
68
+ path_to_output_file_dir, fragment_path_
69
+ )
70
+ with open(path_to_output_fragment, "w", encoding="utf8") as file_:
71
+ file_.write(fragment_content_)
72
+
46
73
  def write(self, document: SDocDocument):
74
+ document_output, _ = self.write_with_fragments(document)
75
+ return document_output
76
+
77
+ def write_with_fragments(
78
+ self, document: SDocDocument
79
+ ) -> Tuple[str, Dict[str, str]]:
80
+ fragments_dict: Dict[str, str] = {}
81
+
47
82
  document_iterator = DocumentCachingIterator(document)
48
83
  output = ""
49
84
 
@@ -201,8 +236,50 @@ class SDWriter:
201
236
  for free_text in document.free_texts:
202
237
  output += "\n"
203
238
  output += self._print_free_text(free_text)
239
+
240
+ output += self._print_body(
241
+ document, document, document_iterator, fragments_dict
242
+ )
243
+
244
+ return output, fragments_dict
245
+
246
+ def _print_body(
247
+ self,
248
+ root_node: [SDocDocument, Fragment],
249
+ document: SDocDocument,
250
+ document_iterator: DocumentCachingIterator,
251
+ fragments_dict,
252
+ ):
253
+ assert isinstance(root_node, (SDocDocument, Fragment)), root_node
254
+ assert isinstance(
255
+ document_iterator, DocumentCachingIterator
256
+ ), document_iterator
257
+
258
+ output = ""
259
+
204
260
  closing_tags = []
205
- for content_node in document_iterator.all_content():
261
+ for content_node in document_iterator.all_content(
262
+ root_node, print_fragments=False
263
+ ):
264
+ if isinstance(content_node, FragmentFromFile):
265
+ fragment_from_file: FragmentFromFile = assert_cast(
266
+ content_node, FragmentFromFile
267
+ )
268
+ output += "\n"
269
+ output += self._print_fragment_from_file(fragment_from_file)
270
+
271
+ assert fragment_from_file.resolved_fragment is not None
272
+ fragment_content = self._print_fragment(
273
+ fragment_from_file.resolved_fragment,
274
+ document,
275
+ document_iterator,
276
+ fragments_dict,
277
+ )
278
+
279
+ fragments_dict[fragment_from_file.file] = fragment_content
280
+
281
+ continue
282
+
206
283
  while (
207
284
  len(closing_tags) > 0
208
285
  and content_node.ng_level <= closing_tags[-1][1]
@@ -215,7 +292,7 @@ class SDWriter:
215
292
  if not content_node.ng_whitelisted:
216
293
  continue
217
294
 
218
- if isinstance(content_node, SDocSection):
295
+ elif isinstance(content_node, SDocSection):
219
296
  output += self._print_section(content_node, document)
220
297
  closing_tags.append((TAG.SECTION, content_node.ng_level))
221
298
  elif isinstance(content_node, SDocNode):
@@ -240,6 +317,33 @@ class SDWriter:
240
317
 
241
318
  return output
242
319
 
320
+ def _print_fragment(
321
+ self,
322
+ fragment: Fragment,
323
+ document: SDocDocument,
324
+ document_iterator: DocumentCachingIterator,
325
+ fragments_dict,
326
+ ):
327
+ output = "[FRAGMENT]\n"
328
+
329
+ output += self._print_body(
330
+ fragment, document, document_iterator, fragments_dict
331
+ )
332
+
333
+ return output
334
+
335
+ def _print_fragment_from_file(self, fragment_from_file: FragmentFromFile):
336
+ assert isinstance(fragment_from_file, FragmentFromFile)
337
+ output = ""
338
+ output += "[FRAGMENT_FROM_FILE]"
339
+ output += "\n"
340
+
341
+ output += "FILE: "
342
+ output += fragment_from_file.file
343
+ output += "\n"
344
+
345
+ return output
346
+
243
347
  def _print_section(self, section: SDocSection, document: SDocDocument):
244
348
  assert isinstance(section, SDocSection)
245
349
  output = ""
@@ -36,7 +36,7 @@ class PassthroughAction:
36
36
  else os.path.join(os.getcwd(), "output", "sdoc")
37
37
  )
38
38
  for document in traceability_index.document_tree.document_list:
39
- output = writer.write(document)
39
+ output, fragments_dict = writer.write_with_fragments(document)
40
40
 
41
41
  path_to_output_file_dir = os.path.join(
42
42
  output_dir, document.meta.input_doc_dir_rel_path
@@ -48,3 +48,12 @@ class PassthroughAction:
48
48
  path_to_output_file += ".sdoc"
49
49
  with open(path_to_output_file, "w", encoding="utf8") as file:
50
50
  file.write(output)
51
+
52
+ for fragment_path_, fragment_content_ in fragments_dict.items():
53
+ path_to_output_fragment = os.path.join(
54
+ path_to_output_file_dir, fragment_path_
55
+ )
56
+ with open(
57
+ path_to_output_fragment, "w", encoding="utf8"
58
+ ) as file_:
59
+ file_.write(fragment_content_)