From 6722ed05cf17892383063f651ae7a05ebe4b0931 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Mon, 24 Jun 2024 19:57:53 +0530 Subject: [PATCH 01/12] Add handler for packages.lock.json in nuget Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 42 +++ .../data/nuget/packages.lock.json | 341 ++++++++++++++++++ tests/packagedcode/test_nuget.py | 6 + 3 files changed, 389 insertions(+) create mode 100644 tests/packagedcode/data/nuget/packages.lock.json diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index de584038d48..9e387f01364 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -7,6 +7,7 @@ # See https://aboutcode.org for more information about nexB OSS projects. # +import json import xmltodict from packageurl import PackageURL @@ -179,3 +180,44 @@ def parse(cls, location, package_only=False): ) yield models.PackageData.from_data(package_data, package_only) +class NugetPackagesLockHandler(models.DatafileHandler): + datasource_id = 'nuget_packages_lock' + path_patterns = ('packages.lock.json',) + default_package_type = 'nuget' + description = 'NuGet packages.lock.json file' + documentation_url = 'https://docs.microsoft.com/en-us/nuget/reference/packages-lock-file' + + @classmethod + def is_datafile(cls, location, filetypes=..., _bare_filename=False): + return super().is_datafile(location, filetypes, _bare_filename) and location.endswith('.lock.json') + + @classmethod + def parse(cls, location, package_only=False): + with open(location) as loc: + parsed = json.load(loc) + + if not parsed: + return + + version = parsed.get('version') + dependencies = parsed.get('dependencies', {}) + + for target_framework, packages in dependencies.items(): + for package_name, package_info in packages.items(): + extra_data = dict( + type=package_info.get('type'), + requested=package_info.get('requested'), + contentHash=package_info.get('contentHash'), + dependencies=package_info.get('dependencies') + ) + yield models.DependentPackage( + purl=str(PackageURL(type='nuget', name=package_name, version=package_info.get('resolved'))), + extracted_requirement=package_info.get('requested'), + scope='dependency', + is_runtime=True, + is_optional=False, + is_resolved=True, + is_direct=False, + extra_data=extra_data, + ) + diff --git a/tests/packagedcode/data/nuget/packages.lock.json b/tests/packagedcode/data/nuget/packages.lock.json new file mode 100644 index 00000000000..e5b2c894851 --- /dev/null +++ b/tests/packagedcode/data/nuget/packages.lock.json @@ -0,0 +1,341 @@ +{ + "version": 1, + "dependencies": { + "net6.0": { + "McMaster.Extensions.Hosting.CommandLine": { + "type": "Direct", + "requested": "[4.0.1, )", + "resolved": "4.0.1", + "contentHash": "pZJF/zeXT3OC+3GUNO9ZicpCO9I7wYLmj0E2qPR8CRA6iUs0kGu6SCkmraB1sITx4elcVjMLiZDGMsBVMqaPhg==", + "dependencies": { + "McMaster.Extensions.CommandLineUtils": "4.0.1", + "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0" + } + }, + "Microsoft.Extensions.Hosting": { + "type": "Direct", + "requested": "[6.0.1, )", + "resolved": "6.0.1", + "contentHash": "hbmizc9KPWOacLU8Z8YMaBG6KWdZFppczYV/KwnPGU/8xebWxQxdDeJmLOgg968prb7g2oQgnp6JVLX6lgby8g==", + "dependencies": { + "Microsoft.Extensions.Configuration": "6.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.Configuration.Binder": "6.0.0", + "Microsoft.Extensions.Configuration.CommandLine": "6.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "6.0.1", + "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0", + "Microsoft.Extensions.Configuration.Json": "6.0.0", + "Microsoft.Extensions.Configuration.UserSecrets": "6.0.1", + "Microsoft.Extensions.DependencyInjection": "6.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0", + "Microsoft.Extensions.FileProviders.Physical": "6.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging.Configuration": "6.0.0", + "Microsoft.Extensions.Logging.Console": "6.0.0", + "Microsoft.Extensions.Logging.Debug": "6.0.0", + "Microsoft.Extensions.Logging.EventLog": "6.0.0", + "Microsoft.Extensions.Logging.EventSource": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0" + } + }, + "Microsoft.Extensions.Options.DataAnnotations": { + "type": "Direct", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "Fvs4plZYQT/iF/JsYwP/pppQRvQC211enBjCoIu/355M+aunlzSyzN/n3wPibyY76794MFLkLVT47JCBc3porg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0", + "System.ComponentModel.Annotations": "5.0.0" + } + }, + "McMaster.Extensions.CommandLineUtils": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "nqKyjpNB37t3xYYTkst8r5dU5Cxj3HWirR1H6U5iiSRrUJLBeJQHogHk/HsnDqVnq0+jrzSxYw8lJ02GsTRcrw==", + "dependencies": { + "System.ComponentModel.Annotations": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "tq2wXyh3fL17EMF2bXgRhU7JrbO3on93MRKYxzz4JzzvuGSA1l0W3GI9/tl8EO89TH+KWEymP7bcFway6z9fXg==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.Primitives": "6.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "6.0.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0" + } + }, + "Microsoft.Extensions.Configuration.CommandLine": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "3nL1qCkZ1Oxx14ZTzgo4MmlO7tso7F+TtMZAY2jUAtTLyAcDp+EDjk3RqafoKiNaePyPvvlleEcBxh3b2Hzl1g==", + "dependencies": { + "Microsoft.Extensions.Configuration": "6.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0" + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "pnyXV1LFOsYjGveuC07xp0YHIyGq7jRq5Ncb5zrrIieMLWVwgMyYxcOH0jTnBedDT4Gh1QinSqsjqzcieHk1og==", + "dependencies": { + "Microsoft.Extensions.Configuration": "6.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "V4Dth2cYMZpw3HhGw9XUDIijpI6gN+22LDt0AhufIgOppCUfpWX4483OmN+dFXRJkJLc8Tv0Q8QK+1ingT2+KQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "6.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0", + "Microsoft.Extensions.FileProviders.Physical": "6.0.0", + "Microsoft.Extensions.Primitives": "6.0.0" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "GJGery6QytCzS/BxJ96klgG9in3uH26KcUBbiVG/coNDXCRq6LGVVlUT4vXq34KPuM+R2av+LeYdX9h4IZOCUg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "6.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0", + "System.Text.Json": "6.0.0" + } + }, + "Microsoft.Extensions.Configuration.UserSecrets": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "Fy8yr4V6obi7ZxvKYI1i85jqtwMq8tqyxQVZpRSkgeA8enqy/KvBIMdcuNdznlxQMZa72mvbHqb7vbg4Pyx95w==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.Configuration.Json": "6.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0", + "Microsoft.Extensions.FileProviders.Physical": "6.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==" + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "6.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "QvkL7l0nM8udt3gfyu0Vw8bbCXblxaKOl7c2oBfgGy4LCURRaL9XWZX1FWJrQc43oMokVneVxH38iz+bY1sbhg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "6.0.0", + "Microsoft.Extensions.Primitives": "6.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "ip8jnL1aPiaPeKINCqaTEbvBFDmVx9dXQEBZ2HOBRXPD1eabGNqP/bKlsIcp7U2lGxiXd5xIhoFcmY8nM4Hdiw==" + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "6.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0", + "System.Diagnostics.DiagnosticSource": "6.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==" + }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "ZDskjagmBAbv+K8rYW9VhjPplhbOE63xUD0DiuydZJwt15dRyoqicYklLd86zzeintUc7AptDkHn+YhhYkYo8A==", + "dependencies": { + "Microsoft.Extensions.Configuration": "6.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.Configuration.Binder": "6.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0" + } + }, + "Microsoft.Extensions.Logging.Console": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "gsqKzOEdsvq28QiXFxagmn1oRB9GeI5GgYCkoybZtQA0IUb7QPwf1WmN3AwJeNIsadTvIFQCiVK0OVIgKfOBGg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging.Configuration": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0", + "System.Text.Json": "6.0.0" + } + }, + "Microsoft.Extensions.Logging.Debug": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "M9g/JixseSZATJE9tcMn9uzoD4+DbSglivFqVx8YkRJ7VVPmnvCEbOZ0AAaxsL1EKyI4cz07DXOOJExxNsUOHw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0" + } + }, + "Microsoft.Extensions.Logging.EventLog": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "rlo0RxlMd0WtLG3CHI0qOTp6fFn7MvQjlrCjucA31RqmiMFCZkF8CHNbe8O7tbBIyyoLGWB1he9CbaA5iyHthg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0", + "System.Diagnostics.EventLog": "6.0.0" + } + }, + "Microsoft.Extensions.Logging.EventSource": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "BeDyyqt7nkm/nr+Gdk+L8n1tUT/u33VkbXAOesgYSNsxDM9hJ1NOBGoZfj9rCbeD2+9myElI6JOVVFmnzgeWQA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Logging": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0", + "Microsoft.Extensions.Primitives": "6.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Json": "6.0.0" + } + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Primitives": "6.0.0" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "bXWINbTn0vC0FYc9GaQTISbxhQLAMrvtbuvD9N6JelEaIS/Pr62wUCinrq5bf1WRBGczt1v4wDhxFtVFNcMdUQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.Configuration.Binder": "6.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.Options": "6.0.0", + "Microsoft.Extensions.Primitives": "6.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==" + }, + "System.Diagnostics.DiagnosticSource": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "6.0.0" + } + } + } + } + } \ No newline at end of file diff --git a/tests/packagedcode/test_nuget.py b/tests/packagedcode/test_nuget.py index 647b3d1024e..501631b99e6 100644 --- a/tests/packagedcode/test_nuget.py +++ b/tests/packagedcode/test_nuget.py @@ -62,3 +62,9 @@ def test_parse_as_package_only(self): package = nuget.NugetNuspecHandler.parse(location=test_file, package_only=True) expected_loc = self.get_test_loc('nuget/Castle.Core.nuspec-package-only.json.expected') self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES, package_only=True) + + def test_parse_nuget_package_lock_json(self): + test_file = self.get_test_loc('nuget/Castle.Core.nuspec') + package = nuget.NugetNuspecHandler.parse(location=test_file, package_only=True) + expected_loc = self.get_test_loc('nuget/Castle.Core.nuspec-package-only.json.expected') + self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES, package_only=True) From a5ba6c534c4d713f99b8d89c4f4ff10689361e33 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Mon, 24 Jun 2024 21:23:09 +0530 Subject: [PATCH 02/12] Add new generate files Signed-off-by: Tushar Goel --- .../nuget/Castle.Core.nuspec.json.expected | 23 +++----------- .../EntityFramework.nuspec.json.expected | 13 +++----- .../Microsoft.AspNet.Mvc.nuspec.json.expected | 31 +++---------------- .../Microsoft.Net.Http.nuspec.json.expected | 15 +++------ .../data/nuget/bootstrap.nuspec.json.expected | 14 +++------ .../jQuery.UI.Combined.nuspec.json.expected | 14 +++------ 6 files changed, 24 insertions(+), 86 deletions(-) diff --git a/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected b/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected index f23616b8b9e..e5a92af05ac 100644 --- a/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected @@ -43,20 +43,17 @@ "license_detections": [ { "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", "matches": [ { - "license_expression": "apache-2.0", - "spdx_license_expression": "Apache-2.0", - "from_file": null, + "score": 100.0, "start_line": 1, "end_line": 1, - "matcher": "1-hash", - "score": 100.0, "matched_length": 9, "match_coverage": 100.0, - "rule_relevance": 100, + "matcher": "1-hash", + "license_expression": "apache-2.0", "rule_identifier": "apache-2.0_20.RULE", + "rule_relevance": 100, "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/apache-2.0_20.RULE", "matched_text": "http://www.apache.org/licenses/LICENSE-2.0.html" } @@ -71,8 +68,6 @@ "notice_text": null, "source_packages": [], "file_references": [], - "is_private": false, - "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -82,7 +77,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -96,7 +90,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -110,7 +103,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -124,7 +116,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -138,7 +129,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -152,7 +142,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -166,7 +155,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -180,7 +168,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -194,7 +181,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -208,7 +194,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", diff --git a/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected b/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected index 2c67693b34c..94af46e24ff 100644 --- a/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected @@ -43,20 +43,17 @@ "license_detections": [ { "license_expression": "ms-net-library", - "license_expression_spdx": "LicenseRef-scancode-ms-net-library", "matches": [ { - "license_expression": "ms-net-library", - "spdx_license_expression": "LicenseRef-scancode-ms-net-library", - "from_file": null, + "score": 100.0, "start_line": 1, "end_line": 1, - "matcher": "1-hash", - "score": 100.0, "matched_length": 7, "match_coverage": 100.0, - "rule_relevance": 100, + "matcher": "1-hash", + "license_expression": "ms-net-library", "rule_identifier": "ms-net-library_6.RULE", + "rule_relevance": 100, "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/ms-net-library_6.RULE", "matched_text": "http://go.microsoft.com/fwlink/?LinkID=320539" } @@ -71,8 +68,6 @@ "notice_text": null, "source_packages": [], "file_references": [], - "is_private": false, - "is_virtual": false, "extra_data": {}, "dependencies": [], "repository_homepage_url": "https://www.nuget.org/packages/EntityFramework/6.1.3", diff --git a/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected b/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected index 6891892e26c..03d3d6e32c4 100644 --- a/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected @@ -43,20 +43,17 @@ "license_detections": [ { "license_expression": "ms-net-library", - "license_expression_spdx": "LicenseRef-scancode-ms-net-library", "matches": [ { - "license_expression": "ms-net-library", - "spdx_license_expression": "LicenseRef-scancode-ms-net-library", - "from_file": null, + "score": 100.0, "start_line": 1, "end_line": 1, - "matcher": "1-hash", - "score": 100.0, "matched_length": 12, "match_coverage": 100.0, - "rule_relevance": 100, + "matcher": "1-hash", + "license_expression": "ms-net-library", "rule_identifier": "ms-net-library_1.RULE", + "rule_relevance": 100, "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/ms-net-library_1.RULE", "matched_text": "http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm" } @@ -71,8 +68,6 @@ "notice_text": null, "source_packages": [], "file_references": [], - "is_private": false, - "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -82,7 +77,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -95,7 +89,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -108,7 +101,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -121,7 +113,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -134,7 +125,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -147,7 +137,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -160,7 +149,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -173,7 +161,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -186,7 +173,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -199,7 +185,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -212,7 +197,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -225,7 +209,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -238,7 +221,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -251,7 +233,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -264,7 +245,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -277,7 +257,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -290,7 +269,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -303,7 +281,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" diff --git a/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected b/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected index 3bc0cf6e682..3325607a036 100644 --- a/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected @@ -43,20 +43,17 @@ "license_detections": [ { "license_expression": "ms-net-library-2018-11", - "license_expression_spdx": "LicenseRef-scancode-ms-net-library-2018-11", "matches": [ { - "license_expression": "ms-net-library-2018-11", - "spdx_license_expression": "LicenseRef-scancode-ms-net-library-2018-11", - "from_file": null, + "score": 100.0, "start_line": 1, "end_line": 1, - "matcher": "1-hash", - "score": 100.0, "matched_length": 7, "match_coverage": 100.0, - "rule_relevance": 100, + "matcher": "1-hash", + "license_expression": "ms-net-library-2018-11", "rule_identifier": "ms-net-library-2018-11_3.RULE", + "rule_relevance": 100, "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/ms-net-library-2018-11_3.RULE", "matched_text": "http://go.microsoft.com/fwlink/?LinkId=329770" } @@ -71,8 +68,6 @@ "notice_text": null, "source_packages": [], "file_references": [], - "is_private": false, - "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -82,7 +77,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -93,7 +87,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": {} } diff --git a/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected b/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected index 6ec02e564f3..5eacec8e40c 100644 --- a/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected @@ -43,20 +43,17 @@ "license_detections": [ { "license_expression": "mit", - "license_expression_spdx": "MIT", "matches": [ { - "license_expression": "mit", - "spdx_license_expression": "MIT", - "from_file": null, + "score": 100.0, "start_line": 1, "end_line": 1, - "matcher": "1-hash", - "score": 100.0, "matched_length": 8, "match_coverage": 100.0, - "rule_relevance": 100, + "matcher": "1-hash", + "license_expression": "mit", "rule_identifier": "mit_180.RULE", + "rule_relevance": 100, "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_180.RULE", "matched_text": "https://github.com/twbs/bootstrap/blob/master/LICENSE" } @@ -71,8 +68,6 @@ "notice_text": null, "source_packages": [], "file_references": [], - "is_private": false, - "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -82,7 +77,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": {} } diff --git a/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected b/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected index a31de84ec75..801c127bbcc 100644 --- a/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected @@ -43,20 +43,17 @@ "license_detections": [ { "license_expression": "mit", - "license_expression_spdx": "MIT", "matches": [ { - "license_expression": "mit", - "spdx_license_expression": "MIT", - "from_file": null, + "score": 80.0, "start_line": 1, "end_line": 1, - "matcher": "1-hash", - "score": 80.0, "matched_length": 4, "match_coverage": 100.0, - "rule_relevance": 80, + "matcher": "1-hash", + "license_expression": "mit", "rule_identifier": "mit_jquery_url.RULE", + "rule_relevance": 80, "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_jquery_url.RULE", "matched_text": "http://jquery.org/license" } @@ -71,8 +68,6 @@ "notice_text": null, "source_packages": [], "file_references": [], - "is_private": false, - "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -82,7 +77,6 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, - "is_direct": true, "resolved_package": {}, "extra_data": {} } From 03fce8cb71cb7402dd7c645f49de5380743ced85 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 14:39:28 +0530 Subject: [PATCH 03/12] Fix parsing format Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 65 +- .../nuget/Castle.Core.nuspec.json.expected | 23 +- .../EntityFramework.nuspec.json.expected | 13 +- .../Microsoft.AspNet.Mvc.nuspec.json.expected | 31 +- .../Microsoft.Net.Http.nuspec.json.expected | 15 +- .../data/nuget/bootstrap.nuspec.json.expected | 14 +- .../jQuery.UI.Combined.nuspec.json.expected | 14 +- .../data/nuget/packages.lock.json.expected | 3068 +++++++++++++++++ tests/packagedcode/test_nuget.py | 6 +- 9 files changed, 3206 insertions(+), 43 deletions(-) create mode 100644 tests/packagedcode/data/nuget/packages.lock.json.expected diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index 9e387f01364..492f9d5132a 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -199,25 +199,58 @@ def parse(cls, location, package_only=False): if not parsed: return - version = parsed.get('version') - dependencies = parsed.get('dependencies', {}) - - for target_framework, packages in dependencies.items(): + top_dependencies = [] + for target_framework, packages in parsed.get('dependencies', {}).items(): + extra_data = dict( + target_framework=target_framework, + ) for package_name, package_info in packages.items(): - extra_data = dict( - type=package_info.get('type'), - requested=package_info.get('requested'), - contentHash=package_info.get('contentHash'), - dependencies=package_info.get('dependencies') + dependencies = get_dependencies(package_info) + resolved_package_mapping = dict( + datasource_id=cls.datasource_id, + type=cls.default_package_type, + primary_language=cls.default_primary_language, + name=package_name, + version=package_info.get('version'), + dependencies=[ + dep.to_dict() for dep in dependencies + ], + is_virtual=True, ) - yield models.DependentPackage( + resolved_package = models.PackageData.from_data(resolved_package_mapping) + dependency = models.DependentPackage( purl=str(PackageURL(type='nuget', name=package_name, version=package_info.get('resolved'))), - extracted_requirement=package_info.get('requested'), - scope='dependency', - is_runtime=True, - is_optional=False, + extracted_requirement=package_info.get('requested') or package_info.get('resolved'), is_resolved=True, - is_direct=False, - extra_data=extra_data, + resolved_package=resolved_package.to_dict(), + scope=package_info.get('type'), + is_optional=False, + is_runtime=True, + is_direct=True if package_info.get('type') == 'Direct' else False, ) + top_dependencies.append(dependency.to_dict()) + package_data = dict( + datasource_id=cls.datasource_id, + type=cls.default_package_type, + primary_language=cls.default_primary_language, + extra_data=extra_data, + dependencies=top_dependencies, + ) + yield models.PackageData.from_data(package_data, package_only) + + +def get_dependencies(package_info): + dependencies = [] + for dep in package_info.get('dependencies', {}): + dependency = models.DependentPackage( + purl=str(PackageURL(type='nuget', name=dep, version=package_info["dependencies"][dep])), + extracted_requirement=package_info["dependencies"][dep], + is_resolved=True, + scope='dependencies', + is_optional=False, + is_runtime=True, + is_direct=False, + ) + dependencies.append(dependency) + return dependencies diff --git a/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected b/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected index e5a92af05ac..f23616b8b9e 100644 --- a/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/Castle.Core.nuspec.json.expected @@ -43,17 +43,20 @@ "license_detections": [ { "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", "matches": [ { - "score": 100.0, + "license_expression": "apache-2.0", + "spdx_license_expression": "Apache-2.0", + "from_file": null, "start_line": 1, "end_line": 1, + "matcher": "1-hash", + "score": 100.0, "matched_length": 9, "match_coverage": 100.0, - "matcher": "1-hash", - "license_expression": "apache-2.0", - "rule_identifier": "apache-2.0_20.RULE", "rule_relevance": 100, + "rule_identifier": "apache-2.0_20.RULE", "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/apache-2.0_20.RULE", "matched_text": "http://www.apache.org/licenses/LICENSE-2.0.html" } @@ -68,6 +71,8 @@ "notice_text": null, "source_packages": [], "file_references": [], + "is_private": false, + "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -77,6 +82,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -90,6 +96,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -103,6 +110,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -116,6 +124,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -129,6 +138,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -142,6 +152,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -155,6 +166,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -168,6 +180,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -181,6 +194,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", @@ -194,6 +208,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": ".NETStandard1.3", diff --git a/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected b/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected index 94af46e24ff..2c67693b34c 100644 --- a/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/EntityFramework.nuspec.json.expected @@ -43,17 +43,20 @@ "license_detections": [ { "license_expression": "ms-net-library", + "license_expression_spdx": "LicenseRef-scancode-ms-net-library", "matches": [ { - "score": 100.0, + "license_expression": "ms-net-library", + "spdx_license_expression": "LicenseRef-scancode-ms-net-library", + "from_file": null, "start_line": 1, "end_line": 1, + "matcher": "1-hash", + "score": 100.0, "matched_length": 7, "match_coverage": 100.0, - "matcher": "1-hash", - "license_expression": "ms-net-library", - "rule_identifier": "ms-net-library_6.RULE", "rule_relevance": 100, + "rule_identifier": "ms-net-library_6.RULE", "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/ms-net-library_6.RULE", "matched_text": "http://go.microsoft.com/fwlink/?LinkID=320539" } @@ -68,6 +71,8 @@ "notice_text": null, "source_packages": [], "file_references": [], + "is_private": false, + "is_virtual": false, "extra_data": {}, "dependencies": [], "repository_homepage_url": "https://www.nuget.org/packages/EntityFramework/6.1.3", diff --git a/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected b/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected index 03d3d6e32c4..6891892e26c 100644 --- a/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/Microsoft.AspNet.Mvc.nuspec.json.expected @@ -43,17 +43,20 @@ "license_detections": [ { "license_expression": "ms-net-library", + "license_expression_spdx": "LicenseRef-scancode-ms-net-library", "matches": [ { - "score": 100.0, + "license_expression": "ms-net-library", + "spdx_license_expression": "LicenseRef-scancode-ms-net-library", + "from_file": null, "start_line": 1, "end_line": 1, + "matcher": "1-hash", + "score": 100.0, "matched_length": 12, "match_coverage": 100.0, - "matcher": "1-hash", - "license_expression": "ms-net-library", - "rule_identifier": "ms-net-library_1.RULE", "rule_relevance": 100, + "rule_identifier": "ms-net-library_1.RULE", "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/ms-net-library_1.RULE", "matched_text": "http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm" } @@ -68,6 +71,8 @@ "notice_text": null, "source_packages": [], "file_references": [], + "is_private": false, + "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -77,6 +82,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -89,6 +95,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -101,6 +108,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -113,6 +121,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -125,6 +134,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -137,6 +147,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -149,6 +160,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -161,6 +173,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -173,6 +186,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNX4.5.1" @@ -185,6 +199,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -197,6 +212,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -209,6 +225,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -221,6 +238,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -233,6 +251,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -245,6 +264,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -257,6 +277,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -269,6 +290,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" @@ -281,6 +303,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": { "framework": "DNXCore5.0" diff --git a/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected b/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected index 3325607a036..3bc0cf6e682 100644 --- a/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/Microsoft.Net.Http.nuspec.json.expected @@ -43,17 +43,20 @@ "license_detections": [ { "license_expression": "ms-net-library-2018-11", + "license_expression_spdx": "LicenseRef-scancode-ms-net-library-2018-11", "matches": [ { - "score": 100.0, + "license_expression": "ms-net-library-2018-11", + "spdx_license_expression": "LicenseRef-scancode-ms-net-library-2018-11", + "from_file": null, "start_line": 1, "end_line": 1, + "matcher": "1-hash", + "score": 100.0, "matched_length": 7, "match_coverage": 100.0, - "matcher": "1-hash", - "license_expression": "ms-net-library-2018-11", - "rule_identifier": "ms-net-library-2018-11_3.RULE", "rule_relevance": 100, + "rule_identifier": "ms-net-library-2018-11_3.RULE", "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/ms-net-library-2018-11_3.RULE", "matched_text": "http://go.microsoft.com/fwlink/?LinkId=329770" } @@ -68,6 +71,8 @@ "notice_text": null, "source_packages": [], "file_references": [], + "is_private": false, + "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -77,6 +82,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -87,6 +93,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } diff --git a/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected b/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected index 5eacec8e40c..6ec02e564f3 100644 --- a/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/bootstrap.nuspec.json.expected @@ -43,17 +43,20 @@ "license_detections": [ { "license_expression": "mit", + "license_expression_spdx": "MIT", "matches": [ { - "score": 100.0, + "license_expression": "mit", + "spdx_license_expression": "MIT", + "from_file": null, "start_line": 1, "end_line": 1, + "matcher": "1-hash", + "score": 100.0, "matched_length": 8, "match_coverage": 100.0, - "matcher": "1-hash", - "license_expression": "mit", - "rule_identifier": "mit_180.RULE", "rule_relevance": 100, + "rule_identifier": "mit_180.RULE", "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_180.RULE", "matched_text": "https://github.com/twbs/bootstrap/blob/master/LICENSE" } @@ -68,6 +71,8 @@ "notice_text": null, "source_packages": [], "file_references": [], + "is_private": false, + "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -77,6 +82,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } diff --git a/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected b/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected index 801c127bbcc..a31de84ec75 100644 --- a/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected +++ b/tests/packagedcode/data/nuget/jQuery.UI.Combined.nuspec.json.expected @@ -43,17 +43,20 @@ "license_detections": [ { "license_expression": "mit", + "license_expression_spdx": "MIT", "matches": [ { - "score": 80.0, + "license_expression": "mit", + "spdx_license_expression": "MIT", + "from_file": null, "start_line": 1, "end_line": 1, + "matcher": "1-hash", + "score": 80.0, "matched_length": 4, "match_coverage": 100.0, - "matcher": "1-hash", - "license_expression": "mit", - "rule_identifier": "mit_jquery_url.RULE", "rule_relevance": 80, + "rule_identifier": "mit_jquery_url.RULE", "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_jquery_url.RULE", "matched_text": "http://jquery.org/license" } @@ -68,6 +71,8 @@ "notice_text": null, "source_packages": [], "file_references": [], + "is_private": false, + "is_virtual": false, "extra_data": {}, "dependencies": [ { @@ -77,6 +82,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } diff --git a/tests/packagedcode/data/nuget/packages.lock.json.expected b/tests/packagedcode/data/nuget/packages.lock.json.expected new file mode 100644 index 00000000000..42c8c060394 --- /dev/null +++ b/tests/packagedcode/data/nuget/packages.lock.json.expected @@ -0,0 +1,3068 @@ +[ + { + "type": "nuget", + "namespace": null, + "name": null, + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "target_framework": "net6.0" + }, + "dependencies": [ + { + "purl": "pkg:nuget/McMaster.Extensions.Hosting.CommandLine@4.0.1", + "extracted_requirement": "[4.0.1, )", + "scope": "Direct", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": true, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "McMaster.Extensions.Hosting.CommandLine", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/McMaster.Extensions.CommandLineUtils@4.0.1", + "extracted_requirement": "4.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/McMaster.Extensions.Hosting.CommandLine" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Hosting@6.0.1", + "extracted_requirement": "[6.0.1, )", + "scope": "Direct", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": true, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Hosting", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.CommandLine@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.EnvironmentVariables@6.0.1", + "extracted_requirement": "6.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.UserSecrets@6.0.1", + "extracted_requirement": "6.0.1", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Console@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Debug@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventLog@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventSource@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Hosting" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options.DataAnnotations@6.0.0", + "extracted_requirement": "[6.0.0, )", + "scope": "Direct", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": true, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Options.DataAnnotations", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.ComponentModel.Annotations@5.0.0", + "extracted_requirement": "5.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Options.DataAnnotations" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/McMaster.Extensions.CommandLineUtils@4.0.1", + "extracted_requirement": "4.0.1", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "McMaster.Extensions.CommandLineUtils", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/System.ComponentModel.Annotations@5.0.0", + "extracted_requirement": "5.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/McMaster.Extensions.CommandLineUtils" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration.Abstractions", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration.Binder", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.CommandLine@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration.CommandLine", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.CommandLine" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.EnvironmentVariables@6.0.1", + "extracted_requirement": "6.0.1", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration.EnvironmentVariables", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.EnvironmentVariables" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration.FileExtensions", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration.Json", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Text.Json@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.UserSecrets@6.0.1", + "extracted_requirement": "6.0.1", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Configuration.UserSecrets", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.UserSecrets" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.DependencyInjection", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.FileProviders.Abstractions", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.FileProviders.Physical", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileSystemGlobbing@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileSystemGlobbing@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.FileSystemGlobbing", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.FileSystemGlobbing" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Hosting.Abstractions", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Logging", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Logging" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Logging.Abstractions", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Logging.Configuration", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options.ConfigurationExtensions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Console@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Logging.Console", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Text.Json@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Console" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Debug@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Logging.Debug", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Debug" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventLog@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Logging.EventLog", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Diagnostics.EventLog@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventLog" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventSource@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Logging.EventSource", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Text.Json@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventSource" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Options", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Options" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options.ConfigurationExtensions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Options.ConfigurationExtensions", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Options.ConfigurationExtensions" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "Microsoft.Extensions.Primitives", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/Microsoft.Extensions.Primitives" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.ComponentModel.Annotations@5.0.0", + "extracted_requirement": "5.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "System.ComponentModel.Annotations", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/System.ComponentModel.Annotations" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "System.Diagnostics.DiagnosticSource", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/System.Diagnostics.DiagnosticSource" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Diagnostics.EventLog@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "System.Diagnostics.EventLog", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/System.Diagnostics.EventLog" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "System.Runtime.CompilerServices.Unsafe", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Text.Encodings.Web@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "System.Text.Encodings.Web", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/System.Text.Encodings.Web" + }, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Text.Json@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "Transitive", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": { + "type": "nuget", + "namespace": null, + "name": "System.Text.Json", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:nuget/System.Text.Encodings.Web@6.0.0", + "extracted_requirement": "6.0.0", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_resolved": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": "pkg:nuget/System.Text.Json" + }, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "nuget_packages_lock", + "purl": null + } +] \ No newline at end of file diff --git a/tests/packagedcode/test_nuget.py b/tests/packagedcode/test_nuget.py index 501631b99e6..fab30b99055 100644 --- a/tests/packagedcode/test_nuget.py +++ b/tests/packagedcode/test_nuget.py @@ -64,7 +64,7 @@ def test_parse_as_package_only(self): self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES, package_only=True) def test_parse_nuget_package_lock_json(self): - test_file = self.get_test_loc('nuget/Castle.Core.nuspec') - package = nuget.NugetNuspecHandler.parse(location=test_file, package_only=True) - expected_loc = self.get_test_loc('nuget/Castle.Core.nuspec-package-only.json.expected') + test_file = self.get_test_loc('nuget/packages.lock.json') + package = nuget.NugetPackagesLockHandler.parse(location=test_file) + expected_loc = self.get_test_loc('nuget/packages.lock.json.expected') self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES, package_only=True) From c3d4449e81296dc07ac7e33989de6f58dda988f6 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 14:50:51 +0530 Subject: [PATCH 04/12] Add version in resolved package Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 2 +- .../data/nuget/packages.lock.json.expected | 136 +++++++++--------- 2 files changed, 69 insertions(+), 69 deletions(-) diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index 492f9d5132a..4595e7bea80 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -211,11 +211,11 @@ def parse(cls, location, package_only=False): type=cls.default_package_type, primary_language=cls.default_primary_language, name=package_name, - version=package_info.get('version'), dependencies=[ dep.to_dict() for dep in dependencies ], is_virtual=True, + version=package_info.get('resolved'), ) resolved_package = models.PackageData.from_data(resolved_package_mapping) dependency = models.DependentPackage( diff --git a/tests/packagedcode/data/nuget/packages.lock.json.expected b/tests/packagedcode/data/nuget/packages.lock.json.expected index 42c8c060394..83761fc81d9 100644 --- a/tests/packagedcode/data/nuget/packages.lock.json.expected +++ b/tests/packagedcode/data/nuget/packages.lock.json.expected @@ -51,7 +51,7 @@ "type": "nuget", "namespace": null, "name": "McMaster.Extensions.Hosting.CommandLine", - "version": null, + "version": "4.0.1", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -123,7 +123,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/McMaster.Extensions.Hosting.CommandLine" + "purl": "pkg:nuget/McMaster.Extensions.Hosting.CommandLine@4.0.1" }, "extra_data": {} }, @@ -139,7 +139,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Hosting", - "version": null, + "version": "6.0.1", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -409,7 +409,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Hosting" + "purl": "pkg:nuget/Microsoft.Extensions.Hosting@6.0.1" }, "extra_data": {} }, @@ -425,7 +425,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Options.DataAnnotations", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -497,7 +497,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Options.DataAnnotations" + "purl": "pkg:nuget/Microsoft.Extensions.Options.DataAnnotations@6.0.0" }, "extra_data": {} }, @@ -513,7 +513,7 @@ "type": "nuget", "namespace": null, "name": "McMaster.Extensions.CommandLineUtils", - "version": null, + "version": "4.0.1", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -563,7 +563,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/McMaster.Extensions.CommandLineUtils" + "purl": "pkg:nuget/McMaster.Extensions.CommandLineUtils@4.0.1" }, "extra_data": {} }, @@ -579,7 +579,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -640,7 +640,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0" }, "extra_data": {} }, @@ -656,7 +656,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration.Abstractions", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -706,7 +706,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0" }, "extra_data": {} }, @@ -722,7 +722,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration.Binder", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -772,7 +772,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0" }, "extra_data": {} }, @@ -788,7 +788,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration.CommandLine", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -849,7 +849,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration.CommandLine" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.CommandLine@6.0.0" }, "extra_data": {} }, @@ -865,7 +865,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration.EnvironmentVariables", - "version": null, + "version": "6.0.1", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -926,7 +926,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration.EnvironmentVariables" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.EnvironmentVariables@6.0.1" }, "extra_data": {} }, @@ -942,7 +942,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration.FileExtensions", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1036,7 +1036,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions@6.0.0" }, "extra_data": {} }, @@ -1052,7 +1052,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration.Json", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1146,7 +1146,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json@6.0.0" }, "extra_data": {} }, @@ -1162,7 +1162,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Configuration.UserSecrets", - "version": null, + "version": "6.0.1", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1245,7 +1245,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Configuration.UserSecrets" + "purl": "pkg:nuget/Microsoft.Extensions.Configuration.UserSecrets@6.0.1" }, "extra_data": {} }, @@ -1261,7 +1261,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.DependencyInjection", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1322,7 +1322,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection" + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0" }, "extra_data": {} }, @@ -1338,7 +1338,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1376,7 +1376,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions" + "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0" }, "extra_data": {} }, @@ -1392,7 +1392,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.FileProviders.Abstractions", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1442,7 +1442,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions" + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0" }, "extra_data": {} }, @@ -1458,7 +1458,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.FileProviders.Physical", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1530,7 +1530,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical" + "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0" }, "extra_data": {} }, @@ -1546,7 +1546,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.FileSystemGlobbing", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1584,7 +1584,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.FileSystemGlobbing" + "purl": "pkg:nuget/Microsoft.Extensions.FileSystemGlobbing@6.0.0" }, "extra_data": {} }, @@ -1600,7 +1600,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Hosting.Abstractions", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1672,7 +1672,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions" + "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions@6.0.0" }, "extra_data": {} }, @@ -1688,7 +1688,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Logging", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1782,7 +1782,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Logging" + "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0" }, "extra_data": {} }, @@ -1798,7 +1798,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Logging.Abstractions", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1836,7 +1836,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions" + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0" }, "extra_data": {} }, @@ -1852,7 +1852,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Logging.Configuration", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -1979,7 +1979,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration" + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration@6.0.0" }, "extra_data": {} }, @@ -1995,7 +1995,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Logging.Console", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2100,7 +2100,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Logging.Console" + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Console@6.0.0" }, "extra_data": {} }, @@ -2116,7 +2116,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Logging.Debug", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2188,7 +2188,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Logging.Debug" + "purl": "pkg:nuget/Microsoft.Extensions.Logging.Debug@6.0.0" }, "extra_data": {} }, @@ -2204,7 +2204,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Logging.EventLog", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2298,7 +2298,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventLog" + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventLog@6.0.0" }, "extra_data": {} }, @@ -2314,7 +2314,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Logging.EventSource", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2430,7 +2430,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventSource" + "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventSource@6.0.0" }, "extra_data": {} }, @@ -2446,7 +2446,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Options", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2507,7 +2507,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Options" + "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0" }, "extra_data": {} }, @@ -2523,7 +2523,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Options.ConfigurationExtensions", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2617,7 +2617,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Options.ConfigurationExtensions" + "purl": "pkg:nuget/Microsoft.Extensions.Options.ConfigurationExtensions@6.0.0" }, "extra_data": {} }, @@ -2633,7 +2633,7 @@ "type": "nuget", "namespace": null, "name": "Microsoft.Extensions.Primitives", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2683,7 +2683,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/Microsoft.Extensions.Primitives" + "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0" }, "extra_data": {} }, @@ -2699,7 +2699,7 @@ "type": "nuget", "namespace": null, "name": "System.ComponentModel.Annotations", - "version": null, + "version": "5.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2737,7 +2737,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/System.ComponentModel.Annotations" + "purl": "pkg:nuget/System.ComponentModel.Annotations@5.0.0" }, "extra_data": {} }, @@ -2753,7 +2753,7 @@ "type": "nuget", "namespace": null, "name": "System.Diagnostics.DiagnosticSource", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2803,7 +2803,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/System.Diagnostics.DiagnosticSource" + "purl": "pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0" }, "extra_data": {} }, @@ -2819,7 +2819,7 @@ "type": "nuget", "namespace": null, "name": "System.Diagnostics.EventLog", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2857,7 +2857,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/System.Diagnostics.EventLog" + "purl": "pkg:nuget/System.Diagnostics.EventLog@6.0.0" }, "extra_data": {} }, @@ -2873,7 +2873,7 @@ "type": "nuget", "namespace": null, "name": "System.Runtime.CompilerServices.Unsafe", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2911,7 +2911,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe" + "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0" }, "extra_data": {} }, @@ -2927,7 +2927,7 @@ "type": "nuget", "namespace": null, "name": "System.Text.Encodings.Web", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -2977,7 +2977,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/System.Text.Encodings.Web" + "purl": "pkg:nuget/System.Text.Encodings.Web@6.0.0" }, "extra_data": {} }, @@ -2993,7 +2993,7 @@ "type": "nuget", "namespace": null, "name": "System.Text.Json", - "version": null, + "version": "6.0.0", "qualifiers": {}, "subpath": null, "primary_language": null, @@ -3054,7 +3054,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "nuget_packages_lock", - "purl": "pkg:nuget/System.Text.Json" + "purl": "pkg:nuget/System.Text.Json@6.0.0" }, "extra_data": {} } From f368bd4603123876dd638d03e1704463ff7c8ba7 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 16:30:39 +0530 Subject: [PATCH 05/12] Add version in resolved package Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 26 +++++-- .../data/nuget/packages.lock.json.expected | 68 +++++++++---------- 2 files changed, 55 insertions(+), 39 deletions(-) diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index 4595e7bea80..8c882955003 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -218,15 +218,28 @@ def parse(cls, location, package_only=False): version=package_info.get('resolved'), ) resolved_package = models.PackageData.from_data(resolved_package_mapping) + package_type = package_info.get('type') + if package_type == "Direct": + is_direct = True + elif package_type == "Transitive": + is_direct = False + else: + raise Exception(f"Unknown package type: {package_type}") + + + version = package_info.get('resolved') + requested = package_info.get('requested') dependency = models.DependentPackage( - purl=str(PackageURL(type='nuget', name=package_name, version=package_info.get('resolved'))), - extracted_requirement=package_info.get('requested') or package_info.get('resolved'), + purl=str(PackageURL(type='nuget', name=package_name, version=version)), + extracted_requirement=requested or version, is_resolved=True, resolved_package=resolved_package.to_dict(), - scope=package_info.get('type'), + # We use the target framework as scope since there is no concept of scope in .NET + # and we may have different resolutions for different target frameworks + scope=target_framework, is_optional=False, is_runtime=True, - is_direct=True if package_info.get('type') == 'Direct' else False, + is_direct=is_direct, ) top_dependencies.append(dependency.to_dict()) package_data = dict( @@ -234,7 +247,10 @@ def parse(cls, location, package_only=False): type=cls.default_package_type, primary_language=cls.default_primary_language, extra_data=extra_data, - dependencies=top_dependencies, + dependencies=top_dependencies, + # TODO: Check if we to put virtual or private for packages without a name and version + # is_virtual=True, + # is_private=True, ) yield models.PackageData.from_data(package_data, package_only) diff --git a/tests/packagedcode/data/nuget/packages.lock.json.expected b/tests/packagedcode/data/nuget/packages.lock.json.expected index 83761fc81d9..69a890dc0c9 100644 --- a/tests/packagedcode/data/nuget/packages.lock.json.expected +++ b/tests/packagedcode/data/nuget/packages.lock.json.expected @@ -42,7 +42,7 @@ { "purl": "pkg:nuget/McMaster.Extensions.Hosting.CommandLine@4.0.1", "extracted_requirement": "[4.0.1, )", - "scope": "Direct", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -130,7 +130,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Hosting@6.0.1", "extracted_requirement": "[6.0.1, )", - "scope": "Direct", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -416,7 +416,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options.DataAnnotations@6.0.0", "extracted_requirement": "[6.0.0, )", - "scope": "Direct", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -504,7 +504,7 @@ { "purl": "pkg:nuget/McMaster.Extensions.CommandLineUtils@4.0.1", "extracted_requirement": "4.0.1", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -570,7 +570,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -647,7 +647,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -713,7 +713,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -779,7 +779,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.CommandLine@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -856,7 +856,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.EnvironmentVariables@6.0.1", "extracted_requirement": "6.0.1", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -933,7 +933,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1043,7 +1043,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1153,7 +1153,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.UserSecrets@6.0.1", "extracted_requirement": "6.0.1", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1252,7 +1252,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1329,7 +1329,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1383,7 +1383,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1449,7 +1449,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1537,7 +1537,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileSystemGlobbing@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1591,7 +1591,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1679,7 +1679,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1789,7 +1789,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1843,7 +1843,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1986,7 +1986,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Console@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2107,7 +2107,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Debug@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2195,7 +2195,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventLog@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2305,7 +2305,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventSource@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2437,7 +2437,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2514,7 +2514,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options.ConfigurationExtensions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2624,7 +2624,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2690,7 +2690,7 @@ { "purl": "pkg:nuget/System.ComponentModel.Annotations@5.0.0", "extracted_requirement": "5.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2744,7 +2744,7 @@ { "purl": "pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2810,7 +2810,7 @@ { "purl": "pkg:nuget/System.Diagnostics.EventLog@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2864,7 +2864,7 @@ { "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2918,7 +2918,7 @@ { "purl": "pkg:nuget/System.Text.Encodings.Web@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2984,7 +2984,7 @@ { "purl": "pkg:nuget/System.Text.Json@6.0.0", "extracted_requirement": "6.0.0", - "scope": "Transitive", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, From 22be0701889557261f2fe57dd18ef0cbd11935c6 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 16:31:57 +0530 Subject: [PATCH 06/12] Add version in resolved package Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 6 +- .../data/nuget/packages.lock.json.expected | 210 +++++++++--------- 2 files changed, 108 insertions(+), 108 deletions(-) diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index 8c882955003..f21aa631771 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -205,7 +205,7 @@ def parse(cls, location, package_only=False): target_framework=target_framework, ) for package_name, package_info in packages.items(): - dependencies = get_dependencies(package_info) + dependencies = get_dependencies(package_info=package_info, scope=target_framework) resolved_package_mapping = dict( datasource_id=cls.datasource_id, type=cls.default_package_type, @@ -256,14 +256,14 @@ def parse(cls, location, package_only=False): -def get_dependencies(package_info): +def get_dependencies(package_info, scope): dependencies = [] for dep in package_info.get('dependencies', {}): dependency = models.DependentPackage( purl=str(PackageURL(type='nuget', name=dep, version=package_info["dependencies"][dep])), extracted_requirement=package_info["dependencies"][dep], is_resolved=True, - scope='dependencies', + scope=scope, is_optional=False, is_runtime=True, is_direct=False, diff --git a/tests/packagedcode/data/nuget/packages.lock.json.expected b/tests/packagedcode/data/nuget/packages.lock.json.expected index 69a890dc0c9..a25d3fa15f1 100644 --- a/tests/packagedcode/data/nuget/packages.lock.json.expected +++ b/tests/packagedcode/data/nuget/packages.lock.json.expected @@ -88,7 +88,7 @@ { "purl": "pkg:nuget/McMaster.Extensions.CommandLineUtils@4.0.1", "extracted_requirement": "4.0.1", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -99,7 +99,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -110,7 +110,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -176,7 +176,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -187,7 +187,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -198,7 +198,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -209,7 +209,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.CommandLine@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -220,7 +220,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.EnvironmentVariables@6.0.1", "extracted_requirement": "6.0.1", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -231,7 +231,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -242,7 +242,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -253,7 +253,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.UserSecrets@6.0.1", "extracted_requirement": "6.0.1", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -264,7 +264,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -275,7 +275,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -286,7 +286,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -297,7 +297,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -308,7 +308,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Hosting.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -319,7 +319,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -330,7 +330,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -341,7 +341,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -352,7 +352,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Console@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -363,7 +363,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Debug@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -374,7 +374,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventLog@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -385,7 +385,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.EventSource@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -396,7 +396,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -462,7 +462,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -473,7 +473,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -484,7 +484,7 @@ { "purl": "pkg:nuget/System.ComponentModel.Annotations@5.0.0", "extracted_requirement": "5.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -550,7 +550,7 @@ { "purl": "pkg:nuget/System.ComponentModel.Annotations@5.0.0", "extracted_requirement": "5.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -616,7 +616,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -627,7 +627,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -693,7 +693,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -759,7 +759,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -825,7 +825,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -836,7 +836,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -902,7 +902,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -913,7 +913,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -979,7 +979,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -990,7 +990,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1001,7 +1001,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1012,7 +1012,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1023,7 +1023,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1089,7 +1089,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1100,7 +1100,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1111,7 +1111,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.FileExtensions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1122,7 +1122,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1133,7 +1133,7 @@ { "purl": "pkg:nuget/System.Text.Json@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1199,7 +1199,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1210,7 +1210,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Json@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1221,7 +1221,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1232,7 +1232,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Physical@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1298,7 +1298,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1309,7 +1309,7 @@ { "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1429,7 +1429,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1495,7 +1495,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1506,7 +1506,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileSystemGlobbing@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1517,7 +1517,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1637,7 +1637,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1648,7 +1648,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1659,7 +1659,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.FileProviders.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1725,7 +1725,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1736,7 +1736,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1747,7 +1747,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1758,7 +1758,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1769,7 +1769,7 @@ { "purl": "pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1889,7 +1889,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1900,7 +1900,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1911,7 +1911,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1922,7 +1922,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1933,7 +1933,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1944,7 +1944,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1955,7 +1955,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -1966,7 +1966,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options.ConfigurationExtensions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2032,7 +2032,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2043,7 +2043,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2054,7 +2054,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2065,7 +2065,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Configuration@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2076,7 +2076,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2087,7 +2087,7 @@ { "purl": "pkg:nuget/System.Text.Json@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2153,7 +2153,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2164,7 +2164,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2175,7 +2175,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2241,7 +2241,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2252,7 +2252,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2263,7 +2263,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2274,7 +2274,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2285,7 +2285,7 @@ { "purl": "pkg:nuget/System.Diagnostics.EventLog@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2351,7 +2351,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2362,7 +2362,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2373,7 +2373,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2384,7 +2384,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2395,7 +2395,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2406,7 +2406,7 @@ { "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2417,7 +2417,7 @@ { "purl": "pkg:nuget/System.Text.Json@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2483,7 +2483,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2494,7 +2494,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2560,7 +2560,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2571,7 +2571,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Configuration.Binder@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2582,7 +2582,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2593,7 +2593,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Options@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2604,7 +2604,7 @@ { "purl": "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2670,7 +2670,7 @@ { "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2790,7 +2790,7 @@ { "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -2964,7 +2964,7 @@ { "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -3030,7 +3030,7 @@ { "purl": "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, @@ -3041,7 +3041,7 @@ { "purl": "pkg:nuget/System.Text.Encodings.Web@6.0.0", "extracted_requirement": "6.0.0", - "scope": "dependencies", + "scope": "net6.0", "is_runtime": true, "is_optional": false, "is_resolved": true, From 7a6d0ae680fb4f26647540c5694396f1ba41bd75 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 18:31:26 +0530 Subject: [PATCH 07/12] Fix errors Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index f21aa631771..155a0c56fe3 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -190,6 +190,22 @@ class NugetPackagesLockHandler(models.DatafileHandler): @classmethod def is_datafile(cls, location, filetypes=..., _bare_filename=False): return super().is_datafile(location, filetypes, _bare_filename) and location.endswith('.lock.json') + + @staticmethod + def get_dependencies(package_info, scope): + dependencies = [] + for dep in package_info.get('dependencies', {}): + dependency = models.DependentPackage( + purl=str(PackageURL(type='nuget', name=dep, version=package_info["dependencies"][dep])), + extracted_requirement=package_info["dependencies"][dep], + is_resolved=True, + scope=scope, + is_optional=False, + is_runtime=True, + is_direct=False, + ) + dependencies.append(dependency) + return dependencies @classmethod def parse(cls, location, package_only=False): @@ -205,7 +221,7 @@ def parse(cls, location, package_only=False): target_framework=target_framework, ) for package_name, package_info in packages.items(): - dependencies = get_dependencies(package_info=package_info, scope=target_framework) + dependencies = NugetPackagesLockHandler.get_dependencies(package_info=package_info, scope=target_framework) resolved_package_mapping = dict( datasource_id=cls.datasource_id, type=cls.default_package_type, @@ -254,19 +270,3 @@ def parse(cls, location, package_only=False): ) yield models.PackageData.from_data(package_data, package_only) - - -def get_dependencies(package_info, scope): - dependencies = [] - for dep in package_info.get('dependencies', {}): - dependency = models.DependentPackage( - purl=str(PackageURL(type='nuget', name=dep, version=package_info["dependencies"][dep])), - extracted_requirement=package_info["dependencies"][dep], - is_resolved=True, - scope=scope, - is_optional=False, - is_runtime=True, - is_direct=False, - ) - dependencies.append(dependency) - return dependencies From 1cd12d5138613b8672b9619ba618ba54c8b43661 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 22:37:53 +0530 Subject: [PATCH 08/12] Address review comments Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 23 +- .../data/nuget/packages.lock.json.expected | 210 +++++++++--------- 2 files changed, 116 insertions(+), 117 deletions(-) diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index 155a0c56fe3..786f843c422 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -180,29 +180,28 @@ def parse(cls, location, package_only=False): ) yield models.PackageData.from_data(package_data, package_only) + class NugetPackagesLockHandler(models.DatafileHandler): datasource_id = 'nuget_packages_lock' - path_patterns = ('packages.lock.json',) + path_patterns = ('*packages.lock.json',) default_package_type = 'nuget' description = 'NuGet packages.lock.json file' - documentation_url = 'https://docs.microsoft.com/en-us/nuget/reference/packages-lock-file' + documentation_url = 'https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-restore' @classmethod - def is_datafile(cls, location, filetypes=..., _bare_filename=False): - return super().is_datafile(location, filetypes, _bare_filename) and location.endswith('.lock.json') - - @staticmethod - def get_dependencies(package_info, scope): + def get_dependencies(cls, package_info, scope): dependencies = [] - for dep in package_info.get('dependencies', {}): + dependencies_mapping = package_info.get("dependencies") or {} + for dep in dependencies_mapping: + version = dependencies_mapping[dep] dependency = models.DependentPackage( - purl=str(PackageURL(type='nuget', name=dep, version=package_info["dependencies"][dep])), - extracted_requirement=package_info["dependencies"][dep], + purl=str(PackageURL(type='nuget', name=dep, version=version)), + extracted_requirement=version, is_resolved=True, scope=scope, is_optional=False, is_runtime=True, - is_direct=False, + is_direct=True, ) dependencies.append(dependency) return dependencies @@ -221,7 +220,7 @@ def parse(cls, location, package_only=False): target_framework=target_framework, ) for package_name, package_info in packages.items(): - dependencies = NugetPackagesLockHandler.get_dependencies(package_info=package_info, scope=target_framework) + dependencies = cls.get_dependencies(package_info=package_info, scope=target_framework) resolved_package_mapping = dict( datasource_id=cls.datasource_id, type=cls.default_package_type, diff --git a/tests/packagedcode/data/nuget/packages.lock.json.expected b/tests/packagedcode/data/nuget/packages.lock.json.expected index a25d3fa15f1..e862238d1d2 100644 --- a/tests/packagedcode/data/nuget/packages.lock.json.expected +++ b/tests/packagedcode/data/nuget/packages.lock.json.expected @@ -92,7 +92,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -103,7 +103,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -114,7 +114,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -180,7 +180,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -191,7 +191,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -202,7 +202,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -213,7 +213,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -224,7 +224,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -235,7 +235,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -246,7 +246,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -257,7 +257,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -268,7 +268,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -279,7 +279,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -290,7 +290,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -301,7 +301,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -312,7 +312,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -323,7 +323,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -334,7 +334,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -345,7 +345,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -356,7 +356,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -367,7 +367,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -378,7 +378,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -389,7 +389,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -400,7 +400,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -466,7 +466,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -477,7 +477,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -488,7 +488,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -554,7 +554,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -620,7 +620,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -631,7 +631,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -697,7 +697,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -763,7 +763,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -829,7 +829,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -840,7 +840,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -906,7 +906,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -917,7 +917,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -983,7 +983,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -994,7 +994,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1005,7 +1005,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1016,7 +1016,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1027,7 +1027,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1093,7 +1093,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1104,7 +1104,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1115,7 +1115,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1126,7 +1126,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1137,7 +1137,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1203,7 +1203,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1214,7 +1214,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1225,7 +1225,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1236,7 +1236,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1302,7 +1302,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1313,7 +1313,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1433,7 +1433,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1499,7 +1499,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1510,7 +1510,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1521,7 +1521,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1641,7 +1641,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1652,7 +1652,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1663,7 +1663,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1729,7 +1729,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1740,7 +1740,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1751,7 +1751,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1762,7 +1762,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1773,7 +1773,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -1893,7 +1893,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1904,7 +1904,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1915,7 +1915,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1926,7 +1926,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1937,7 +1937,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1948,7 +1948,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1959,7 +1959,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -1970,7 +1970,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2036,7 +2036,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2047,7 +2047,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2058,7 +2058,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2069,7 +2069,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2080,7 +2080,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2091,7 +2091,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2157,7 +2157,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2168,7 +2168,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2179,7 +2179,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2245,7 +2245,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2256,7 +2256,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2267,7 +2267,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2278,7 +2278,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2289,7 +2289,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2355,7 +2355,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2366,7 +2366,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2377,7 +2377,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2388,7 +2388,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2399,7 +2399,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2410,7 +2410,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2421,7 +2421,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2487,7 +2487,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2498,7 +2498,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2564,7 +2564,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2575,7 +2575,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2586,7 +2586,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2597,7 +2597,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -2608,7 +2608,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2674,7 +2674,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2794,7 +2794,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -2968,7 +2968,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } @@ -3034,7 +3034,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} }, @@ -3045,7 +3045,7 @@ "is_runtime": true, "is_optional": false, "is_resolved": true, - "is_direct": false, + "is_direct": true, "resolved_package": {}, "extra_data": {} } From 81c2b2315c5bbaaddd9ce85a4d7776bb7b0b1045 Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 22:38:46 +0530 Subject: [PATCH 09/12] Address review comments Signed-off-by: Tushar Goel --- src/packagedcode/nuget.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index 786f843c422..e37c2af014e 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -192,10 +192,9 @@ class NugetPackagesLockHandler(models.DatafileHandler): def get_dependencies(cls, package_info, scope): dependencies = [] dependencies_mapping = package_info.get("dependencies") or {} - for dep in dependencies_mapping: - version = dependencies_mapping[dep] + for name, version in dependencies_mapping.items(): dependency = models.DependentPackage( - purl=str(PackageURL(type='nuget', name=dep, version=version)), + purl=str(PackageURL(type='nuget', name=name, version=version)), extracted_requirement=version, is_resolved=True, scope=scope, From e9bcb30cf5249f106040bfab1dfa4df48c249c4f Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Tue, 25 Jun 2024 22:42:29 +0530 Subject: [PATCH 10/12] Address review comments Signed-off-by: Tushar Goel --- src/packagedcode/__init__.py | 1 + src/packagedcode/nuget.py | 7 ++----- tests/packagedcode/test_nuget.py | 4 ++++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/packagedcode/__init__.py b/src/packagedcode/__init__.py index e9e34cba04d..098d4ceeba4 100644 --- a/src/packagedcode/__init__.py +++ b/src/packagedcode/__init__.py @@ -156,6 +156,7 @@ nuget.NugetNupkgHandler, nuget.NugetNuspecHandler, + nuget.NugetPackagesLockHandler, opam.OpamFileHandler, diff --git a/src/packagedcode/nuget.py b/src/packagedcode/nuget.py index e37c2af014e..c399b5d418d 100644 --- a/src/packagedcode/nuget.py +++ b/src/packagedcode/nuget.py @@ -238,7 +238,7 @@ def parse(cls, location, package_only=False): elif package_type == "Transitive": is_direct = False else: - raise Exception(f"Unknown package type: {package_type}") + raise Exception(f"Unknown package type: {package_type} for package {package_name} in {location}") version = package_info.get('resolved') @@ -261,10 +261,7 @@ def parse(cls, location, package_only=False): type=cls.default_package_type, primary_language=cls.default_primary_language, extra_data=extra_data, - dependencies=top_dependencies, - # TODO: Check if we to put virtual or private for packages without a name and version - # is_virtual=True, - # is_private=True, + dependencies=top_dependencies, ) yield models.PackageData.from_data(package_data, package_only) diff --git a/tests/packagedcode/test_nuget.py b/tests/packagedcode/test_nuget.py index fab30b99055..d3af13ab51b 100644 --- a/tests/packagedcode/test_nuget.py +++ b/tests/packagedcode/test_nuget.py @@ -68,3 +68,7 @@ def test_parse_nuget_package_lock_json(self): package = nuget.NugetPackagesLockHandler.parse(location=test_file) expected_loc = self.get_test_loc('nuget/packages.lock.json.expected') self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES, package_only=True) + + def test_package_lock_json_is_package_data_file(self): + test_file = self.get_test_loc('nuget/packages.lock.json') + assert nuget.NugetPackagesLockHandler.is_datafile(test_file) From 3afc678ebddc9177b6f05b0a36faeb33e80d60ba Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Wed, 26 Jun 2024 13:34:34 +0530 Subject: [PATCH 11/12] Fix errors Signed-off-by: Tushar Goel --- tests/packagedcode/data/plugin/help.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/packagedcode/data/plugin/help.txt b/tests/packagedcode/data/plugin/help.txt index 83ba2045a85..7b5d549f707 100755 --- a/tests/packagedcode/data/plugin/help.txt +++ b/tests/packagedcode/data/plugin/help.txt @@ -636,6 +636,13 @@ Package type: nuget description: NuGet nuspec package manifest path_patterns: '*.nuspec' -------------------------------------------- +Package type: nuget + datasource_id: nuget_packages_lock + documentation URL: https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-restore + primary language: None + description: NuGet packages.lock.json file + path_patterns: '*packages.lock.json' +-------------------------------------------- Package type: opam datasource_id: opam_file documentation URL: https://opam.ocaml.org/doc/Manual.html#Common-file-format From b89d6c4cc7a106b0239416fa4b6c3368a58c726c Mon Sep 17 00:00:00 2001 From: Ayan Sinha Mahapatra Date: Wed, 26 Jun 2024 14:11:58 +0530 Subject: [PATCH 12/12] Add CHANGELOG entry Signed-off-by: Ayan Sinha Mahapatra --- CHANGELOG.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 698cda22e0c..f7ce8704a0f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -34,6 +34,10 @@ v33.0.0 (next next, roadmap) of these in other summary plugins. See https://github.com/nexB/scancode-toolkit/issues/1745 +- Add support for parsing resolved packages and dependency relationships + from nuget lockfile `packages.lock.json`. + See https://github.com/nexB/scancode-toolkit/pull/3825 + v32.2.0 - 2024-06-19 ----------------------