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
9e58f06c
Unverified
Commit
9e58f06c
authored
Apr 17, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix a bug where dependencies constraints were too strict in lock
parent
afccb494
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
6 deletions
+59
-6
CHANGELOG.md
+7
-0
poetry/puzzle/solver.py
+21
-6
tests/puzzle/test_solver.py
+31
-0
No files found.
CHANGELOG.md
View file @
9e58f06c
# Change Log
# Change Log
## [Unreleased]
### Fixed
-
Fixed a bug where dependencies constraints in lock were too strict.
## [0.8.3] - 2018-04-16
## [0.8.3] - 2018-04-16
### Fixed
### Fixed
...
...
poetry/puzzle/solver.py
View file @
9e58f06c
...
@@ -3,6 +3,7 @@ from typing import List
...
@@ -3,6 +3,7 @@ from typing import List
from
poetry.mixology
import
Resolver
from
poetry.mixology
import
Resolver
from
poetry.mixology.dependency_graph
import
DependencyGraph
from
poetry.mixology.dependency_graph
import
DependencyGraph
from
poetry.mixology.exceptions
import
ResolverError
from
poetry.mixology.exceptions
import
ResolverError
from
poetry.packages.constraints.generic_constraint
import
GenericConstraint
from
poetry.semver.version_parser
import
VersionParser
from
poetry.semver.version_parser
import
VersionParser
...
@@ -67,17 +68,33 @@ class Solver:
...
@@ -67,17 +68,33 @@ class Solver:
requirements
[
'python'
]
=
req
requirements
[
'python'
]
=
req
continue
continue
previous
=
parser
.
parse_constraints
(
requirements
[
'python'
])
previous
=
parser
.
parse_constraints
(
requirements
[
'python'
]
)
current
=
parser
.
parse_constraints
(
req
)
current
=
parser
.
parse_constraints
(
req
)
if
current
.
matches
(
previous
):
if
current
.
matches
(
previous
):
requirements
[
'python'
]
=
req
requirements
[
'python'
]
=
req
elif
req_name
==
'platform'
:
if
req_name
==
'platform'
:
if
'platform'
not
in
requirements
:
if
'platform'
not
in
requirements
:
requirements
[
'platform'
]
=
req
requirements
[
'platform'
]
=
req
continue
continue
previous
=
GenericConstraint
.
parse
(
requirements
[
'platform'
]
)
current
=
GenericConstraint
.
parse
(
req
)
if
current
.
matches
(
previous
):
requirements
[
'platform'
]
=
req
# If requirements are empty, drop them
if
'python'
in
requirements
and
requirements
[
'python'
]
==
'*'
:
del
requirements
[
'python'
]
if
'platform'
in
requirements
and
requirements
[
'platform'
]
==
'*'
:
del
requirements
[
'platform'
]
vertex
.
payload
.
requirements
=
requirements
vertex
.
payload
.
requirements
=
requirements
operations
=
[]
operations
=
[]
...
@@ -130,7 +147,7 @@ class Solver:
...
@@ -130,7 +147,7 @@ class Solver:
)
)
)
)
def
_get_tags_for_vertex
(
self
,
vertex
,
requested
):
def
_get_tags_for_vertex
(
self
,
vertex
,
requested
,
original
=
None
):
tags
=
{
tags
=
{
'category'
:
[],
'category'
:
[],
'optional'
:
True
,
'optional'
:
True
,
...
@@ -159,10 +176,8 @@ class Solver:
...
@@ -159,10 +176,8 @@ class Solver:
for
edge
in
vertex
.
incoming_edges
:
for
edge
in
vertex
.
incoming_edges
:
for
req
in
edge
.
origin
.
payload
.
requires
:
for
req
in
edge
.
origin
.
payload
.
requires
:
if
req
.
name
==
vertex
.
payload
.
name
:
if
req
.
name
==
vertex
.
payload
.
name
:
if
req
.
python_versions
!=
'*'
:
tags
[
'requirements'
][
'python'
]
.
append
(
req
.
python_versions
)
tags
[
'requirements'
][
'python'
]
.
append
(
req
.
python_versions
)
if
req
.
platform
!=
'*'
:
tags
[
'requirements'
][
'platform'
]
.
append
(
req
.
platform
)
tags
[
'requirements'
][
'platform'
]
.
append
(
req
.
platform
)
sub_tags
=
self
.
_get_tags_for_vertex
(
edge
.
origin
,
requested
)
sub_tags
=
self
.
_get_tags_for_vertex
(
edge
.
origin
,
requested
)
...
...
tests/puzzle/test_solver.py
View file @
9e58f06c
...
@@ -502,3 +502,34 @@ def test_solver_does_not_return_prereleases_if_not_requested(solver, repo):
...
@@ -502,3 +502,34 @@ def test_solver_does_not_return_prereleases_if_not_requested(solver, repo):
{
'job'
:
'install'
,
'package'
:
package_b
},
{
'job'
:
'install'
,
'package'
:
package_b
},
{
'job'
:
'install'
,
'package'
:
package_c
},
{
'job'
:
'install'
,
'package'
:
package_c
},
])
])
def
test_solver_sub_dependencies_with_requirements
(
solver
,
repo
):
package_a
=
get_package
(
'A'
,
'1.0'
)
package_b
=
get_package
(
'B'
,
'1.0'
)
package_c
=
get_package
(
'C'
,
'1.0'
)
package_a
.
add_dependency
(
'C'
,
{
'version'
:
'^1.0'
,
'python'
:
'<4.0'
})
package_b
.
add_dependency
(
'C'
,
'^1.0'
)
repo
.
add_package
(
package_a
)
repo
.
add_package
(
package_b
)
repo
.
add_package
(
package_c
)
dependency_a
=
get_dependency
(
'A'
)
dependency_b
=
get_dependency
(
'B'
)
request
=
[
dependency_a
,
dependency_b
,
]
ops
=
solver
.
solve
(
request
)
check_solver_result
(
ops
,
[
{
'job'
:
'install'
,
'package'
:
package_c
},
{
'job'
:
'install'
,
'package'
:
package_a
},
{
'job'
:
'install'
,
'package'
:
package_b
},
])
op
=
ops
[
0
]
assert
op
.
package
.
requirements
==
{}
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