continuous-delivery-scripts 4.3.0__tar.gz → 4.4.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 (142) hide show
  1. {continuous_delivery_scripts-4.3.0/continuous_delivery_scripts.egg-info → continuous_delivery_scripts-4.4.0}/PKG-INFO +3 -3
  2. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/README.md +2 -2
  3. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/_version.py +3 -3
  4. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/check_licence_compliance.py +20 -0
  5. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/report_third_party_ip.py +12 -2
  6. continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/data/licence_assessment.toml +105 -0
  7. continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/licence_assessment.py +729 -0
  8. continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/scancode_licence_db.py +76 -0
  9. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_helpers.py +57 -3
  10. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_project.py +81 -0
  11. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_summary.py +31 -1
  12. continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +4 -0
  13. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.html.jinja2 +65 -7
  14. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.txt.jinja2 +12 -0
  15. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/configuration.py +6 -0
  16. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/third_party_licences.py +8 -3
  17. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0/continuous_delivery_scripts.egg-info}/PKG-INFO +3 -3
  18. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/SOURCES.txt +3 -0
  19. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/pyproject.toml +11 -1
  20. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/setup.py +1 -1
  21. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/GitPython.spdx +1 -1
  22. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Incremental.spdx +1 -1
  23. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Jinja2.spdx +1 -1
  24. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Mako.spdx +1 -1
  25. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Markdown.spdx +1 -1
  26. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/MarkupSafe.spdx +1 -1
  27. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/PyYAML.spdx +1 -1
  28. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Pygments.spdx +1 -1
  29. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/SecretStorage.spdx +1 -1
  30. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/boolean.py.spdx +1 -1
  31. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/boto3.spdx +1 -1
  32. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/botocore.spdx +1 -1
  33. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/bracex.spdx +1 -1
  34. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/certifi.spdx +1 -1
  35. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/cffi.spdx +1 -1
  36. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/charset-normalizer.spdx +1 -1
  37. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/click-default-group.spdx +1 -1
  38. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/click.spdx +1 -1
  39. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/continuous-delivery-scripts.spdx +121 -82
  40. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/cryptography.spdx +1 -1
  41. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/detect-secrets.spdx +1 -1
  42. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/docutils.spdx +1 -1
  43. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/gibberish-detector.spdx +1 -1
  44. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/gitdb.spdx +1 -1
  45. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/id.spdx +1 -1
  46. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/idna.spdx +1 -1
  47. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.classes.spdx +1 -1
  48. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.context.spdx +1 -1
  49. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.functools.spdx +1 -1
  50. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jeepney.spdx +1 -1
  51. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jellyfish.spdx +1 -1
  52. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jmespath.spdx +1 -1
  53. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/keyring.spdx +1 -1
  54. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/license-expression.spdx +1 -1
  55. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/licenseheaders.spdx +1 -1
  56. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/markdown-it-py.spdx +1 -1
  57. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/mdurl.spdx +1 -1
  58. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/more-itertools.spdx +1 -1
  59. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/nh3.spdx +1 -1
  60. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/packaging.spdx +1 -1
  61. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pdoc3.spdx +1 -1
  62. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/ply.spdx +1 -1
  63. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pyautoversion.spdx +1 -1
  64. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pycparser.spdx +1 -1
  65. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pyparsing.spdx +1 -1
  66. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/python-dateutil.spdx +1 -1
  67. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/python-dotenv.spdx +1 -1
  68. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rdflib.spdx +1 -1
  69. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/readme_renderer.spdx +1 -1
  70. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/regex.spdx +1 -1
  71. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/requests-toolbelt.spdx +1 -1
  72. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/requests.spdx +1 -1
  73. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rfc3986.spdx +1 -1
  74. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rich.spdx +1 -1
  75. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/s3transfer.spdx +1 -1
  76. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/semver.spdx +1 -1
  77. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/setuptools.spdx +1 -1
  78. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/six.spdx +1 -1
  79. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/smmap.spdx +1 -1
  80. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/spdx-tools.spdx +1 -1
  81. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/toml.spdx +1 -1
  82. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/towncrier.spdx +1 -1
  83. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/twine.spdx +1 -1
  84. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/urllib3.spdx +1 -1
  85. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/wcmatch.spdx +1 -1
  86. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/xmltodict.spdx +1 -1
  87. continuous_delivery_scripts-4.3.0/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +0 -4
  88. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/LICENSE +0 -0
  89. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/MANIFEST.in +0 -0
  90. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/__init__.py +0 -0
  91. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/assert_news.py +0 -0
  92. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/create_news_file.py +0 -0
  93. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/detect_secrets.py +0 -0
  94. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/generate_docs.py +0 -0
  95. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/generate_news.py +0 -0
  96. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/get_config.py +0 -0
  97. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/get_version.py +0 -0
  98. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/language_specifics.py +0 -0
  99. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/license_files.py +0 -0
  100. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/BASIC.MD +0 -0
  101. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/CI.MD +0 -0
  102. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/GITHUB_ACTIONS.MD +0 -0
  103. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/GOLAND.MD +0 -0
  104. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/NOOP.MD +0 -0
  105. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/PYTHON.MD +0 -0
  106. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/__init__.py +0 -0
  107. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/basic.py +0 -0
  108. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/ci.py +0 -0
  109. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/docker.py +0 -0
  110. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/github_actions.py +0 -0
  111. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/golang.py +0 -0
  112. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/noop.py +0 -0
  113. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/python.py +0 -0
  114. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/__init__.py +0 -0
  115. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_dependency.py +0 -0
  116. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_document.py +0 -0
  117. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_file.py +0 -0
  118. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_package.py +0 -0
  119. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/tag_and_release.py +0 -0
  120. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/update_secrets_registry.py +0 -0
  121. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/__init__.py +0 -0
  122. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/aws_helpers.py +0 -0
  123. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/definitions.py +0 -0
  124. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/filesystem_helpers.py +0 -0
  125. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/git_helpers.py +0 -0
  126. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/hash_helpers.py +0 -0
  127. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/language_specifics_base.py +0 -0
  128. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/logging.py +0 -0
  129. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/news_file.py +0 -0
  130. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/noop/__init__.py +0 -0
  131. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/noop/package_helpers.py +0 -0
  132. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/package_helpers.py +0 -0
  133. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/__init__.py +0 -0
  134. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/package_helpers.py +0 -0
  135. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/python_helpers.py +0 -0
  136. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/string_helpers.py +0 -0
  137. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/versioning.py +0 -0
  138. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/dependency_links.txt +0 -0
  139. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/entry_points.txt +0 -0
  140. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/requires.txt +0 -0
  141. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/top_level.txt +0 -0
  142. {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continuous-delivery-scripts
3
- Version: 4.3.0
3
+ Version: 4.4.0
4
4
  Summary: Git-based CI/CD tools for releases, changelogs, SPDX SBOMs and licence reporting
5
5
  Home-page: https://github.com/ARMmbed/continuous-delivery-scripts
6
6
  Author: Arm
@@ -246,8 +246,8 @@ same commands whichever CI system the team chooses.
246
246
  | [`cd-get-config`](./guides/reading-project-configuration.md) | Prints a project configuration value. | Either `--key` (`-k`) or `--config-variable` (`-c`) | Developer or CI |
247
247
  | [`cd-tag-and-release`](./guides/automating-releases.md) | Runs the release flow, including documentation, licensing summaries, Git tagging, packaging and publication through the selected [language plugin](./continuous_delivery_scripts/plugins). | Required `--release-type` (`-t`); optional `--current-branch` (`-b`) | CI release flow |
248
248
  | [`cd-generate-docs`](./guides/generating-code-documentation.md) | Generates code documentation in the configured output directory (or one specified on the command line). | `--output_directory` | Developer preview or CI |
249
- | [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`); create the directory first | CI audit; developer review also possible |
250
- | [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports | CI gate or developer review |
249
+ | [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`); optional `--lookup-scancode` | CI audit; developer review also possible |
250
+ | [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports, `--lookup-scancode` | CI gate or developer review |
251
251
  | [`cd-license-files`](./guides/licence-header-management.md) | Adds or updates source-file licence and copyright headers when the language plugin supports them. | `--verbose` (`-v`) | Developer or CI |
252
252
  | [`cd-record-secrets`](./guides/recording-secrets.md) | Records accepted findings in the project's [detect-secrets](https://github.com/Yelp/detect-secrets) registry. | `--registry-file` (`-r`); defaults to the configured registry | Developer (registry maintenance) |
253
253
  | [`cd-detect-secrets`](./guides/checking-for-secrets.md) | Checks Git-tracked files against that registry and fails if new secrets are found. | `--registry-file` (`-r`); defaults to the configured registry | CI; developer checks also possible |
@@ -185,8 +185,8 @@ same commands whichever CI system the team chooses.
185
185
  | [`cd-get-config`](./guides/reading-project-configuration.md) | Prints a project configuration value. | Either `--key` (`-k`) or `--config-variable` (`-c`) | Developer or CI |
186
186
  | [`cd-tag-and-release`](./guides/automating-releases.md) | Runs the release flow, including documentation, licensing summaries, Git tagging, packaging and publication through the selected [language plugin](./continuous_delivery_scripts/plugins). | Required `--release-type` (`-t`); optional `--current-branch` (`-b`) | CI release flow |
187
187
  | [`cd-generate-docs`](./guides/generating-code-documentation.md) | Generates code documentation in the configured output directory (or one specified on the command line). | `--output_directory` | Developer preview or CI |
188
- | [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`); create the directory first | CI audit; developer review also possible |
189
- | [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports | CI gate or developer review |
188
+ | [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`); optional `--lookup-scancode` | CI audit; developer review also possible |
189
+ | [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports, `--lookup-scancode` | CI gate or developer review |
190
190
  | [`cd-license-files`](./guides/licence-header-management.md) | Adds or updates source-file licence and copyright headers when the language plugin supports them. | `--verbose` (`-v`) | Developer or CI |
191
191
  | [`cd-record-secrets`](./guides/recording-secrets.md) | Records accepted findings in the project's [detect-secrets](https://github.com/Yelp/detect-secrets) registry. | `--registry-file` (`-r`); defaults to the configured registry | Developer (registry maintenance) |
192
192
  | [`cd-detect-secrets`](./guides/checking-for-secrets.md) | Checks Git-tracked files against that registry and fails if new secrets are found. | `--registry-file` (`-r`); defaults to the configured registry | CI; developer checks also possible |
@@ -11,8 +11,8 @@ References
11
11
  This file is autogenerated, do not modify by hand.
12
12
  """
13
13
 
14
- __version__ = "4.3.0"
15
- COMMIT = "3e8ffc7bd8472928ca195f17fb278d40476ef8a2"
14
+ __version__ = "4.4.0"
15
+ COMMIT = "b480ded441705a4dda9e7d2d3e7a3e1b45729688"
16
16
  MAJOR = 4
17
- MINOR = 3
17
+ MINOR = 4
18
18
  PATCH = 0
@@ -10,6 +10,7 @@ import sys
10
10
  from pathlib import Path
11
11
 
12
12
  from continuous_delivery_scripts.language_specifics import get_language_specifics
13
+ from continuous_delivery_scripts.spdx_report.licence_assessment import LicenceAssessment
13
14
  from continuous_delivery_scripts.utils.logging import log_exception, set_log_level
14
15
 
15
16
  logger = logging.getLogger(__name__)
@@ -24,6 +25,11 @@ def main() -> int:
24
25
  type=Path,
25
26
  help="Write third-party IP summaries to this existing directory (no SPDX documents).",
26
27
  )
28
+ parser.add_argument(
29
+ "--lookup-scancode",
30
+ action="store_true",
31
+ help="Consult ScanCode LicenseDB for unclassified licences or missing assessment rules.",
32
+ )
27
33
  parser.add_argument("-v", "--verbose", action="count", default=0, help="Increase logging verbosity.")
28
34
  args = parser.parse_args()
29
35
  set_log_level(args.verbose)
@@ -35,9 +41,23 @@ def main() -> int:
35
41
  project = plugin.get_current_spdx_project()
36
42
  if project is None:
37
43
  raise ValueError("The selected language plugin did not return a project for licence compliance checks.")
44
+ if args.lookup_scancode:
45
+ project.enable_scancode_lookup()
38
46
  if args.output_dir is not None:
39
47
  project.generate_licensing_summary(args.output_dir)
48
+ counts = {
49
+ status.value: sum(result.status is status for result in project.licence_assessments.values())
50
+ for status in LicenceAssessment
51
+ }
52
+ print("Dependency licence assessment: " + ", ".join(f"{name}: {count}" for name, count in counts.items()))
53
+ if args.lookup_scancode:
54
+ for name, result in project.licence_assessments.items():
55
+ for info in result.scancode_licences:
56
+ print(f"{name}: ScanCode LicenseDB: {info.identifier} ({info.category}): {info.url}")
40
57
  project.check_licence_compliance()
58
+ if args.lookup_scancode:
59
+ for warning in project.scancode_follow_up_warnings():
60
+ print(f"WARNING: {warning}", file=sys.stderr)
41
61
  return 0
42
62
  except Exception as error:
43
63
  log_exception(logger, error)
@@ -36,11 +36,13 @@ def generate_spdx_project_reports(project: "SpdxProject", output_directory: Path
36
36
  return project
37
37
 
38
38
 
39
- def generate_spdx_reports(output_directory: Path) -> Optional["SpdxProject"]:
39
+ def generate_spdx_reports(output_directory: Path, lookup_scancode: bool = False) -> Optional["SpdxProject"]:
40
40
  """Generates all the SPDX reports for the current project."""
41
41
  project = get_language_specifics().get_current_spdx_project()
42
42
  if not project:
43
43
  return None
44
+ if lookup_scancode:
45
+ project.enable_scancode_lookup()
44
46
  return generate_spdx_project_reports(project, output_directory)
45
47
 
46
48
 
@@ -59,6 +61,11 @@ def main() -> int:
59
61
  required=True,
60
62
  type=convert_to_path,
61
63
  )
64
+ parser.add_argument(
65
+ "--lookup-scancode",
66
+ action="store_true",
67
+ help="Consult ScanCode LicenseDB for unclassified licences or missing assessment rules.",
68
+ )
62
69
 
63
70
  parser.add_argument(
64
71
  "-v",
@@ -72,9 +79,12 @@ def main() -> int:
72
79
 
73
80
  try:
74
81
  if get_language_specifics().can_get_project_metadata():
75
- project = generate_spdx_reports(args.output_dir)
82
+ project = generate_spdx_reports(args.output_dir, lookup_scancode=args.lookup_scancode)
76
83
  if project:
77
84
  project.check_licence_compliance()
85
+ if args.lookup_scancode:
86
+ for warning in project.scancode_follow_up_warnings():
87
+ print(f"WARNING: {warning}", file=sys.stderr)
78
88
  return 0
79
89
  except Exception as e:
80
90
  log_exception(logger, e)
@@ -0,0 +1,105 @@
1
+ #
2
+ # Copyright (C) 2020-2026 Arm Limited or its affiliates and Contributors. All rights reserved.
3
+ # SPDX-License-Identifier: Apache-2.0
4
+ #
5
+
6
+ # Default screening policy. These are review priorities, not legal conclusions.
7
+ # Project overrides are merged by licence ID and rule ID.
8
+ schema_version = 1
9
+
10
+ [settings]
11
+ # Keep existing compliance exit codes unchanged unless a project opts in.
12
+ fail_on = []
13
+
14
+ [classifications]
15
+ MIT = "PERMISSIVE"
16
+ "MIT-0" = "PERMISSIVE"
17
+ "0BSD" = "PERMISSIVE"
18
+ "BSD-2-Clause" = "PERMISSIVE"
19
+ "BSD-3-Clause" = "PERMISSIVE"
20
+ ISC = "PERMISSIVE"
21
+ "Apache-2.0" = "PERMISSIVE"
22
+ "Python-2.0" = "PERMISSIVE"
23
+ "PSF-2.0" = "PERMISSIVE"
24
+ "MPL-2.0" = "WEAK_COPYLEFT"
25
+ "LGPL-2.1-only" = "WEAK_COPYLEFT"
26
+ "LGPL-2.1-or-later" = "WEAK_COPYLEFT"
27
+ "LGPL-3.0-only" = "WEAK_COPYLEFT"
28
+ "LGPL-3.0-or-later" = "WEAK_COPYLEFT"
29
+ "GPL-2.0-only" = "STRONG_COPYLEFT"
30
+ "GPL-2.0-or-later" = "STRONG_COPYLEFT"
31
+ "GPL-3.0-only" = "STRONG_COPYLEFT"
32
+ "GPL-3.0-or-later" = "STRONG_COPYLEFT"
33
+ "AGPL-3.0-only" = "NETWORK_COPYLEFT"
34
+ "AGPL-3.0-or-later" = "NETWORK_COPYLEFT"
35
+ "CC0-1.0" = "PUBLIC_DOMAIN"
36
+ Unlicense = "PUBLIC_DOMAIN"
37
+ "LicenseRef-Proprietary" = "PROPRIETARY"
38
+
39
+ # Map LicenseDB's own vocabulary to screening categories. Unmapped categories
40
+ # remain review-only; these are not legal compatibility decisions.
41
+ [scancode_categories]
42
+ Permissive = "PERMISSIVE"
43
+ "Copyleft Limited" = "WEAK_COPYLEFT"
44
+ Copyleft = "STRONG_COPYLEFT"
45
+ "Public Domain" = "PUBLIC_DOMAIN"
46
+ "Proprietary Free" = "PROPRIETARY"
47
+ Commercial = "PROPRIETARY"
48
+ "Free Restricted" = "PROPRIETARY"
49
+ "Non-Commercial" = "PROPRIETARY"
50
+
51
+ [[rules]]
52
+ id = "permissive-dependency"
53
+ project_category = "*"
54
+ dependency_category = "PERMISSIVE"
55
+ status = "ALLOW"
56
+ reason = "A permissive dependency generally permits redistribution; retain its notices and conditions."
57
+
58
+ [[rules]]
59
+ id = "public-domain-dependency"
60
+ project_category = "*"
61
+ dependency_category = "PUBLIC_DOMAIN"
62
+ status = "ALLOW"
63
+ reason = "No copyleft obligation is identified for this public-domain dependency; check its notices."
64
+
65
+ [[rules]]
66
+ id = "apache-2-to-gpl-2-only"
67
+ project_licence = "GPL-2.0-only"
68
+ dependency_licence = "Apache-2.0"
69
+ status = "REVIEW"
70
+ reason = "Apache-2.0 and GPL-2.0-only have a known directional compatibility concern for combined works."
71
+
72
+ [[rules]]
73
+ id = "apache-2-to-gpl-2-or-later"
74
+ project_licence = "GPL-2.0-or-later"
75
+ dependency_licence = "Apache-2.0"
76
+ status = "REVIEW"
77
+ reason = "Review the GPL version selected for a combined work before incorporating Apache-2.0 code."
78
+
79
+ [[rules]]
80
+ id = "weak-copyleft-dependency"
81
+ project_category = "*"
82
+ dependency_category = "WEAK_COPYLEFT"
83
+ status = "REVIEW"
84
+ reason = "Weak copyleft obligations depend on modification, linking and how the work is distributed."
85
+
86
+ [[rules]]
87
+ id = "strong-copyleft-dependency"
88
+ project_category = "*"
89
+ dependency_category = "STRONG_COPYLEFT"
90
+ status = "REVIEW"
91
+ reason = "Strong copyleft obligations may affect a combined or redistributed work; review the usage."
92
+
93
+ [[rules]]
94
+ id = "network-copyleft-dependency"
95
+ project_category = "*"
96
+ dependency_category = "NETWORK_COPYLEFT"
97
+ status = "REVIEW"
98
+ reason = "Network copyleft obligations may apply to network use as well as distribution; review the usage."
99
+
100
+ [[rules]]
101
+ id = "proprietary-dependency"
102
+ project_category = "*"
103
+ dependency_category = "PROPRIETARY"
104
+ status = "REVIEW"
105
+ reason = "A proprietary licence reference does not reveal its terms; consult the rights holder."