mirror of https://github.com/pypa/pip
Merge pull request #8022 from sbidoul/simplify-install-req-source-dir-sbi
Remove InstallRequirement source_dir parameter
This commit is contained in:
commit
fc24a17899
|
@ -228,12 +228,9 @@ def install_req_from_editable(
|
|||
|
||||
parts = parse_req_from_editable(editable_req)
|
||||
|
||||
source_dir = parts.link.file_path if parts.link.scheme == 'file' else None
|
||||
|
||||
return InstallRequirement(
|
||||
parts.requirement,
|
||||
comes_from=comes_from,
|
||||
source_dir=source_dir,
|
||||
editable=True,
|
||||
link=parts.link,
|
||||
constraint=constraint,
|
||||
|
|
|
@ -101,7 +101,6 @@ class InstallRequirement(object):
|
|||
self,
|
||||
req, # type: Optional[Requirement]
|
||||
comes_from, # type: Optional[Union[str, InstallRequirement]]
|
||||
source_dir=None, # type: Optional[str]
|
||||
editable=False, # type: bool
|
||||
link=None, # type: Optional[Link]
|
||||
markers=None, # type: Optional[Marker]
|
||||
|
@ -118,17 +117,27 @@ class InstallRequirement(object):
|
|||
self.req = req
|
||||
self.comes_from = comes_from
|
||||
self.constraint = constraint
|
||||
if source_dir is None:
|
||||
self.source_dir = None # type: Optional[str]
|
||||
else:
|
||||
self.source_dir = os.path.normpath(os.path.abspath(source_dir))
|
||||
self.editable = editable
|
||||
|
||||
# source_dir is the local directory where the linked requirement is
|
||||
# located, or unpacked. In case unpacking is needed, creating and
|
||||
# populating source_dir is done by the RequirementPreparer. Note this
|
||||
# is not necessarily the directory where pyproject.toml or setup.py is
|
||||
# located - that one is obtained via unpacked_source_directory.
|
||||
self.source_dir = None # type: Optional[str]
|
||||
if self.editable:
|
||||
assert link
|
||||
if link.is_file:
|
||||
self.source_dir = os.path.normpath(
|
||||
os.path.abspath(link.file_path)
|
||||
)
|
||||
|
||||
if link is None and req and req.url:
|
||||
# PEP 508 URL requirement
|
||||
link = Link(req.url)
|
||||
self.link = self.original_link = link
|
||||
self.original_link_is_in_wheel_cache = False
|
||||
|
||||
# Path to any downloaded or already-existing package.
|
||||
self.local_file_path = None # type: Optional[str]
|
||||
if self.link and self.link.is_file:
|
||||
|
|
|
@ -22,7 +22,8 @@ def make_project(tmpdir, requires=[], backend=None, backend_path=None):
|
|||
def test_backend(tmpdir, data):
|
||||
"""Check we can call a requirement's backend successfully"""
|
||||
project_dir = make_project(tmpdir, backend="dummy_backend")
|
||||
req = InstallRequirement(None, None, source_dir=project_dir)
|
||||
req = InstallRequirement(None, None)
|
||||
req.source_dir = project_dir # make req believe it has been unpacked
|
||||
req.load_pyproject_toml()
|
||||
env = BuildEnvironment()
|
||||
finder = make_test_finder(find_links=[data.backends])
|
||||
|
@ -50,7 +51,8 @@ def test_backend_path(tmpdir, data):
|
|||
tmpdir, backend="dummy_backend", backend_path=['.']
|
||||
)
|
||||
(project_dir / 'dummy_backend.py').write_text(dummy_backend_code)
|
||||
req = InstallRequirement(None, None, source_dir=project_dir)
|
||||
req = InstallRequirement(None, None)
|
||||
req.source_dir = project_dir # make req believe it has been unpacked
|
||||
req.load_pyproject_toml()
|
||||
|
||||
env = BuildEnvironment()
|
||||
|
@ -67,7 +69,8 @@ def test_backend_path_and_dep(tmpdir, data):
|
|||
(project_dir / 'dummy_internal_backend.py').write_text(
|
||||
"from dummy_backend import build_wheel"
|
||||
)
|
||||
req = InstallRequirement(None, None, source_dir=project_dir)
|
||||
req = InstallRequirement(None, None)
|
||||
req.source_dir = project_dir # make req believe it has been unpacked
|
||||
req.load_pyproject_toml()
|
||||
env = BuildEnvironment()
|
||||
finder = make_test_finder(find_links=[data.backends])
|
||||
|
|
|
@ -16,7 +16,8 @@ def test_use_pep517(shared_data, source, expected):
|
|||
Test that we choose correctly between PEP 517 and legacy code paths
|
||||
"""
|
||||
src = shared_data.src.joinpath(source)
|
||||
req = InstallRequirement(None, None, source_dir=src)
|
||||
req = InstallRequirement(None, None)
|
||||
req.source_dir = src # make req believe it has been unpacked
|
||||
req.load_pyproject_toml()
|
||||
assert req.use_pep517 is expected
|
||||
|
||||
|
@ -30,7 +31,8 @@ def test_disabling_pep517_invalid(shared_data, source, msg):
|
|||
Test that we fail if we try to disable PEP 517 when it's not acceptable
|
||||
"""
|
||||
src = shared_data.src.joinpath(source)
|
||||
req = InstallRequirement(None, None, source_dir=src)
|
||||
req = InstallRequirement(None, None)
|
||||
req.source_dir = src # make req believe it has been unpacked
|
||||
|
||||
# Simulate --no-use-pep517
|
||||
req.use_pep517 = False
|
||||
|
@ -54,7 +56,8 @@ def test_pep517_parsing_checks_requirements(tmpdir, spec):
|
|||
build-backend = "foo"
|
||||
""".format(spec)
|
||||
))
|
||||
req = InstallRequirement(None, None, source_dir=tmpdir)
|
||||
req = InstallRequirement(None, None)
|
||||
req.source_dir = tmpdir # make req believe it has been unpacked
|
||||
|
||||
with pytest.raises(InstallationError) as e:
|
||||
req.load_pyproject_toml()
|
||||
|
|
|
@ -641,8 +641,8 @@ def test_mismatched_versions(caplog):
|
|||
req = InstallRequirement(
|
||||
req=Requirement('simplewheel==2.0'),
|
||||
comes_from=None,
|
||||
source_dir="/tmp/somewhere",
|
||||
)
|
||||
req.source_dir = "/tmp/somewhere" # make req believe it has been unpacked
|
||||
# Monkeypatch!
|
||||
req._metadata = {"name": "simplewheel", "version": "1.0"}
|
||||
req.assert_source_matches_version()
|
||||
|
|
Loading…
Reference in New Issue