30
30
)
31
31
from tox .tox_env .register import ToxEnvRegister
32
32
from tox .tox_env .runner import RunToxEnv
33
+ from tox .util .file_view import create_session_view
33
34
34
35
from ..api import VirtualEnv
35
36
from .util import dependencies_with_extras
@@ -99,6 +100,7 @@ def __init__(self, create_args: ToxEnvCreateArgs) -> None:
99
100
self ._package_name : str | None = None
100
101
self ._pkg_lock = RLock () # can build only one package at a time
101
102
self .root = self .conf ["package_root" ]
103
+ self ._package_paths : set [Path ] = set ()
102
104
103
105
@staticmethod
104
106
def id () -> str :
@@ -164,6 +166,10 @@ def _teardown(self) -> None:
164
166
pass
165
167
finally :
166
168
executor .close ()
169
+ for path in self ._package_paths :
170
+ if path .exists ():
171
+ logging .debug ("delete package %s" , path )
172
+ path .unlink ()
167
173
super ()._teardown ()
168
174
169
175
def perform_packaging (self , for_env : EnvConfigSet ) -> list [Package ]:
@@ -189,7 +195,10 @@ def perform_packaging(self, for_env: EnvConfigSet) -> list[Package]:
189
195
elif of_type == "sdist" :
190
196
self .setup ()
191
197
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 )
193
202
elif of_type in {"wheel" , "editable" }:
194
203
w_env = self ._wheel_build_envs .get (for_env ["wheel_build_env" ])
195
204
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]:
199
208
self .setup ()
200
209
method = "build_editable" if of_type == "editable" else "build_wheel"
201
210
with self ._pkg_lock :
202
- path = getattr (self ._frontend , method )(
211
+ wheel = getattr (self ._frontend , method )(
203
212
wheel_directory = self .pkg_dir ,
204
213
metadata_directory = self .meta_folder ,
205
214
config_settings = self ._wheel_config_settings ,
206
215
).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 )
208
219
else : # pragma: no cover # for when we introduce new packaging types and don't implement
209
220
raise TypeError (f"cannot handle package type { of_type } " ) # pragma: no cover
210
221
return [package ]
211
222
223
+ @property
224
+ def _package_temp_path (self ) -> Path :
225
+ return cast (Path , self .core ["temp_dir" ]) / "package"
226
+
212
227
def _load_deps (self , for_env : EnvConfigSet ) -> list [Requirement ]:
213
228
# first check if this is statically available via PEP-621
214
229
deps = self ._load_deps_from_static (for_env )
0 commit comments