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
2b8e9aef
Unverified
Commit
2b8e9aef
authored
Mar 31, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix update not properly adding new packages to the lock file
parent
f32cf660
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
38 additions
and
11 deletions
+38
-11
CHANGELOG.md
+1
-0
poetry/installation/installer.py
+11
-4
poetry/packages/locker.py
+2
-0
poetry/puzzle/operations/operation.py
+3
-1
poetry/puzzle/solver.py
+4
-0
tests/puzzle/test_solver.py
+17
-6
No files found.
CHANGELOG.md
View file @
2b8e9aef
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
### Fixed
### Fixed
-
Fixed handling of markers with the
`in`
operator.
-
Fixed handling of markers with the
`in`
operator.
-
Fixed
`update`
not properly adding new packages to the lock file.
## [0.6.5] - 2018-03-22
## [0.6.5] - 2018-03-22
...
...
poetry/installation/installer.py
View file @
2b8e9aef
...
@@ -202,10 +202,11 @@ class Installer:
...
@@ -202,10 +202,11 @@ class Installer:
self
.
_io
.
new_line
()
self
.
_io
.
new_line
()
# Execute operations
# Execute operations
if
not
ops
and
(
self
.
_execute_operations
or
self
.
_dry_run
):
actual_ops
=
[
op
for
op
in
ops
if
not
op
.
skipped
]
if
not
actual_ops
and
(
self
.
_execute_operations
or
self
.
_dry_run
):
self
.
_io
.
writeln
(
'Nothing to install or update'
)
self
.
_io
.
writeln
(
'Nothing to install or update'
)
if
ops
and
(
self
.
_execute_operations
or
self
.
_dry_run
):
if
actual_
ops
and
(
self
.
_execute_operations
or
self
.
_dry_run
):
installs
=
[]
installs
=
[]
updates
=
[]
updates
=
[]
uninstalls
=
[]
uninstalls
=
[]
...
@@ -247,7 +248,6 @@ class Installer:
...
@@ -247,7 +248,6 @@ class Installer:
)
if
skipped
and
self
.
is_verbose
()
else
''
)
if
skipped
and
self
.
is_verbose
()
else
''
)
)
)
)
self
.
_io
.
new_line
()
# Writing lock before installing
# Writing lock before installing
if
self
.
_update
and
self
.
_write_lock
:
if
self
.
_update
and
self
.
_write_lock
:
...
@@ -257,9 +257,10 @@ class Installer:
...
@@ -257,9 +257,10 @@ class Installer:
)
)
if
updated_lock
:
if
updated_lock
:
self
.
_io
.
writeln
(
'<info>Writing lock file</>'
)
self
.
_io
.
writeln
(
''
)
self
.
_io
.
writeln
(
''
)
self
.
_io
.
writeln
(
'<info>Writing lock file</>'
)
self
.
_io
.
writeln
(
''
)
for
op
in
ops
:
for
op
in
ops
:
self
.
_execute
(
op
)
self
.
_execute
(
op
)
...
@@ -366,6 +367,12 @@ class Installer:
...
@@ -366,6 +367,12 @@ class Installer:
local_repo
.
add_package
(
op
.
target_package
)
local_repo
.
add_package
(
op
.
target_package
)
elif
op
.
job_type
==
'uninstall'
:
elif
op
.
job_type
==
'uninstall'
:
local_repo
.
remove_package
(
op
.
package
)
local_repo
.
remove_package
(
op
.
package
)
else
:
# Even though the package already exists
# in the lock file we will prefer the new one
# to force updates
local_repo
.
remove_package
(
pkg
)
local_repo
.
add_package
(
package
)
acted_on
=
True
acted_on
=
True
...
...
poetry/packages/locker.py
View file @
2b8e9aef
...
@@ -206,6 +206,8 @@ class Locker:
...
@@ -206,6 +206,8 @@ class Locker:
}
}
if
package
.
requirements
:
if
package
.
requirements
:
print
(
package
)
print
(
package
.
requirements
)
data
[
'requirements'
]
=
package
.
requirements
data
[
'requirements'
]
=
package
.
requirements
return
data
return
data
...
...
poetry/puzzle/operations/operation.py
View file @
2b8e9aef
...
@@ -28,6 +28,8 @@ class Operation:
...
@@ -28,6 +28,8 @@ class Operation:
def
format_version
(
self
,
package
)
->
str
:
def
format_version
(
self
,
package
)
->
str
:
return
package
.
full_pretty_version
return
package
.
full_pretty_version
def
skip
(
self
,
reason
:
str
)
->
None
:
def
skip
(
self
,
reason
:
str
)
->
'Operation'
:
self
.
_skipped
=
True
self
.
_skipped
=
True
self
.
_skip_reason
=
reason
self
.
_skip_reason
=
reason
return
self
poetry/puzzle/solver.py
View file @
2b8e9aef
...
@@ -86,6 +86,10 @@ class Solver:
...
@@ -86,6 +86,10 @@ class Solver:
# Checking version
# Checking version
if
package
.
version
!=
pkg
.
version
:
if
package
.
version
!=
pkg
.
version
:
operations
.
append
(
Update
(
pkg
,
package
))
operations
.
append
(
Update
(
pkg
,
package
))
else
:
operations
.
append
(
Install
(
package
)
.
skip
(
'Already installed'
)
)
break
break
...
...
tests/puzzle/test_solver.py
View file @
2b8e9aef
...
@@ -50,13 +50,18 @@ def solver(package, pool, installed, locked, io):
...
@@ -50,13 +50,18 @@ def solver(package, pool, installed, locked, io):
def
check_solver_result
(
ops
,
expected
):
def
check_solver_result
(
ops
,
expected
):
for
e
in
expected
:
if
'skipped'
not
in
e
:
e
[
'skipped'
]
=
False
result
=
[]
result
=
[]
for
op
in
ops
:
for
op
in
ops
:
if
'update'
==
op
.
job_type
:
if
'update'
==
op
.
job_type
:
result
.
append
({
result
.
append
({
'job'
:
'update'
,
'job'
:
'update'
,
'from'
:
op
.
initial_package
,
'from'
:
op
.
initial_package
,
'to'
:
op
.
target_package
'to'
:
op
.
target_package
,
'skipped'
:
op
.
skipped
})
})
else
:
else
:
job
=
'install'
job
=
'install'
...
@@ -65,7 +70,8 @@ def check_solver_result(ops, expected):
...
@@ -65,7 +70,8 @@ def check_solver_result(ops, expected):
result
.
append
({
result
.
append
({
'job'
:
job
,
'job'
:
job
,
'package'
:
op
.
package
'package'
:
op
.
package
,
'skipped'
:
op
.
skipped
})
})
assert
result
==
expected
assert
result
==
expected
...
@@ -172,8 +178,9 @@ def test_install_with_deps_in_order(solver, repo):
...
@@ -172,8 +178,9 @@ def test_install_with_deps_in_order(solver, repo):
def
test_install_installed
(
solver
,
repo
,
installed
):
def
test_install_installed
(
solver
,
repo
,
installed
):
installed
.
add_package
(
get_package
(
'A'
,
'1.0'
))
package_a
=
get_package
(
'A'
,
'1.0'
)
repo
.
add_package
(
get_package
(
'A'
,
'1.0'
))
installed
.
add_package
(
package_a
)
repo
.
add_package
(
package_a
)
request
=
[
request
=
[
get_dependency
(
'A'
),
get_dependency
(
'A'
),
...
@@ -181,7 +188,9 @@ def test_install_installed(solver, repo, installed):
...
@@ -181,7 +188,9 @@ def test_install_installed(solver, repo, installed):
ops
=
solver
.
solve
(
request
)
ops
=
solver
.
solve
(
request
)
check_solver_result
(
ops
,
[])
check_solver_result
(
ops
,
[
{
'job'
:
'install'
,
'package'
:
package_a
,
'skipped'
:
True
},
])
def
test_update_installed
(
solver
,
repo
,
installed
):
def
test_update_installed
(
solver
,
repo
,
installed
):
...
@@ -217,7 +226,9 @@ def test_update_with_fixed(solver, repo, installed):
...
@@ -217,7 +226,9 @@ def test_update_with_fixed(solver, repo, installed):
ops
=
solver
.
solve
(
request
,
fixed
=
[
get_dependency
(
'A'
,
'1.0'
)])
ops
=
solver
.
solve
(
request
,
fixed
=
[
get_dependency
(
'A'
,
'1.0'
)])
check_solver_result
(
ops
,
[])
check_solver_result
(
ops
,
[
{
'job'
:
'install'
,
'package'
:
package_a
,
'skipped'
:
True
},
])
def
test_solver_sets_categories
(
solver
,
repo
):
def
test_solver_sets_categories
(
solver
,
repo
):
...
...
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