reqstool 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. reqstool-0.3.0/.github/dependabot.yml +19 -0
  2. reqstool-0.3.0/.github/workflows/build.yml +40 -0
  3. reqstool-0.3.0/.github/workflows/check_release.yml +11 -0
  4. reqstool-0.3.0/.github/workflows/lint.yml +21 -0
  5. reqstool-0.3.0/.github/workflows/publish_gh_pages.yml +47 -0
  6. reqstool-0.3.0/.github/workflows/publish_pypi_prod.yml +37 -0
  7. reqstool-0.3.0/.github/workflows/publish_pypi_test.yml +32 -0
  8. reqstool-0.3.0/.gitignore +219 -0
  9. reqstool-0.3.0/LICENSE +21 -0
  10. reqstool-0.3.0/PKG-INFO +76 -0
  11. reqstool-0.3.0/README.md +51 -0
  12. reqstool-0.3.0/docs/antora-playbook.yml +22 -0
  13. reqstool-0.3.0/docs/antora.yml +7 -0
  14. reqstool-0.3.0/docs/examples/requirements/manual_verification_results.yml +7 -0
  15. reqstool-0.3.0/docs/examples/requirements/requirements_external.yml +21 -0
  16. reqstool-0.3.0/docs/examples/requirements/requirements_microservice.yml +61 -0
  17. reqstool-0.3.0/docs/examples/requirements/requirements_system.yml +64 -0
  18. reqstool-0.3.0/docs/examples/requirements/software_verification_cases.yml +22 -0
  19. reqstool-0.3.0/docs/modules/ROOT/nav.adoc +11 -0
  20. reqstool-0.3.0/docs/modules/ROOT/pages/background.adoc +7 -0
  21. reqstool-0.3.0/docs/modules/ROOT/pages/data.adoc +203 -0
  22. reqstool-0.3.0/docs/modules/ROOT/pages/file_and_directory_set.adoc +71 -0
  23. reqstool-0.3.0/docs/modules/ROOT/pages/how_it_works.adoc +142 -0
  24. reqstool-0.3.0/docs/modules/ROOT/pages/index.adoc +27 -0
  25. reqstool-0.3.0/docs/modules/ROOT/pages/installation.adoc +13 -0
  26. reqstool-0.3.0/docs/modules/ROOT/pages/overview.adoc +11 -0
  27. reqstool-0.3.0/docs/modules/ROOT/pages/quickstart.adoc +7 -0
  28. reqstool-0.3.0/docs/modules/ROOT/pages/terminology.adoc +12 -0
  29. reqstool-0.3.0/docs/modules/ROOT/pages/usage.adoc +65 -0
  30. reqstool-0.3.0/docs/modules/ROOT/partials/C4_Component.puml +78 -0
  31. reqstool-0.3.0/docs/modules/ROOT/partials/C4_Sequence.puml +392 -0
  32. reqstool-0.3.0/docs/modules/examples/partials/requirements/manual_verification_results.yml +7 -0
  33. reqstool-0.3.0/docs/modules/examples/partials/requirements/reqstool_config.yml +11 -0
  34. reqstool-0.3.0/docs/modules/examples/partials/requirements/requirements_external.yml +22 -0
  35. reqstool-0.3.0/docs/modules/examples/partials/requirements/requirements_microservice.yml +67 -0
  36. reqstool-0.3.0/docs/modules/examples/partials/requirements/requirements_system.yml +68 -0
  37. reqstool-0.3.0/docs/modules/examples/partials/requirements/software_verification_cases.yml +22 -0
  38. reqstool-0.3.0/pyproject.toml +71 -0
  39. reqstool-0.3.0/src/reqstool/__init__.py +0 -0
  40. reqstool-0.3.0/src/reqstool/command.py +235 -0
  41. reqstool-0.3.0/src/reqstool/commands/exit_codes.py +2 -0
  42. reqstool-0.3.0/src/reqstool/commands/generate_json/generate_json.py +76 -0
  43. reqstool-0.3.0/src/reqstool/commands/report/report.py +269 -0
  44. reqstool-0.3.0/src/reqstool/commands/report/templates/annotation_impls.j2 +10 -0
  45. reqstool-0.3.0/src/reqstool/commands/report/templates/annotation_tests.j2 +12 -0
  46. reqstool-0.3.0/src/reqstool/commands/report/templates/mvrs.j2 +21 -0
  47. reqstool-0.3.0/src/reqstool/commands/report/templates/report.j2 +13 -0
  48. reqstool-0.3.0/src/reqstool/commands/report/templates/req_references.j2 +18 -0
  49. reqstool-0.3.0/src/reqstool/commands/report/templates/requirements.j2 +12 -0
  50. reqstool-0.3.0/src/reqstool/commands/report/templates/svcs.j2 +26 -0
  51. reqstool-0.3.0/src/reqstool/commands/report/templates/total_statistics.j2 +23 -0
  52. reqstool-0.3.0/src/reqstool/commands/status/statistics_container.py +74 -0
  53. reqstool-0.3.0/src/reqstool/commands/status/statistics_generator.py +292 -0
  54. reqstool-0.3.0/src/reqstool/commands/status/status.py +158 -0
  55. reqstool-0.3.0/src/reqstool/common/dataclasses/urn_id.py +27 -0
  56. reqstool-0.3.0/src/reqstool/common/utils.py +282 -0
  57. reqstool-0.3.0/src/reqstool/common/validator_error_holder.py +27 -0
  58. reqstool-0.3.0/src/reqstool/common/validators/semantic_validator.py +265 -0
  59. reqstool-0.3.0/src/reqstool/common/validators/syntax_validator.py +62 -0
  60. reqstool-0.3.0/src/reqstool/expression_languages/generic_el.py +106 -0
  61. reqstool-0.3.0/src/reqstool/expression_languages/requirements_el.py +9 -0
  62. reqstool-0.3.0/src/reqstool/expression_languages/svcs_el.py +9 -0
  63. reqstool-0.3.0/src/reqstool/filters/id_filters.py +22 -0
  64. reqstool-0.3.0/src/reqstool/filters/requirements_filters.py +10 -0
  65. reqstool-0.3.0/src/reqstool/filters/svcs_filters.py +10 -0
  66. reqstool-0.3.0/src/reqstool/location_resolver/location_resolver.py +44 -0
  67. reqstool-0.3.0/src/reqstool/locations/git_location.py +36 -0
  68. reqstool-0.3.0/src/reqstool/locations/local_location.py +24 -0
  69. reqstool-0.3.0/src/reqstool/locations/location.py +21 -0
  70. reqstool-0.3.0/src/reqstool/locations/maven_location.py +57 -0
  71. reqstool-0.3.0/src/reqstool/model_generators/annotations_model_generator.py +52 -0
  72. reqstool-0.3.0/src/reqstool/model_generators/combined_indexed_dataset_generator.py +642 -0
  73. reqstool-0.3.0/src/reqstool/model_generators/combined_raw_datasets_generator.py +279 -0
  74. reqstool-0.3.0/src/reqstool/model_generators/mvrs_model_generator.py +51 -0
  75. reqstool-0.3.0/src/reqstool/model_generators/requirements_model_generator.py +320 -0
  76. reqstool-0.3.0/src/reqstool/model_generators/svcs_model_generator.py +110 -0
  77. reqstool-0.3.0/src/reqstool/model_generators/testdata_model_generator.py +65 -0
  78. reqstool-0.3.0/src/reqstool/models/annotations.py +18 -0
  79. reqstool-0.3.0/src/reqstool/models/combined_indexed_dataset.py +53 -0
  80. reqstool-0.3.0/src/reqstool/models/implementations.py +25 -0
  81. reqstool-0.3.0/src/reqstool/models/imports.py +25 -0
  82. reqstool-0.3.0/src/reqstool/models/mvrs.py +19 -0
  83. reqstool-0.3.0/src/reqstool/models/raw_datasets.py +31 -0
  84. reqstool-0.3.0/src/reqstool/models/requirements.py +67 -0
  85. reqstool-0.3.0/src/reqstool/models/svcs.py +36 -0
  86. reqstool-0.3.0/src/reqstool/models/test_data.py +26 -0
  87. reqstool-0.3.0/src/reqstool/reqstool_config/reqstool_config.py +59 -0
  88. reqstool-0.3.0/src/reqstool/requirements_indata/java/java_maven_requirements_indata_paths.py +25 -0
  89. reqstool-0.3.0/src/reqstool/requirements_indata/requirements_indata.py +97 -0
  90. reqstool-0.3.0/src/reqstool/requirements_indata/requirements_indata_paths.py +58 -0
  91. reqstool-0.3.0/src/reqstool/resources/schemas/v1/annotations.schema.json +71 -0
  92. reqstool-0.3.0/src/reqstool/resources/schemas/v1/common.schema.json +267 -0
  93. reqstool-0.3.0/src/reqstool/resources/schemas/v1/manual_verification_results.schema.json +51 -0
  94. reqstool-0.3.0/src/reqstool/resources/schemas/v1/reqstool_config.schema.json +51 -0
  95. reqstool-0.3.0/src/reqstool/resources/schemas/v1/requirements.schema.json +300 -0
  96. reqstool-0.3.0/src/reqstool/resources/schemas/v1/software_verification_cases.schema.json +76 -0
  97. reqstool-0.3.0/tests/integration/reqstool/model_generators/test_included_models_generator.py +58 -0
  98. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/baseline/ms-101/annotations.yml +17 -0
  99. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/baseline/ms-101/manual_verification_results.yml +11 -0
  100. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/baseline/ms-101/requirements.yml +43 -0
  101. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/baseline/ms-101/software_verification_cases.yml +30 -0
  102. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/baseline/ms-101/test_results/failsafe/TEST-com.example.RequirementsExampleTestsIT.xml +107 -0
  103. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/baseline/ms-101/test_results/surefire/TEST-com.example.RequirementsExampleTests.xml +93 -0
  104. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/layout_maven/ms-101/pom.xml +78 -0
  105. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/layout_maven/ms-101/src/resources/docs/requirements/manual_verification_results.yml +1 -0
  106. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/layout_maven/ms-101/src/resources/docs/requirements/requirements.yml +1 -0
  107. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/layout_maven/ms-101/src/resources/docs/requirements/software_verification_cases.yml +1 -0
  108. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/with_requirements_config/ms-101/manual_verification_results.yml +1 -0
  109. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/with_requirements_config/ms-101/reqstool_config.yml +11 -0
  110. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/with_requirements_config/ms-101/requirements.yml +1 -0
  111. reqstool-0.3.0/tests/resources/test_data/data/local/test_basic/with_requirements_config/ms-101/software_verification_cases.yml +1 -0
  112. reqstool-0.3.0/tests/resources/test_data/data/local/test_errors/ms-101/annotations.yml +17 -0
  113. reqstool-0.3.0/tests/resources/test_data/data/local/test_errors/ms-101/errors.adoc +6 -0
  114. reqstool-0.3.0/tests/resources/test_data/data/local/test_errors/ms-101/manual_verification_results.yml +11 -0
  115. reqstool-0.3.0/tests/resources/test_data/data/local/test_errors/ms-101/requirements.yml +43 -0
  116. reqstool-0.3.0/tests/resources/test_data/data/local/test_errors/ms-101/software_verification_cases.yml +30 -0
  117. reqstool-0.3.0/tests/resources/test_data/data/local/test_errors/ms-101/test_results/failsafe/TEST-com.example.RequirementsExampleTestsIT.xml +107 -0
  118. reqstool-0.3.0/tests/resources/test_data/data/local/test_errors/ms-101/test_results/surefire/TEST-com.example.RequirementsExampleTests.xml +93 -0
  119. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/ms-001/annotations.yml +30 -0
  120. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/ms-001/manual_verification_results.yml +6 -0
  121. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/ms-001/requirements.yml +38 -0
  122. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/ms-001/software_verification_cases.yml +26 -0
  123. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/ms-001/test_results/failsafe/TEST-com.example.RequirementsExampleTestsIT.xml +111 -0
  124. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/ms-001/test_results/surefire/TEST-com.example.RequirementsExampleTests.xml +97 -0
  125. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/sys-001/annotations.yml +10 -0
  126. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/sys-001/ext-001/requirements.yml +32 -0
  127. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/sys-001/ext-002/requirements.yml +32 -0
  128. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/sys-001/manual_verification_results.yml +12 -0
  129. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/sys-001/requirements.yml +47 -0
  130. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/sys-001/software_verification_cases.yml +47 -0
  131. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/baseline/visualization.adoc +17 -0
  132. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/empty_ms/ms-001/annotations.yml +30 -0
  133. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/empty_ms/ms-001/manual_verification_results.yml +6 -0
  134. reqstool-0.3.0/tests/resources/test_data/data/local/test_standard/empty_ms/ms-001/requirements.yml +11 -0
  135. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/ms-001/annotations.yml +1 -0
  136. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/ms-001/manual_verification_results.yml +1 -0
  137. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/ms-001/requirements.yml +1 -0
  138. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/ms-001/software_verification_cases.yml +1 -0
  139. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/sys-001/annotations.yml +1 -0
  140. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/sys-001/manual_verification_results.yml +1 -0
  141. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/sys-001/requirements.yml +52 -0
  142. reqstool-0.3.0/tests/resources/test_data/data/remote/test_standard/test_standard_maven_git/sys-001/software_verification_cases.yml +1 -0
  143. reqstool-0.3.0/tests/resources/unit/reqstool/model_generators/test_annotations_model_generator/test_annotations_model_generator/annotations.yml +30 -0
  144. reqstool-0.3.0/tests/resources/unit/reqstool/model_generators/test_mvrs_model_generator/test_mvrs_model_generator/manual_verification_results.yml +11 -0
  145. reqstool-0.3.0/tests/resources/unit/reqstool/model_generators/test_requirements_model_generator/test_external_requirements_model_generator/requirements.yml +19 -0
  146. reqstool-0.3.0/tests/resources/unit/reqstool/model_generators/test_requirements_model_generator/test_microservice_requirements_model_generator/requirements.yml +44 -0
  147. reqstool-0.3.0/tests/resources/unit/reqstool/model_generators/test_requirements_model_generator/test_rational_optional_model_generator/requirements.yml +18 -0
  148. reqstool-0.3.0/tests/resources/unit/reqstool/model_generators/test_requirements_model_generator/test_system_requirements_model_generator/requirements.yml +84 -0
  149. reqstool-0.3.0/tests/resources/unit/reqstool/model_generators/test_svcs_model_generator/test_svcs_model_generator/software_verification_cases.yml +16 -0
  150. reqstool-0.3.0/tests/unit/conftest.py +75 -0
  151. reqstool-0.3.0/tests/unit/reqstool/commands/generate_json/test_generate_json.py +12 -0
  152. reqstool-0.3.0/tests/unit/reqstool/commands/report/test_report.py +19 -0
  153. reqstool-0.3.0/tests/unit/reqstool/commands/status/test_statistics_container.py +74 -0
  154. reqstool-0.3.0/tests/unit/reqstool/commands/status/test_statistics_generator.py +463 -0
  155. reqstool-0.3.0/tests/unit/reqstool/commands/status/test_status.py +23 -0
  156. reqstool-0.3.0/tests/unit/reqstool/common/test_locations.py +56 -0
  157. reqstool-0.3.0/tests/unit/reqstool/common/test_utils.py +17 -0
  158. reqstool-0.3.0/tests/unit/reqstool/common/validators/test_semantic_validator.py +203 -0
  159. reqstool-0.3.0/tests/unit/reqstool/expression_languages/test_requirements_el.py +125 -0
  160. reqstool-0.3.0/tests/unit/reqstool/expression_languages/test_svcs_el.py +108 -0
  161. reqstool-0.3.0/tests/unit/reqstool/locations/test_git_location.py +31 -0
  162. reqstool-0.3.0/tests/unit/reqstool/locations/test_local_location.py +12 -0
  163. reqstool-0.3.0/tests/unit/reqstool/model_generators/test_annotations_model_generator.py +55 -0
  164. reqstool-0.3.0/tests/unit/reqstool/model_generators/test_combined_indexed_dataset_generator.py +65 -0
  165. reqstool-0.3.0/tests/unit/reqstool/model_generators/test_combined_raw_datasets_generator.py +44 -0
  166. reqstool-0.3.0/tests/unit/reqstool/model_generators/test_mvrs_model_generator.py +37 -0
  167. reqstool-0.3.0/tests/unit/reqstool/model_generators/test_requirements_model_generator.py +223 -0
  168. reqstool-0.3.0/tests/unit/reqstool/model_generators/test_svcs_model_generator.py +48 -0
  169. reqstool-0.3.0/tests/unit/reqstool/model_generators/test_testdata_model_generator.py +40 -0
  170. reqstool-0.3.0/tests/unit/reqstool/models/test_annotations.py +28 -0
  171. reqstool-0.3.0/tests/unit/reqstool/models/test_implementations.py +75 -0
  172. reqstool-0.3.0/tests/unit/reqstool/models/test_imports.py +67 -0
  173. reqstool-0.3.0/tests/unit/reqstool/models/test_mvrs.py +43 -0
  174. reqstool-0.3.0/tests/unit/reqstool/models/test_requirements.py +67 -0
  175. reqstool-0.3.0/tests/unit/reqstool/models/test_svcs.py +93 -0
  176. reqstool-0.3.0/tests/unit/reqstool/reqstool_config/test_reqstool_config.py +70 -0
  177. reqstool-0.3.0/tests/unit/reqstool/requirements_indata/test_requirements_indata_paths.py +53 -0
  178. reqstool-0.3.0/tests/unit/reqstool/resources/schemas/v1/test_json_schemas.py +30 -0
@@ -0,0 +1,19 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "pip" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "daily"
12
+ - package-ecosystem: "maven" # See documentation for possible values
13
+ directory: "/data/local/test_basic/layout_maven/ms-101" # Location of package manifests
14
+ schedule:
15
+ interval: "daily"
16
+ - package-ecosystem: "github-actions"
17
+ directory: "/"
18
+ schedule:
19
+ interval: "daily"
@@ -0,0 +1,40 @@
1
+ name: Build PyPI
2
+ on:
3
+ workflow_call:
4
+ workflow_dispatch:
5
+ push:
6
+ pull_request:
7
+ types:
8
+ - opened
9
+ - reopened
10
+ - synchronize
11
+
12
+ jobs:
13
+ linting:
14
+ name: Reuse linting job
15
+ uses: ./.github/workflows/lint.yml
16
+
17
+ build:
18
+ needs: linting
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - name: Check out source repository
22
+ uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0 #full history
25
+ - name: Set up Python
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.10"
29
+ - name: Install dependencies
30
+ run: pip install hatch
31
+ - name: Run unit and integrations tests
32
+ run: hatch run test:pytest --cov=reqstool-python-decorators --cov-report=xml --cov-report=html
33
+ - name: Build project
34
+ run: hatch build
35
+ # Upload artifacts for later use
36
+ - name: Upload Artifacts
37
+ uses: actions/upload-artifact@v4
38
+ with:
39
+ name: dist
40
+ path: dist/
@@ -0,0 +1,11 @@
1
+ name: Lint (black and flake8)
2
+ on:
3
+ workflow_call:
4
+
5
+ jobs:
6
+ check-release:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - name: Check branch and tag
10
+ if: github.event_name == 'push' && !(github.ref == 'refs/heads/main' && startsWith(github.ref, 'refs/tags/v'))
11
+ run: exit 1
@@ -0,0 +1,21 @@
1
+ name: Lint (black and flake8)
2
+ on:
3
+ workflow_dispatch:
4
+ workflow_call:
5
+
6
+ jobs:
7
+ linting:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - name: Check out source repository
11
+ uses: actions/checkout@v4
12
+ - name: Set up Python
13
+ uses: actions/setup-python@v5
14
+ with:
15
+ python-version: "3.10"
16
+ - name: Install pip package(s)
17
+ run: pip install hatch
18
+ - name: Run black formatter check
19
+ run: hatch run lint:black --check --verbose src tests
20
+ - name: Run flake8 linter
21
+ run: hatch run lint:flake8
@@ -0,0 +1,47 @@
1
+ name: Publish to GitHub Pages
2
+ on:
3
+ workflow_dispatch:
4
+ release:
5
+ types: [created]
6
+ push:
7
+ branches:
8
+ - main
9
+
10
+ concurrency:
11
+ group: github-pages
12
+ cancel-in-progress: false
13
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
14
+ permissions:
15
+ contents: read
16
+ pages: write
17
+ id-token: write
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ environment:
22
+ name: github-pages
23
+ url: ${{ steps.deployment.outputs.page_url }}
24
+ steps:
25
+ - name: Checkout repository
26
+ uses: actions/checkout@v4
27
+ - name: Configure Pages
28
+ uses: actions/configure-pages@v4
29
+ - name: Install Node.js
30
+ uses: actions/setup-node@v4
31
+ with:
32
+ node-version: "18"
33
+ - name: Install Antora
34
+ run: npm i antora
35
+ - name: Install Asciidoctor Kroki extension
36
+ run: npm i asciidoctor asciidoctor-kroki
37
+ - name: Generate Site
38
+ run: npx antora docs/antora-playbook.yml
39
+ - name: Create site folders
40
+ run: mkdir -p docs/build/site
41
+ - name: Upload Artifacts
42
+ uses: actions/upload-pages-artifact@v3
43
+ with:
44
+ path: docs/build/site
45
+ - name: Deploy to GitHub Pages
46
+ id: deployment
47
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,37 @@
1
+ name: Build and publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [created]
6
+
7
+ jobs:
8
+ check-release:
9
+ name: Reuse check release
10
+ uses: ./.github/workflows/check_release.yml
11
+ build:
12
+ name: Reuse build
13
+ uses: ./.github/workflows/build.yml
14
+
15
+
16
+ publish-to-pypi:
17
+ needs:
18
+ - check-release
19
+ - build
20
+ runs-on: ubuntu-latest
21
+ environment:
22
+ name: prod
23
+ url: https://pypi.org/p/reqstool-client
24
+ permissions:
25
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
26
+ steps:
27
+ # Download artifacts from the build job
28
+ - name: Download Artifacts
29
+ uses: actions/download-artifact@v4
30
+ with:
31
+ name: dist
32
+ path: dist
33
+ - name: Publish distribution 📦 to PyPI
34
+ # if: startsWith(github.ref, 'refs/tags')
35
+ uses: pypa/gh-action-pypi-publish@release/v1
36
+ with:
37
+ sign-artifacts: true
@@ -0,0 +1,32 @@
1
+ name: Build and publish to Test PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build:
8
+ name: Reuse build
9
+ uses: ./.github/workflows/build.yml
10
+
11
+ publish-to-test-pypi:
12
+ needs: build
13
+ runs-on: ubuntu-latest
14
+ # Specifying a GitHub environment is optional, but strongly encouraged
15
+ environment:
16
+ name: test
17
+ url: https://test.pypi.org/p/reqstool-client
18
+ permissions:
19
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
20
+ steps:
21
+ # Download artifacts from the build job
22
+ - name: Download Artifacts
23
+ uses: actions/download-artifact@v4
24
+ with:
25
+ name: dist
26
+ path: dist
27
+ - name: Publish distribution 📦 to Test PyPI
28
+ uses: pypa/gh-action-pypi-publish@release/v1
29
+ with:
30
+ repository-url: https://test.pypi.org/legacy/
31
+ sign-artifacts: true
32
+ skip-existing: true
@@ -0,0 +1,219 @@
1
+ # Created by https://www.toptal.com/developers/gitignore/api/java,maven,python
2
+ # Edit at https://www.toptal.com/developers/gitignore?templates=java,maven,python
3
+
4
+ ### Java ###
5
+ # Compiled class file
6
+ *.class
7
+
8
+ # Log file
9
+ *.log
10
+
11
+ # BlueJ files
12
+ *.ctxt
13
+
14
+ # Mobile Tools for Java (J2ME)
15
+ .mtj.tmp/
16
+
17
+ # Package Files #
18
+ *.jar
19
+ *.war
20
+ *.nar
21
+ *.ear
22
+ *.zip
23
+ *.tar.gz
24
+ *.rar
25
+
26
+ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
27
+ hs_err_pid*
28
+ replay_pid*
29
+
30
+ ### Maven ###
31
+ target/
32
+ pom.xml.tag
33
+ pom.xml.releaseBackup
34
+ pom.xml.versionsBackup
35
+ pom.xml.next
36
+ release.properties
37
+ dependency-reduced-pom.xml
38
+ buildNumber.properties
39
+ .mvn/timing.properties
40
+ # https://github.com/takari/maven-wrapper#usage-without-binary-jar
41
+ .mvn/wrapper/maven-wrapper.jar
42
+
43
+ # Eclipse m2e generated files
44
+ # Eclipse Core
45
+ .project
46
+ # JDT-specific (Eclipse Java Development Tools)
47
+ .classpath
48
+
49
+ ### Python ###
50
+ # Byte-compiled / optimized / DLL files
51
+ __pycache__/
52
+ *.py[cod]
53
+ *$py.class
54
+
55
+ # C extensions
56
+ *.so
57
+
58
+ # Distribution / packaging
59
+ .Python
60
+ build/
61
+ develop-eggs/
62
+ dist/
63
+ downloads/
64
+ eggs/
65
+ .eggs/
66
+ lib/
67
+ lib64/
68
+ parts/
69
+ sdist/
70
+ var/
71
+ wheels/
72
+ share/python-wheels/
73
+ *.egg-info/
74
+ .installed.cfg
75
+ *.egg
76
+ MANIFEST
77
+
78
+ # PyInstaller
79
+ # Usually these files are written by a python script from a template
80
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
81
+ *.manifest
82
+ *.spec
83
+
84
+ # Installer logs
85
+ pip-log.txt
86
+ pip-delete-this-directory.txt
87
+
88
+ # Unit test / coverage reports
89
+ htmlcov/
90
+ .tox/
91
+ .nox/
92
+ .coverage
93
+ .coverage.*
94
+ .cache
95
+ nosetests.xml
96
+ coverage.xml
97
+ *.cover
98
+ *.py,cover
99
+ .hypothesis/
100
+ .pytest_cache/
101
+ cover/
102
+
103
+ # Translations
104
+ *.mo
105
+ *.pot
106
+
107
+ # Django stuff:
108
+ local_settings.py
109
+ db.sqlite3
110
+ db.sqlite3-journal
111
+
112
+ # Flask stuff:
113
+ instance/
114
+ .webassets-cache
115
+
116
+ # Scrapy stuff:
117
+ .scrapy
118
+
119
+ # Sphinx documentation
120
+ docs/_build/
121
+
122
+ # PyBuilder
123
+ .pybuilder/
124
+
125
+ # Jupyter Notebook
126
+ .ipynb_checkpoints
127
+
128
+ # IPython
129
+ profile_default/
130
+ ipython_config.py
131
+
132
+ # pyenv
133
+ # For a library or package, you might want to ignore these files since the code is
134
+ # intended to run in multiple environments; otherwise, check them in:
135
+ # .python-version
136
+
137
+ # pipenv
138
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
139
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
140
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
141
+ # install all needed dependencies.
142
+ #Pipfile.lock
143
+
144
+ # poetry
145
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
146
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
147
+ # commonly ignored for libraries.
148
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
149
+ #poetry.lock
150
+
151
+ # pdm
152
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
153
+ #pdm.lock
154
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
155
+ # in version control.
156
+ # https://pdm.fming.dev/#use-with-ide
157
+ .pdm.toml
158
+
159
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
160
+ __pypackages__/
161
+
162
+ # Celery stuff
163
+ celerybeat-schedule
164
+ celerybeat.pid
165
+
166
+ # SageMath parsed files
167
+ *.sage.py
168
+
169
+ # Environments
170
+ .env
171
+ .venv
172
+ env/
173
+ venv/
174
+ ENV/
175
+ env.bak/
176
+ venv.bak/
177
+
178
+ # Spyder project settings
179
+ .spyderproject
180
+ .spyproject
181
+
182
+ # Rope project settings
183
+ .ropeproject
184
+
185
+ # mkdocs documentation
186
+ /site
187
+
188
+ # mypy
189
+ .mypy_cache/
190
+ .dmypy.json
191
+ dmypy.json
192
+
193
+ # Pyre type checker
194
+ .pyre/
195
+
196
+ # pytype static type analyzer
197
+ .pytype/
198
+
199
+ # Cython debug symbols
200
+ cython_debug/
201
+
202
+ # PyCharm
203
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
204
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
205
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
206
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
207
+ #.idea/
208
+
209
+ ### Python Patch ###
210
+ # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
211
+ poetry.toml
212
+
213
+ # ruff
214
+ .ruff_cache/
215
+
216
+ # LSP config files
217
+ pyrightconfig.json
218
+
219
+ # End of https://www.toptal.com/developers/gitignore/api/java,maven,python
reqstool-0.3.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 LFV
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,76 @@
1
+ Metadata-Version: 2.1
2
+ Name: reqstool
3
+ Version: 0.3.0
4
+ Summary: A tool for managing requirements with related tests and test results.
5
+ Project-URL: Source, https://github.com/Luftfartsverket/reqstool-client
6
+ Author-email: LFV <info@lfv.se>
7
+ License-File: LICENSE
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: colorama==0.4.6
13
+ Requires-Dist: jinja2==3.1.3
14
+ Requires-Dist: jsonpickle==3.0.2
15
+ Requires-Dist: jsonschema[format-nongpl]==4.21.1
16
+ Requires-Dist: lark==1.1.9
17
+ Requires-Dist: maven-artifact==0.3.4
18
+ Requires-Dist: pygit2==1.14.0
19
+ Requires-Dist: referencing==0.33.0
20
+ Requires-Dist: requests-file==2.0.0
21
+ Requires-Dist: ruamel-yaml==0.18.6
22
+ Requires-Dist: tabulate==0.9.0
23
+ Requires-Dist: xmldict==0.4.1
24
+ Description-Content-Type: text/markdown
25
+
26
+ # Reqstool Client
27
+
28
+ ## Overview
29
+
30
+ Reqstool is a tool for managing requirements with related software verification cases (aka tests) and verification results (test results).
31
+
32
+ - Requirements are defined in YAML files and can reference each other (depending on the variant different data will be parsed).
33
+ - Annotations are then used in code to specify where a requirement is implemented as well as tested.
34
+
35
+ With this information and the actual test results (e.g., JUnit), use Reqstool to:
36
+
37
+ - Generate a report (AsciiDoc, which can be transformed into e.g. PDF) listing all requirements, where that requirement is implemented and tested, and whether the tests passed/failed. This report can be used e.g. with auditors ("Yes, we track this requirement, it's implemented (here) and it has been tested with a pass (here).")
38
+ - Status the software, i.e. get a list of all requirements, their status on implementation and tests. Reqstool will exit with a status code equal to the number of requirements that have not been implemented and tested with a pass. Hence, it can be used in a pipeline as a gate for deployment to production.
39
+
40
+ ## Installation
41
+
42
+ You need to have the following installed in order to use the tool:
43
+
44
+ - Python, 3.10 or later
45
+ - pip
46
+
47
+ To use the tool, you need to install the PyPI package *reqstool*.
48
+
49
+ ```bash
50
+ pip install -U reqstool
51
+ reqstool -h # to confirm installation
52
+ ```
53
+
54
+ ## Usage
55
+
56
+ ```bash
57
+ reqstool [-h] {command: report-asciidoc,generate-json,status} {location: local,git,maven} ...
58
+ ```
59
+
60
+ Use `-h/--help` for more information about each command and location.
61
+
62
+ ## Documentation
63
+
64
+ For full documentation see [xxx](https://somelink).
65
+
66
+ ## Contributing
67
+
68
+ - We adhere to the latest version of [Contributor Covenant](https://www.contributor-covenant.org/).
69
+ - Fork repo
70
+ - Before submitting a PR
71
+ - Perform formatting (black): `hatch run lint:black src tests`
72
+ - Run linter (flake8): `hatch run lint:flake8`
73
+ - Run tests:
74
+ - all: `hatch run test:pytest --cov=reqstool`
75
+ - unit only: `hatch run test:pytest --cov=reqstool tests/unit`
76
+ - integration only: `hatch run test:pytest --cov=reqstool tests/integration`
@@ -0,0 +1,51 @@
1
+ # Reqstool Client
2
+
3
+ ## Overview
4
+
5
+ Reqstool is a tool for managing requirements with related software verification cases (aka tests) and verification results (test results).
6
+
7
+ - Requirements are defined in YAML files and can reference each other (depending on the variant different data will be parsed).
8
+ - Annotations are then used in code to specify where a requirement is implemented as well as tested.
9
+
10
+ With this information and the actual test results (e.g., JUnit), use Reqstool to:
11
+
12
+ - Generate a report (AsciiDoc, which can be transformed into e.g. PDF) listing all requirements, where that requirement is implemented and tested, and whether the tests passed/failed. This report can be used e.g. with auditors ("Yes, we track this requirement, it's implemented (here) and it has been tested with a pass (here).")
13
+ - Status the software, i.e. get a list of all requirements, their status on implementation and tests. Reqstool will exit with a status code equal to the number of requirements that have not been implemented and tested with a pass. Hence, it can be used in a pipeline as a gate for deployment to production.
14
+
15
+ ## Installation
16
+
17
+ You need to have the following installed in order to use the tool:
18
+
19
+ - Python, 3.10 or later
20
+ - pip
21
+
22
+ To use the tool, you need to install the PyPI package *reqstool*.
23
+
24
+ ```bash
25
+ pip install -U reqstool
26
+ reqstool -h # to confirm installation
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ ```bash
32
+ reqstool [-h] {command: report-asciidoc,generate-json,status} {location: local,git,maven} ...
33
+ ```
34
+
35
+ Use `-h/--help` for more information about each command and location.
36
+
37
+ ## Documentation
38
+
39
+ For full documentation see [xxx](https://somelink).
40
+
41
+ ## Contributing
42
+
43
+ - We adhere to the latest version of [Contributor Covenant](https://www.contributor-covenant.org/).
44
+ - Fork repo
45
+ - Before submitting a PR
46
+ - Perform formatting (black): `hatch run lint:black src tests`
47
+ - Run linter (flake8): `hatch run lint:flake8`
48
+ - Run tests:
49
+ - all: `hatch run test:pytest --cov=reqstool`
50
+ - unit only: `hatch run test:pytest --cov=reqstool tests/unit`
51
+ - integration only: `hatch run test:pytest --cov=reqstool tests/integration`
@@ -0,0 +1,22 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/asciidoctor/asciidoctor-intellij-plugin/main/src/main/resources/jsonSchemas/antoraPlaybookSchema.json
2
+
3
+ site:
4
+ title: Reqstool Documentation
5
+ url: https://github.com/luftfartsverket/reqstool-client
6
+ start_page: reqstool-client::index.adoc
7
+
8
+ content:
9
+ sources:
10
+ - url: ~+
11
+ branches: HEAD
12
+ start_path: docs
13
+ ui:
14
+ bundle:
15
+ url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable
16
+ snapshot: true
17
+ asciidoc:
18
+ attributes:
19
+ kroki-server-url: https://kroki.io
20
+ kroki-fetch-diagram: true
21
+ extensions:
22
+ - asciidoctor-kroki
@@ -0,0 +1,7 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/asciidoctor/asciidoctor-intellij-plugin/main/src/main/resources/jsonSchemas/antoraComponentSchema.json
2
+
3
+ name: reqstool-client
4
+ title: Reqstool Client
5
+ version: 0.0.1
6
+ nav:
7
+ - modules/ROOT/nav.adoc
@@ -0,0 +1,7 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/Luftfartsverket/reqstool-client/main/src/reqstool/resources/schemas/v1/manual_verification_results.schema.json
2
+
3
+ results:
4
+ - id: # alphanumerical
5
+ svc_ids: # array of alphanumerical
6
+ comment: #
7
+ pass: # true, false
@@ -0,0 +1,21 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/Luftfartsverket/reqstool-client/main/src/reqstool/resources/schemas/v1/requirements.schema.json
2
+
3
+ metadata:
4
+ urn: sys-ext # unique resource name
5
+ variant: external # enum of system, microservice or external
6
+ title: title
7
+ url: optional
8
+
9
+ requirements:
10
+ - id: id # alphanumerical
11
+ title: title # text
12
+ significance: shall # was level # shall, should, may # https://www.rfc-editor.org/rfc/rfc2119
13
+ description: description # text
14
+ rationale: test # text
15
+ category: [business] # [Business, User Interface, System Interface, Performance, IT Security, Information Security, Reliability, Operational]
16
+ references: # links, source
17
+ - requirement_ids: [REQ123] # links to another requirement in this document
18
+ - sources: [FSB] # FSB, SAF, SWAL
19
+ - requirement_ids: [REQ123] # links to another requirement in this document
20
+ sources: [FSB] # FSB, SAF, SWAL
21
+ revision: 0.0.0 # requirement added from revision number, e.g. 1.0.2