strictdoc 0.0.44a7__tar.gz → 0.0.44a9__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 (417) hide show
  1. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/PKG-INFO +1 -1
  2. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/__init__.py +1 -1
  3. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/document_grammar.py +3 -3
  4. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/validations/requirement.py +3 -3
  5. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/cli/cli_arg_parser.py +85 -5
  6. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/cli/command_parser_builder.py +16 -5
  7. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/cli/main.py +20 -3
  8. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/project_config.py +4 -4
  9. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/form_objects/document_grammar_form_object.py +26 -16
  10. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/server/main.py +2 -1
  11. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/server/routers/main_router.py +127 -42
  12. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/.gitignore +0 -0
  13. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/CHANGELOG.md +0 -0
  14. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/CONTRIBUTING.md +0 -0
  15. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/Dockerfile +0 -0
  16. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/LICENSE +0 -0
  17. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/NOTICE +0 -0
  18. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/README.md +0 -0
  19. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/requirements/10_concept/10_Concept.sdoc +0 -0
  20. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/requirements/10_concept/12_Zephyr.sdoc +0 -0
  21. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/requirements/20_high_level/20_HLR.sdoc +0 -0
  22. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/requirements/20_high_level/21_DO178.sdoc +0 -0
  23. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/requirements/30_low_level/30_SLR.sdoc +0 -0
  24. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/requirements/30_low_level/32_backlog.sdoc +0 -0
  25. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/requirements/strictdoc.toml +0 -0
  26. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/drafts/strictdoc_low_level_requirements.sdoc_.sdoc +0 -0
  27. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/favicon.ico +0 -0
  28. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/mypy.ini +0 -0
  29. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/pyproject.toml +0 -0
  30. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/requirements.check.txt +0 -0
  31. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/ruff.toml +0 -0
  32. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/__init__.py +0 -0
  33. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/excel/__init__.py +0 -0
  34. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/excel/excel_import.py +0 -0
  35. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/excel/export/__init__.py +0 -0
  36. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/excel/export/excel_generator.py +0 -0
  37. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/excel/import_/__init__.py +0 -0
  38. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/excel/import_/excel_to_sdoc_converter.py +0 -0
  39. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/__init__.py +0 -0
  40. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/p01_sdoc/__init__.py +0 -0
  41. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py +0 -0
  42. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py +0 -0
  43. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/p11_polarion/__init__.py +0 -0
  44. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/p11_polarion/reqif_to_sdoc_converter.py +0 -0
  45. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/reqif_export.py +0 -0
  46. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/reqif_import.py +0 -0
  47. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/reqif/sdoc_reqif_fields.py +0 -0
  48. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/__init__.py +0 -0
  49. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/document_reference.py +0 -0
  50. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/error_handling.py +0 -0
  51. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/errors/__init__.py +0 -0
  52. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/errors/document_tree_error.py +0 -0
  53. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/free_text_reader.py +0 -0
  54. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/grammar/__init__.py +0 -0
  55. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/grammar/grammar.py +0 -0
  56. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/grammar/grammar_builder.py +0 -0
  57. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/grammar/type_system.py +0 -0
  58. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/include_reader.py +0 -0
  59. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/__init__.py +0 -0
  60. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/anchor.py +0 -0
  61. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/constants.py +0 -0
  62. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/document.py +0 -0
  63. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/document_config.py +0 -0
  64. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/fragment.py +0 -0
  65. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/fragment_from_file.py +0 -0
  66. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/free_text.py +0 -0
  67. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/inline_link.py +0 -0
  68. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/node.py +0 -0
  69. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/object_factory.py +0 -0
  70. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/reference.py +0 -0
  71. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/requirement.py +0 -0
  72. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/section.py +0 -0
  73. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/models/type_system.py +0 -0
  74. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/processor.py +0 -0
  75. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/reader.py +0 -0
  76. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/validations/__init__.py +0 -0
  77. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc/writer.py +0 -0
  78. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc_source_code/__init__.py +0 -0
  79. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc_source_code/grammar.py +0 -0
  80. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc_source_code/models/__init__.py +0 -0
  81. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc_source_code/models/range_pragma.py +0 -0
  82. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc_source_code/models/source_file_info.py +0 -0
  83. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/backend/sdoc_source_code/reader.py +0 -0
  84. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/cli/__init__.py +0 -0
  85. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/cli/argument_int_range.py +0 -0
  86. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/commands/__init__.py +0 -0
  87. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/commands/about_command.py +0 -0
  88. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/commands/dump_grammar_command.py +0 -0
  89. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/commands/manage_autouid_command.py +0 -0
  90. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/commands/version_command.py +0 -0
  91. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/__init__.py +0 -0
  92. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/actions/__init__.py +0 -0
  93. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/actions/export_action.py +0 -0
  94. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/actions/import_action.py +0 -0
  95. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/actions/passthrough_action.py +0 -0
  96. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/analyzers/document_stats.py +0 -0
  97. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/analyzers/document_uid_analyzer.py +0 -0
  98. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/commands/constants.py +0 -0
  99. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/commands/delete_section.py +0 -0
  100. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/commands/section.py +0 -0
  101. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/commands/update_document_config.py +0 -0
  102. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/commands/update_free_text.py +0 -0
  103. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/commands/validation_error.py +0 -0
  104. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/document_finder.py +0 -0
  105. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/document_iterator.py +0 -0
  106. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/document_meta.py +0 -0
  107. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/document_tree.py +0 -0
  108. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/document_tree_iterator.py +0 -0
  109. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/environment.py +0 -0
  110. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/file_traceability_index.py +0 -0
  111. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/file_tree.py +0 -0
  112. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/finders/__init__.py +0 -0
  113. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/finders/source_files_finder.py +0 -0
  114. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/graph/validations.py +0 -0
  115. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/graph_database.py +0 -0
  116. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/level_counter.py +0 -0
  117. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/source_tree.py +0 -0
  118. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/traceability_index.py +0 -0
  119. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/traceability_index_builder.py +0 -0
  120. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/core/tree_cycle_detector.py +0 -0
  121. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/__init__.py +0 -0
  122. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/document_dot_generator.py +0 -0
  123. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/dot_templates.py +0 -0
  124. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile1/document.dot +0 -0
  125. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile1/folder.dot +0 -0
  126. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile1/legend.dot +0 -0
  127. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile1/requirement.dot +0 -0
  128. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile1/section.dot +0 -0
  129. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile1/top_level.dot +0 -0
  130. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile2/document.dot +0 -0
  131. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile2/folder.dot +0 -0
  132. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile2/requirement.dot +0 -0
  133. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile2/section.dot +0 -0
  134. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/dot/templates/profile2/top_level.dot +0 -0
  135. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/__init__.py +0 -0
  136. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/base.css +0 -0
  137. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/content.css +0 -0
  138. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/anchor_controller.js +0 -0
  139. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/collapsible_list_controller.js +0 -0
  140. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/deletable_field_controller.js +0 -0
  141. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/draggable_list_controller.js +0 -0
  142. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/dropdown_menu_controller.js +0 -0
  143. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/editable_field_controller.js +0 -0
  144. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/modal_controller.js +0 -0
  145. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/movable_field_controller.js +0 -0
  146. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/controllers/scroll_into_view_controller.js +0 -0
  147. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/element.css +0 -0
  148. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/favicon.ico +0 -0
  149. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/form.css +0 -0
  150. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/html2pdf/bundle.js +0 -0
  151. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/layout.css +0 -0
  152. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/node.css +0 -0
  153. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/pan_with_space.js +0 -0
  154. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/requirement-tree.css +0 -0
  155. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/requirement.css +0 -0
  156. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/requirement__temporary.css +0 -0
  157. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/requirements-coverage.js +0 -0
  158. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/resizable_bar.js +0 -0
  159. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/source-code-coverage.js +0 -0
  160. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/source.css +0 -0
  161. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/stimulus.min.js +0 -0
  162. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/tree.css +0 -0
  163. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/turbo.min.js +0 -0
  164. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static/viewtype_menu.js +0 -0
  165. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/LICENSE-MATHJAX +0 -0
  166. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/tex.js +0 -0
  167. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  168. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  169. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  170. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  171. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  172. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  173. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  174. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  175. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  176. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  177. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  178. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  179. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  180. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  181. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  182. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  183. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  184. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  185. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  186. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  187. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  188. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  189. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  190. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mathjax/tex-mml-chtml.js +0 -0
  191. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/_static_extra/mermaid/mermaid.min.js +0 -0
  192. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/document_type.py +0 -0
  193. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/form_objects/document_config_form_object.py +0 -0
  194. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/form_objects/requirement_form_object.py +0 -0
  195. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/form_objects/section_form_object.py +0 -0
  196. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/__init__.py +0 -0
  197. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/document.py +0 -0
  198. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/document_deep_trace.py +0 -0
  199. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/document_pdf.py +0 -0
  200. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/document_table.py +0 -0
  201. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/document_trace.py +0 -0
  202. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/document_tree.py +0 -0
  203. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/project_statistics.py +0 -0
  204. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/requirements_coverage.py +0 -0
  205. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/source_file_coverage.py +0 -0
  206. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/generators/source_file_view_generator.py +0 -0
  207. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/html_generator.py +0 -0
  208. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/html_templates.py +0 -0
  209. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/renderers/__init__.py +0 -0
  210. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/renderers/html_fragment_writer.py +0 -0
  211. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/renderers/link_renderer.py +0 -0
  212. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/renderers/markup_renderer.py +0 -0
  213. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/renderers/text_to_html_writer.py +0 -0
  214. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg__separator.jinja.html +0 -0
  215. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_add.jinja.html +0 -0
  216. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_anchor.jinja +0 -0
  217. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_back.jinja.html +0 -0
  218. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_book.jinja.html +0 -0
  219. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_close.jinja +0 -0
  220. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_code.jinja.html +0 -0
  221. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_delete.jinja.html +0 -0
  222. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_document.jinja.html +0 -0
  223. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html +0 -0
  224. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_expand.jinja.html +0 -0
  225. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_folder.jinja +0 -0
  226. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_folder_sm.jinja +0 -0
  227. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html +0 -0
  228. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_index.jinja.html +0 -0
  229. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_list.jinja.html +0 -0
  230. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_maximize.jinja +0 -0
  231. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_minimize.jinja +0 -0
  232. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_minusminus.jinja.html +0 -0
  233. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_move_down.jinja.html +0 -0
  234. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_move_up.jinja.html +0 -0
  235. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_plusplus.jinja.html +0 -0
  236. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_project.jinja.html +0 -0
  237. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_requirement.jinja.html +0 -0
  238. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_source.jinja.html +0 -0
  239. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_stat.jinja +0 -0
  240. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_toc.jinja.html +0 -0
  241. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_res/svg_ico16_tree.jinja +0 -0
  242. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_shared/nav.jinja.html +0 -0
  243. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_shared/requirement_block/files_tree.jinja.html +0 -0
  244. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_shared/requirement_block/uid_and_title.jinja.html +0 -0
  245. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_shared/requirement_tree_left.jinja.html +0 -0
  246. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_shared/requirement_tree_right.jinja.html +0 -0
  247. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/_shared/tags.jinja.html +0 -0
  248. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/deep_trace/show_full_requirement/stream_show_full_requirement.jinja +0 -0
  249. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/_shared/stream_refresh_document.jinja.html +0 -0
  250. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/_shared/stream_updated_toc.jinja.html +0 -0
  251. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/add_requirement_comment/stream_add_requirement_comment.jinja.html +0 -0
  252. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/add_requirement_parent_link/stream_add_requirement_parent_link.jinja.html +0 -0
  253. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/create_requirement/stream_cancel_new_requirement.jinja.html +0 -0
  254. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/create_requirement/stream_created_requirement.jinja.html +0 -0
  255. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/create_requirement/stream_new_requirement.jinja.html +0 -0
  256. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/create_section/stream_cancel_new_section.jinja.html +0 -0
  257. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/create_section/stream_created_section.jinja.html +0 -0
  258. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/create_section/stream_new_section.jinja.html +0 -0
  259. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_confirm_delete_requirement.jinja +0 -0
  260. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_delete_requirement.jinja.html +0 -0
  261. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/delete_section/stream_confirm_delete_section.jinja +0 -0
  262. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/delete_section/stream_delete_section.jinja.html +0 -0
  263. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_cancel_edit_document_config.jinja.html +0 -0
  264. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_edit_document_config.jinja.html +0 -0
  265. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_save_document_config.jinja.html +0 -0
  266. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_add_grammar_field.jinja.html +0 -0
  267. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_edit_document_grammar.jinja.html +0 -0
  268. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_save_document_grammar.jinja.html +0 -0
  269. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_edit_requirement.jinja.html +0 -0
  270. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_update_requirement.jinja.html +0 -0
  271. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_section/stream_edit_section.jinja.html +0 -0
  272. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/edit_section/stream_updated_section.jinja.html +0 -0
  273. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/document/move_node/stream_update_document_content.jinja +0 -0
  274. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_form_import_reqif_document.jinja.html +0 -0
  275. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_refresh_with_imported_reqif_document.jinja.html +0 -0
  276. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/project_index/stream_create_document.jinja.html +0 -0
  277. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/actions/project_index/stream_new_document.jinja.html +0 -0
  278. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/base.jinja.html +0 -0
  279. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/abstract/index.jinja +0 -0
  280. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/anchor/index.jinja +0 -0
  281. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/button/cancel.jinja +0 -0
  282. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/button/confirm.jinja +0 -0
  283. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/button/delete.jinja +0 -0
  284. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/button/submit.jinja +0 -0
  285. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/confirm/_usage_example.jinja +0 -0
  286. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/confirm/index.jinja +0 -0
  287. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/form/field/file/index.jinja +0 -0
  288. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/form/field/text/index.jinja +0 -0
  289. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/header/_usage_example.jinja +0 -0
  290. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/header/header_pagetype.jinja +0 -0
  291. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/header/index.jinja +0 -0
  292. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/modal/_usage_example.jinja +0 -0
  293. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/modal/form.jinja +0 -0
  294. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/modal/index.jinja +0 -0
  295. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/node/card.jinja +0 -0
  296. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/node/index.jinja +0 -0
  297. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/node/node_controls/index.jinja +0 -0
  298. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/node/root.jinja +0 -0
  299. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/card.jinja +0 -0
  300. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/card_extends_card.jinja +0 -0
  301. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/comments/index.jinja +0 -0
  302. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/files/index.jinja +0 -0
  303. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/index.jinja +0 -0
  304. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/index_extends_node.jinja +0 -0
  305. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/links/index.jinja +0 -0
  306. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/meta/index.jinja +0 -0
  307. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/multiline/index.jinja +0 -0
  308. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/pdf.jinja +0 -0
  309. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/rationale/index.jinja +0 -0
  310. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/statement/index.jinja +0 -0
  311. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/tiny.jinja +0 -0
  312. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/tiny_extends_card.jinja +0 -0
  313. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/title/index.jinja +0 -0
  314. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/title/pdf.jinja +0 -0
  315. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/requirement/uid/index.jinja +0 -0
  316. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/resizable_bar/index.jinja +0 -0
  317. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/card.jinja +0 -0
  318. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/card_extends_card.jinja +0 -0
  319. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/h/index.jinja +0 -0
  320. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/h/pdf.jinja +0 -0
  321. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/index.jinja +0 -0
  322. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/index_extends_node.jinja +0 -0
  323. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/pdf.jinja +0 -0
  324. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/text/index.jinja +0 -0
  325. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/tiny.jinja +0 -0
  326. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/tiny_extends_card.jinja +0 -0
  327. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/title/index.jinja +0 -0
  328. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/components/section/uid/index.jinja +0 -0
  329. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/rst/anchor.jinja +0 -0
  330. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/_shared/frame_header_document_title.jinja +0 -0
  331. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/_shared/frame_toc.jinja +0 -0
  332. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/_shared/project_tree.jinja +0 -0
  333. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_project_tree.jinja +0 -0
  334. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_toc.jinja +0 -0
  335. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/_shared/viewtype_menu.jinja +0 -0
  336. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/actions.jinja +0 -0
  337. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_document_config.jinja.html +0 -0
  338. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_document_config_edit.jinja.html +0 -0
  339. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_document_content.jinja.html +0 -0
  340. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_document_grammar_edit.jinja.html +0 -0
  341. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_document_grammar_edit_custom_field.jinja.html +0 -0
  342. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_requirement_edit.jinja +0 -0
  343. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_requirement_edit_field_comment.jinja +0 -0
  344. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_requirement_edit_field_parent_link.jinja +0 -0
  345. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/frame_section_edit.jinja +0 -0
  346. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/index.jinja +0 -0
  347. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/document/main.jinja +0 -0
  348. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/pdf/index.jinja +0 -0
  349. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/pdf/main.jinja +0 -0
  350. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/table/index.jinja +0 -0
  351. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/table/main.jinja +0 -0
  352. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/traceability/index.jinja +0 -0
  353. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/traceability/main.jinja +0 -0
  354. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/traceability_deep/frame_show_full_requirement.jinja +0 -0
  355. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/traceability_deep/index.jinja +0 -0
  356. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/document/traceability_deep/main.jinja +0 -0
  357. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_index/actions.jinja +0 -0
  358. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_index/frame_form_import_reqif.jinja.html +0 -0
  359. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_index/frame_form_new_document.jinja.html +0 -0
  360. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_index/frame_project_tree.jinja.html +0 -0
  361. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_index/index.jinja +0 -0
  362. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_index/main.jinja +0 -0
  363. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_statistics/index.jinja +0 -0
  364. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/project_statistics/main.jinja +0 -0
  365. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/requirements_coverage/index.jinja +0 -0
  366. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/requirements_coverage/main.jinja +0 -0
  367. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/requirements_coverage/project_tree_flat_anchor_list.jinja +0 -0
  368. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/requirements_coverage/requirement.jinja.html +0 -0
  369. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/requirements_coverage/resizable_bar_with_project_tree.jinja +0 -0
  370. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/source_file_coverage/index.jinja +0 -0
  371. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/source_file_coverage/main.jinja +0 -0
  372. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/source_file_view/aside.jinja +0 -0
  373. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/source_file_view/header__source_file_name.jinja +0 -0
  374. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/source_file_view/index.jinja +0 -0
  375. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/source_file_view/main.jinja +0 -0
  376. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/screens/source_file_view/requirement.jinja +0 -0
  377. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/templates/websocket.jinja.html +0 -0
  378. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/tools/__init__.py +0 -0
  379. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html/tools/html_embedded.py +0 -0
  380. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/html2pdf/html2pdf.py +0 -0
  381. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/__init__.py +0 -0
  382. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/directives/raw_html_role.py +0 -0
  383. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/directives/wildcard_enhanced_image.py +0 -0
  384. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/document_rst_generator.py +0 -0
  385. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/rst_templates.py +0 -0
  386. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/rst_to_html_fragment_writer.py +0 -0
  387. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/templates/requirement.jinja.rst +0 -0
  388. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/export/rst/writer.py +0 -0
  389. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/__init__.py +0 -0
  390. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/auto_described.py +0 -0
  391. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/cast.py +0 -0
  392. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/exception.py +0 -0
  393. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/file_modification_time.py +0 -0
  394. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/file_system.py +0 -0
  395. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/git_client.py +0 -0
  396. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/math.py +0 -0
  397. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/mid.py +0 -0
  398. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/ordered_set.py +0 -0
  399. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/parallelizer.py +0 -0
  400. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/path_filter.py +0 -0
  401. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/pickle.py +0 -0
  402. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/rst.py +0 -0
  403. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/sorting.py +0 -0
  404. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/string.py +0 -0
  405. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/textx.py +0 -0
  406. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/helpers/timing.py +0 -0
  407. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/server/__init__.py +0 -0
  408. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/server/app.py +0 -0
  409. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/server/config.py +0 -0
  410. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/server/error_object.py +0 -0
  411. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc/server/server.py +0 -0
  412. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/strictdoc.toml +0 -0
  413. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/tasks.py +0 -0
  414. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/tasks_wine.py +0 -0
  415. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/tools/confluence_html_table_import.py +0 -0
  416. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/tools/link_health.py +0 -0
  417. {strictdoc-0.0.44a7 → strictdoc-0.0.44a9}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strictdoc
3
- Version: 0.0.44a7
3
+ Version: 0.0.44a9
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.0.44a7"
3
+ __version__ = "0.0.44a9"
4
4
 
5
5
 
6
6
  environment = SDocRuntimeEnvironment(__file__)
@@ -54,17 +54,17 @@ class DocumentGrammar:
54
54
 
55
55
  registered_elements: Set[str] = set()
56
56
  elements_by_type: Dict[str, GrammarElement] = {}
57
- fields_by_type: Dict[str, Set[str]] = defaultdict(set)
57
+ fields_by_type: Dict[str, List[str]] = defaultdict(list)
58
58
 
59
59
  for element in elements:
60
60
  registered_elements.add(element.tag)
61
61
  elements_by_type[element.tag] = element
62
62
  for element_field in element.fields:
63
- fields_by_type[element.tag].add(element_field.title)
63
+ fields_by_type[element.tag].append(element_field.title)
64
64
 
65
65
  self.registered_elements: Set[str] = registered_elements
66
66
  self.elements_by_type: Dict[str, GrammarElement] = elements_by_type
67
- self.fields_order_by_type: Dict[str, Set[str]] = fields_by_type
67
+ self.fields_order_by_type: Dict[str, List[str]] = fields_by_type
68
68
 
69
69
  self.is_default = False
70
70
 
@@ -33,9 +33,9 @@ def multi_choice_regex_match(value):
33
33
  def validate_requirement(
34
34
  requirement: Requirement, document_grammar: DocumentGrammar
35
35
  ):
36
- registered_fields: Set[str] = document_grammar.fields_order_by_type[
37
- requirement.requirement_type
38
- ]
36
+ registered_fields: Set[str] = set(
37
+ document_grammar.fields_order_by_type[requirement.requirement_type]
38
+ )
39
39
  for field_name in requirement.ordered_fields_lookup:
40
40
  if field_name not in registered_fields:
41
41
  raise StrictDocSemanticError.unregistered_field(
@@ -5,6 +5,10 @@ from strictdoc.cli.command_parser_builder import CommandParserBuilder
5
5
  from strictdoc.helpers.auto_described import auto_described
6
6
 
7
7
 
8
+ class CLIValidationError(Exception):
9
+ pass
10
+
11
+
8
12
  class ImportReqIFCommandConfig:
9
13
  def __init__(self, input_path: str, output_path: str, profile):
10
14
  self.input_path: str = input_path
@@ -13,8 +17,29 @@ class ImportReqIFCommandConfig:
13
17
 
14
18
 
15
19
  class ManageAutoUIDCommandConfig:
16
- def __init__(self, *, input_path: str):
20
+ def __init__(self, *, input_path: str, config_path: Optional[str]):
17
21
  self.input_path: str = input_path
22
+ self._config_path: Optional[str] = config_path
23
+
24
+ def get_path_to_config(self) -> Optional[str]:
25
+ path_to_input_dir = self.input_path
26
+ if os.path.isfile(path_to_input_dir):
27
+ path_to_input_dir = os.path.dirname(path_to_input_dir)
28
+ path_to_config = (
29
+ self._config_path
30
+ if self._config_path is not None
31
+ else path_to_input_dir
32
+ )
33
+ return path_to_config
34
+
35
+ def validate(self):
36
+ if self._config_path is not None and not os.path.exists(
37
+ self._config_path
38
+ ):
39
+ raise CLIValidationError(
40
+ "Provided path to a configuration file does not exist: "
41
+ f"{self._config_path}"
42
+ )
18
43
 
19
44
 
20
45
  class ImportExcelCommandConfig:
@@ -37,16 +62,40 @@ class ServerCommandConfig:
37
62
  *,
38
63
  input_path: str,
39
64
  output_path: Optional[str],
65
+ config_path: Optional[str],
40
66
  reload: bool,
41
67
  port: Optional[int],
42
68
  ):
43
- assert os.path.exists(input_path)
44
- abs_input_path = os.path.abspath(input_path)
45
- self.input_path: str = abs_input_path
69
+ self._input_path: str = input_path
46
70
  self.output_path: Optional[str] = output_path
71
+ self._config_path: Optional[str] = config_path
47
72
  self.reload: bool = reload
48
73
  self.port: Optional[int] = port
49
74
 
75
+ def get_full_input_path(self):
76
+ return os.path.abspath(self._input_path)
77
+
78
+ def get_path_to_config(self):
79
+ return (
80
+ self._config_path
81
+ if self._config_path is not None
82
+ else self._input_path
83
+ )
84
+
85
+ def validate(self):
86
+ if not os.path.exists(self._input_path):
87
+ raise CLIValidationError(
88
+ f"Provided input path does not exist: {self._input_path}"
89
+ )
90
+
91
+ if self._config_path is not None and not os.path.exists(
92
+ self._config_path
93
+ ):
94
+ raise CLIValidationError(
95
+ "Provided path to a configuration file does not exist: "
96
+ f"{self._config_path}"
97
+ )
98
+
50
99
 
51
100
  @auto_described
52
101
  class ExportCommandConfig: # pylint: disable=too-many-instance-attributes
@@ -54,6 +103,7 @@ class ExportCommandConfig: # pylint: disable=too-many-instance-attributes
54
103
  self,
55
104
  input_paths,
56
105
  output_dir: str,
106
+ config_path: Optional[str],
57
107
  project_title: Optional[str],
58
108
  formats,
59
109
  fields,
@@ -65,6 +115,7 @@ class ExportCommandConfig: # pylint: disable=too-many-instance-attributes
65
115
  assert isinstance(input_paths, list), f"{input_paths}"
66
116
  self.input_paths: List[str] = input_paths
67
117
  self.output_dir: str = output_dir
118
+ self._config_path: Optional[str] = config_path
68
119
  self.project_title: Optional[str] = project_title
69
120
  self.formats = formats
70
121
  self.fields = fields
@@ -76,6 +127,30 @@ class ExportCommandConfig: # pylint: disable=too-many-instance-attributes
76
127
  )
77
128
  self.output_html_root: str = os.path.join(output_dir, "html")
78
129
 
130
+ def get_path_to_config(self) -> Optional[str]:
131
+ path_to_input_dir = self.input_paths[0]
132
+ if os.path.isfile(path_to_input_dir):
133
+ path_to_input_dir = os.path.dirname(path_to_input_dir)
134
+ path_to_config = (
135
+ self._config_path
136
+ if self._config_path is not None
137
+ else path_to_input_dir
138
+ )
139
+ return path_to_config
140
+
141
+ def validate(self):
142
+ for input_path_ in self.input_paths:
143
+ if not os.path.exists(input_path_):
144
+ raise CLIValidationError(
145
+ f"Provided input path does not exist: {input_path_}"
146
+ )
147
+ if self._config_path is not None:
148
+ if not os.path.exists(self._config_path):
149
+ raise CLIValidationError(
150
+ "Provided path to a configuration file does not exist: "
151
+ f"{self._config_path}"
152
+ )
153
+
79
154
 
80
155
  class DumpGrammarCommandConfig:
81
156
  def __init__(self, output_file):
@@ -144,6 +219,7 @@ class SDocArgsParser:
144
219
  return ExportCommandConfig(
145
220
  self.args.input_paths,
146
221
  output_dir,
222
+ self.args.config,
147
223
  project_title,
148
224
  self.args.formats,
149
225
  self.args.fields,
@@ -159,7 +235,10 @@ class SDocArgsParser:
159
235
  )
160
236
 
161
237
  def get_manage_autouid_config(self) -> ManageAutoUIDCommandConfig:
162
- return ManageAutoUIDCommandConfig(input_path=self.args.input_path)
238
+ return ManageAutoUIDCommandConfig(
239
+ input_path=self.args.input_path,
240
+ config_path=self.args.config,
241
+ )
163
242
 
164
243
  def get_import_config_excel(self, _) -> ImportExcelCommandConfig:
165
244
  return ImportExcelCommandConfig(
@@ -170,6 +249,7 @@ class SDocArgsParser:
170
249
  return ServerCommandConfig(
171
250
  input_path=self.args.input_path,
172
251
  output_path=self.args.output_path,
252
+ config_path=self.args.config,
173
253
  reload=self.args.reload,
174
254
  port=self.args.port,
175
255
  )
@@ -41,6 +41,14 @@ def _parse_fields(fields):
41
41
  return fields_array
42
42
 
43
43
 
44
+ def add_config_argument(parser):
45
+ parser.add_argument(
46
+ "--config",
47
+ type=str,
48
+ help="Path to the StrictDoc TOML config file.",
49
+ )
50
+
51
+
44
52
  class SDocArgumentParser(argparse.ArgumentParser):
45
53
  def error(self, message: str):
46
54
  self.print_usage(sys.stderr)
@@ -68,6 +76,7 @@ class CommandParserBuilder:
68
76
  """
69
77
  ),
70
78
  )
79
+
71
80
  command_subparsers = main_parser.add_subparsers(
72
81
  title="command", dest="command"
73
82
  )
@@ -75,9 +84,9 @@ class CommandParserBuilder:
75
84
 
76
85
  self.add_about_command(command_subparsers)
77
86
  self.add_export_command(command_subparsers)
78
- self.add_import_command(command_subparsers)
79
87
  self.add_server_command(command_subparsers)
80
88
  self.add_manage_command(command_subparsers)
89
+ self.add_import_command(command_subparsers)
81
90
  self.add_version_command(command_subparsers)
82
91
  self.add_passthrough_command(command_subparsers)
83
92
  self.add_dump_command(command_subparsers)
@@ -86,7 +95,7 @@ class CommandParserBuilder:
86
95
 
87
96
  @staticmethod
88
97
  def add_about_command(parent_command_parser):
89
- _ = parent_command_parser.add_parser(
98
+ parent_command_parser.add_parser(
90
99
  "about",
91
100
  help="About StrictDoc.",
92
101
  description="About StrictDoc.",
@@ -158,6 +167,7 @@ class CommandParserBuilder:
158
167
  "enables traceability between requirements and files."
159
168
  ),
160
169
  )
170
+ add_config_argument(command_parser_export)
161
171
 
162
172
  @staticmethod
163
173
  def add_import_command(parent_command_parser):
@@ -255,6 +265,7 @@ class CommandParserBuilder:
255
265
  "--no-reload", dest="reload", action="store_false"
256
266
  )
257
267
  command_parser_server.add_argument("--port", type=IntRange(1024, 65000))
268
+ add_config_argument(command_parser_server)
258
269
 
259
270
  @staticmethod
260
271
  def add_version_command(parent_command_parser):
@@ -274,7 +285,6 @@ class CommandParserBuilder:
274
285
  command_parser_passthrough.add_argument(
275
286
  "input_file", type=str, help="Path to the input SDoc file"
276
287
  )
277
-
278
288
  command_parser_passthrough.add_argument(
279
289
  "--output-file", type=str, help="Path to the output SDoc file"
280
290
  )
@@ -303,7 +313,7 @@ class CommandParserBuilder:
303
313
  )
304
314
  manage_command_subparsers.required = True
305
315
 
306
- command_parser_import_reqif = manage_command_subparsers.add_parser(
316
+ command_parser_auto_uid = manage_command_subparsers.add_parser(
307
317
  "auto-uid",
308
318
  help="Generates missing requirements UIDs automatically.",
309
319
  description=(
@@ -315,8 +325,9 @@ class CommandParserBuilder:
315
325
  formatter_class=formatter,
316
326
  )
317
327
 
318
- command_parser_import_reqif.add_argument(
328
+ command_parser_auto_uid.add_argument(
319
329
  "input_path",
320
330
  type=str,
321
331
  help="Path to the project tree.",
322
332
  )
333
+ add_config_argument(command_parser_auto_uid)
@@ -16,6 +16,7 @@ sys.path.append(strictdoc_root_path)
16
16
 
17
17
  from strictdoc import environment
18
18
  from strictdoc.cli.cli_arg_parser import (
19
+ CLIValidationError,
19
20
  DumpGrammarCommandConfig,
20
21
  ExportCommandConfig,
21
22
  ImportExcelCommandConfig,
@@ -61,9 +62,14 @@ def _main(parallelizer):
61
62
 
62
63
  elif parser.is_export_command:
63
64
  config: ExportCommandConfig = parser.get_export_config()
65
+ try:
66
+ config.validate()
67
+ except CLIValidationError as exception_:
68
+ print(f"error: {exception_.args[0]}") # noqa: T201
69
+ sys.exit(1)
64
70
  project_config: ProjectConfig = (
65
71
  ProjectConfigLoader.load_from_path_or_get_default(
66
- path_to_config_dir=config.input_paths[0],
72
+ path_to_config=config.get_path_to_config(),
67
73
  environment=environment,
68
74
  )
69
75
  )
@@ -84,9 +90,14 @@ def _main(parallelizer):
84
90
 
85
91
  elif parser.is_server_command:
86
92
  server_config = parser.get_server_config()
93
+ try:
94
+ server_config.validate()
95
+ except CLIValidationError as exception_:
96
+ print(f"error: {exception_.args[0]}") # noqa: T201
97
+ sys.exit(1)
87
98
  project_config: ProjectConfig = (
88
99
  ProjectConfigLoader.load_from_path_or_get_default(
89
- path_to_config_dir=server_config.input_path,
100
+ path_to_config=server_config.get_path_to_config(),
90
101
  environment=environment,
91
102
  )
92
103
  )
@@ -110,12 +121,18 @@ def _main(parallelizer):
110
121
 
111
122
  elif parser.is_manage_autouid_command:
112
123
  config: ManageAutoUIDCommandConfig = parser.get_manage_autouid_config()
124
+ try:
125
+ config.validate()
126
+ except CLIValidationError as exception_:
127
+ print(f"error: {exception_.args[0]}") # noqa: T201
128
+ sys.exit(1)
113
129
  project_config: ProjectConfig = (
114
130
  ProjectConfigLoader.load_from_path_or_get_default(
115
- path_to_config_dir=config.input_path,
131
+ path_to_config=config.get_path_to_config(),
116
132
  environment=environment,
117
133
  )
118
134
  )
135
+ # FIXME: This must be improved.
119
136
  project_config.export_input_paths = [config.input_path]
120
137
  ManageAutoUIDCommand.execute(
121
138
  project_config=project_config, parallelizer=parallelizer
@@ -215,13 +215,13 @@ class ProjectConfigLoader:
215
215
  @staticmethod
216
216
  def load_from_path_or_get_default(
217
217
  *,
218
- path_to_config_dir: str,
218
+ path_to_config: str,
219
219
  environment: SDocRuntimeEnvironment,
220
220
  ) -> ProjectConfig:
221
- if not os.path.exists(path_to_config_dir):
221
+ if not os.path.exists(path_to_config):
222
222
  return ProjectConfig.default_config(environment=environment)
223
-
224
- path_to_config = os.path.join(path_to_config_dir, "strictdoc.toml")
223
+ if os.path.isdir(path_to_config):
224
+ path_to_config = os.path.join(path_to_config, "strictdoc.toml")
225
225
  if not os.path.isfile(path_to_config):
226
226
  return ProjectConfig.default_config(environment=environment)
227
227
 
@@ -1,6 +1,5 @@
1
1
  import re
2
- from collections import defaultdict
3
- from typing import Dict, List
2
+ from typing import List, Optional, Set
4
3
 
5
4
  from starlette.datastructures import FormData
6
5
 
@@ -34,10 +33,12 @@ class GrammarFormField:
34
33
  def __init__(
35
34
  self,
36
35
  field_name: str,
36
+ previous_name: Optional[str],
37
37
  field_required: bool,
38
38
  reserved: bool,
39
39
  ):
40
40
  self.field_name: str = field_name
41
+ self.previous_name: Optional[str] = previous_name
41
42
  self.field_required: bool = field_required
42
43
  self.reserved: bool = reserved
43
44
 
@@ -46,6 +47,7 @@ class GrammarFormField:
46
47
  reserved = is_reserved_field(grammar_field.title)
47
48
  return GrammarFormField(
48
49
  field_name=grammar_field.title,
50
+ previous_name=grammar_field.title,
49
51
  field_required=grammar_field.required,
50
52
  reserved=reserved,
51
53
  )
@@ -72,29 +74,27 @@ class DocumentGrammarFormObject(ErrorObject):
72
74
  def create_from_request(
73
75
  *, document_mid: str, request_form_data: FormData
74
76
  ) -> "DocumentGrammarFormObject":
75
- grammar_fields: Dict[str, List[str]] = defaultdict(list)
76
-
77
77
  # For now, the convention is that the new fields have empty
78
78
  # brackets, e.g., ('document_grammar[]', 'CUSTOM_FIELD_1').
79
79
  # The existing fields are:
80
80
  # ('document_grammar[RATIONALE]', 'RATIONALE') # noqa: ERA001
81
81
  # This structure will be changed when not just field names, but also
82
82
  # their options will be passed to this parser.
83
+ form_object_fields = []
84
+
83
85
  for field_name, field_value in request_form_data.multi_items():
84
- assert isinstance(field_value, str)
85
86
  result = re.search(r"^document_grammar\[(.*)]$", field_name)
86
87
  if result is not None:
87
- grammar_fields[field_value].append(field_value)
88
-
89
- form_object_fields = []
90
- for grammar_field_name in grammar_fields:
91
- grammar_field = grammar_fields[grammar_field_name]
92
- form_object_field = GrammarFormField(
93
- field_name=grammar_field[0],
94
- field_required=False,
95
- reserved=is_reserved_field(grammar_field_name),
96
- )
97
- form_object_fields.append(form_object_field)
88
+ previous_name: Optional[str] = None
89
+ if len(result.group(1)) > 0:
90
+ previous_name = result.group(1)
91
+ form_object_field = GrammarFormField(
92
+ field_name=field_value,
93
+ previous_name=previous_name,
94
+ field_required=False,
95
+ reserved=is_reserved_field(field_value),
96
+ )
97
+ form_object_fields.append(form_object_field)
98
98
 
99
99
  form_object = DocumentGrammarFormObject(
100
100
  document_mid=document_mid,
@@ -124,12 +124,22 @@ class DocumentGrammarFormObject(ErrorObject):
124
124
  )
125
125
 
126
126
  def validate(self) -> bool:
127
+ fields_so_far: Set[str] = set()
127
128
  for field in self.fields:
128
129
  if len(field.field_name) == 0:
129
130
  self.add_error(
130
131
  field.field_name,
131
132
  f"Grammar field {field.field_name} must not be empty.",
132
133
  )
134
+ continue
135
+
136
+ if field.field_name in fields_so_far:
137
+ self.add_error(
138
+ field.field_name,
139
+ f"Grammar field {field.field_name} is not unique.",
140
+ )
141
+ else:
142
+ fields_so_far.add(field.field_name)
133
143
  return len(self.errors) == 0
134
144
 
135
145
  def convert_to_document_grammar(self) -> DocumentGrammar:
@@ -35,12 +35,13 @@ if __name__ == "__main__":
35
35
  server_command_config = ServerCommandConfig(
36
36
  input_path=input_path,
37
37
  output_path=output_path,
38
+ config_path=None,
38
39
  reload=args.reload,
39
40
  port=5111,
40
41
  )
41
42
  project_config: ProjectConfig = (
42
43
  ProjectConfigLoader.load_from_path_or_get_default(
43
- path_to_config_dir=input_path, environment=environment
44
+ path_to_config=input_path, environment=environment
44
45
  )
45
46
  )
46
47
  run_strictdoc_server(