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 @@
...
@@ -9,6 +9,7 @@
-
Fixed an error when resolving directory dependencies with no sub dependencies.
-
Fixed an error when resolving directory dependencies with no sub dependencies.
-
Fixed an error when locking packages with no description.
-
Fixed an error when locking packages with no description.
-
Fixed path resolution for transitive file dependencies.
-
Fixed path resolution for transitive file dependencies.
-
Fixed multiple constraints handling for the root package.
## [0.12.10] - 2018-11-22
## [0.12.10] - 2018-11-22
...
...
poetry/mixology/version_solver.py
View file @
c640aaff
...
@@ -374,7 +374,6 @@ class VersionSolver:
...
@@ -374,7 +374,6 @@ class VersionSolver:
return
dependency
.
name
return
dependency
.
name
if
not
version
.
is_root
():
version
=
self
.
_provider
.
complete_package
(
version
)
version
=
self
.
_provider
.
complete_package
(
version
)
conflict
=
False
conflict
=
False
...
...
poetry/packages/dependency_package.py
View file @
c640aaff
...
@@ -11,6 +11,9 @@ class DependencyPackage(object):
...
@@ -11,6 +11,9 @@ class DependencyPackage(object):
def
package
(
self
):
def
package
(
self
):
return
self
.
_package
return
self
.
_package
def
clone
(
self
):
# type: () -> DependencyPackage
return
self
.
__class__
(
self
.
_dependency
,
self
.
_package
.
clone
())
def
__getattr__
(
self
,
name
):
def
__getattr__
(
self
,
name
):
return
getattr
(
self
.
_package
,
name
)
return
getattr
(
self
.
_package
,
name
)
...
...
poetry/packages/package.py
View file @
c640aaff
...
@@ -369,6 +369,9 @@ class Package(object):
...
@@ -369,6 +369,9 @@ class Package(object):
for
dep
in
self
.
requires
:
for
dep
in
self
.
requires
:
clone
.
requires
.
append
(
dep
)
clone
.
requires
.
append
(
dep
)
for
dep
in
self
.
dev_requires
:
clone
.
dev_requires
.
append
(
dep
)
return
clone
return
clone
def
__hash__
(
self
):
def
__hash__
(
self
):
...
...
poetry/packages/project_package.py
View file @
c640aaff
...
@@ -43,3 +43,13 @@ class ProjectPackage(Package):
...
@@ -43,3 +43,13 @@ class ProjectPackage(Package):
self
.
_python_marker
=
parse_marker
(
self
.
_python_marker
=
parse_marker
(
create_nested_marker
(
"python_version"
,
self
.
_python_constraint
)
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:
...
@@ -453,9 +453,13 @@ class Provider:
self
,
package
self
,
package
):
# type: (DependencyPackage) -> DependencyPackage
):
# type: (DependencyPackage) -> DependencyPackage
if
package
.
is_root
():
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
=
DependencyPackage
(
package
.
dependency
,
package
.
dependency
,
self
.
_pool
.
package
(
self
.
_pool
.
package
(
...
@@ -487,7 +491,6 @@ class Provider:
...
@@ -487,7 +491,6 @@ class Provider:
# An example of this is:
# An example of this is:
# - pypiwin32 (220); sys_platform == "win32" and python_version >= "3.6"
# - pypiwin32 (220); sys_platform == "win32" and python_version >= "3.6"
# - pypiwin32 (219); sys_platform == "win32" and python_version < "3.6"
# - pypiwin32 (219); sys_platform == "win32" and python_version < "3.6"
if
not
package
.
is_root
():
duplicates
=
{}
duplicates
=
{}
for
dep
in
dependencies
:
for
dep
in
dependencies
:
if
dep
.
name
not
in
duplicates
:
if
dep
.
name
not
in
duplicates
:
...
@@ -501,9 +504,7 @@ class Provider:
...
@@ -501,9 +504,7 @@ class Provider:
dependencies
.
append
(
deps
[
0
])
dependencies
.
append
(
deps
[
0
])
continue
continue
self
.
debug
(
self
.
debug
(
"<debug>Duplicate dependencies for {}</debug>"
.
format
(
dep_name
))
"<debug>Duplicate dependencies for {}</debug>"
.
format
(
dep_name
)
)
# Regrouping by constraint
# Regrouping by constraint
by_constraint
=
{}
by_constraint
=
{}
...
@@ -550,9 +551,7 @@ class Provider:
...
@@ -550,9 +551,7 @@ class Provider:
if
len
(
by_constraint
)
==
1
:
if
len
(
by_constraint
)
==
1
:
self
.
debug
(
self
.
debug
(
"<debug>Merging requirements for {}</debug>"
.
format
(
"<debug>Merging requirements for {}</debug>"
.
format
(
str
(
deps
[
0
]))
str
(
deps
[
0
])
)
)
)
dependencies
.
append
(
list
(
by_constraint
.
values
())[
0
][
0
])
dependencies
.
append
(
list
(
by_constraint
.
values
())[
0
][
0
])
continue
continue
...
...
tests/puzzle/test_solver.py
View file @
c640aaff
...
@@ -1552,3 +1552,21 @@ def test_solver_skips_invalid_versions(package, installed, locked, io):
...
@@ -1552,3 +1552,21 @@ def test_solver_skips_invalid_versions(package, installed, locked, io):
check_solver_result
(
check_solver_result
(
ops
,
[{
"job"
:
"install"
,
"package"
:
get_package
(
"trackpy"
,
"0.4.1"
)}]
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