3030)
3131from tox .tox_env .register import ToxEnvRegister
3232from tox .tox_env .runner import RunToxEnv
33+ from tox .util .file_view import create_session_view
3334
3435from ..api import VirtualEnv
3536from .util import dependencies_with_extras
@@ -99,6 +100,7 @@ def __init__(self, create_args: ToxEnvCreateArgs) -> None:
99100 self ._package_name : str | None = None
100101 self ._pkg_lock = RLock () # can build only one package at a time
101102 self .root = self .conf ["package_root" ]
103+ self ._package_paths : set [Path ] = set ()
102104
103105 @staticmethod
104106 def id () -> str :
@@ -164,6 +166,10 @@ def _teardown(self) -> None:
164166 pass
165167 finally :
166168 executor .close ()
169+ for path in self ._package_paths :
170+ if path .exists ():
171+ logging .debug ("delete package %s" , path )
172+ path .unlink ()
167173 super ()._teardown ()
168174
169175 def perform_packaging (self , for_env : EnvConfigSet ) -> list [Package ]:
@@ -189,7 +195,10 @@ def perform_packaging(self, for_env: EnvConfigSet) -> list[Package]:
189195 elif of_type == "sdist" :
190196 self .setup ()
191197 with self ._pkg_lock :
192- package = SdistPackage (self ._frontend .build_sdist (sdist_directory = self .pkg_dir ).sdist , deps )
198+ sdist = self ._frontend .build_sdist (sdist_directory = self .pkg_dir ).sdist
199+ sdist = create_session_view (sdist , self ._package_temp_path )
200+ self ._package_paths .add (sdist )
201+ package = SdistPackage (sdist , deps )
193202 elif of_type in {"wheel" , "editable" }:
194203 w_env = self ._wheel_build_envs .get (for_env ["wheel_build_env" ])
195204 if w_env is not None and w_env is not self :
@@ -199,16 +208,22 @@ def perform_packaging(self, for_env: EnvConfigSet) -> list[Package]:
199208 self .setup ()
200209 method = "build_editable" if of_type == "editable" else "build_wheel"
201210 with self ._pkg_lock :
202- path = getattr (self ._frontend , method )(
211+ wheel = getattr (self ._frontend , method )(
203212 wheel_directory = self .pkg_dir ,
204213 metadata_directory = self .meta_folder ,
205214 config_settings = self ._wheel_config_settings ,
206215 ).wheel
207- package = (EditablePackage if of_type == "editable" else WheelPackage )(path , deps )
216+ wheel = create_session_view (wheel , self ._package_temp_path )
217+ self ._package_paths .add (wheel )
218+ package = (EditablePackage if of_type == "editable" else WheelPackage )(wheel , deps )
208219 else : # pragma: no cover # for when we introduce new packaging types and don't implement
209220 raise TypeError (f"cannot handle package type { of_type } " ) # pragma: no cover
210221 return [package ]
211222
223+ @property
224+ def _package_temp_path (self ) -> Path :
225+ return cast (Path , self .core ["temp_dir" ]) / "package"
226+
212227 def _load_deps (self , for_env : EnvConfigSet ) -> list [Requirement ]:
213228 # first check if this is statically available via PEP-621
214229 deps = self ._load_deps_from_static (for_env )
0 commit comments