From de3ec813603d40bb592b3e40e217b334ae9ce3b1 Mon Sep 17 00:00:00 2001 From: "deepsource-dev-autofix[bot]" <61578317+deepsource-dev-autofix[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 07:32:12 +0000 Subject: [PATCH] refactor: remove assert statement from non-test files Usage of `assert` statement in application logic is discouraged. `assert` is removed with compiling to optimized byte code. Consider raising an exception instead. Ideally, `assert` statement should be used only in tests. --- src/poetry/console/commands/env_command.py | 3 ++- .../console/commands/installer_command.py | 3 ++- .../console/commands/self/self_command.py | 6 ++++-- .../console/commands/self/show/plugins.py | 3 ++- src/poetry/console/commands/shell.py | 3 ++- src/poetry/installation/chooser.py | 9 +++++--- src/poetry/installation/executor.py | 18 ++++++++++------ src/poetry/mixology/incompatibility.py | 21 ++++++++++++------- src/poetry/mixology/partial_solution.py | 3 ++- src/poetry/packages/locker.py | 3 ++- src/poetry/plugins/application_plugin.py | 3 ++- src/poetry/puzzle/provider.py | 3 ++- src/poetry/utils/cache.py | 6 ++++-- src/poetry/utils/dependency_specification.py | 12 +++++++---- src/poetry/utils/env/base_env.py | 3 ++- src/poetry/utils/env/env_manager.py | 3 ++- src/poetry/utils/helpers.py | 3 ++- 17 files changed, 70 insertions(+), 35 deletions(-) diff --git a/src/poetry/console/commands/env_command.py b/src/poetry/console/commands/env_command.py index f672323687e..9cd6d66c0dd 100644 --- a/src/poetry/console/commands/env_command.py +++ b/src/poetry/console/commands/env_command.py @@ -18,7 +18,8 @@ def __init__(self) -> None: @property def env(self) -> Env: - assert self._env is not None + if self._env is None: + raise AssertionError return self._env def set_env(self, env: Env) -> None: diff --git a/src/poetry/console/commands/installer_command.py b/src/poetry/console/commands/installer_command.py index 7fdceaeb72f..816d4658d64 100644 --- a/src/poetry/console/commands/installer_command.py +++ b/src/poetry/console/commands/installer_command.py @@ -25,7 +25,8 @@ def reset_poetry(self) -> None: @property def installer(self) -> Installer: - assert self._installer is not None + if self._installer is None: + raise AssertionError return self._installer def set_installer(self, installer: Installer) -> None: diff --git a/src/poetry/console/commands/self/self_command.py b/src/poetry/console/commands/self/self_command.py index db626f1ed4e..cd473df9f1f 100644 --- a/src/poetry/console/commands/self/self_command.py +++ b/src/poetry/console/commands/self/self_command.py @@ -46,7 +46,8 @@ def reset_env(self) -> None: def env(self) -> Env: if not isinstance(self._env, SystemEnv): self.reset_env() - assert self._env is not None + if self._env is None: + raise AssertionError return self._env @property @@ -92,7 +93,8 @@ def poetry(self) -> Poetry: if self._poetry is None: self.reset_poetry() - assert self._poetry is not None + if self._poetry is None: + raise AssertionError return self._poetry def _system_project_handle(self) -> int: diff --git a/src/poetry/console/commands/self/show/plugins.py b/src/poetry/console/commands/self/show/plugins.py index 15c98548a9e..16221aca9f7 100644 --- a/src/poetry/console/commands/self/show/plugins.py +++ b/src/poetry/console/commands/self/show/plugins.py @@ -73,7 +73,8 @@ def _system_project_handle(self) -> int: for entry_point in PluginManager(group).get_plugin_entry_points( env=system_env ): - assert entry_point.dist is not None + if entry_point.dist is None: + raise AssertionError package = packages_by_name[canonicalize_name(entry_point.dist.name)] diff --git a/src/poetry/console/commands/shell.py b/src/poetry/console/commands/shell.py index a1be57c7f58..b68832e784c 100644 --- a/src/poetry/console/commands/shell.py +++ b/src/poetry/console/commands/shell.py @@ -37,7 +37,8 @@ def handle(self) -> int: # Be sure that we have the right type of environment. env = self.env - assert env.is_venv() + if not env.is_venv(): + raise AssertionError env = cast("VirtualEnv", env) # Setting this to avoid spawning unnecessary nested shells diff --git a/src/poetry/installation/chooser.py b/src/poetry/installation/chooser.py index cb05dff1b6d..2c7ab0df05d 100644 --- a/src/poetry/installation/chooser.py +++ b/src/poetry/installation/chooser.py @@ -79,7 +79,8 @@ def choose_for(self, package: Package) -> Link: def _get_links(self, package: Package) -> list[Link]: if package.source_type: - assert package.source_reference is not None + if package.source_reference is None: + raise AssertionError repository = self._pool.repository(package.source_reference) elif not self._pool.has_repository("pypi"): @@ -98,7 +99,8 @@ def _get_links(self, package: Package) -> list[Link]: selected_links.append(link) continue - assert link.hash_name is not None + if link.hash_name is None: + raise AssertionError h = link.hash_name + ":" + link.hash if ( h not in hashes @@ -189,7 +191,8 @@ def _is_link_hash_allowed_for_package(self, link: Link, package: Package) -> boo if not link.hash: return True - assert link.hash_name is not None + if link.hash_name is None: + raise AssertionError h = link.hash_name + ":" + link.hash return h in {f["hash"] for f in package.files} diff --git a/src/poetry/installation/executor.py b/src/poetry/installation/executor.py index a0ebcbcf910..48bd05b18b3 100644 --- a/src/poetry/installation/executor.py +++ b/src/poetry/installation/executor.py @@ -554,7 +554,8 @@ def _install(self, operation: Install | Update) -> int: archive = self._prepare_archive(operation) cleanup_archive = True elif package.source_type == "url": - assert package.source_url is not None + if package.source_url is None: + raise AssertionError archive = self._download_link(operation, Link(package.source_url)) else: archive = self._download(operation) @@ -614,7 +615,8 @@ def _prepare_archive( ) self._write(operation, message) - assert package.source_url is not None + if package.source_url is None: + raise AssertionError archive = Path(package.source_url) if package.source_subdirectory: archive = archive / package.source_subdirectory @@ -631,7 +633,8 @@ def _prepare_git_archive(self, operation: Install | Update) -> Path: from poetry.vcs.git import Git package = operation.package - assert package.source_url is not None + if package.source_url is None: + raise AssertionError if package.source_resolved_reference and not package.develop: # Only cache git archives when we know precise reference hash, @@ -696,7 +699,8 @@ def _install_directory_without_wheel_installer( ) self._write(operation, message) - assert package.source_url is not None + if package.source_url is None: + raise AssertionError if package.root_dir: req = package.root_dir / package.source_url else: @@ -960,7 +964,8 @@ def _create_url_url_reference(self, package: Package) -> dict[str, Any]: def _create_file_url_reference(self, package: Package) -> dict[str, Any]: archive_info = self._get_archive_info(package) - assert package.source_url is not None + if package.source_url is None: + raise AssertionError return { "url": Path(package.source_url).as_uri(), "archive_info": archive_info, @@ -972,7 +977,8 @@ def _create_directory_url_reference(self, package: Package) -> dict[str, Any]: if package.develop: dir_info["editable"] = True - assert package.source_url is not None + if package.source_url is None: + raise AssertionError return { "url": Path(package.source_url).as_uri(), "dir_info": dir_info, diff --git a/src/poetry/mixology/incompatibility.py b/src/poetry/mixology/incompatibility.py index 26bf72e79ba..fcbcb925a5b 100644 --- a/src/poetry/mixology/incompatibility.py +++ b/src/poetry/mixology/incompatibility.py @@ -114,8 +114,10 @@ def __str__(self) -> str: depender = self._terms[0] dependee = self._terms[1] - assert depender.is_positive() - assert not dependee.is_positive() + if not depender.is_positive(): + raise AssertionError + if dependee.is_positive(): + raise AssertionError return ( f"{self._terse(depender, allow_every=True)} depends on" @@ -123,7 +125,8 @@ def __str__(self) -> str: ) elif isinstance(self._cause, PythonCause): assert len(self._terms) == 1 - assert self._terms[0].is_positive() + if not self._terms[0].is_positive(): + raise AssertionError text = f"{self._terse(self._terms[0], allow_every=True)} requires " text += f"Python {self._cause.python_version}" @@ -131,7 +134,8 @@ def __str__(self) -> str: return text elif isinstance(self._cause, PlatformCause): assert len(self._terms) == 1 - assert self._terms[0].is_positive() + if not self._terms[0].is_positive(): + raise AssertionError text = f"{self._terse(self._terms[0], allow_every=True)} requires " text += f"platform {self._cause.platform}" @@ -139,7 +143,8 @@ def __str__(self) -> str: return text elif isinstance(self._cause, NoVersionsCause): assert len(self._terms) == 1 - assert self._terms[0].is_positive() + if not self._terms[0].is_positive(): + raise AssertionError return ( f"no versions of {self._terms[0].dependency.name} match" @@ -147,8 +152,10 @@ def __str__(self) -> str: ) elif isinstance(self._cause, RootCause): assert len(self._terms) == 1 - assert not self._terms[0].is_positive() - assert self._terms[0].dependency.is_root + if self._terms[0].is_positive(): + raise AssertionError + if not self._terms[0].dependency.is_root: + raise AssertionError return ( f"{self._terms[0].dependency.name} is" diff --git a/src/poetry/mixology/partial_solution.py b/src/poetry/mixology/partial_solution.py index 135a765882f..a63d8d751f9 100644 --- a/src/poetry/mixology/partial_solution.py +++ b/src/poetry/mixology/partial_solution.py @@ -185,7 +185,8 @@ def satisfier(self, term: Term) -> Assignment: if not assignment.is_positive(): continue - assert not term.is_positive() + if term.is_positive(): + raise AssertionError return assignment diff --git a/src/poetry/packages/locker.py b/src/poetry/packages/locker.py index 2031194d492..bc0ff07c937 100644 --- a/src/poetry/packages/locker.py +++ b/src/poetry/packages/locker.py @@ -210,7 +210,8 @@ def locked_repository(self) -> LockfileRepository: if package.source_type == "directory": # root dir should be the source of the package relative to the lock # path - assert package.source_url is not None + if package.source_url is None: + raise AssertionError root_dir = Path(package.source_url) if isinstance(constraint, list): diff --git a/src/poetry/plugins/application_plugin.py b/src/poetry/plugins/application_plugin.py index 7d9702e694d..9d88c30ec64 100644 --- a/src/poetry/plugins/application_plugin.py +++ b/src/poetry/plugins/application_plugin.py @@ -23,5 +23,6 @@ def commands(self) -> list[type[Command]]: def activate(self, application: Application) -> None: for command in self.commands: - assert command.name is not None + if command.name is None: + raise AssertionError application.command_loader.register_factory(command.name, command) diff --git a/src/poetry/puzzle/provider.py b/src/poetry/puzzle/provider.py index a7ef7a0ad7c..3f7ae48ddd9 100644 --- a/src/poetry/puzzle/provider.py +++ b/src/poetry/puzzle/provider.py @@ -100,7 +100,8 @@ def _formatter_context(self) -> str: return f" {Indicator.CONTEXT} " def _formatter_elapsed(self) -> str: - assert self._start_time is not None + if self._start_time is None: + raise AssertionError elapsed = time.time() - self._start_time return f"{elapsed:.1f}s" diff --git a/src/poetry/utils/cache.py b/src/poetry/utils/cache.py index 79e67394f82..a7b055110f9 100644 --- a/src/poetry/utils/cache.py +++ b/src/poetry/utils/cache.py @@ -246,9 +246,11 @@ def _get_cached_archive( filename: str | None = None, env: Env | None = None, ) -> Path | None: - assert strict or env is not None + if not (strict or env is not None): + raise AssertionError # implication "strict -> filename should not be None" - assert not strict or filename is not None + if not (not strict or filename is not None): + raise AssertionError archives = self._get_cached_archives(cache_dir) if not archives: diff --git a/src/poetry/utils/dependency_specification.py b/src/poetry/utils/dependency_specification.py index 554994f7506..4fe21fd01b6 100644 --- a/src/poetry/utils/dependency_specification.py +++ b/src/poetry/utils/dependency_specification.py @@ -37,15 +37,18 @@ def dependency_to_specification( ) -> BaseSpec: if dependency.is_vcs(): dependency = cast("VCSDependency", dependency) - assert dependency.source_url is not None + if dependency.source_url is None: + raise AssertionError specification[dependency.vcs] = dependency.source_url if dependency.reference: specification["rev"] = dependency.reference elif dependency.is_file() or dependency.is_directory(): - assert dependency.source_url is not None + if dependency.source_url is None: + raise AssertionError specification["path"] = dependency.source_url elif dependency.is_url(): - assert dependency.source_url is not None + if dependency.source_url is None: + raise AssertionError specification["url"] = dependency.source_url elif dependency.pretty_constraint != "*" and not dependency.constraint.is_empty(): specification["version"] = dependency.pretty_constraint @@ -150,7 +153,8 @@ def _parse_url(self, requirement: str) -> DependencySpec | None: if url_parsed.scheme in ["http", "https"]: package = self._direct_origin.get_package_from_url(requirement) - assert package.source_url is not None + if package.source_url is None: + raise AssertionError return {"name": package.name, "url": package.source_url} return None diff --git a/src/poetry/utils/env/base_env.py b/src/poetry/utils/env/base_env.py index eb8dac6cf97..4895e113404 100644 --- a/src/poetry/utils/env/base_env.py +++ b/src/poetry/utils/env/base_env.py @@ -355,7 +355,8 @@ def _run(self, cmd: list[str], **kwargs: Any) -> str: **kwargs, ).stdout elif call: - assert stderr != subprocess.PIPE + if stderr == subprocess.PIPE: + raise AssertionError subprocess.check_call(cmd, stderr=stderr, env=env, **kwargs) output = "" else: diff --git a/src/poetry/utils/env/env_manager.py b/src/poetry/utils/env/env_manager.py index e7b0cc751d9..0a3f0ae55f0 100644 --- a/src/poetry/utils/env/env_manager.py +++ b/src/poetry/utils/env/env_manager.py @@ -685,7 +685,8 @@ def build_venv( @classmethod def remove_venv(cls, path: Path) -> None: - assert path.is_dir() + if not path.is_dir(): + raise AssertionError try: remove_directory(path) return diff --git a/src/poetry/utils/helpers.py b/src/poetry/utils/helpers.py index fb14e819079..65597f0ce97 100644 --- a/src/poetry/utils/helpers.py +++ b/src/poetry/utils/helpers.py @@ -121,7 +121,8 @@ def get_package_version_display_string( package: Package, root: Path | None = None ) -> str: if package.source_type in ["file", "directory"] and root: - assert package.source_url is not None + if package.source_url is None: + raise AssertionError path = Path(os.path.relpath(package.source_url, root)).as_posix() return f"{package.version} {path}"