@@ -219,6 +219,12 @@ class bdist_wheel(Command):
219
219
None ,
220
220
"Python tag (cp32|cp33|cpNN) for abi3 wheel tag" " (default: false)" ,
221
221
),
222
+ (
223
+ "dist-info-dir=" ,
224
+ None ,
225
+ "directory where a pre-generated dist-info can be found (e.g. as a "
226
+ "result of calling the PEP517 'prepare_metadata_for_build_wheel' "
227
+ "method)" ),
222
228
]
223
229
224
230
boolean_options = ["keep-temp" , "skip-build" , "relative" , "universal" ]
@@ -231,6 +237,7 @@ def initialize_options(self):
231
237
self .format = "zip"
232
238
self .keep_temp = False
233
239
self .dist_dir = None
240
+ self .dist_info_dir = None
234
241
self .egginfo_dir = None
235
242
self .root_is_pure = None
236
243
self .skip_build = None
@@ -249,8 +256,9 @@ def finalize_options(self):
249
256
bdist_base = self .get_finalized_command ("bdist" ).bdist_base
250
257
self .bdist_dir = os .path .join (bdist_base , "wheel" )
251
258
252
- egg_info = self .distribution .get_command_obj ("egg_info" )
253
- egg_info .ensure_finalized () # needed for correct `wheel_dist_name`
259
+ if self .dist_info_dir is None :
260
+ egg_info = self .distribution .get_command_obj ("egg_info" )
261
+ egg_info .ensure_finalized () # needed for correct `wheel_dist_name`
254
262
255
263
self .data_dir = self .wheel_dist_name + ".data"
256
264
self .plat_name_supplied = self .plat_name is not None
@@ -412,12 +420,21 @@ def run(self):
412
420
)
413
421
414
422
self .set_undefined_options ("install_egg_info" , ("target" , "egginfo_dir" ))
423
+
415
424
distinfo_dirname = (
416
425
f"{ safer_name (self .distribution .get_name ())} -"
417
426
f"{ safer_version (self .distribution .get_version ())} .dist-info"
418
427
)
419
428
distinfo_dir = os .path .join (self .bdist_dir , distinfo_dirname )
420
- self .egg2dist (self .egginfo_dir , distinfo_dir )
429
+ if self .dist_info_dir :
430
+ # Use the given dist-info directly.
431
+ shutil .copytree (self .dist_info_dir , distinfo_dir )
432
+ # Egg info is still generated, so remove it now to avoid it getting
433
+ # copied into the wheel.
434
+ shutil .rmtree (self .egginfo_dir )
435
+ else :
436
+ # Convert the generated egg-info into dist-info.
437
+ self .egg2dist (self .egginfo_dir , distinfo_dir )
421
438
422
439
self .write_wheelfile (distinfo_dir )
423
440
0 commit comments