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
9a68da31
Commit
9a68da31
authored
Aug 18, 2020
by
Arun Babu Neelicattu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Drop setuptools from critical package list
parent
f739381e
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
45 additions
and
17 deletions
+45
-17
poetry.lock
+0
-0
poetry/installation/pip_installer.py
+11
-5
poetry/puzzle/provider.py
+1
-1
poetry/utils/env.py
+1
-2
pyproject.toml
+1
-0
tests/installation/fixtures/with-pypi-repository.test
+17
-0
tests/installation/test_installer.py
+8
-5
tests/installation/test_installer_old.py
+5
-4
tests/puzzle/test_solver.py
+1
-0
No files found.
poetry.lock
View file @
9a68da31
This diff is collapsed.
Click to expand it.
poetry/installation/pip_installer.py
View file @
9a68da31
...
@@ -2,6 +2,7 @@ import os
...
@@ -2,6 +2,7 @@ import os
import
tempfile
import
tempfile
import
urllib.parse
import
urllib.parse
from
pathlib
import
Path
from
subprocess
import
CalledProcessError
from
subprocess
import
CalledProcessError
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
from
typing
import
Any
from
typing
import
Any
...
@@ -9,14 +10,15 @@ from typing import Union
...
@@ -9,14 +10,15 @@ from typing import Union
from
cleo.io.io
import
IO
from
cleo.io.io
import
IO
from
poetry.installation.base_installer
import
BaseInstaller
from
poetry.core.pyproject.toml
import
PyProjectTOML
from
poetry.core.pyproject.toml
import
PyProjectTOML
from
poetry.repositories.pool
import
Pool
from
poetry.repositories.pool
import
Pool
from
poetry.utils._compat
import
encode
from
poetry.utils._compat
import
encode
from
poetry.utils.env
import
Env
from
poetry.utils.env
import
Env
from
poetry.utils.env
import
EnvManager
from
poetry.utils.env
import
VirtualEnv
from
poetry.utils.helpers
import
safe_rmtree
from
poetry.utils.helpers
import
safe_rmtree
from
poetry.utils.helpers
import
temporary_directory
from
.base_installer
import
BaseInstaller
if
TYPE_CHECKING
:
if
TYPE_CHECKING
:
from
poetry.core.packages.package
import
Package
from
poetry.core.packages.package
import
Package
...
@@ -193,7 +195,7 @@ class PipInstaller(BaseInstaller):
...
@@ -193,7 +195,7 @@ class PipInstaller(BaseInstaller):
else
:
else
:
req
=
os
.
path
.
realpath
(
package
.
source_url
)
req
=
os
.
path
.
realpath
(
package
.
source_url
)
args
=
[
"install"
,
"--no-deps"
,
"-U"
]
args
=
[
"install"
,
"--no-deps"
,
"-U"
,
"--root"
,
str
(
self
.
_env
.
path
)
]
pyproject
=
PyProjectTOML
(
os
.
path
.
join
(
req
,
"pyproject.toml"
))
pyproject
=
PyProjectTOML
(
os
.
path
.
join
(
req
,
"pyproject.toml"
))
...
@@ -239,7 +241,11 @@ class PipInstaller(BaseInstaller):
...
@@ -239,7 +241,11 @@ class PipInstaller(BaseInstaller):
args
.
append
(
req
)
args
.
append
(
req
)
return
self
.
run
(
*
args
)
with
temporary_directory
()
as
tmp_dir
:
venv_dir
=
Path
(
tmp_dir
)
/
".venv"
EnvManager
.
build_venv
(
venv_dir
.
as_posix
(),
with_pip
=
True
)
venv
=
VirtualEnv
(
venv_dir
,
venv_dir
)
return
venv
.
run
(
"pip"
,
*
args
)
def
install_git
(
self
,
package
:
"Package"
)
->
None
:
def
install_git
(
self
,
package
:
"Package"
)
->
None
:
from
poetry.core.packages.package
import
Package
from
poetry.core.packages.package
import
Package
...
...
poetry/puzzle/provider.py
View file @
9a68da31
...
@@ -54,7 +54,7 @@ class Indicator(ProgressIndicator):
...
@@ -54,7 +54,7 @@ class Indicator(ProgressIndicator):
class
Provider
:
class
Provider
:
UNSAFE_PACKAGES
=
{
"setuptools"
}
UNSAFE_PACKAGES
=
set
()
def
__init__
(
def
__init__
(
self
,
package
:
Package
,
pool
:
Pool
,
io
:
Any
,
env
:
Optional
[
Env
]
=
None
self
,
package
:
Package
,
pool
:
Pool
,
io
:
Any
,
env
:
Optional
[
Env
]
=
None
...
...
poetry/utils/env.py
View file @
9a68da31
...
@@ -826,8 +826,7 @@ class EnvManager(object):
...
@@ -826,8 +826,7 @@ class EnvManager(object):
]
]
if
not
with_pip
:
if
not
with_pip
:
# we cannot drop setuptools yet because we do editable installs (git, path) in project envs
args
.
extend
([
"--no-pip"
,
"--no-wheel"
,
"--no-setuptools"
])
args
.
extend
([
"--no-pip"
,
"--no-wheel"
])
for
flag
,
value
in
flags
.
items
():
for
flag
,
value
in
flags
.
items
():
if
value
is
True
:
if
value
is
True
:
...
...
pyproject.toml
View file @
9a68da31
...
@@ -53,6 +53,7 @@ tox = "^3.0"
...
@@ -53,6 +53,7 @@ tox = "^3.0"
pytest-sugar
=
"^0.9.2"
pytest-sugar
=
"^0.9.2"
httpretty
=
"^1.0"
httpretty
=
"^1.0"
zipp
=
{
version
=
"^3.4"
,
python
=
"<3.8"
}
zipp
=
{
version
=
"^3.4"
,
python
=
"<3.8"
}
deepdiff
=
"^5.0.2"
# temporary workaround for https://github.com/python-poetry/poetry/issues/3404
# temporary workaround for https://github.com/python-poetry/poetry/issues/3404
urllib3
=
"1.25.10"
urllib3
=
"1.25.10"
...
...
tests/installation/fixtures/with-pypi-repository.test
View file @
9a68da31
...
@@ -66,6 +66,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
...
@@ -66,6 +66,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
py
=
">=1.5.0"
py
=
">=1.5.0"
six
=
">=1.10.0"
six
=
">=1.10.0"
attrs
=
">=17.4.0"
attrs
=
">=17.4.0"
setuptools
=
"*"
more
-
itertools
=
">=4.0.0"
more
-
itertools
=
">=4.0.0"
pluggy
=
">=0.5,<0.7"
pluggy
=
">=0.5,<0.7"
funcsigs
=
{
"version"
=
"*"
,
"markers"
=
"python_version <
\"
3.0
\"
"
}
funcsigs
=
{
"version"
=
"*"
,
"markers"
=
"python_version <
\"
3.0
\"
"
}
...
@@ -79,6 +80,18 @@ category = "dev"
...
@@ -79,6 +80,18 @@ category = "dev"
optional
=
false
optional
=
false
python
-
versions
=
"*"
python
-
versions
=
"*"
[[
package
]]
name
=
"setuptools"
version
=
"39.2.0"
description
=
"Easily download, build, install, upgrade, and uninstall Python packages"
category
=
"dev"
optional
=
false
python
-
versions
=
">=2.7,!=3.0.*,!=3.1.*,!=3.2.*"
[
package
.
extras
]
certs
=
[
"certifi (==2016.9.26)"
]
ssl
=
[
"wincertstore (==0.2)"
]
[
metadata
]
[
metadata
]
python
-
versions
=
"*"
python
-
versions
=
"*"
lock
-
version
=
"1.1"
lock
-
version
=
"1.1"
...
@@ -113,6 +126,10 @@ pytest = [
...
@@ -113,6 +126,10 @@ pytest = [
{
file
=
"pytest-3.5.0-py2.py3-none-any.whl"
,
hash
=
"sha256:6266f87ab64692112e5477eba395cfedda53b1933ccd29478e671e73b420c19c"
},
{
file
=
"pytest-3.5.0-py2.py3-none-any.whl"
,
hash
=
"sha256:6266f87ab64692112e5477eba395cfedda53b1933ccd29478e671e73b420c19c"
},
{
file
=
"pytest-3.5.0.tar.gz"
,
hash
=
"sha256:fae491d1874f199537fd5872b5e1f0e74a009b979df9d53d1553fd03da1703e1"
},
{
file
=
"pytest-3.5.0.tar.gz"
,
hash
=
"sha256:fae491d1874f199537fd5872b5e1f0e74a009b979df9d53d1553fd03da1703e1"
},
]
]
setuptools
=
[
{
file
=
"setuptools-39.2.0-py2.py3-none-any.whl"
,
hash
=
"sha256:8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926"
},
{
file
=
"setuptools-39.2.0.zip"
,
hash
=
"sha256:f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2"
},
]
six
=
[
six
=
[
{
file
=
"six-1.11.0-py2.py3-none-any.whl"
,
hash
=
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
},
{
file
=
"six-1.11.0-py2.py3-none-any.whl"
,
hash
=
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
},
{
file
=
"six-1.11.0.tar.gz"
,
hash
=
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
},
{
file
=
"six-1.11.0.tar.gz"
,
hash
=
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
},
...
...
tests/installation/test_installer.py
View file @
9a68da31
...
@@ -13,6 +13,7 @@ from cleo.io.null_io import NullIO
...
@@ -13,6 +13,7 @@ from cleo.io.null_io import NullIO
from
cleo.io.outputs.buffered_output
import
BufferedOutput
from
cleo.io.outputs.buffered_output
import
BufferedOutput
from
cleo.io.outputs.output
import
Verbosity
from
cleo.io.outputs.output
import
Verbosity
from
deepdiff
import
DeepDiff
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.core.toml.file
import
TOMLFile
from
poetry.core.toml.file
import
TOMLFile
from
poetry.factory
import
Factory
from
poetry.factory
import
Factory
...
@@ -404,7 +405,7 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
...
@@ -404,7 +405,7 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
installed
.
add_package
(
package_b
)
installed
.
add_package
(
package_b
)
installed
.
add_package
(
package_c
)
installed
.
add_package
(
package_c
)
installed
.
add_package
(
package_pip
)
installed
.
add_package
(
package_pip
)
installed
.
add_package
(
package_setuptools
)
# Always required and never removed.
installed
.
add_package
(
package_setuptools
)
installed
.
add_package
(
package
)
# Root package never removed.
installed
.
add_package
(
package
)
# Root package never removed.
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"~1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"~1.0"
))
...
@@ -414,8 +415,10 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
...
@@ -414,8 +415,10 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
assert
0
==
installer
.
executor
.
installations_count
assert
0
==
installer
.
executor
.
installations_count
assert
0
==
installer
.
executor
.
updates_count
assert
0
==
installer
.
executor
.
updates_count
assert
3
==
installer
.
executor
.
removals_count
assert
4
==
installer
.
executor
.
removals_count
assert
{
"b"
,
"c"
,
"pip"
}
==
set
(
r
.
name
for
r
in
installer
.
executor
.
removals
)
assert
{
"b"
,
"c"
,
"pip"
,
"setuptools"
}
==
set
(
r
.
name
for
r
in
installer
.
executor
.
removals
)
def
test_run_whitelist_add
(
installer
,
locker
,
repo
,
package
):
def
test_run_whitelist_add
(
installer
,
locker
,
repo
,
package
):
...
@@ -831,7 +834,7 @@ def test_installer_with_pypi_repository(package, locker, installed, config):
...
@@ -831,7 +834,7 @@ def test_installer_with_pypi_repository(package, locker, installed, config):
expected
=
fixture
(
"with-pypi-repository"
)
expected
=
fixture
(
"with-pypi-repository"
)
assert
locker
.
written_data
==
expected
assert
not
DeepDiff
(
locker
.
written_data
,
expected
,
ignore_order
=
True
)
def
test_run_installs_with_local_file
(
installer
,
locker
,
repo
,
package
,
fixture_dir
):
def
test_run_installs_with_local_file
(
installer
,
locker
,
repo
,
package
,
fixture_dir
):
...
@@ -1612,7 +1615,7 @@ def test_installer_required_extras_should_not_be_removed_when_updating_single_de
...
@@ -1612,7 +1615,7 @@ def test_installer_required_extras_should_not_be_removed_when_updating_single_de
installer
.
whitelist
([
"pytest"
])
installer
.
whitelist
([
"pytest"
])
installer
.
run
()
installer
.
run
()
assert
6
==
installer
.
executor
.
installations_count
assert
7
==
installer
.
executor
.
installations_count
assert
0
==
installer
.
executor
.
updates_count
assert
0
==
installer
.
executor
.
updates_count
assert
0
==
installer
.
executor
.
removals_count
assert
0
==
installer
.
executor
.
removals_count
...
...
tests/installation/test_installer_old.py
View file @
9a68da31
...
@@ -8,6 +8,7 @@ import pytest
...
@@ -8,6 +8,7 @@ import pytest
from
cleo.io.null_io
import
NullIO
from
cleo.io.null_io
import
NullIO
from
deepdiff
import
DeepDiff
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.core.toml.file
import
TOMLFile
from
poetry.core.toml.file
import
TOMLFile
from
poetry.factory
import
Factory
from
poetry.factory
import
Factory
...
@@ -330,7 +331,7 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
...
@@ -330,7 +331,7 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
installed
.
add_package
(
package_b
)
installed
.
add_package
(
package_b
)
installed
.
add_package
(
package_c
)
installed
.
add_package
(
package_c
)
installed
.
add_package
(
package_pip
)
installed
.
add_package
(
package_pip
)
installed
.
add_package
(
package_setuptools
)
# Always required and never removed.
installed
.
add_package
(
package_setuptools
)
installed
.
add_package
(
package
)
# Root package never removed.
installed
.
add_package
(
package
)
# Root package never removed.
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"~1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"~1.0"
))
...
@@ -345,7 +346,7 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
...
@@ -345,7 +346,7 @@ def test_run_install_remove_untracked(installer, locker, repo, package, installe
assert
len
(
updates
)
==
0
assert
len
(
updates
)
==
0
removals
=
installer
.
installer
.
removals
removals
=
installer
.
installer
.
removals
assert
set
(
r
.
name
for
r
in
removals
)
==
{
"b"
,
"c"
,
"pip"
}
assert
set
(
r
.
name
for
r
in
removals
)
==
{
"b"
,
"c"
,
"pip"
,
"setuptools"
}
def
test_run_whitelist_add
(
installer
,
locker
,
repo
,
package
):
def
test_run_whitelist_add
(
installer
,
locker
,
repo
,
package
):
...
@@ -738,7 +739,7 @@ def test_installer_with_pypi_repository(package, locker, installed, config):
...
@@ -738,7 +739,7 @@ def test_installer_with_pypi_repository(package, locker, installed, config):
expected
=
fixture
(
"with-pypi-repository"
)
expected
=
fixture
(
"with-pypi-repository"
)
assert
locker
.
written_data
==
expected
assert
not
DeepDiff
(
locker
.
written_data
,
expected
,
ignore_order
=
True
)
def
test_run_installs_with_local_file
(
installer
,
locker
,
repo
,
package
,
fixture_dir
):
def
test_run_installs_with_local_file
(
installer
,
locker
,
repo
,
package
,
fixture_dir
):
...
@@ -1509,7 +1510,7 @@ def test_installer_required_extras_should_not_be_removed_when_updating_single_de
...
@@ -1509,7 +1510,7 @@ def test_installer_required_extras_should_not_be_removed_when_updating_single_de
installer
.
whitelist
([
"pytest"
])
installer
.
whitelist
([
"pytest"
])
installer
.
run
()
installer
.
run
()
assert
len
(
installer
.
installer
.
installs
)
==
6
assert
len
(
installer
.
installer
.
installs
)
==
7
assert
len
(
installer
.
installer
.
updates
)
==
0
assert
len
(
installer
.
installer
.
updates
)
==
0
assert
len
(
installer
.
installer
.
removals
)
==
0
assert
len
(
installer
.
installer
.
removals
)
==
0
...
...
tests/puzzle/test_solver.py
View file @
9a68da31
...
@@ -2403,6 +2403,7 @@ def test_solver_remove_untracked_single(package, pool, installed, locked, io):
...
@@ -2403,6 +2403,7 @@ def test_solver_remove_untracked_single(package, pool, installed, locked, io):
check_solver_result
(
ops
,
[{
"job"
:
"remove"
,
"package"
:
package_a
}])
check_solver_result
(
ops
,
[{
"job"
:
"remove"
,
"package"
:
package_a
}])
@pytest.mark.skip
(
reason
=
"Poetry no longer has critical package requirements"
)
def
test_solver_remove_untracked_keeps_critical_package
(
def
test_solver_remove_untracked_keeps_critical_package
(
package
,
pool
,
installed
,
locked
,
io
package
,
pool
,
installed
,
locked
,
io
):
):
...
...
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