99# See https://aboutcode.org for more information about nexB OSS projects.
1010#
1111import asyncio
12+ import logging
1213import os
1314from netrc import netrc
1415from typing import Dict
3233from python_inspector import pyinspector_settings as settings
3334from python_inspector import utils
3435from python_inspector import utils_pypi
36+ from python_inspector .logging import logger
3537from python_inspector .package_data import get_pypi_data_from_purl
3638from python_inspector .resolution import PythonInputProvider
3739from python_inspector .resolution import format_pdt_tree
@@ -87,10 +89,8 @@ def resolve_dependencies(
8789 max_rounds = 200000 ,
8890 use_cached_index = False ,
8991 use_pypi_json_api = False ,
90- verbose = False ,
9192 analyze_setup_py_insecurely = False ,
9293 prefer_source = False ,
93- printer = print ,
9494 generic_paths = False ,
9595 ignore_errors = False ,
9696):
@@ -123,8 +123,7 @@ def resolve_dependencies(
123123 f"Must be one of: { ', ' .join (valid_python_versions )} "
124124 )
125125
126- if verbose :
127- printer ("Resolving dependencies..." )
126+ logger .info ("Resolving dependencies..." )
128127
129128 if netrc_file :
130129 if not os .path .exists (netrc_file ):
@@ -138,8 +137,7 @@ def resolve_dependencies(
138137 netrc_file = None
139138
140139 if netrc_file :
141- if verbose :
142- printer (f"Using netrc file { netrc_file } " )
140+ logger .info (f"Using netrc file { netrc_file } " )
143141 parsed_netrc = netrc (netrc_file )
144142 else :
145143 parsed_netrc = None
@@ -234,18 +232,17 @@ def resolve_dependencies(
234232 files = files ,
235233 )
236234
237- if verbose :
238- printer ( "direct_dependencies:" )
235+ logger . info ( "direct_dependencies:" )
236+ if logger . level <= logging . INFO :
239237 for dep in direct_dependencies :
240- printer (f" { dep } " )
238+ logging . info (f" { dep } " )
241239
242240 # create a resolution environments
243241 environment = utils_pypi .Environment .from_pyver_and_os (
244242 python_version = python_version , operating_system = operating_system
245243 )
246244
247- if verbose :
248- printer (f"environment: { environment } " )
245+ logging .info (f"environment: { environment } " )
249246
250247 repos_by_url = {}
251248 if not use_pypi_json_api :
@@ -254,8 +251,7 @@ def resolve_dependencies(
254251 for index_url in index_urls :
255252 index_url = index_url .strip ("/" )
256253 if use_only_confed and index_url not in settings .INDEX_URL :
257- if verbose :
258- printer (f"Skipping index URL unknown in settings: { index_url !r} " )
254+ logger .info (f"Skipping index URL unknown in settings: { index_url !r} " )
259255 continue
260256 if index_url in repos_by_url :
261257 continue
@@ -273,10 +269,10 @@ def resolve_dependencies(
273269 repos_by_url [index_url ] = repo
274270
275271 repos = repos_by_url .values ()
276- if verbose :
277- printer ( "repos:" )
272+ logger . info ( "repos:" )
273+ if logger . level <= logging . INFO :
278274 for repo in repos :
279- printer (f" { repo } " )
275+ logger . info (f" { repo } " )
280276
281277 # resolve dependencies proper
282278 resolution , purls = resolve (
@@ -288,8 +284,6 @@ def resolve_dependencies(
288284 pdt_output = pdt_output ,
289285 analyze_setup_py_insecurely = analyze_setup_py_insecurely ,
290286 ignore_errors = ignore_errors ,
291- verbose = verbose ,
292- printer = printer ,
293287 )
294288
295289 async def gather_pypi_data ():
@@ -298,20 +292,17 @@ async def get_pypi_data(package):
298292 package , repos = repos , environment = environment , prefer_source = prefer_source
299293 )
300294
301- if verbose :
302- printer (f" retrieved package '{ package } '" )
295+ logger .info (f" retrieved package '{ package } '" )
303296
304297 return data
305298
306- if verbose :
307- printer (f"retrieve package data from pypi:" )
299+ logger .info (f"retrieve package data from pypi:" )
308300
309301 return await asyncio .gather (* [get_pypi_data (package ) for package in purls ])
310302
311303 packages = [pkg .to_dict () for pkg in asyncio .run (gather_pypi_data ()) if pkg is not None ]
312304
313- if verbose :
314- printer ("done!" )
305+ logger .info ("done!" )
315306
316307 return Resolution (
317308 packages = packages ,
@@ -351,8 +342,6 @@ def resolve(
351342 pdt_output : bool = False ,
352343 analyze_setup_py_insecurely : bool = False ,
353344 ignore_errors : bool = False ,
354- verbose : bool = False ,
355- printer = print ,
356345):
357346 """
358347 Resolve dependencies given a ``direct_dependencies`` list of
@@ -379,8 +368,6 @@ def resolve(
379368 pdt_output = pdt_output ,
380369 analyze_setup_py_insecurely = analyze_setup_py_insecurely ,
381370 ignore_errors = ignore_errors ,
382- verbose = verbose ,
383- printer = printer ,
384371 )
385372
386373 return resolved_dependencies , packages
@@ -395,8 +382,6 @@ def get_resolved_dependencies(
395382 pdt_output : bool = False ,
396383 analyze_setup_py_insecurely : bool = False ,
397384 ignore_errors : bool = False ,
398- verbose : bool = False ,
399- printer = print ,
400385) -> Tuple [List [Dict ], List [str ]]:
401386 """
402387 Return resolved dependencies of a ``requirements`` list of Requirement for
@@ -419,13 +404,11 @@ async def gather_version_data():
419404 async def get_version_data (name : str ):
420405 versions = await provider .fill_versions_for_package (name )
421406
422- if verbose :
423- printer (f" retrieved versions for package '{ name } '" )
407+ logger .info (f" retrieved versions for package '{ name } '" )
424408
425409 return versions
426410
427- if verbose :
428- printer (f"versions:" )
411+ logger .info (f"versions:" )
429412
430413 return await asyncio .gather (
431414 * [get_version_data (requirement .name ) for requirement in requirements ]
@@ -445,11 +428,9 @@ async def get_dependencies(requirement: Requirement):
445428 candidate = Candidate (requirement .name , purl .version , requirement .extras )
446429 await provider .fill_requirements_for_package (purl , candidate )
447430
448- if verbose :
449- printer (f" retrieved dependencies for requirement '{ str (purl )} '" )
431+ logger .info (f" retrieved dependencies for requirement '{ str (purl )} '" )
450432
451- if verbose :
452- printer (f"dependencies:" )
433+ logger .info (f"dependencies:" )
453434
454435 return await asyncio .gather (
455436 * [get_dependencies (requirement ) for requirement in requirements ]
0 commit comments