Commit 92e664d1 by Sébastien Eustace

Fix new prereleases detection

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