From 0952c3e95e08387359d9cb88658996e1661570b8 Mon Sep 17 00:00:00 2001 From: Alvaro Frias Date: Mon, 9 Oct 2023 00:39:35 -0300 Subject: [PATCH 1/3] Add permissive flag and update PythonUpdateProvider Signed-off-by: Alvaro Frias --- src/python_inspector/api.py | 6 ++++++ src/python_inspector/resolution.py | 11 ++++++++--- src/python_inspector/resolve_cli.py | 3 +++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index 1f9e0d46..e822da5e 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -82,6 +82,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=False, prefer_source=False, printer=print, + permissive=False, ): """ Resolve the dependencies for the package requirements listed in one or @@ -268,6 +269,7 @@ def resolve_dependencies( max_rounds=max_rounds, pdt_output=pdt_output, analyze_setup_py_insecurely=analyze_setup_py_insecurely, + permisseve=permissive, ) packages = [] @@ -302,6 +304,7 @@ def resolve( max_rounds=200000, pdt_output=False, analyze_setup_py_insecurely=False, + permisseve=False, ): """ Resolve dependencies given a ``direct_dependencies`` list of @@ -327,6 +330,7 @@ def resolve( max_rounds=max_rounds, pdt_output=pdt_output, analyze_setup_py_insecurely=analyze_setup_py_insecurely, + permissive=permisseve, ) return resolved_dependencies, packages @@ -340,6 +344,7 @@ def get_resolved_dependencies( max_rounds: int = 200000, pdt_output: bool = False, analyze_setup_py_insecurely: bool = False, + permissive: bool = False, ): """ Return resolved dependencies of a ``requirements`` list of Requirement for @@ -354,6 +359,7 @@ def get_resolved_dependencies( environment=environment, repos=repos, analyze_setup_py_insecurely=analyze_setup_py_insecurely, + permissive=permissive, ), reporter=BaseReporter(), ) diff --git a/src/python_inspector/resolution.py b/src/python_inspector/resolution.py index 1a7dbd27..46b65954 100644 --- a/src/python_inspector/resolution.py +++ b/src/python_inspector/resolution.py @@ -352,7 +352,8 @@ def get_requirements_from_python_manifest( class PythonInputProvider(AbstractProvider): def __init__( - self, environment=DEFAULT_ENVIRONMENT, repos=tuple(), analyze_setup_py_insecurely=False + self, environment=DEFAULT_ENVIRONMENT, repos=tuple(), analyze_setup_py_insecurely=True, + permissive=False ): self.environment = environment self.environment_marker = get_environment_marker_from_environment(self.environment) @@ -361,6 +362,7 @@ def __init__( self.dependencies_by_purl = {} self.wheel_or_sdist_by_package = {} self.analyze_setup_py_insecurely = analyze_setup_py_insecurely + self.permissive = permissive def identify(self, requirement_or_candidate: Union[Candidate, Requirement]) -> str: """Given a requirement, return an identifier for it. Overridden.""" @@ -583,8 +585,11 @@ def _iter_matches( versions.extend(self.get_versions_for_package(name=name, repo=repo)) if not versions: - raise NoVersionsFound(f"This package does not exist: {name}") - + if self.permissive: + yield from [Candidate("NonExistant", "0.0.0", "")] + return + else: + raise NoVersionsFound(f"This package does not exist: {name}") yield from self.get_candidates( all_versions=versions, requirements=requirements, diff --git a/src/python_inspector/resolve_cli.py b/src/python_inspector/resolve_cli.py index 235244f1..45191bd3 100644 --- a/src/python_inspector/resolve_cli.py +++ b/src/python_inspector/resolve_cli.py @@ -172,6 +172,7 @@ def print_version(ctx, param, value): callback=print_version, help="Show the version and exit.", ) +@click.option('--permissive', is_flag=True, default=False, help='Enable permissive mode.') @click.help_option("-h", "--help") def resolve_dependencies( ctx, @@ -190,6 +191,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=False, prefer_source=False, verbose=TRACE, + permissive=False, ): """ Resolve the dependencies for the package requirements listed in one or @@ -260,6 +262,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=analyze_setup_py_insecurely, printer=click.secho, prefer_source=prefer_source, + permissive=permissive, ) output = dict( headers=headers, From 63e9bb51108b710a82d099c9c88f6d3acff60dc8 Mon Sep 17 00:00:00 2001 From: Alvaro Frias Date: Mon, 9 Oct 2023 00:39:35 -0300 Subject: [PATCH 2/3] Add permissive flag and update PythonUpdateProvider Signed-off-by: Alvaro Frias --- src/python_inspector/api.py | 6 ++++++ src/python_inspector/resolution.py | 11 ++++++++--- src/python_inspector/resolve_cli.py | 3 +++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index 1f9e0d46..e822da5e 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -82,6 +82,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=False, prefer_source=False, printer=print, + permissive=False, ): """ Resolve the dependencies for the package requirements listed in one or @@ -268,6 +269,7 @@ def resolve_dependencies( max_rounds=max_rounds, pdt_output=pdt_output, analyze_setup_py_insecurely=analyze_setup_py_insecurely, + permisseve=permissive, ) packages = [] @@ -302,6 +304,7 @@ def resolve( max_rounds=200000, pdt_output=False, analyze_setup_py_insecurely=False, + permisseve=False, ): """ Resolve dependencies given a ``direct_dependencies`` list of @@ -327,6 +330,7 @@ def resolve( max_rounds=max_rounds, pdt_output=pdt_output, analyze_setup_py_insecurely=analyze_setup_py_insecurely, + permissive=permisseve, ) return resolved_dependencies, packages @@ -340,6 +344,7 @@ def get_resolved_dependencies( max_rounds: int = 200000, pdt_output: bool = False, analyze_setup_py_insecurely: bool = False, + permissive: bool = False, ): """ Return resolved dependencies of a ``requirements`` list of Requirement for @@ -354,6 +359,7 @@ def get_resolved_dependencies( environment=environment, repos=repos, analyze_setup_py_insecurely=analyze_setup_py_insecurely, + permissive=permissive, ), reporter=BaseReporter(), ) diff --git a/src/python_inspector/resolution.py b/src/python_inspector/resolution.py index 1a7dbd27..46b65954 100644 --- a/src/python_inspector/resolution.py +++ b/src/python_inspector/resolution.py @@ -352,7 +352,8 @@ def get_requirements_from_python_manifest( class PythonInputProvider(AbstractProvider): def __init__( - self, environment=DEFAULT_ENVIRONMENT, repos=tuple(), analyze_setup_py_insecurely=False + self, environment=DEFAULT_ENVIRONMENT, repos=tuple(), analyze_setup_py_insecurely=True, + permissive=False ): self.environment = environment self.environment_marker = get_environment_marker_from_environment(self.environment) @@ -361,6 +362,7 @@ def __init__( self.dependencies_by_purl = {} self.wheel_or_sdist_by_package = {} self.analyze_setup_py_insecurely = analyze_setup_py_insecurely + self.permissive = permissive def identify(self, requirement_or_candidate: Union[Candidate, Requirement]) -> str: """Given a requirement, return an identifier for it. Overridden.""" @@ -583,8 +585,11 @@ def _iter_matches( versions.extend(self.get_versions_for_package(name=name, repo=repo)) if not versions: - raise NoVersionsFound(f"This package does not exist: {name}") - + if self.permissive: + yield from [Candidate("NonExistant", "0.0.0", "")] + return + else: + raise NoVersionsFound(f"This package does not exist: {name}") yield from self.get_candidates( all_versions=versions, requirements=requirements, diff --git a/src/python_inspector/resolve_cli.py b/src/python_inspector/resolve_cli.py index 235244f1..45191bd3 100644 --- a/src/python_inspector/resolve_cli.py +++ b/src/python_inspector/resolve_cli.py @@ -172,6 +172,7 @@ def print_version(ctx, param, value): callback=print_version, help="Show the version and exit.", ) +@click.option('--permissive', is_flag=True, default=False, help='Enable permissive mode.') @click.help_option("-h", "--help") def resolve_dependencies( ctx, @@ -190,6 +191,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=False, prefer_source=False, verbose=TRACE, + permissive=False, ): """ Resolve the dependencies for the package requirements listed in one or @@ -260,6 +262,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=analyze_setup_py_insecurely, printer=click.secho, prefer_source=prefer_source, + permissive=permissive, ) output = dict( headers=headers, From 65ba66860dcf07ca6a89d0274d9d3d7628016b27 Mon Sep 17 00:00:00 2001 From: Alvaro Frias Date: Sat, 14 Oct 2023 15:19:56 -0300 Subject: [PATCH 3/3] Replace permissive flag with ignore_errors Signed-off-by: Alvaro Frias --- src/python_inspector/api.py | 12 ++++++------ src/python_inspector/resolution.py | 6 +++--- src/python_inspector/resolve_cli.py | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index e822da5e..941d3688 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -82,7 +82,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=False, prefer_source=False, printer=print, - permissive=False, + ignore_errors=False, ): """ Resolve the dependencies for the package requirements listed in one or @@ -269,7 +269,7 @@ def resolve_dependencies( max_rounds=max_rounds, pdt_output=pdt_output, analyze_setup_py_insecurely=analyze_setup_py_insecurely, - permisseve=permissive, + ignore_errors=ignore_errors, ) packages = [] @@ -304,7 +304,7 @@ def resolve( max_rounds=200000, pdt_output=False, analyze_setup_py_insecurely=False, - permisseve=False, + ignore_errors=False, ): """ Resolve dependencies given a ``direct_dependencies`` list of @@ -330,7 +330,7 @@ def resolve( max_rounds=max_rounds, pdt_output=pdt_output, analyze_setup_py_insecurely=analyze_setup_py_insecurely, - permissive=permisseve, + ignore_errors=ignore_errors, ) return resolved_dependencies, packages @@ -344,7 +344,7 @@ def get_resolved_dependencies( max_rounds: int = 200000, pdt_output: bool = False, analyze_setup_py_insecurely: bool = False, - permissive: bool = False, + ignore_errors: bool = False, ): """ Return resolved dependencies of a ``requirements`` list of Requirement for @@ -359,7 +359,7 @@ def get_resolved_dependencies( environment=environment, repos=repos, analyze_setup_py_insecurely=analyze_setup_py_insecurely, - permissive=permissive, + ignore_errors=ignore_errors, ), reporter=BaseReporter(), ) diff --git a/src/python_inspector/resolution.py b/src/python_inspector/resolution.py index 46b65954..ecf42f9f 100644 --- a/src/python_inspector/resolution.py +++ b/src/python_inspector/resolution.py @@ -353,7 +353,7 @@ def get_requirements_from_python_manifest( class PythonInputProvider(AbstractProvider): def __init__( self, environment=DEFAULT_ENVIRONMENT, repos=tuple(), analyze_setup_py_insecurely=True, - permissive=False + ignore_errors=False ): self.environment = environment self.environment_marker = get_environment_marker_from_environment(self.environment) @@ -362,7 +362,7 @@ def __init__( self.dependencies_by_purl = {} self.wheel_or_sdist_by_package = {} self.analyze_setup_py_insecurely = analyze_setup_py_insecurely - self.permissive = permissive + self.ignore_errors = ignore_errors def identify(self, requirement_or_candidate: Union[Candidate, Requirement]) -> str: """Given a requirement, return an identifier for it. Overridden.""" @@ -585,7 +585,7 @@ def _iter_matches( versions.extend(self.get_versions_for_package(name=name, repo=repo)) if not versions: - if self.permissive: + if self.ignore_errors: yield from [Candidate("NonExistant", "0.0.0", "")] return else: diff --git a/src/python_inspector/resolve_cli.py b/src/python_inspector/resolve_cli.py index 45191bd3..4806223c 100644 --- a/src/python_inspector/resolve_cli.py +++ b/src/python_inspector/resolve_cli.py @@ -172,7 +172,7 @@ def print_version(ctx, param, value): callback=print_version, help="Show the version and exit.", ) -@click.option('--permissive', is_flag=True, default=False, help='Enable permissive mode.') +@click.option('--ignore-errors', is_flag=True, default=False, help='Ignore errors and continue execution.') @click.help_option("-h", "--help") def resolve_dependencies( ctx, @@ -191,7 +191,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=False, prefer_source=False, verbose=TRACE, - permissive=False, + ignore_errors=False, ): """ Resolve the dependencies for the package requirements listed in one or @@ -262,7 +262,7 @@ def resolve_dependencies( analyze_setup_py_insecurely=analyze_setup_py_insecurely, printer=click.secho, prefer_source=prefer_source, - permissive=permissive, + ignore_errors=ignore_errors, ) output = dict( headers=headers,