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
df8f40e6
Commit
df8f40e6
authored
Apr 02, 2021
by
Sébastien Eustace
Committed by
Arun Babu Neelicattu
Apr 07, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix locked VCS dependencies always being updated
parent
48339106
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
80 additions
and
9 deletions
+80
-9
poetry/installation/executor.py
+6
-1
poetry/installation/installer.py
+4
-7
poetry/installation/pip_installer.py
+6
-1
tests/installation/test_installer.py
+64
-0
No files found.
poetry/installation/executor.py
View file @
df8f40e6
...
...
@@ -606,7 +606,12 @@ class Executor:
git
=
Git
()
git
.
clone
(
package
.
source_url
,
src_dir
)
git
.
checkout
(
package
.
source_resolved_reference
,
src_dir
)
reference
=
package
.
source_resolved_reference
if
not
reference
:
reference
=
package
.
source_reference
git
.
checkout
(
reference
,
src_dir
)
# Now we just need to install from the source directory
original_url
=
package
.
source_url
...
...
poetry/installation/installer.py
View file @
df8f40e6
...
...
@@ -309,12 +309,6 @@ class Installer:
pool
.
add_repository
(
repo
)
# We whitelist all packages to be sure
# that the latest ones are picked up
whitelist
=
[]
for
pkg
in
locked_repository
.
packages
:
whitelist
.
append
(
pkg
.
name
)
solver
=
Solver
(
root
,
pool
,
...
...
@@ -323,9 +317,12 @@ class Installer:
NullIO
(),
remove_untracked
=
self
.
_remove_untracked
,
)
# Everything is resolved at this point, so we no longer need
# to load deferred dependencies (i.e. VCS, URL and path dependencies)
solver
.
provider
.
load_deferred
(
False
)
with
solver
.
use_environment
(
self
.
_env
):
ops
=
solver
.
solve
(
use_latest
=
whitelist
)
ops
=
solver
.
solve
(
use_latest
=
self
.
_
whitelist
)
# We need to filter operations so that packages
# not compatible with the current system,
...
...
poetry/installation/pip_installer.py
View file @
df8f40e6
...
...
@@ -251,7 +251,12 @@ class PipInstaller(BaseInstaller):
git
=
Git
()
git
.
clone
(
package
.
source_url
,
src_dir
)
git
.
checkout
(
package
.
source_reference
,
src_dir
)
reference
=
package
.
source_resolved_reference
if
not
reference
:
reference
=
package
.
source_reference
git
.
checkout
(
reference
,
src_dir
)
# Now we just need to install from the source directory
pkg
=
Package
(
package
.
name
,
package
.
version
)
...
...
tests/installation/test_installer.py
View file @
df8f40e6
...
...
@@ -14,6 +14,7 @@ from cleo.io.outputs.buffered_output import BufferedOutput
from
cleo.io.outputs.output
import
Verbosity
from
deepdiff
import
DeepDiff
from
poetry.core.packages.package
import
Package
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.core.toml.file
import
TOMLFile
from
poetry.factory
import
Factory
...
...
@@ -1924,3 +1925,66 @@ def test_run_with_dependencies_quiet(installer, locker, repo, package, quiet):
assert
installer
.
_io
.
output
.
_buffer
.
read
()
==
""
else
:
assert
installer
.
_io
.
output
.
_buffer
.
read
()
!=
""
def
test_installer_should_use_the_locked_version_of_git_dependencies
(
installer
,
locker
,
package
,
repo
):
locker
.
locked
(
True
)
locker
.
mock_lock_data
(
{
"package"
:
[
{
"name"
:
"demo"
,
"version"
:
"0.1.1"
,
"category"
:
"main"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
"dependencies"
:
{
"pendulum"
:
">=1.4.4"
},
"source"
:
{
"type"
:
"git"
,
"url"
:
"https://github.com/demo/demo.git"
,
"reference"
:
"master"
,
"resolved_reference"
:
"123456"
,
},
},
{
"name"
:
"pendulum"
,
"version"
:
"1.4.4"
,
"category"
:
"main"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
"dependencies"
:
{},
},
],
"metadata"
:
{
"python-versions"
:
"*"
,
"platform"
:
"*"
,
"content-hash"
:
"123456789"
,
"hashes"
:
{
"demo"
:
[],
"pendulum"
:
[]},
},
}
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
,
"branch"
:
"master"
}
)
)
repo
.
add_package
(
get_package
(
"pendulum"
,
"1.4.4"
))
installer
.
run
()
assert
installer
.
executor
.
installations
[
-
1
]
==
Package
(
"demo"
,
"0.1.1"
,
source_type
=
"git"
,
source_url
=
"https://github.com/demo/demo.git"
,
source_reference
=
"master"
,
source_resolved_reference
=
"123456"
,
)
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