Commit 9a68da31 by Arun Babu Neelicattu

Drop setuptools from critical package list

parent f739381e
...@@ -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
......
...@@ -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
......
...@@ -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:
......
...@@ -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"
......
...@@ -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"},
......
...@@ -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
......
...@@ -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
......
...@@ -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
): ):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment