Merge pull request #8022 from sbidoul/simplify-install-req-source-dir-sbi

Remove InstallRequirement source_dir parameter
This commit is contained in:
Pradyun Gedam 2020-04-13 05:00:06 +05:30 committed by GitHub
commit fc24a17899
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 15 deletions

View File

@ -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,

View File

@ -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:

View 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])

View File

@ -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()

View File

@ -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()