Commit 16673925 by David Hotham Committed by Randy Döring

more precise exception handling

parent c0b1e379
......@@ -413,7 +413,7 @@ You can specify a package in the following forms:
# TODO: find similar
raise ValueError(f"Could not find a matching version of package {name}")
return package.pretty_name, selector.find_recommended_require_version(package)
return package.pretty_name, f"^{package.version.to_string()}"
def _parse_requirements(self, requirements: list[str]) -> list[dict[str, Any]]:
from poetry.core.pyproject.exceptions import PyProjectException
......
......@@ -5,6 +5,7 @@ from typing import Any
from cleo.helpers import argument
from cleo.helpers import option
from poetry.core.version.exceptions import InvalidVersion
from tomlkit.toml_document import TOMLDocument
from poetry.console.commands.command import Command
......@@ -95,7 +96,7 @@ patch, minor, major, prepatch, preminor, premajor, prerelease.
try:
parsed = Version.parse(version)
except ValueError:
except InvalidVersion:
raise ValueError("The project's version doesn't seem to follow semver")
if rule in {"major", "premajor"}:
......
......@@ -21,6 +21,7 @@ from poetry.core.pyproject.toml import PyProjectTOML
from poetry.core.utils.helpers import parse_requires
from poetry.core.utils.helpers import temporary_directory
from poetry.core.version.markers import InvalidMarker
from poetry.core.version.requirements import InvalidRequirement
from poetry.utils.env import EnvCommandError
from poetry.utils.env import ephemeral_environment
......@@ -201,12 +202,18 @@ class PackageInfo:
dependency = Dependency.create_from_pep_508(req, relative_to=root_dir)
except InvalidMarker:
# Invalid marker, We strip the markers hoping for the best
logger.warning(
"Stripping invalid marker (%s) found in %s-%s dependencies",
req,
package.name,
package.version,
)
req = req.split(";")[0]
dependency = Dependency.create_from_pep_508(req, relative_to=root_dir)
except ValueError:
# Likely unable to parse constraint so we skip it
except InvalidRequirement:
# Unable to parse requirement so we skip it
logger.warning(
"Invalid constraint (%s) found in %s-%s dependencies, skipping",
"Invalid requirement (%s) found in %s-%s dependencies, skipping",
req,
package.name,
package.version,
......
......@@ -9,6 +9,7 @@ from typing import List
from poetry.core.constraints.version import Version
from poetry.core.packages.package import Package
from poetry.core.version.exceptions import InvalidVersion
from poetry.utils._compat import cached_property
from poetry.utils.patterns import sdist_file_re
......@@ -84,7 +85,7 @@ class LinkSource:
if version_string:
try:
version = Version.parse(version_string)
except ValueError:
except InvalidVersion:
logger.debug(
"Skipping url (%s) due to invalid version (%s)", link.url, version
)
......
......@@ -2,8 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from poetry.core.constraints.version import Version
if TYPE_CHECKING:
from poetry.core.packages.package import Package
......@@ -56,14 +54,3 @@ class VersionSelector:
package = candidate
return package
def find_recommended_require_version(self, package: Package) -> str:
version = package.version
return self._transform_version(version.text, package.pretty_version)
def _transform_version(self, version: str, pretty_version: str) -> str:
try:
return f"^{Version.parse(version).to_string()}"
except ValueError:
return pretty_version
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment