Skip to content

Commit 820f8bb

Browse files
committed
Clean up temporary directory at exit
1 parent 7ee1a55 commit 820f8bb

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

src/pip/_internal/req/req_install.py

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import absolute_import
22

3+
import atexit
34
import logging
45
import os
56
import shutil
@@ -552,28 +553,36 @@ def prepare_metadata(self):
552553
)
553554
self.req = Requirement(metadata_name)
554555

556+
def cleanup(self):
557+
# type: () -> None
558+
if self._temp_dir is not None:
559+
self._temp_dir.cleanup()
560+
555561
def prepare_pep517_metadata(self):
556562
# type: () -> None
557563
assert self.pep517_backend is not None
558564

559-
with TempDirectory(delete=False) as temp_dir:
560-
metadata_dir = os.path.join(
561-
temp_dir.path,
562-
'pip-wheel-metadata',
563-
)
564-
ensure_dir(metadata_dir)
565+
self._temp_dir = TempDirectory(delete=False, kind="req-install")
566+
self._temp_dir.create()
567+
metadata_dir = os.path.join(
568+
self._temp_dir.path,
569+
'pip-wheel-metadata',
570+
)
571+
atexit.register(self.cleanup)
565572

566-
with self.build_env:
567-
# Note that Pep517HookCaller implements a fallback for
568-
# prepare_metadata_for_build_wheel, so we don't have to
569-
# consider the possibility that this hook doesn't exist.
570-
backend = self.pep517_backend
571-
self.spin_message = "Preparing wheel metadata"
572-
distinfo_dir = backend.prepare_metadata_for_build_wheel(
573-
metadata_dir
574-
)
573+
ensure_dir(metadata_dir)
574+
575+
with self.build_env:
576+
# Note that Pep517HookCaller implements a fallback for
577+
# prepare_metadata_for_build_wheel, so we don't have to
578+
# consider the possibility that this hook doesn't exist.
579+
backend = self.pep517_backend
580+
self.spin_message = "Preparing wheel metadata"
581+
distinfo_dir = backend.prepare_metadata_for_build_wheel(
582+
metadata_dir
583+
)
575584

576-
self.metadata_directory = os.path.join(metadata_dir, distinfo_dir)
585+
self.metadata_directory = os.path.join(metadata_dir, distinfo_dir)
577586

578587
def run_egg_info(self):
579588
# type: () -> None

0 commit comments

Comments
 (0)