Skip to content

Commit 2621c53

Browse files
qequAlvaro Frias
authored andcommitted
Add ignore_errors mode
Signed-off-by: Alvaro Frias Garay <alvaro.frias@eclypsium.com> Signed-off-by: Alvaro Frias <alvarofriasgaray@gmail>
1 parent 5e3cdf0 commit 2621c53

3 files changed

Lines changed: 19 additions & 13 deletions

File tree

src/python_inspector/api.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,9 @@ class Resolution(NamedTuple):
5858
packages: List[PackageData]
5959
files: List[Dict]
6060

61-
def to_dict(self, generic_paths=False):
62-
files = self.files
63-
if generic_paths:
64-
# clean file paths
65-
for file in files:
66-
path = file["path"]
67-
file["path"] = utils.remove_test_data_dir_variable_prefix(path=path)
68-
61+
def to_dict(self):
6962
return {
70-
"files": files,
63+
"files": self.files,
7164
"packages": [package for package in self.packages],
7265
"resolution": self.resolution,
7366
}
@@ -89,7 +82,7 @@ def resolve_dependencies(
8982
analyze_setup_py_insecurely=False,
9083
prefer_source=False,
9184
printer=print,
92-
generic_paths=False,
85+
ignore_errors=False,
9386
):
9487
"""
9588
Resolve the dependencies for the package requirements listed in one or
@@ -284,6 +277,7 @@ def resolve_dependencies(
284277
max_rounds=max_rounds,
285278
pdt_output=pdt_output,
286279
analyze_setup_py_insecurely=analyze_setup_py_insecurely,
280+
ignore_errors=ignore_errors,
287281
)
288282

289283
packages = []
@@ -321,6 +315,7 @@ def resolve(
321315
max_rounds=200000,
322316
pdt_output=False,
323317
analyze_setup_py_insecurely=False,
318+
ignore_errors=False,
324319
):
325320
"""
326321
Resolve dependencies given a ``direct_dependencies`` list of
@@ -346,6 +341,7 @@ def resolve(
346341
max_rounds=max_rounds,
347342
pdt_output=pdt_output,
348343
analyze_setup_py_insecurely=analyze_setup_py_insecurely,
344+
ignore_errors=ignore_errors,
349345
)
350346

351347
return resolved_dependencies, packages
@@ -359,6 +355,7 @@ def get_resolved_dependencies(
359355
max_rounds: int = 200000,
360356
pdt_output: bool = False,
361357
analyze_setup_py_insecurely: bool = False,
358+
ignore_errors: bool = False,
362359
):
363360
"""
364361
Return resolved dependencies of a ``requirements`` list of Requirement for
@@ -373,6 +370,7 @@ def get_resolved_dependencies(
373370
environment=environment,
374371
repos=repos,
375372
analyze_setup_py_insecurely=analyze_setup_py_insecurely,
373+
ignore_errors=ignore_errors,
376374
),
377375
reporter=BaseReporter(),
378376
)

src/python_inspector/resolution.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,8 @@ def get_requirements_from_python_manifest(
352352

353353
class PythonInputProvider(AbstractProvider):
354354
def __init__(
355-
self, environment=DEFAULT_ENVIRONMENT, repos=tuple(), analyze_setup_py_insecurely=False
355+
self, environment=DEFAULT_ENVIRONMENT, repos=tuple(), analyze_setup_py_insecurely=True,
356+
ignore_errors=False
356357
):
357358
self.environment = environment
358359
self.environment_marker = get_environment_marker_from_environment(self.environment)
@@ -361,6 +362,7 @@ def __init__(
361362
self.dependencies_by_purl = {}
362363
self.wheel_or_sdist_by_package = {}
363364
self.analyze_setup_py_insecurely = analyze_setup_py_insecurely
365+
self.ignore_errors = ignore_errors
364366

365367
def identify(self, requirement_or_candidate: Union[Candidate, Requirement]) -> str:
366368
"""Given a requirement, return an identifier for it. Overridden."""
@@ -583,8 +585,11 @@ def _iter_matches(
583585
versions.extend(self.get_versions_for_package(name=name, repo=repo))
584586

585587
if not versions:
586-
raise NoVersionsFound(f"This package does not exist: {name}")
587-
588+
if self.ignore_errors:
589+
yield from [Candidate("NonExistant", "0.0.0", "")]
590+
return
591+
else:
592+
raise NoVersionsFound(f"This package does not exist: {name}")
588593
yield from self.get_candidates(
589594
all_versions=versions,
590595
requirements=requirements,

src/python_inspector/resolve_cli.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ def print_version(ctx, param, value):
173173
callback=print_version,
174174
help="Show the version and exit.",
175175
)
176+
@click.option('--ignore-errors', is_flag=True, default=False, help='Ignore errors and continue execution.')
176177
@click.help_option("-h", "--help")
177178
@click.option(
178179
"--generic-paths",
@@ -199,6 +200,7 @@ def resolve_dependencies(
199200
prefer_source=False,
200201
verbose=TRACE,
201202
generic_paths=False,
203+
ignore_errors=False
202204
):
203205
"""
204206
Resolve the dependencies for the package requirements listed in one or
@@ -266,6 +268,7 @@ def resolve_dependencies(
266268
analyze_setup_py_insecurely=analyze_setup_py_insecurely,
267269
printer=click.secho,
268270
prefer_source=prefer_source,
271+
ignore_errors=ignore_errors,
269272
generic_paths=generic_paths,
270273
)
271274

0 commit comments

Comments
 (0)