9
9
# See https://aboutcode.org for more information about nexB OSS projects.
10
10
#
11
11
import asyncio
12
+ import logging
12
13
import os
13
14
from netrc import netrc
14
15
from typing import Dict
32
33
from python_inspector import pyinspector_settings
33
34
from python_inspector import utils
34
35
from python_inspector import utils_pypi
36
+ from python_inspector .logging import logger
35
37
from python_inspector .package_data import get_pypi_data_from_purl
36
38
from python_inspector .resolution import PythonInputProvider
37
39
from python_inspector .resolution import format_pdt_tree
@@ -88,10 +90,8 @@ def resolve_dependencies(
88
90
max_rounds = 200000 ,
89
91
use_cached_index = False ,
90
92
use_pypi_json_api = False ,
91
- verbose = False ,
92
93
analyze_setup_py_insecurely = False ,
93
94
prefer_source = False ,
94
- printer = print ,
95
95
generic_paths = False ,
96
96
ignore_errors = False ,
97
97
):
@@ -124,8 +124,7 @@ def resolve_dependencies(
124
124
f"Must be one of: { ', ' .join (valid_python_versions )} "
125
125
)
126
126
127
- if verbose :
128
- printer ("Resolving dependencies..." )
127
+ logger .info ("Resolving dependencies..." )
129
128
130
129
if netrc_file :
131
130
if not os .path .exists (netrc_file ):
@@ -139,8 +138,7 @@ def resolve_dependencies(
139
138
netrc_file = None
140
139
141
140
if netrc_file :
142
- if verbose :
143
- printer (f"Using netrc file { netrc_file } " )
141
+ logger .info (f"Using netrc file { netrc_file } " )
144
142
parsed_netrc = netrc (netrc_file )
145
143
else :
146
144
parsed_netrc = None
@@ -235,28 +233,28 @@ def resolve_dependencies(
235
233
files = files ,
236
234
)
237
235
238
- if verbose :
239
- printer ( "direct_dependencies:" )
236
+ logger . info ( "direct_dependencies:" )
237
+ if logger . level <= logging . INFO :
240
238
for dep in direct_dependencies :
241
- printer (f" { dep } " )
239
+ logging . info (f" { dep } " )
242
240
243
241
# create a resolution environments
244
242
environment = utils_pypi .Environment .from_pyver_and_os (
245
243
python_version = python_version , operating_system = operating_system
246
244
)
247
245
248
- if verbose :
249
- printer (f"environment: { environment } " )
246
+ logging .info (f"environment: { environment } " )
250
247
251
248
repos_by_url = {}
252
249
if not use_pypi_json_api :
253
250
# Collect PyPI repos
254
251
use_only_confed = pyinspector_settings .USE_ONLY_CONFIGURED_INDEX_URLS
255
252
for index_url in index_urls :
256
253
index_url = index_url .strip ("/" )
254
+
257
255
if use_only_confed and index_url not in pyinspector_settings .INDEX_URL :
258
- if verbose :
259
- printer ( f"Skipping index URL unknown in settings: { index_url !r } " )
256
+ logger . info ( f"Skipping index URL unknown in settings: { index_url !r } " )
257
+
260
258
continue
261
259
if index_url in repos_by_url :
262
260
continue
@@ -274,10 +272,10 @@ def resolve_dependencies(
274
272
repos_by_url [index_url ] = repo
275
273
276
274
repos = repos_by_url .values ()
277
- if verbose :
278
- printer ( "repos:" )
275
+ logger . info ( "repos:" )
276
+ if logger . level <= logging . INFO :
279
277
for repo in repos :
280
- printer (f" { repo } " )
278
+ logger . info (f" { repo } " )
281
279
282
280
# resolve dependencies proper
283
281
resolution , purls = resolve (
@@ -289,8 +287,6 @@ def resolve_dependencies(
289
287
pdt_output = pdt_output ,
290
288
analyze_setup_py_insecurely = analyze_setup_py_insecurely ,
291
289
ignore_errors = ignore_errors ,
292
- verbose = verbose ,
293
- printer = printer ,
294
290
)
295
291
296
292
async def gather_pypi_data ():
@@ -299,20 +295,17 @@ async def get_pypi_data(package):
299
295
package , repos = repos , environment = environment , prefer_source = prefer_source
300
296
)
301
297
302
- if verbose :
303
- printer (f" retrieved package '{ package } '" )
298
+ logger .info (f" retrieved package '{ package } '" )
304
299
305
300
return data
306
301
307
- if verbose :
308
- printer (f"retrieve package data from pypi:" )
302
+ logger .info (f"retrieve package data from pypi:" )
309
303
310
304
return await asyncio .gather (* [get_pypi_data (package ) for package in purls ])
311
305
312
306
packages = [pkg .to_dict () for pkg in asyncio .run (gather_pypi_data ()) if pkg is not None ]
313
307
314
- if verbose :
315
- printer ("done!" )
308
+ logger .info ("done!" )
316
309
317
310
return Resolution (
318
311
packages = packages ,
@@ -352,8 +345,6 @@ def resolve(
352
345
pdt_output : bool = False ,
353
346
analyze_setup_py_insecurely : bool = False ,
354
347
ignore_errors : bool = False ,
355
- verbose : bool = False ,
356
- printer = print ,
357
348
):
358
349
"""
359
350
Resolve dependencies given a ``direct_dependencies`` list of
@@ -380,8 +371,6 @@ def resolve(
380
371
pdt_output = pdt_output ,
381
372
analyze_setup_py_insecurely = analyze_setup_py_insecurely ,
382
373
ignore_errors = ignore_errors ,
383
- verbose = verbose ,
384
- printer = printer ,
385
374
)
386
375
387
376
return resolved_dependencies , packages
@@ -396,8 +385,6 @@ def get_resolved_dependencies(
396
385
pdt_output : bool = False ,
397
386
analyze_setup_py_insecurely : bool = False ,
398
387
ignore_errors : bool = False ,
399
- verbose : bool = False ,
400
- printer = print ,
401
388
) -> Tuple [List [Dict ], List [str ]]:
402
389
"""
403
390
Return resolved dependencies of a ``requirements`` list of Requirement for
@@ -420,13 +407,11 @@ async def gather_version_data():
420
407
async def get_version_data (name : str ):
421
408
versions = await provider .fill_versions_for_package (name )
422
409
423
- if verbose :
424
- printer (f" retrieved versions for package '{ name } '" )
410
+ logger .info (f" retrieved versions for package '{ name } '" )
425
411
426
412
return versions
427
413
428
- if verbose :
429
- printer (f"versions:" )
414
+ logger .info (f"versions:" )
430
415
431
416
return await asyncio .gather (
432
417
* [get_version_data (requirement .name ) for requirement in requirements ]
@@ -446,11 +431,9 @@ async def get_dependencies(requirement: Requirement):
446
431
candidate = Candidate (requirement .name , purl .version , requirement .extras )
447
432
await provider .fill_requirements_for_package (purl , candidate )
448
433
449
- if verbose :
450
- printer (f" retrieved dependencies for requirement '{ str (purl )} '" )
434
+ logger .info (f" retrieved dependencies for requirement '{ str (purl )} '" )
451
435
452
- if verbose :
453
- printer (f"dependencies:" )
436
+ logger .info (f"dependencies:" )
454
437
455
438
return await asyncio .gather (
456
439
* [get_dependencies (requirement ) for requirement in requirements ]
0 commit comments