Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
python-poetry
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
python-poetry
Commits
c640aaff
Unverified
Commit
c640aaff
authored
Jan 04, 2019
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed multiple constraint handling for the root package
parent
78963e69
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
43 additions
and
10 deletions
+43
-10
CHANGELOG.md
+1
-0
poetry/mixology/version_solver.py
+0
-1
poetry/packages/dependency_package.py
+3
-0
poetry/packages/package.py
+3
-0
poetry/packages/project_package.py
+10
-0
poetry/puzzle/provider.py
+8
-9
tests/puzzle/test_solver.py
+18
-0
No files found.
CHANGELOG.md
View file @
c640aaff
...
...
@@ -9,6 +9,7 @@
-
Fixed an error when resolving directory dependencies with no sub dependencies.
-
Fixed an error when locking packages with no description.
-
Fixed path resolution for transitive file dependencies.
-
Fixed multiple constraints handling for the root package.
## [0.12.10] - 2018-11-22
...
...
poetry/mixology/version_solver.py
View file @
c640aaff
...
...
@@ -374,7 +374,6 @@ class VersionSolver:
return
dependency
.
name
if
not
version
.
is_root
():
version
=
self
.
_provider
.
complete_package
(
version
)
conflict
=
False
...
...
poetry/packages/dependency_package.py
View file @
c640aaff
...
...
@@ -11,6 +11,9 @@ class DependencyPackage(object):
def
package
(
self
):
return
self
.
_package
def
clone
(
self
):
# type: () -> DependencyPackage
return
self
.
__class__
(
self
.
_dependency
,
self
.
_package
.
clone
())
def
__getattr__
(
self
,
name
):
return
getattr
(
self
.
_package
,
name
)
...
...
poetry/packages/package.py
View file @
c640aaff
...
...
@@ -369,6 +369,9 @@ class Package(object):
for
dep
in
self
.
requires
:
clone
.
requires
.
append
(
dep
)
for
dep
in
self
.
dev_requires
:
clone
.
dev_requires
.
append
(
dep
)
return
clone
def
__hash__
(
self
):
...
...
poetry/packages/project_package.py
View file @
c640aaff
...
...
@@ -43,3 +43,13 @@ class ProjectPackage(Package):
self
.
_python_marker
=
parse_marker
(
create_nested_marker
(
"python_version"
,
self
.
_python_constraint
)
)
def
clone
(
self
):
# type: () -> ProjectPackage
package
=
super
(
ProjectPackage
,
self
)
.
clone
()
package
.
build
=
self
.
build
package
.
packages
=
self
.
packages
[:]
package
.
include
=
self
.
include
[:]
package
.
exclude
=
self
.
exclude
[:]
return
package
poetry/puzzle/provider.py
View file @
c640aaff
...
...
@@ -453,9 +453,13 @@ class Provider:
self
,
package
):
# type: (DependencyPackage) -> DependencyPackage
if
package
.
is_root
():
return
package
package
=
package
.
clone
()
if
package
.
source_type
not
in
{
"directory"
,
"file"
,
"git"
}:
if
not
package
.
is_root
()
and
package
.
source_type
not
in
{
"directory"
,
"file"
,
"git"
,
}:
package
=
DependencyPackage
(
package
.
dependency
,
self
.
_pool
.
package
(
...
...
@@ -487,7 +491,6 @@ class Provider:
# An example of this is:
# - pypiwin32 (220); sys_platform == "win32" and python_version >= "3.6"
# - pypiwin32 (219); sys_platform == "win32" and python_version < "3.6"
if
not
package
.
is_root
():
duplicates
=
{}
for
dep
in
dependencies
:
if
dep
.
name
not
in
duplicates
:
...
...
@@ -501,9 +504,7 @@ class Provider:
dependencies
.
append
(
deps
[
0
])
continue
self
.
debug
(
"<debug>Duplicate dependencies for {}</debug>"
.
format
(
dep_name
)
)
self
.
debug
(
"<debug>Duplicate dependencies for {}</debug>"
.
format
(
dep_name
))
# Regrouping by constraint
by_constraint
=
{}
...
...
@@ -550,9 +551,7 @@ class Provider:
if
len
(
by_constraint
)
==
1
:
self
.
debug
(
"<debug>Merging requirements for {}</debug>"
.
format
(
str
(
deps
[
0
])
)
"<debug>Merging requirements for {}</debug>"
.
format
(
str
(
deps
[
0
]))
)
dependencies
.
append
(
list
(
by_constraint
.
values
())[
0
][
0
])
continue
...
...
tests/puzzle/test_solver.py
View file @
c640aaff
...
...
@@ -1552,3 +1552,21 @@ def test_solver_skips_invalid_versions(package, installed, locked, io):
check_solver_result
(
ops
,
[{
"job"
:
"install"
,
"package"
:
get_package
(
"trackpy"
,
"0.4.1"
)}]
)
def
test_multiple_constraints_on_root
(
package
,
solver
,
repo
):
package
.
add_dependency
(
"foo"
,
{
"version"
:
"^1.0"
,
"python"
:
"^2.7"
})
package
.
add_dependency
(
"foo"
,
{
"version"
:
"^2.0"
,
"python"
:
"^3.7"
})
foo15
=
get_package
(
"foo"
,
"1.5.0"
)
foo25
=
get_package
(
"foo"
,
"2.5.0"
)
repo
.
add_package
(
foo15
)
repo
.
add_package
(
foo25
)
ops
=
solver
.
solve
()
check_solver_result
(
ops
,
[{
"job"
:
"install"
,
"package"
:
foo15
},
{
"job"
:
"install"
,
"package"
:
foo25
}],
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment