scanoss 1.26.1__tar.gz → 1.26.2__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 (100) hide show
  1. {scanoss-1.26.1/src/scanoss.egg-info → scanoss-1.26.2}/PKG-INFO +1 -1
  2. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/__init__.py +1 -1
  3. scanoss-1.26.2/src/scanoss/data/build_date.txt +1 -0
  4. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/inspect_base.py +22 -5
  5. {scanoss-1.26.1 → scanoss-1.26.2/src/scanoss.egg-info}/PKG-INFO +1 -1
  6. {scanoss-1.26.1 → scanoss-1.26.2}/tests/test_policy_inspect.py +30 -12
  7. {scanoss-1.26.1 → scanoss-1.26.2}/tests/test_spdxlite.py +2 -2
  8. scanoss-1.26.1/src/scanoss/data/build_date.txt +0 -1
  9. {scanoss-1.26.1 → scanoss-1.26.2}/LICENSE +0 -0
  10. {scanoss-1.26.1 → scanoss-1.26.2}/PACKAGE.md +0 -0
  11. {scanoss-1.26.1 → scanoss-1.26.2}/README.md +0 -0
  12. {scanoss-1.26.1 → scanoss-1.26.2}/pyproject.toml +0 -0
  13. {scanoss-1.26.1 → scanoss-1.26.2}/setup.cfg +0 -0
  14. {scanoss-1.26.1 → scanoss-1.26.2}/src/protoc_gen_swagger/__init__.py +0 -0
  15. {scanoss-1.26.1 → scanoss-1.26.2}/src/protoc_gen_swagger/options/__init__.py +0 -0
  16. {scanoss-1.26.1 → scanoss-1.26.2}/src/protoc_gen_swagger/options/annotations_pb2.py +0 -0
  17. {scanoss-1.26.1 → scanoss-1.26.2}/src/protoc_gen_swagger/options/annotations_pb2_grpc.py +0 -0
  18. {scanoss-1.26.1 → scanoss-1.26.2}/src/protoc_gen_swagger/options/openapiv2_pb2.py +0 -0
  19. {scanoss-1.26.1 → scanoss-1.26.2}/src/protoc_gen_swagger/options/openapiv2_pb2_grpc.py +0 -0
  20. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/__init__.py +0 -0
  21. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/common/__init__.py +0 -0
  22. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/common/v2/__init__.py +0 -0
  23. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/common/v2/scanoss_common_pb2.py +0 -0
  24. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/common/v2/scanoss_common_pb2_grpc.py +0 -0
  25. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/components/__init__.py +0 -0
  26. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/components/v2/__init__.py +0 -0
  27. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/components/v2/scanoss_components_pb2.py +0 -0
  28. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/components/v2/scanoss_components_pb2_grpc.py +0 -0
  29. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/cryptography/v2/scanoss_cryptography_pb2.py +0 -0
  30. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/cryptography/v2/scanoss_cryptography_pb2_grpc.py +0 -0
  31. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/dependencies/__init__.py +0 -0
  32. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/dependencies/v2/__init__.py +0 -0
  33. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/dependencies/v2/scanoss_dependencies_pb2.py +0 -0
  34. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/dependencies/v2/scanoss_dependencies_pb2_grpc.py +0 -0
  35. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/geoprovenance/__init__.py +0 -0
  36. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/geoprovenance/v2/__init__.py +0 -0
  37. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/geoprovenance/v2/scanoss_geoprovenance_pb2.py +0 -0
  38. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/geoprovenance/v2/scanoss_geoprovenance_pb2_grpc.py +0 -0
  39. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/scanning/__init__.py +0 -0
  40. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/scanning/v2/__init__.py +0 -0
  41. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/scanning/v2/scanoss_scanning_pb2.py +0 -0
  42. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/scanning/v2/scanoss_scanning_pb2_grpc.py +0 -0
  43. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/semgrep/__init__.py +0 -0
  44. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/semgrep/v2/__init__.py +0 -0
  45. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/semgrep/v2/scanoss_semgrep_pb2.py +0 -0
  46. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/semgrep/v2/scanoss_semgrep_pb2_grpc.py +0 -0
  47. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/vulnerabilities/__init__.py +0 -0
  48. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/vulnerabilities/v2/__init__.py +0 -0
  49. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/vulnerabilities/v2/scanoss_vulnerabilities_pb2.py +0 -0
  50. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/api/vulnerabilities/v2/scanoss_vulnerabilities_pb2_grpc.py +0 -0
  51. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/cli.py +0 -0
  52. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/components.py +0 -0
  53. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/constants.py +0 -0
  54. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/cryptography.py +0 -0
  55. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/csvoutput.py +0 -0
  56. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/cyclonedx.py +0 -0
  57. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/data/scanoss-settings-schema.json +0 -0
  58. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/data/spdx-exceptions.json +0 -0
  59. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/data/spdx-licenses.json +0 -0
  60. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/file_filters.py +0 -0
  61. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/filecount.py +0 -0
  62. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/__init__.py +0 -0
  63. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/component_summary.py +0 -0
  64. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/copyleft.py +0 -0
  65. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/license_summary.py +0 -0
  66. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/policy_check.py +0 -0
  67. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/undeclared_component.py +0 -0
  68. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/inspection/utils/license_utils.py +0 -0
  69. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/results.py +0 -0
  70. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scancodedeps.py +0 -0
  71. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanner.py +0 -0
  72. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanners/__init__.py +0 -0
  73. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanners/container_scanner.py +0 -0
  74. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanners/folder_hasher.py +0 -0
  75. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanners/scanner_config.py +0 -0
  76. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanners/scanner_hfh.py +0 -0
  77. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanoss_settings.py +0 -0
  78. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanossapi.py +0 -0
  79. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanossbase.py +0 -0
  80. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanossgrpc.py +0 -0
  81. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scanpostprocessor.py +0 -0
  82. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/scantype.py +0 -0
  83. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/spdxlite.py +0 -0
  84. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/threadeddependencies.py +0 -0
  85. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/threadedscanning.py +0 -0
  86. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/utils/__init__.py +0 -0
  87. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/utils/abstract_presenter.py +0 -0
  88. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/utils/crc64.py +0 -0
  89. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/utils/file.py +0 -0
  90. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/utils/simhash.py +0 -0
  91. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss/winnowing.py +0 -0
  92. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss.egg-info/SOURCES.txt +0 -0
  93. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss.egg-info/dependency_links.txt +0 -0
  94. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss.egg-info/entry_points.txt +0 -0
  95. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss.egg-info/requires.txt +0 -0
  96. {scanoss-1.26.1 → scanoss-1.26.2}/src/scanoss.egg-info/top_level.txt +0 -0
  97. {scanoss-1.26.1 → scanoss-1.26.2}/tests/test_csv_output.py +0 -0
  98. {scanoss-1.26.1 → scanoss-1.26.2}/tests/test_file_filters.py +0 -0
  99. {scanoss-1.26.1 → scanoss-1.26.2}/tests/test_scan_post_processor.py +0 -0
  100. {scanoss-1.26.1 → scanoss-1.26.2}/tests/test_winnowing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scanoss
3
- Version: 1.26.1
3
+ Version: 1.26.2
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.26.1'
25
+ __version__ = '1.26.2'
@@ -0,0 +1 @@
1
+ date: 20250624181246, utime: 1750788766
@@ -393,14 +393,31 @@ class InspectBase(ScanossBase):
393
393
  """
394
394
  component_licenses: dict = {}
395
395
  for component in components:
396
- for lic in component['licenses']:
397
- spdxid = lic.get('spdxid', 'Unknown')
396
+ purl = component.get('purl', '')
397
+ status = component.get('status', '')
398
+ licenses = component.get('licenses', [])
399
+
400
+ # Component without license
401
+ if not licenses:
402
+ key = f'{purl}-unknown'
403
+ component_licenses[key] = {
404
+ 'purl': purl,
405
+ 'spdxid': 'unknown',
406
+ 'status': status,
407
+ 'copyleft': False,
408
+ 'url': '-',
409
+ }
410
+ continue
411
+
412
+ # Iterate over licenses component licenses
413
+ for lic in licenses:
414
+ spdxid = lic.get('spdxid', 'unknown')
398
415
  if spdxid not in component_licenses:
399
- key = f'{component["purl"]}-{spdxid}'
416
+ key = f'{purl}-{spdxid}'
400
417
  component_licenses[key] = {
401
- 'purl': component['purl'],
418
+ 'purl': purl,
402
419
  'spdxid': spdxid,
403
- 'status': component['status'],
420
+ 'status': status,
404
421
  'copyleft': lic['copyleft'],
405
422
  'url': lic['url'],
406
423
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scanoss
3
- Version: 1.26.1
3
+ Version: 1.26.2
4
4
  Summary: Simple Python library to leverage the SCANOSS APIs
5
5
  Home-page: https://scanoss.com
6
6
  Author: SCANOSS
@@ -181,11 +181,14 @@ class MyTestCase(unittest.TestCase):
181
181
  status, results = undeclared.run()
182
182
  details = json.loads(results['details'])
183
183
  summary = results['summary']
184
- expected_summary_output = """2 undeclared component(s) were found.
184
+ expected_summary_output = """3 undeclared component(s) were found.
185
185
  Add the following snippet into your `sbom.json` file
186
186
  ```json
187
187
  {
188
188
  "components":[
189
+ {
190
+ "purl": "pkg:github/scanoss/jenkins-pipeline-example"
191
+ },
189
192
  {
190
193
  "purl": "pkg:github/scanoss/scanner.c"
191
194
  },
@@ -195,7 +198,7 @@ class MyTestCase(unittest.TestCase):
195
198
  ]
196
199
  }```
197
200
  """
198
- self.assertEqual(len(details['components']), 3)
201
+ self.assertEqual(len(details['components']), 4)
199
202
  self.assertEqual(
200
203
  re.sub(r'\s|\\(?!`)|\\(?=`)', '', summary), re.sub(r'\s|\\(?!`)|\\(?=`)', '', expected_summary_output)
201
204
  )
@@ -216,14 +219,18 @@ class MyTestCase(unittest.TestCase):
216
219
  expected_details_output = """ ### Undeclared components
217
220
  | Component | License |
218
221
  | - | - |
222
+ | pkg:github/scanoss/jenkins-pipeline-example | unknown |
219
223
  | pkg:github/scanoss/scanner.c | GPL-2.0-only |
220
224
  | pkg:github/scanoss/wfp | GPL-2.0-only | """
221
225
 
222
- expected_summary_output = """2 undeclared component(s) were found.
226
+ expected_summary_output = """3 undeclared component(s) were found.
223
227
  Add the following snippet into your `sbom.json` file
224
228
  ```json
225
229
  {
226
230
  "components":[
231
+ {
232
+ "purl": "pkg:github/scanoss/jenkins-pipeline-example"
233
+ },
227
234
  {
228
235
  "purl": "pkg:github/scanoss/scanner.c"
229
236
  },
@@ -256,16 +263,20 @@ class MyTestCase(unittest.TestCase):
256
263
  expected_details_output = """ ### Undeclared components
257
264
  | Component | License |
258
265
  | - | - |
266
+ | pkg:github/scanoss/jenkins-pipeline-example | unknown |
259
267
  | pkg:github/scanoss/scanner.c | GPL-2.0-only |
260
268
  | pkg:github/scanoss/wfp | GPL-2.0-only | """
261
269
 
262
- expected_summary_output = """2 undeclared component(s) were found.
270
+ expected_summary_output = """3 undeclared component(s) were found.
263
271
  Add the following snippet into your `scanoss.json` file
264
272
 
265
273
  ```json
266
274
  {
267
275
  "bom": {
268
276
  "include": [
277
+ {
278
+ "purl": "pkg:github/scanoss/jenkins-pipeline-example"
279
+ },
269
280
  {
270
281
  "purl": "pkg:github/scanoss/scanner.c"
271
282
  },
@@ -296,13 +307,16 @@ class MyTestCase(unittest.TestCase):
296
307
  status, results = undeclared.run()
297
308
  details = json.loads(results['details'])
298
309
  summary = results['summary']
299
- expected_summary_output = """2 undeclared component(s) were found.
310
+ expected_summary_output = """3 undeclared component(s) were found.
300
311
  Add the following snippet into your `scanoss.json` file
301
312
 
302
313
  ```json
303
314
  {
304
315
  "bom": {
305
316
  "include": [
317
+ {
318
+ "purl": "pkg:github/scanoss/jenkins-pipeline-example"
319
+ },
306
320
  {
307
321
  "purl": "pkg:github/scanoss/scanner.c"
308
322
  },
@@ -314,7 +328,7 @@ class MyTestCase(unittest.TestCase):
314
328
  }
315
329
  ```"""
316
330
  self.assertEqual(status, 0)
317
- self.assertEqual(len(details['components']), 3)
331
+ self.assertEqual(len(details['components']), 4)
318
332
  self.assertEqual(
319
333
  re.sub(r'\s|\\(?!`)|\\(?=`)', '', summary), re.sub(r'\s|\\(?!`)|\\(?=`)', '', expected_summary_output)
320
334
  )
@@ -328,15 +342,19 @@ class MyTestCase(unittest.TestCase):
328
342
  details = results['details']
329
343
  summary = results['summary']
330
344
  expected_details_output = """|*Component*|*License*|
345
+ |pkg:github/scanoss/jenkins-pipeline-example|unknown|
331
346
  |pkg:github/scanoss/scanner.c|GPL-2.0-only|
332
347
  |pkg:github/scanoss/wfp|GPL-2.0-only|
333
348
  """
334
- expected_summary_output = """2 undeclared component(s) were found.
349
+ expected_summary_output = """3 undeclared component(s) were found.
335
350
  Add the following snippet into your `scanoss.json` file
336
351
  {code:json}
337
352
  {
338
353
  "bom": {
339
354
  "include": [
355
+ {
356
+ "purl": "pkg:github/scanoss/jenkins-pipeline-example"
357
+ },
340
358
  {
341
359
  "purl": "pkg:github/scanoss/scanner.c"
342
360
  },
@@ -373,7 +391,7 @@ Add the following snippet into your `scanoss.json` file
373
391
  input_file_name = os.path.join(script_dir, 'data', file_name)
374
392
  i_license_summary = LicenseSummary(filepath=input_file_name)
375
393
  license_summary = i_license_summary.run()
376
- self.assertEqual(license_summary['detectedLicenses'], 2)
394
+ self.assertEqual(license_summary['detectedLicenses'], 3)
377
395
  self.assertEqual(license_summary['detectedLicensesWithCopyleft'], 1)
378
396
 
379
397
  def test_inspect_license_summary_with_empty_result(self):
@@ -393,11 +411,11 @@ Add the following snippet into your `scanoss.json` file
393
411
  i_component_summary = ComponentSummary(filepath=input_file_name)
394
412
  component_summary = i_component_summary.run()
395
413
  print(component_summary)
396
- self.assertEqual(component_summary['totalComponents'], 3)
397
- self.assertEqual(component_summary['undeclaredComponents'], 2)
414
+ self.assertEqual(component_summary['totalComponents'], 4)
415
+ self.assertEqual(component_summary['undeclaredComponents'], 3)
398
416
  self.assertEqual(component_summary['declaredComponents'], 1)
399
- self.assertEqual(component_summary['totalFilesDetected'], 7)
400
- self.assertEqual(component_summary['totalFilesUndeclared'], 5)
417
+ self.assertEqual(component_summary['totalFilesDetected'], 8)
418
+ self.assertEqual(component_summary['totalFilesUndeclared'], 6)
401
419
  self.assertEqual(component_summary['totalFilesDeclared'], 2)
402
420
 
403
421
  def test_inspect_component_summary_empty_result(self):
@@ -58,8 +58,8 @@ class MyTestCase(unittest.TestCase):
58
58
  self.assertEqual(name, "SCANOSS-SBOM")
59
59
  self.assertEqual(organization, "Organization: SCANOSS")
60
60
  self.assertEqual(creation_info_comment, "SBOM Build information - SBOM Type: Build")
61
- self.assertEqual(len(document_describes), 5)
62
- self.assertEqual(len(packages), 5)
61
+ self.assertEqual(len(document_describes), 6)
62
+ self.assertEqual(len(packages), 6)
63
63
 
64
64
  for package in packages:
65
65
  for checksum in package.get("checksums", []):
@@ -1 +0,0 @@
1
- date: 20250623123500, utime: 1750682100
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes