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