Skip to content

Commit

Permalink
env: only import importlib_metadata when needed (#401)
Browse files Browse the repository at this point in the history
* Only import importlib_metadata when needed

Similar to #395, this helps with bootstrap issues with python < 3.8.
Adjust test_pip_needs_upgrade_mac_os_11 accordingly.

* tests: fix line numbers

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
  • Loading branch information
jmroot and henryiii committed Aug 4, 2022
1 parent ceae21d commit 107ae01
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
10 changes: 5 additions & 5 deletions src/build/env.py
Expand Up @@ -18,11 +18,6 @@
import build


if sys.version_info < (3, 8):
import importlib_metadata as metadata
else:
from importlib import metadata

try:
import virtualenv
except ModuleNotFoundError:
Expand Down Expand Up @@ -260,6 +255,11 @@ def _create_isolated_env_venv(path: str) -> Tuple[str, str]:

import packaging.version

if sys.version_info < (3, 8):
import importlib_metadata as metadata
else:
from importlib import metadata

symlinks = _fs_supports_symlink()
try:
venv.EnvBuilder(with_pip=True, symlinks=symlinks).create(path)
Expand Down
9 changes: 7 additions & 2 deletions tests/test_env.py
Expand Up @@ -117,7 +117,11 @@ def test_isolated_env_log(mocker, caplog, package_test_flit):
('INFO', 'Installing packages in isolated environment... (something)'),
]
if sys.version_info >= (3, 8): # stacklevel
assert [(record.lineno) for record in caplog.records] == [frameinfo.lineno + 1, 107, 198]
assert [(record.lineno) for record in caplog.records] == [
frameinfo.lineno + 1,
frameinfo.lineno - 7,
frameinfo.lineno + 84,
]


@pytest.mark.isolated
Expand All @@ -139,7 +143,8 @@ def test_pip_needs_upgrade_mac_os_11(mocker, pip_version, arch):
mocker.patch('platform.system', return_value='Darwin')
mocker.patch('platform.machine', return_value=arch)
mocker.patch('platform.mac_ver', return_value=('11.0', ('', '', ''), ''))
mocker.patch('build.env.metadata.distributions', return_value=(SimpleNamespace(version=pip_version),))
metadata_name = 'importlib_metadata' if sys.version_info < (3, 8) else 'importlib.metadata'
mocker.patch(metadata_name + '.distributions', return_value=(SimpleNamespace(version=pip_version),))

min_version = Version('20.3' if arch == 'x86_64' else '21.0.1')
with build.env.IsolatedEnvBuilder():
Expand Down

0 comments on commit 107ae01

Please sign in to comment.