strictdoc 0.0.42a2__tar.gz → 0.0.42a5__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 (361) hide show
  1. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/PKG-INFO +1 -1
  2. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/requirements.check.txt +2 -0
  3. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/__init__.py +1 -1
  4. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/document_finder.py +12 -3
  5. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/file_tree.py +48 -22
  6. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/finders/source_files_finder.py +7 -1
  7. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/project_config.py +78 -1
  8. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/traceability_index_builder.py +4 -4
  9. strictdoc-0.0.42a5/strictdoc/helpers/path_filter.py +76 -0
  10. strictdoc-0.0.42a5/strictdoc.toml +24 -0
  11. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/.gitignore +0 -0
  12. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/CHANGELOG.md +0 -0
  13. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/CONTRIBUTING.md +0 -0
  14. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/Dockerfile +0 -0
  15. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/LICENSE +0 -0
  16. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/NOTICE +0 -0
  17. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/README.md +0 -0
  18. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/favicon.ico +0 -0
  19. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/mypy.ini +0 -0
  20. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/pyproject.toml +0 -0
  21. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/ruff.toml +0 -0
  22. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/__init__.py +0 -0
  23. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/excel/__init__.py +0 -0
  24. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/excel/excel_import.py +0 -0
  25. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/excel/export/__init__.py +0 -0
  26. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/excel/export/excel_generator.py +0 -0
  27. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/excel/import_/__init__.py +0 -0
  28. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/excel/import_/excel_to_sdoc_converter.py +0 -0
  29. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/__init__.py +0 -0
  30. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/export/__init__.py +0 -0
  31. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/export/sdoc_to_reqif_converter.py +0 -0
  32. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/import_/__init__.py +0 -0
  33. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/import_/reqif_to_sdoc_converter.py +0 -0
  34. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/p11_polarion/__init__.py +0 -0
  35. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/p11_polarion/reqif_to_sdoc_converter.py +0 -0
  36. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/reqif_export.py +0 -0
  37. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/reqif_import.py +0 -0
  38. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/reqif/sdoc_reqif_fields.py +0 -0
  39. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/__init__.py +0 -0
  40. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/document_reference.py +0 -0
  41. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/error_handling.py +0 -0
  42. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/errors/__init__.py +0 -0
  43. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/errors/document_tree_error.py +0 -0
  44. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/free_text_reader.py +0 -0
  45. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/grammar/__init__.py +0 -0
  46. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/grammar/grammar.py +0 -0
  47. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/grammar/grammar_builder.py +0 -0
  48. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/grammar/type_system.py +0 -0
  49. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/include_reader.py +0 -0
  50. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/__init__.py +0 -0
  51. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/constants.py +0 -0
  52. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/document.py +0 -0
  53. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/document_config.py +0 -0
  54. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/document_grammar.py +0 -0
  55. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/fragment.py +0 -0
  56. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/fragment_from_file.py +0 -0
  57. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/free_text.py +0 -0
  58. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/inline_link.py +0 -0
  59. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/node.py +0 -0
  60. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/object_factory.py +0 -0
  61. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/reference.py +0 -0
  62. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/requirement.py +0 -0
  63. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/section.py +0 -0
  64. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/models/type_system.py +0 -0
  65. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/processor.py +0 -0
  66. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/reader.py +0 -0
  67. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/validations/__init__.py +0 -0
  68. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/validations/requirement.py +0 -0
  69. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc/writer.py +0 -0
  70. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc_source_code/__init__.py +0 -0
  71. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc_source_code/grammar.py +0 -0
  72. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc_source_code/models/__init__.py +0 -0
  73. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc_source_code/models/range_pragma.py +0 -0
  74. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc_source_code/models/source_file_info.py +0 -0
  75. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/backend/sdoc_source_code/reader.py +0 -0
  76. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/cli/__init__.py +0 -0
  77. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/cli/argument_int_range.py +0 -0
  78. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/cli/cli_arg_parser.py +0 -0
  79. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/cli/main.py +0 -0
  80. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/commands/__init__.py +0 -0
  81. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/commands/about_command.py +0 -0
  82. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/commands/dump_grammar_command.py +0 -0
  83. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/commands/version_command.py +0 -0
  84. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/__init__.py +0 -0
  85. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/actions/__init__.py +0 -0
  86. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/actions/export_action.py +0 -0
  87. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/actions/import_action.py +0 -0
  88. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/actions/passthrough_action.py +0 -0
  89. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/document_iterator.py +0 -0
  90. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/document_meta.py +0 -0
  91. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/document_tree.py +0 -0
  92. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/document_tree_iterator.py +0 -0
  93. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/environment.py +0 -0
  94. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/error_message.py +0 -0
  95. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/file_traceability_index.py +0 -0
  96. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/finders/__init__.py +0 -0
  97. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/level_counter.py +0 -0
  98. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/source_tree.py +0 -0
  99. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/traceability_index.py +0 -0
  100. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/core/tree_cycle_detector.py +0 -0
  101. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/__init__.py +0 -0
  102. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/__init__.py +0 -0
  103. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/base.css +0 -0
  104. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/content.css +0 -0
  105. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/collapsible_list_controller.js +0 -0
  106. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/deletable_field_controller.js +0 -0
  107. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/draggable_list_controller.js +0 -0
  108. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/dropdown_menu_controller.js +0 -0
  109. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/editable_field_controller.js +0 -0
  110. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/modal_controller.js +0 -0
  111. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/movable_field_controller.js +0 -0
  112. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/controllers/scroll_into_view_controller.js +0 -0
  113. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/element.css +0 -0
  114. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/favicon.ico +0 -0
  115. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/form.css +0 -0
  116. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/layout.css +0 -0
  117. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/node.css +0 -0
  118. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/pan_with_space.js +0 -0
  119. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/requirement-tree.css +0 -0
  120. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/requirement.css +0 -0
  121. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/requirement__temporary.css +0 -0
  122. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/requirements-coverage.js +0 -0
  123. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/resizable_bar.js +0 -0
  124. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/source-code-coverage.js +0 -0
  125. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/source.css +0 -0
  126. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/stimulus.js +0 -0
  127. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/tree.css +0 -0
  128. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/turbo.js +0 -0
  129. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static/viewtype_menu.js +0 -0
  130. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/LICENSE-MATHJAX +0 -0
  131. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/tex.js +0 -0
  132. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  133. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  134. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  135. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  136. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  137. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  138. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  139. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  140. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  141. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  142. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  143. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  144. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  145. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  146. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  147. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  148. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  149. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  150. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  151. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  152. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  153. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  154. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  155. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/_static_extra/mathjax/tex-mml-chtml.js +0 -0
  156. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/document_type.py +0 -0
  157. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/form_objects/document_config_form_object.py +0 -0
  158. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/form_objects/document_grammar_form_object.py +0 -0
  159. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/form_objects/requirement_form_object.py +0 -0
  160. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/form_objects/section_form_object.py +0 -0
  161. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/__init__.py +0 -0
  162. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/document.py +0 -0
  163. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/document_deep_trace.py +0 -0
  164. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/document_table.py +0 -0
  165. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/document_trace.py +0 -0
  166. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/document_tree.py +0 -0
  167. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/requirements_coverage.py +0 -0
  168. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/source_file_coverage.py +0 -0
  169. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/generators/source_file_view_generator.py +0 -0
  170. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/html_generator.py +0 -0
  171. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/html_templates.py +0 -0
  172. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/renderers/__init__.py +0 -0
  173. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/renderers/html_fragment_writer.py +0 -0
  174. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/renderers/link_renderer.py +0 -0
  175. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/renderers/markup_renderer.py +0 -0
  176. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/renderers/text_to_html_writer.py +0 -0
  177. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg__separator.jinja.html +0 -0
  178. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_add.jinja.html +0 -0
  179. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_back.jinja.html +0 -0
  180. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_book.jinja.html +0 -0
  181. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_close.jinja +0 -0
  182. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_code.jinja.html +0 -0
  183. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_delete.jinja.html +0 -0
  184. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_document.jinja.html +0 -0
  185. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html +0 -0
  186. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_expand.jinja.html +0 -0
  187. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_folder.jinja +0 -0
  188. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_folder_sm.jinja +0 -0
  189. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html +0 -0
  190. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_index.jinja.html +0 -0
  191. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_list.jinja.html +0 -0
  192. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_maximize.jinja +0 -0
  193. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_minimize.jinja +0 -0
  194. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_minusminus.jinja.html +0 -0
  195. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_move_down.jinja.html +0 -0
  196. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_move_up.jinja.html +0 -0
  197. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_plusplus.jinja.html +0 -0
  198. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_project.jinja.html +0 -0
  199. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_requirement.jinja.html +0 -0
  200. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_source.jinja.html +0 -0
  201. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_toc.jinja.html +0 -0
  202. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_res/svg_ico16_tree.jinja +0 -0
  203. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_shared/nav.jinja.html +0 -0
  204. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_shared/requirement_block/files_tree.jinja.html +0 -0
  205. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_shared/requirement_block/uid_and_title.jinja.html +0 -0
  206. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_shared/requirement_tree_left.jinja.html +0 -0
  207. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_shared/requirement_tree_right.jinja.html +0 -0
  208. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/_shared/tags.jinja.html +0 -0
  209. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/deep_trace/show_full_requirement/stream_show_full_requirement.jinja +0 -0
  210. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/_shared/stream_refresh_document.jinja.html +0 -0
  211. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/_shared/stream_updated_toc.jinja.html +0 -0
  212. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/add_requirement_comment/stream_add_requirement_comment.jinja.html +0 -0
  213. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/add_requirement_parent_link/stream_add_requirement_parent_link.jinja.html +0 -0
  214. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/create_requirement/stream_cancel_new_requirement.jinja.html +0 -0
  215. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/create_requirement/stream_created_requirement.jinja.html +0 -0
  216. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/create_requirement/stream_new_requirement.jinja.html +0 -0
  217. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/create_section/stream_cancel_new_section.jinja.html +0 -0
  218. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/create_section/stream_created_section.jinja.html +0 -0
  219. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/create_section/stream_new_section.jinja.html +0 -0
  220. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_confirm_delete_requirement.jinja +0 -0
  221. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_delete_requirement.jinja.html +0 -0
  222. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/delete_section/stream_confirm_delete_section.jinja +0 -0
  223. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/delete_section/stream_delete_section.jinja.html +0 -0
  224. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_cancel_edit_document_config.jinja.html +0 -0
  225. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_edit_document_config.jinja.html +0 -0
  226. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_save_document_config.jinja.html +0 -0
  227. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_add_grammar_field.jinja.html +0 -0
  228. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_edit_document_grammar.jinja.html +0 -0
  229. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_save_document_grammar.jinja.html +0 -0
  230. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_edit_requirement.jinja.html +0 -0
  231. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_update_requirement.jinja.html +0 -0
  232. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_section/stream_edit_section.jinja.html +0 -0
  233. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/edit_section/stream_updated_section.jinja.html +0 -0
  234. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/document/move_node/stream_update_document_content.jinja +0 -0
  235. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_form_import_reqif_document.jinja.html +0 -0
  236. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_refresh_with_imported_reqif_document.jinja.html +0 -0
  237. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/project_index/stream_create_document.jinja.html +0 -0
  238. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/actions/project_index/stream_new_document.jinja.html +0 -0
  239. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/base.jinja.html +0 -0
  240. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/abstract/index.jinja +0 -0
  241. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/anchor/index.jinja +0 -0
  242. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/button/cancel.jinja +0 -0
  243. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/button/confirm.jinja +0 -0
  244. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/button/delete.jinja +0 -0
  245. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/button/submit.jinja +0 -0
  246. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/confirm/_usage_example.jinja +0 -0
  247. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/confirm/index.jinja +0 -0
  248. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/form/field/file/index.jinja +0 -0
  249. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/form/field/text/index.jinja +0 -0
  250. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/header/_usage_example.jinja +0 -0
  251. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/header/header_pagetype.jinja +0 -0
  252. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/header/index.jinja +0 -0
  253. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/modal/_usage_example.jinja +0 -0
  254. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/modal/form.jinja +0 -0
  255. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/modal/index.jinja +0 -0
  256. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/node/card.jinja +0 -0
  257. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/node/index.jinja +0 -0
  258. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/node/node_controls/index.jinja +0 -0
  259. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/node/root.jinja +0 -0
  260. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/card.jinja +0 -0
  261. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/card_extends_card.jinja +0 -0
  262. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/comments/index.jinja +0 -0
  263. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/files/index.jinja +0 -0
  264. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/index.jinja +0 -0
  265. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/index_extends_node.jinja +0 -0
  266. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/links/index.jinja +0 -0
  267. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/meta/index.jinja +0 -0
  268. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/multiline/index.jinja +0 -0
  269. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/rationale/index.jinja +0 -0
  270. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/statement/index.jinja +0 -0
  271. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/tiny.jinja +0 -0
  272. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/tiny_extends_card.jinja +0 -0
  273. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/title/index.jinja +0 -0
  274. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/requirement/uid/index.jinja +0 -0
  275. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/resizable_bar/index.jinja +0 -0
  276. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/card.jinja +0 -0
  277. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/card_extends_card.jinja +0 -0
  278. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/h/index.jinja +0 -0
  279. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/index.jinja +0 -0
  280. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/index_extends_node.jinja +0 -0
  281. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/text/index.jinja +0 -0
  282. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/tiny.jinja +0 -0
  283. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/tiny_extends_card.jinja +0 -0
  284. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/components/section/title/index.jinja +0 -0
  285. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/_shared/frame_header_document_title.jinja +0 -0
  286. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/_shared/frame_toc.jinja +0 -0
  287. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/_shared/project_tree.jinja +0 -0
  288. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_project_tree.jinja +0 -0
  289. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_toc.jinja +0 -0
  290. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/_shared/viewtype_menu.jinja +0 -0
  291. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/actions.jinja +0 -0
  292. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_document_config.jinja.html +0 -0
  293. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_document_config_edit.jinja.html +0 -0
  294. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_document_content.jinja.html +0 -0
  295. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_document_grammar_edit.jinja.html +0 -0
  296. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_document_grammar_edit_custom_field.jinja.html +0 -0
  297. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_requirement_edit.jinja +0 -0
  298. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_requirement_edit_field_comment.jinja +0 -0
  299. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_requirement_edit_field_parent_link.jinja +0 -0
  300. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/frame_section_edit.jinja +0 -0
  301. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/index.jinja +0 -0
  302. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/document/main.jinja +0 -0
  303. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/table/index.jinja +0 -0
  304. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/table/main.jinja +0 -0
  305. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/traceability/index.jinja +0 -0
  306. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/traceability/main.jinja +0 -0
  307. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/traceability_deep/frame_show_full_requirement.jinja +0 -0
  308. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/traceability_deep/index.jinja +0 -0
  309. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/document/traceability_deep/main.jinja +0 -0
  310. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/project_index/actions.jinja +0 -0
  311. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/project_index/frame_form_import_reqif.jinja.html +0 -0
  312. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/project_index/frame_form_new_document.jinja.html +0 -0
  313. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/project_index/frame_project_tree.jinja.html +0 -0
  314. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/project_index/index.jinja +0 -0
  315. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/project_index/main.jinja +0 -0
  316. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/requirements_coverage/index.jinja +0 -0
  317. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/requirements_coverage/main.jinja +0 -0
  318. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/requirements_coverage/project_tree_flat_anchor_list.jinja +0 -0
  319. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/requirements_coverage/requirement.jinja.html +0 -0
  320. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/requirements_coverage/resizable_bar_with_project_tree.jinja +0 -0
  321. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/source_file_coverage/index.jinja +0 -0
  322. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/source_file_coverage/main.jinja +0 -0
  323. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/source_file_view/aside.jinja +0 -0
  324. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/source_file_view/header__source_file_name.jinja +0 -0
  325. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/source_file_view/index.jinja +0 -0
  326. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/source_file_view/main.jinja +0 -0
  327. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/screens/source_file_view/requirement.jinja +0 -0
  328. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/templates/websocket.jinja.html +0 -0
  329. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/tools/__init__.py +0 -0
  330. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/html/tools/html_embedded.py +0 -0
  331. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/rst/__init__.py +0 -0
  332. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/rst/directives/wildcard_enhanced_image.py +0 -0
  333. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/rst/document_rst_generator.py +0 -0
  334. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/rst/rst_templates.py +0 -0
  335. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/rst/rst_to_html_fragment_writer.py +0 -0
  336. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/rst/templates/requirement.jinja.rst +0 -0
  337. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/export/rst/writer.py +0 -0
  338. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/__init__.py +0 -0
  339. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/auto_described.py +0 -0
  340. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/file_modification_time.py +0 -0
  341. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/file_system.py +0 -0
  342. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/math.py +0 -0
  343. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/parallelizer.py +0 -0
  344. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/pickle.py +0 -0
  345. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/rst.py +0 -0
  346. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/sorting.py +0 -0
  347. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/string.py +0 -0
  348. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/textx.py +0 -0
  349. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/helpers/timing.py +0 -0
  350. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/server/__init__.py +0 -0
  351. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/server/app.py +0 -0
  352. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/server/config.py +0 -0
  353. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/server/error_object.py +0 -0
  354. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/server/main.py +0 -0
  355. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/server/routers/main_router.py +0 -0
  356. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/strictdoc/server/server.py +0 -0
  357. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/tasks.py +0 -0
  358. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/tasks_wine.py +0 -0
  359. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/tools/confluence_html_table_import.py +0 -0
  360. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/tools/link_health.py +0 -0
  361. {strictdoc-0.0.42a2 → strictdoc-0.0.42a5}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strictdoc
3
- Version: 0.0.42a2
3
+ Version: 0.0.42a5
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/
@@ -9,6 +9,8 @@ ruff
9
9
 
10
10
  # Unit tests
11
11
  pytest>=6.2.2
12
+ # Pytest fixture that provides fake file system for testing code that accesses
13
+ # file systems.
12
14
  pyfakefs>=4.5.5
13
15
  coverage>=5.4
14
16
  # httpx is needed for running server-related unit tests.
@@ -1,6 +1,6 @@
1
1
  from strictdoc.core.environment import SDocRuntimeEnvironment
2
2
 
3
- __version__ = "0.0.42a2"
3
+ __version__ = "0.0.42a5"
4
4
 
5
5
 
6
6
  environment = SDocRuntimeEnvironment(__file__)
@@ -11,6 +11,7 @@ from strictdoc.core.file_tree import (
11
11
  FileTree,
12
12
  PathFinder,
13
13
  )
14
+ from strictdoc.core.project_config import ProjectConfig
14
15
  from strictdoc.helpers.textx import drop_textx_meta
15
16
  from strictdoc.helpers.timing import measure_performance, timing_decorator
16
17
 
@@ -18,7 +19,9 @@ from strictdoc.helpers.timing import measure_performance, timing_decorator
18
19
  class DocumentFinder:
19
20
  @staticmethod
20
21
  @timing_decorator("Find and read SDoc files")
21
- def find_sdoc_content(config: ExportCommandConfig, parallelizer):
22
+ def find_sdoc_content(
23
+ config: ExportCommandConfig, project_config: ProjectConfig, parallelizer
24
+ ):
22
25
  for paths_to_files_or_doc in config.input_paths:
23
26
  if not os.path.exists(paths_to_files_or_doc):
24
27
  sys.stdout.flush()
@@ -30,7 +33,9 @@ class DocumentFinder:
30
33
  print(err) # noqa: T201
31
34
  sys.exit(1)
32
35
 
33
- file_tree, asset_dirs = DocumentFinder._build_file_tree(config)
36
+ file_tree, asset_dirs = DocumentFinder._build_file_tree(
37
+ config, project_config=project_config
38
+ )
34
39
  document_tree = DocumentFinder._build_document_tree(
35
40
  file_tree, config.output_html_root, parallelizer
36
41
  )
@@ -118,7 +123,9 @@ class DocumentFinder:
118
123
  )
119
124
 
120
125
  @staticmethod
121
- def _build_file_tree(config: ExportCommandConfig):
126
+ def _build_file_tree(
127
+ config: ExportCommandConfig, project_config: ProjectConfig
128
+ ):
122
129
  asset_dirs = []
123
130
  root_trees = []
124
131
 
@@ -171,6 +178,8 @@ class DocumentFinder:
171
178
  root_path=path_to_doc_root,
172
179
  ignored_dirs=[config.output_dir],
173
180
  extensions=[".sdoc"],
181
+ include_paths=project_config.include_doc_paths,
182
+ exclude_paths=project_config.exclude_doc_paths,
174
183
  )
175
184
  root_trees.append(file_tree_structure)
176
185
 
@@ -1,7 +1,9 @@
1
1
  import collections
2
+ import functools
2
3
  import os
3
4
  from typing import Dict, List, Optional
4
5
 
6
+ from strictdoc.helpers.path_filter import PathFilter
5
7
  from strictdoc.helpers.sorting import alphanumeric_sort
6
8
 
7
9
 
@@ -28,6 +30,7 @@ class File(FileOrFolderEntry):
28
30
  self.full_path = full_path
29
31
  self.root_path = full_path
30
32
  self.rel_path = rel_path
33
+ self.file_name = os.path.basename(self.full_path)
31
34
  self.files = [self]
32
35
  self.subfolder_trees = []
33
36
 
@@ -44,7 +47,7 @@ class File(FileOrFolderEntry):
44
47
  return self.level
45
48
 
46
49
  def get_file_name(self) -> str:
47
- return os.path.basename(self.full_path)
50
+ return self.file_name
48
51
 
49
52
  def get_folder_path(self) -> str:
50
53
  return os.path.dirname(self.full_path)
@@ -63,8 +66,8 @@ class Folder(FileOrFolderEntry): # pylint: disable=too-many-instance-attributes
63
66
  self.rel_path: str = rel_path if rel_path != "." else ""
64
67
  self.folder_name: str = os.path.basename(os.path.normpath(root_path))
65
68
  self.level = level
66
- self.files = []
67
- self.subfolder_trees = []
69
+ self.files: List[File] = []
70
+ self.subfolder_trees: List[Folder] = []
68
71
  self.parent_folder: Optional[Folder] = None
69
72
  self.has_sdoc_content = False
70
73
 
@@ -150,12 +153,24 @@ class FileTree:
150
153
  class FileFinder:
151
154
  @staticmethod
152
155
  def find_files_with_extensions(
153
- *, root_path: str, ignored_dirs: List[str], extensions: List[str]
156
+ *,
157
+ root_path: str,
158
+ ignored_dirs: List[str],
159
+ extensions: List[str],
160
+ include_paths: List[str],
161
+ exclude_paths: List[str],
154
162
  ):
155
163
  assert os.path.isdir(root_path)
156
164
  assert os.path.isabs(root_path)
157
165
  assert isinstance(extensions, list), extensions
158
166
 
167
+ extensions_tuple = tuple(extensions)
168
+ path_filter_includes = PathFilter(
169
+ include_paths, positive_or_negative=True
170
+ )
171
+ path_filter_excludes = PathFilter(
172
+ exclude_paths, positive_or_negative=False
173
+ )
159
174
  root_level: int = root_path.count(os.sep)
160
175
 
161
176
  root_folder: Folder = Folder(root_path, ".", 0)
@@ -169,16 +184,12 @@ class FileFinder:
169
184
  dirs[:] = [
170
185
  d
171
186
  for d in dirs
172
- if (
173
- not d.startswith(".")
174
- and not d.startswith("_")
175
- and "tests" not in d
176
- and "integration" not in d
177
- )
187
+ if (not d.startswith(".") and not d.startswith("_"))
178
188
  ]
179
189
  dirs.sort(key=alphanumeric_sort)
180
190
 
181
191
  rel_path = os.path.relpath(current_root_path, start=root_path)
192
+ rel_path = rel_path if rel_path != "." else ""
182
193
 
183
194
  current_root_path_level: int = (
184
195
  current_root_path.count(os.sep) - root_level
@@ -189,18 +200,33 @@ class FileFinder:
189
200
  Folder(current_root_path, rel_path, current_root_path_level),
190
201
  )
191
202
 
192
- def filter_source_files(_files):
193
- _source_files = []
194
- for file in _files:
195
- for file_extension in extensions:
196
- if file.endswith(file_extension):
197
- _source_files.append(file)
198
- return _source_files
199
-
200
- files = filter_source_files(files)
201
- files.sort(key=alphanumeric_sort)
202
- current_tree.set(files)
203
- if len(files) > 0:
203
+ for file in files:
204
+ if not file.endswith(extensions_tuple):
205
+ continue
206
+ full_file_path = os.path.join(current_root_path, file)
207
+ rel_file_path = os.path.join(rel_path, file)
208
+
209
+ if path_filter_excludes.match(rel_file_path):
210
+ continue
211
+
212
+ if path_filter_includes.match(rel_file_path):
213
+ current_tree.files.append(
214
+ File(
215
+ current_tree.level + 1,
216
+ full_file_path,
217
+ rel_file_path,
218
+ )
219
+ )
220
+
221
+ def file_path_sort_key(lhs: File, rhs: File):
222
+ return (rhs.file_name < lhs.file_name) - (
223
+ lhs.file_name < rhs.file_name
224
+ )
225
+
226
+ sort_key = functools.cmp_to_key(file_path_sort_key)
227
+ current_tree.files.sort(key=sort_key)
228
+
229
+ if len(current_tree.files) > 0:
204
230
  current_tree.has_sdoc_content = True
205
231
 
206
232
  if current_root_path == root_path:
@@ -5,6 +5,7 @@ from typing import List
5
5
 
6
6
  from strictdoc.cli.cli_arg_parser import ExportCommandConfig
7
7
  from strictdoc.core.file_tree import File, FileFinder
8
+ from strictdoc.core.project_config import ProjectConfig
8
9
  from strictdoc.core.source_tree import SourceTree
9
10
  from strictdoc.helpers.auto_described import auto_described
10
11
 
@@ -90,7 +91,10 @@ class SourceFile: # pylint: disable=too-many-instance-attributes
90
91
 
91
92
  class SourceFilesFinder:
92
93
  @staticmethod
93
- def find_source_files(config: ExportCommandConfig) -> SourceTree:
94
+ def find_source_files(
95
+ config: ExportCommandConfig,
96
+ project_config: ProjectConfig,
97
+ ) -> SourceTree:
94
98
  map_file_to_source = {}
95
99
  found_source_files: List[SourceFile] = []
96
100
 
@@ -107,6 +111,8 @@ class SourceFilesFinder:
107
111
  root_path=doctree_root_abs_path,
108
112
  ignored_dirs=[config.output_dir],
109
113
  extensions=SourceFileType.all(),
114
+ include_paths=project_config.include_source_paths,
115
+ exclude_paths=project_config.exclude_source_paths,
110
116
  )
111
117
  root_level = doctree_root_abs_path.count(os.sep)
112
118
 
@@ -6,6 +6,7 @@ from typing import List
6
6
  import toml
7
7
 
8
8
  from strictdoc.helpers.auto_described import auto_described
9
+ from strictdoc.helpers.path_filter import validate_mask
9
10
 
10
11
 
11
12
  class ProjectFeature(str, Enum):
@@ -28,7 +29,7 @@ class ProjectFeature(str, Enum):
28
29
 
29
30
 
30
31
  @auto_described
31
- class ProjectConfig:
32
+ class ProjectConfig: # pylint: disable=too-many-instance-attributes
32
33
  DEFAULT_PROJECT_TITLE = "Untitled Project"
33
34
  DEFAULT_DIR_FOR_SDOC_ASSETS = "_static"
34
35
  DEFAULT_FEATURES: List[str] = [
@@ -46,12 +47,20 @@ class ProjectConfig:
46
47
  project_features: List[str],
47
48
  server_host: str,
48
49
  server_port: int,
50
+ include_doc_paths: List[str],
51
+ exclude_doc_paths: List[str],
52
+ include_source_paths: List[str],
53
+ exclude_source_paths: List[str],
49
54
  ):
50
55
  self.project_title: str = project_title
51
56
  self.dir_for_sdoc_assets: str = dir_for_sdoc_assets
52
57
  self.project_features: List[str] = project_features
53
58
  self.server_host: str = server_host
54
59
  self.server_port: int = server_port
60
+ self.include_doc_paths: List[str] = include_doc_paths
61
+ self.exclude_doc_paths: List[str] = exclude_doc_paths
62
+ self.include_source_paths: List[str] = include_source_paths
63
+ self.exclude_source_paths: List[str] = exclude_source_paths
55
64
 
56
65
  @staticmethod
57
66
  def default_config():
@@ -61,6 +70,10 @@ class ProjectConfig:
61
70
  project_features=ProjectConfig.DEFAULT_FEATURES,
62
71
  server_host=ProjectConfig.DEFAULT_SERVER_HOST,
63
72
  server_port=ProjectConfig.DEFAULT_SERVER_PORT,
73
+ include_doc_paths=[],
74
+ exclude_doc_paths=[],
75
+ include_source_paths=[],
76
+ exclude_source_paths=[],
64
77
  )
65
78
 
66
79
  def is_feature_activated(self, feature: ProjectFeature):
@@ -124,6 +137,10 @@ class ProjectConfigLoader:
124
137
  project_features = ProjectConfig.DEFAULT_FEATURES
125
138
  server_host = ProjectConfig.DEFAULT_SERVER_HOST
126
139
  server_port = ProjectConfig.DEFAULT_SERVER_PORT
140
+ include_doc_paths = []
141
+ exclude_doc_paths = []
142
+ include_source_paths = []
143
+ exclude_source_paths = []
127
144
 
128
145
  if "project" in config_dict:
129
146
  project_content = config_dict["project"]
@@ -147,6 +164,62 @@ class ProjectConfigLoader:
147
164
  )
148
165
  sys.exit(1)
149
166
 
167
+ include_doc_paths = project_content.get(
168
+ "include_doc_paths", include_doc_paths
169
+ )
170
+ assert isinstance(include_doc_paths, list)
171
+ for include_doc_path in include_doc_paths:
172
+ try:
173
+ validate_mask(include_doc_path)
174
+ except SyntaxError as exception:
175
+ print( # noqa: T201
176
+ f"error: strictdoc.toml: 'include_doc_paths': "
177
+ f"{exception} Provided string: '{include_doc_path}'."
178
+ )
179
+ sys.exit(1)
180
+
181
+ exclude_doc_paths = project_content.get(
182
+ "exclude_doc_paths", exclude_doc_paths
183
+ )
184
+ assert isinstance(exclude_doc_paths, list)
185
+ for exclude_doc_path in exclude_doc_paths:
186
+ try:
187
+ validate_mask(exclude_doc_path)
188
+ except SyntaxError as exception:
189
+ print( # noqa: T201
190
+ f"error: strictdoc.toml: 'exclude_doc_paths': "
191
+ f"{exception} Provided string: '{exclude_doc_path}'."
192
+ )
193
+ sys.exit(1)
194
+
195
+ include_source_paths = project_content.get(
196
+ "include_source_paths", include_source_paths
197
+ )
198
+ assert isinstance(include_source_paths, list)
199
+ for include_source_path in include_source_paths:
200
+ try:
201
+ validate_mask(include_source_path)
202
+ except SyntaxError as exception:
203
+ print( # noqa: T201
204
+ f"error: strictdoc.toml: 'include_source_paths': "
205
+ f"{exception} Provided string: '{include_source_path}'."
206
+ )
207
+ sys.exit(1)
208
+
209
+ exclude_source_paths = project_content.get(
210
+ "exclude_source_paths", exclude_source_paths
211
+ )
212
+ assert isinstance(exclude_source_paths, list)
213
+ for exclude_source_path in exclude_source_paths:
214
+ try:
215
+ validate_mask(exclude_source_path)
216
+ except SyntaxError as exception:
217
+ print( # noqa: T201
218
+ f"error: strictdoc.toml: 'exclude_source_paths': "
219
+ f"{exception} Provided string: '{exclude_source_path}'."
220
+ )
221
+ sys.exit(1)
222
+
150
223
  if "server" in config_dict:
151
224
  # FIXME: Introduce at least a basic validation for the host/port.
152
225
  server_content = config_dict["server"]
@@ -162,4 +235,8 @@ class ProjectConfigLoader:
162
235
  project_features=project_features,
163
236
  server_host=server_host,
164
237
  server_port=server_port,
238
+ include_doc_paths=include_doc_paths,
239
+ exclude_doc_paths=exclude_doc_paths,
240
+ include_source_paths=include_source_paths,
241
+ exclude_source_paths=exclude_source_paths,
165
242
  )
@@ -65,7 +65,7 @@ class TraceabilityIndexBuilder:
65
65
  )
66
66
 
67
67
  document_tree, asset_dirs = DocumentFinder.find_sdoc_content(
68
- config, parallelizer
68
+ config, project_config=project_config, parallelizer=parallelizer
69
69
  )
70
70
 
71
71
  # TODO: This is rather messy but it is better than it used to be.
@@ -135,7 +135,7 @@ class TraceabilityIndexBuilder:
135
135
  or config.experimental_enable_file_traceability
136
136
  ):
137
137
  source_tree: SourceTree = SourceFilesFinder.find_source_files(
138
- config
138
+ config, project_config=project_config
139
139
  )
140
140
  source_files = source_tree.source_files
141
141
  source_file: SourceFile
@@ -233,8 +233,8 @@ class TraceabilityIndexBuilder:
233
233
  "error: DocumentIndex: "
234
234
  "two nodes with the same UID "
235
235
  "exist in two different documents: "
236
- f'{node.reserved_uid} in "{document.title}" and '
237
- f'"{other_req_doc.title}".'
236
+ f'{node.reserved_uid} in "{other_req_doc.title}" '
237
+ f'and "{document.title}".'
238
238
  )
239
239
  sys.exit(1)
240
240
  d_02_requirements_map[
@@ -0,0 +1,76 @@
1
+ import re
2
+ from typing import List
3
+
4
+ REGEX_NAME_PART = r"[A-Za-z0-9-_\.]+"
5
+ REGEX_FILENAME = rf"{REGEX_NAME_PART}"
6
+ REGEX_FOLDER = rf"{REGEX_NAME_PART}"
7
+
8
+ REGEX_WILDCARD = REGEX_FILENAME
9
+ # FIXME: This does the job but most probably could be simplified.
10
+ REGEX_DOUBLE_WILDCARD = (
11
+ rf"(\\|\/)?({REGEX_NAME_PART})?((\\|\/){REGEX_NAME_PART})*(\\|\/)?"
12
+ )
13
+
14
+ REGEX_MASK_VALIDATION = rf"[^(\\|\/)]{REGEX_DOUBLE_WILDCARD}"
15
+
16
+ MOST_COMMON_CHARACTERS = ("[", "]", "(", ")", "{", "}", "?", "+", "!")
17
+
18
+
19
+ def validate_mask(mask: str):
20
+ if mask == "":
21
+ raise SyntaxError("Path mask must not be empty.")
22
+
23
+ if not mask[0].isalnum() and mask[0] != "*":
24
+ raise SyntaxError(
25
+ "Path mask must start with an alphanumeric character or "
26
+ "a wildcard symbol '*'."
27
+ )
28
+
29
+ if "//" in mask or "\\\\" in mask:
30
+ raise SyntaxError("Path mask must not contain double slashes.")
31
+
32
+ if "***" in mask:
33
+ raise SyntaxError("Invalid wildcard: '***'.")
34
+
35
+ for regex_symbol in MOST_COMMON_CHARACTERS:
36
+ if regex_symbol in mask:
37
+ raise SyntaxError(
38
+ f"Path mask must not contain any of the special characters: "
39
+ f"{MOST_COMMON_CHARACTERS}."
40
+ )
41
+
42
+
43
+ def compile_regex_mask(path_mask: str) -> str:
44
+ regex_mask = path_mask
45
+ regex_mask = regex_mask.replace(".", "\\.")
46
+ regex_mask = regex_mask.replace("**", "XXXX")
47
+ regex_mask = regex_mask.replace("*", REGEX_WILDCARD)
48
+ regex_mask = regex_mask.replace("XXXX", REGEX_DOUBLE_WILDCARD)
49
+ # Support files like "file1.py" and "./file1.py"
50
+ regex_mask = "^" + "(\\.\\/)?" + regex_mask + "$" # noqa: ISC003
51
+ return regex_mask
52
+
53
+
54
+ class PathFilter:
55
+ def __init__(self, filtered_paths: List[str], positive_or_negative: bool):
56
+ self.filtered_paths: List[str] = filtered_paths
57
+ self.compiled_regex_masks: List[str] = []
58
+ for filtered_path in filtered_paths:
59
+ validate_mask(filtered_path)
60
+ self.compiled_regex_masks.append(compile_regex_mask(filtered_path))
61
+ self.positive_or_negative: bool = positive_or_negative
62
+
63
+ def match(self, found_path: str) -> bool:
64
+ # If this is an empty positive filter, we want to match everything
65
+ # positively. If this is an empty negative filter, we want to match
66
+ # everything negatively.
67
+ if len(self.filtered_paths) == 0:
68
+ return self.positive_or_negative
69
+
70
+ portable_found_path = found_path.replace("\\", "/")
71
+ for regex_mask in self.compiled_regex_masks:
72
+ regex_match = re.match(regex_mask, portable_found_path)
73
+ if regex_match is not None:
74
+ return True
75
+
76
+ return False
@@ -0,0 +1,24 @@
1
+ [project]
2
+ title = "StrictDoc Documentation"
3
+ html_assets_strictdoc_dir = "assets"
4
+
5
+ features = [
6
+ "TABLE_SCREEN",
7
+ "TRACEABILITY_SCREEN",
8
+ "DEEP_TRACEABILITY_SCREEN",
9
+ # "REQUIREMENT_TO_SOURCE_TRACEABILITY"
10
+ ]
11
+
12
+ include_doc_paths = [
13
+ "docs/**"
14
+ ]
15
+
16
+ exclude_doc_paths = [
17
+ "tests/**"
18
+ ]
19
+
20
+ include_source_paths = [
21
+ "strictdoc/**"
22
+ ]
23
+
24
+ exclude_source_paths = []
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes