Commit 92e664d1 by Sébastien Eustace

Fix new prereleases detection

parent e47313a2
# Change Log # Change Log
## [Unreleased]
### Fixed
- Fixed handling of duplicate dependencies with different constraints.
- Fixed detection of new prereleases.
## [0.10.3] - 2018-06-04 ## [0.10.3] - 2018-06-04
### Fixed ### Fixed
......
...@@ -3,6 +3,7 @@ import poetry.packages ...@@ -3,6 +3,7 @@ import poetry.packages
from poetry.semver import parse_constraint from poetry.semver import parse_constraint
from poetry.semver import Version from poetry.semver import Version
from poetry.semver import VersionConstraint from poetry.semver import VersionConstraint
from poetry.semver import VersionRange
from poetry.semver import VersionUnion from poetry.semver import VersionUnion
from poetry.utils.helpers import canonicalize_name from poetry.utils.helpers import canonicalize_name
...@@ -34,6 +35,12 @@ class Dependency(object): ...@@ -34,6 +35,12 @@ class Dependency(object):
self._pretty_constraint = str(constraint) self._pretty_constraint = str(constraint)
self._optional = optional self._optional = optional
self._category = category self._category = category
if isinstance(self._constraint, VersionRange) and self._constraint.min:
allows_prereleases = (
allows_prereleases or self._constraint.min.is_prerelease()
)
self._allows_prereleases = allows_prereleases self._allows_prereleases = allows_prereleases
self._python_versions = "*" self._python_versions = "*"
......
from typing import Union from typing import Union
from poetry.packages import Dependency
from poetry.packages import Package from poetry.packages import Package
from poetry.semver import parse_constraint from poetry.semver import parse_constraint
from poetry.semver import Version from poetry.semver import Version
...@@ -22,7 +23,7 @@ class VersionSelector(object): ...@@ -22,7 +23,7 @@ class VersionSelector(object):
if target_package_version: if target_package_version:
constraint = parse_constraint(target_package_version) constraint = parse_constraint(target_package_version)
else: else:
constraint = None constraint = parse_constraint("*")
candidates = self._pool.find_packages( candidates = self._pool.find_packages(
package_name, constraint, allow_prereleases=allow_prereleases package_name, constraint, allow_prereleases=allow_prereleases
...@@ -31,10 +32,12 @@ class VersionSelector(object): ...@@ -31,10 +32,12 @@ class VersionSelector(object):
if not candidates: if not candidates:
return False return False
dependency = Dependency(package_name, constraint)
# Select highest version if we have many # Select highest version if we have many
package = candidates[0] package = candidates[0]
for candidate in candidates: for candidate in candidates:
if candidate.is_prerelease() and not allow_prereleases: if candidate.is_prerelease() and not dependency.allows_prereleases():
continue continue
# Select highest version of the two # Select highest version of the two
......
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