21
21
# Visit https://github.com/aboutcode-org/scancode.io for support and download.
22
22
23
23
import json
24
+ import logging
24
25
import sys
25
26
import uuid
26
27
from pathlib import Path
27
28
28
29
from django .core .exceptions import MultipleObjectsReturned
29
30
from django .core .exceptions import ObjectDoesNotExist
30
31
32
+ import python_inspector .api as python_inspector
31
33
from attributecode .model import About
32
34
from packagedcode import APPLICATION_PACKAGE_DATAFILE_HANDLERS
33
35
from packagedcode .licensing import get_license_detections_and_expression
34
36
from packageurl import PackageURL
35
- from python_inspector .api import resolve_dependencies
36
37
37
38
from scanpipe .models import DiscoveredDependency
38
39
from scanpipe .models import DiscoveredPackage
46
47
Resolve packages from manifest, lockfile, and SBOM.
47
48
"""
48
49
50
+ logger = logging .getLogger ("scanpipe.pipes" )
51
+
49
52
50
53
def resolve_manifest_resources (resource , package_registry ):
51
54
"""Get package data from resource."""
@@ -164,17 +167,22 @@ def get_packages_from_manifest(input_location, package_registry=None):
164
167
Resolve packages or get packages data from a package manifest file/
165
168
lockfile/SBOM at `input_location`.
166
169
"""
170
+ logger .info (f"> Get packages from manifest: { input_location } " )
167
171
default_package_type = get_default_package_type (input_location )
168
172
# we only try to resolve packages if file at input_location is
169
173
# a package manifest, and ignore for other files
170
174
if not default_package_type :
175
+ logger .info (" Package type not found." )
171
176
return
172
177
173
178
# Get resolvers for available packages/SBOMs in the registry
174
179
resolver = package_registry .get (default_package_type )
175
180
if resolver :
181
+ logger .info (f" Using resolver={ resolver .__name__ } " )
176
182
resolved_packages = resolver (input_location = input_location )
177
183
return resolved_packages
184
+ else :
185
+ logger .info (f" No resolvers available for type={ default_package_type } " )
178
186
179
187
180
188
def get_manifest_resources (project ):
@@ -188,19 +196,23 @@ def get_manifest_resources(project):
188
196
189
197
190
198
def resolve_pypi_packages (input_location ):
191
- """Resolve the PyPI packages from the `input_location` requirements file."""
199
+ """Resolve the PyPI packages from the `` input_location` ` requirements file."""
192
200
python_version = f"{ sys .version_info .major } { sys .version_info .minor } "
193
201
operating_system = "linux"
194
202
195
- inspector_output = resolve_dependencies (
203
+ resolution_output = python_inspector . resolve_dependencies (
196
204
requirement_files = [input_location ],
197
205
python_version = python_version ,
198
206
operating_system = operating_system ,
207
+ # Prefer source distributions over binary distributions,
208
+ # if no source distribution is available then binary distributions are used.
199
209
prefer_source = True ,
210
+ # Activate the verbosity and send it to the logger.
211
+ verbose = True ,
212
+ printer = logger .info ,
200
213
)
201
214
202
- packages = inspector_output .packages
203
-
215
+ packages = resolution_output .packages
204
216
# python-inspector returns the `extracted_license_statement` under the
205
217
# `declared_license` field.
206
218
for package in packages :
0 commit comments