scanoss 1.37.0__tar.gz → 1.38.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 (111) hide show
  1. {scanoss-1.37.0/src/scanoss.egg-info → scanoss-1.38.0}/PKG-INFO +1 -1
  2. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/__init__.py +1 -1
  3. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/cli.py +35 -10
  4. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/cyclonedx.py +7 -2
  5. scanoss-1.38.0/src/scanoss/data/build_date.txt +1 -0
  6. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/spdxlite.py +4 -2
  7. {scanoss-1.37.0 → scanoss-1.38.0/src/scanoss.egg-info}/PKG-INFO +1 -1
  8. scanoss-1.37.0/src/scanoss/data/build_date.txt +0 -1
  9. {scanoss-1.37.0 → scanoss-1.38.0}/LICENSE +0 -0
  10. {scanoss-1.37.0 → scanoss-1.38.0}/PACKAGE.md +0 -0
  11. {scanoss-1.37.0 → scanoss-1.38.0}/README.md +0 -0
  12. {scanoss-1.37.0 → scanoss-1.38.0}/pyproject.toml +0 -0
  13. {scanoss-1.37.0 → scanoss-1.38.0}/setup.cfg +0 -0
  14. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/__init__.py +0 -0
  15. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/options/__init__.py +0 -0
  16. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/options/annotations_pb2.py +0 -0
  17. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/options/annotations_pb2.pyi +0 -0
  18. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/options/annotations_pb2_grpc.py +0 -0
  19. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/options/openapiv2_pb2.py +0 -0
  20. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/options/openapiv2_pb2.pyi +0 -0
  21. {scanoss-1.37.0 → scanoss-1.38.0}/src/protoc_gen_swagger/options/openapiv2_pb2_grpc.py +0 -0
  22. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/__init__.py +0 -0
  23. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/common/__init__.py +0 -0
  24. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/common/v2/__init__.py +0 -0
  25. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/common/v2/scanoss_common_pb2.py +0 -0
  26. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/common/v2/scanoss_common_pb2_grpc.py +0 -0
  27. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/components/__init__.py +0 -0
  28. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/components/v2/__init__.py +0 -0
  29. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/components/v2/scanoss_components_pb2.py +0 -0
  30. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/components/v2/scanoss_components_pb2_grpc.py +0 -0
  31. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/cryptography/v2/scanoss_cryptography_pb2.py +0 -0
  32. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/cryptography/v2/scanoss_cryptography_pb2_grpc.py +0 -0
  33. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/dependencies/__init__.py +0 -0
  34. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/dependencies/v2/__init__.py +0 -0
  35. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/dependencies/v2/scanoss_dependencies_pb2.py +0 -0
  36. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/dependencies/v2/scanoss_dependencies_pb2_grpc.py +0 -0
  37. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/geoprovenance/__init__.py +0 -0
  38. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/geoprovenance/v2/__init__.py +0 -0
  39. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/geoprovenance/v2/scanoss_geoprovenance_pb2.py +0 -0
  40. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/geoprovenance/v2/scanoss_geoprovenance_pb2_grpc.py +0 -0
  41. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/licenses/__init__.py +0 -0
  42. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/licenses/v2/__init__.py +0 -0
  43. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/licenses/v2/scanoss_licenses_pb2.py +0 -0
  44. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/licenses/v2/scanoss_licenses_pb2_grpc.py +0 -0
  45. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/scanning/__init__.py +0 -0
  46. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/scanning/v2/__init__.py +0 -0
  47. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/scanning/v2/scanoss_scanning_pb2.py +0 -0
  48. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/scanning/v2/scanoss_scanning_pb2_grpc.py +0 -0
  49. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/semgrep/__init__.py +0 -0
  50. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/semgrep/v2/__init__.py +0 -0
  51. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/semgrep/v2/scanoss_semgrep_pb2.py +0 -0
  52. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/semgrep/v2/scanoss_semgrep_pb2_grpc.py +0 -0
  53. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/vulnerabilities/__init__.py +0 -0
  54. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/vulnerabilities/v2/__init__.py +0 -0
  55. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/vulnerabilities/v2/scanoss_vulnerabilities_pb2.py +0 -0
  56. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/api/vulnerabilities/v2/scanoss_vulnerabilities_pb2_grpc.py +0 -0
  57. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/components.py +0 -0
  58. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/constants.py +0 -0
  59. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/cryptography.py +0 -0
  60. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/csvoutput.py +0 -0
  61. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/data/scanoss-settings-schema.json +0 -0
  62. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/data/spdx-exceptions.json +0 -0
  63. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/data/spdx-licenses.json +0 -0
  64. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/delta.py +0 -0
  65. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/export/__init__.py +0 -0
  66. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/export/dependency_track.py +0 -0
  67. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/file_filters.py +0 -0
  68. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/filecount.py +0 -0
  69. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/__init__.py +0 -0
  70. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/dependency_track/project_violation.py +0 -0
  71. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/policy_check.py +0 -0
  72. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/raw/component_summary.py +0 -0
  73. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/raw/copyleft.py +0 -0
  74. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/raw/license_summary.py +0 -0
  75. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/raw/raw_base.py +0 -0
  76. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/raw/undeclared_component.py +0 -0
  77. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/inspection/utils/license_utils.py +0 -0
  78. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/results.py +0 -0
  79. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scancodedeps.py +0 -0
  80. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanner.py +0 -0
  81. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanners/__init__.py +0 -0
  82. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanners/container_scanner.py +0 -0
  83. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanners/folder_hasher.py +0 -0
  84. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanners/scanner_config.py +0 -0
  85. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanners/scanner_hfh.py +0 -0
  86. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanoss_settings.py +0 -0
  87. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanossapi.py +0 -0
  88. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanossbase.py +0 -0
  89. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanossgrpc.py +0 -0
  90. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scanpostprocessor.py +0 -0
  91. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/scantype.py +0 -0
  92. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/services/dependency_track_service.py +0 -0
  93. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/threadeddependencies.py +0 -0
  94. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/threadedscanning.py +0 -0
  95. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/utils/__init__.py +0 -0
  96. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/utils/abstract_presenter.py +0 -0
  97. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/utils/crc64.py +0 -0
  98. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/utils/file.py +0 -0
  99. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/utils/simhash.py +0 -0
  100. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss/winnowing.py +0 -0
  101. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss.egg-info/SOURCES.txt +0 -0
  102. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss.egg-info/dependency_links.txt +0 -0
  103. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss.egg-info/entry_points.txt +0 -0
  104. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss.egg-info/requires.txt +0 -0
  105. {scanoss-1.37.0 → scanoss-1.38.0}/src/scanoss.egg-info/top_level.txt +0 -0
  106. {scanoss-1.37.0 → scanoss-1.38.0}/tests/test_csv_output.py +0 -0
  107. {scanoss-1.37.0 → scanoss-1.38.0}/tests/test_file_filters.py +0 -0
  108. {scanoss-1.37.0 → scanoss-1.38.0}/tests/test_policy_inspect.py +0 -0
  109. {scanoss-1.37.0 → scanoss-1.38.0}/tests/test_scan_post_processor.py +0 -0
  110. {scanoss-1.37.0 → scanoss-1.38.0}/tests/test_spdxlite.py +0 -0
  111. {scanoss-1.37.0 → scanoss-1.38.0}/tests/test_winnowing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scanoss
3
- Version: 1.37.0
3
+ Version: 1.38.0
4
4
  Summary: Simple Python library to leverage the SCANOSS APIs
5
5
  Home-page: https://scanoss.com
6
6
  Author: SCANOSS
@@ -22,4 +22,4 @@ SPDX-License-Identifier: MIT
22
22
  THE SOFTWARE.
23
23
  """
24
24
 
25
- __version__ = '1.37.0'
25
+ __version__ = '1.38.0'
@@ -929,10 +929,7 @@ def setup_args() -> None: # noqa: PLR0912, PLR0915
929
929
  )
930
930
 
931
931
  delta_sub = p_delta.add_subparsers(
932
- title='Delta Commands',
933
- dest='subparsercmd',
934
- description='Delta sub-commands',
935
- help='Delta sub-commands'
932
+ title='Delta Commands', dest='subparsercmd', description='Delta sub-commands', help='Delta sub-commands'
936
933
  )
937
934
 
938
935
  # Delta Sub-command: copy
@@ -1165,9 +1162,15 @@ def setup_args() -> None: # noqa: PLR0912, PLR0915
1165
1162
  p_crypto_versions_in_range,
1166
1163
  c_licenses,
1167
1164
  e_dt,
1168
- p_copy
1165
+ p_copy,
1169
1166
  ]:
1170
- p.add_argument('--debug', '-d', action='store_true', help='Enable debug messages')
1167
+ p.add_argument(
1168
+ '--debug',
1169
+ '-d',
1170
+ action='store_true',
1171
+ default=os.environ.get('SCANOSS_DEBUG', '').lower() == 'true',
1172
+ help='Enable debug messages (can also be set via environment variable SCANOSS_DEBUG)',
1173
+ )
1171
1174
  p.add_argument('--trace', '-t', action='store_true', help='Enable trace messages, including API posts')
1172
1175
  p.add_argument('--quiet', '-q', action='store_true', help='Enable quiet mode')
1173
1176
 
@@ -1186,8 +1189,21 @@ def setup_args() -> None: # noqa: PLR0912, PLR0915
1186
1189
  sys.exit(1)
1187
1190
  elif (
1188
1191
  args.subparser
1189
- in ('utils', 'ut', 'component', 'comp', 'inspect', 'insp', 'ins',
1190
- 'crypto', 'cr', 'export', 'exp', 'delta', 'dl')
1192
+ in (
1193
+ 'utils',
1194
+ 'ut',
1195
+ 'component',
1196
+ 'comp',
1197
+ 'inspect',
1198
+ 'insp',
1199
+ 'ins',
1200
+ 'crypto',
1201
+ 'cr',
1202
+ 'export',
1203
+ 'exp',
1204
+ 'delta',
1205
+ 'dl',
1206
+ )
1191
1207
  ) and not args.subparsercmd:
1192
1208
  parser.parse_args([args.subparser, '--help']) # Force utils helps to be displayed
1193
1209
  sys.exit(1)
@@ -2634,6 +2650,7 @@ def initialise_empty_file(filename: str):
2634
2650
  print_stderr(f'Error: Unable to create output file {filename}: {e}')
2635
2651
  sys.exit(1)
2636
2652
 
2653
+
2637
2654
  def delta_copy(parser, args):
2638
2655
  """
2639
2656
  Handle delta copy command.
@@ -2661,8 +2678,15 @@ def delta_copy(parser, args):
2661
2678
  initialise_empty_file(args.output)
2662
2679
  try:
2663
2680
  # Create and configure delta copy command
2664
- delta = Delta(debug=args.debug, trace=args.trace, quiet=args.quiet, filepath=args.input, folder=args.folder,
2665
- output=args.output, root_dir=args.root)
2681
+ delta = Delta(
2682
+ debug=args.debug,
2683
+ trace=args.trace,
2684
+ quiet=args.quiet,
2685
+ filepath=args.input,
2686
+ folder=args.folder,
2687
+ output=args.output,
2688
+ root_dir=args.root,
2689
+ )
2666
2690
  # Execute copy and exit with appropriate status code
2667
2691
  status, _ = delta.copy()
2668
2692
  sys.exit(status)
@@ -2672,6 +2696,7 @@ def delta_copy(parser, args):
2672
2696
  traceback.print_exc()
2673
2697
  sys.exit(1)
2674
2698
 
2699
+
2675
2700
  def main():
2676
2701
  """
2677
2702
  Run the ScanOSS CLI
@@ -152,7 +152,11 @@ class CycloneDx(ScanossBase):
152
152
  fdl = []
153
153
  if licenses:
154
154
  for lic in licenses:
155
- fdl.append({'id': lic.get('name')})
155
+ name = lic.get('name')
156
+ source = lic.get('source')
157
+ if source not in ('component_declared', 'license_file', 'file_header'):
158
+ continue
159
+ fdl.append({'id': name})
156
160
  fd['licenses'] = fdl
157
161
  cdx[purl] = fd
158
162
  # self.print_stderr(f'VD: {vdx}')
@@ -295,7 +299,8 @@ class CycloneDx(ScanossBase):
295
299
  except Exception as e:
296
300
  self.print_stderr(f'ERROR: Problem parsing input JSON: {e}')
297
301
  return False
298
- return self.produce_from_json(data, output_file)
302
+ success, _ = self.produce_from_json(data, output_file)
303
+ return success
299
304
 
300
305
  def _normalize_vulnerability_id(self, vuln: dict) -> tuple[str, str]:
301
306
  """
@@ -0,0 +1 @@
1
+ date: 20251024131920, utime: 1761311960
@@ -226,7 +226,9 @@ class SpdxLite:
226
226
  Process license information and remove duplicates.
227
227
 
228
228
  This method filters license information to include only licenses from trusted sources
229
- ('component_declared' or 'license_file') and removes any duplicate license names.
229
+ ('component_declared', 'license_file', 'file_header'). Licenses with an unspecified
230
+ source (None or '') are allowed. Non-empty, non-allowed sources are excluded. It also
231
+ removes any duplicate license names.
230
232
  The result is a simplified list of license dictionaries containing only the 'id' field.
231
233
 
232
234
  Args:
@@ -247,7 +249,7 @@ class SpdxLite:
247
249
  for license_info in licenses:
248
250
  name = license_info.get('name')
249
251
  source = license_info.get('source')
250
- if source not in ("component_declared", "license_file", "file_header"):
252
+ if source not in (None, '') and source not in ("component_declared", "license_file", "file_header"):
251
253
  continue
252
254
  if name and name not in seen_names:
253
255
  processed_licenses.append({'id': name})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scanoss
3
- Version: 1.37.0
3
+ Version: 1.38.0
4
4
  Summary: Simple Python library to leverage the SCANOSS APIs
5
5
  Home-page: https://scanoss.com
6
6
  Author: SCANOSS
@@ -1 +0,0 @@
1
- date: 20251017144212, utime: 1760712132
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes