@@ -24,6 +24,7 @@ def hub_builder(
24
24
module_name ,
25
25
config ,
26
26
whl_overrides ,
27
+ default_python_version ,
27
28
minor_mapping ,
28
29
available_interpreters ,
29
30
simpleapi_download_fn ,
@@ -69,8 +70,10 @@ def hub_builder(
69
70
_get_index_urls = {},
70
71
_use_downloader = {},
71
72
_simpleapi_cache = simpleapi_cache ,
73
+ _get_python_version = lambda * a , ** k : _get_python_version (self , * a , ** k ),
72
74
# instance constants
73
75
_config = config ,
76
+ _default_python_version = default_python_version ,
74
77
_whl_overrides = whl_overrides ,
75
78
_evaluate_markers_fn = evaluate_markers_fn ,
76
79
_logger = logger ,
@@ -102,7 +105,7 @@ def _build(self):
102
105
)
103
106
104
107
def _pip_parse (self , module_ctx , pip_attr ):
105
- python_version = pip_attr . python_version
108
+ python_version = self . _get_python_version ( pip_attr )
106
109
if python_version in self ._platforms :
107
110
fail ((
108
111
"Duplicate pip python version '{version}' for hub " +
@@ -230,7 +233,7 @@ def _set_get_index_urls(self, pip_attr):
230
233
# here
231
234
return
232
235
233
- python_version = pip_attr . python_version
236
+ python_version = self . _get_python_version ( pip_attr )
234
237
self ._use_downloader .setdefault (python_version , {}).update ({
235
238
normalize_name (s ): False
236
239
for s in pip_attr .simpleapi_skip
@@ -259,7 +262,7 @@ def _detect_interpreter(self, pip_attr):
259
262
python_interpreter_target = pip_attr .python_interpreter_target
260
263
if python_interpreter_target == None and not pip_attr .python_interpreter :
261
264
python_name = "python_{}_host" .format (
262
- pip_attr . python_version .replace ("." , "_" ),
265
+ self . _get_python_version ( pip_attr ) .replace ("." , "_" ),
263
266
)
264
267
if python_name not in self ._available_interpreters :
265
268
fail ((
@@ -269,7 +272,7 @@ def _detect_interpreter(self, pip_attr):
269
272
"Expected to find {python_name} among registered versions:\n {labels}"
270
273
).format (
271
274
hub_name = self .name ,
272
- version = pip_attr . python_version ,
275
+ version = self . _get_python_version ( pip_attr ) ,
273
276
python_name = python_name ,
274
277
labels = " \n " .join (self ._available_interpreters ),
275
278
))
@@ -332,7 +335,7 @@ def _evaluate_markers(self, pip_attr):
332
335
if self ._config .enable_pipstar :
333
336
return lambda _ , requirements : evaluate_markers_star (
334
337
requirements = requirements ,
335
- platforms = self ._platforms [pip_attr . python_version ],
338
+ platforms = self ._platforms [self . _get_python_version ( pip_attr ) ],
336
339
)
337
340
338
341
interpreter = _detect_interpreter (self , pip_attr )
@@ -355,7 +358,7 @@ def _evaluate_markers(self, pip_attr):
355
358
module_ctx ,
356
359
requirements = {
357
360
k : {
358
- p : self ._platforms [pip_attr . python_version ][p ].triple
361
+ p : self ._platforms [self . _get_python_version ( pip_attr ) ][p ].triple
359
362
for p in plats
360
363
}
361
364
for k , plats in requirements .items ()
@@ -379,7 +382,7 @@ def _create_whl_repos(
379
382
pip_attr: {type}`struct` - the struct that comes from the tag class iteration.
380
383
"""
381
384
logger = self ._logger
382
- platforms = self ._platforms [pip_attr . python_version ]
385
+ platforms = self ._platforms [self . _get_python_version ( pip_attr ) ]
383
386
requirements_by_platform = parse_requirements (
384
387
module_ctx ,
385
388
requirements_by_platform = requirements_files_by_platform (
@@ -391,14 +394,14 @@ def _create_whl_repos(
391
394
extra_pip_args = pip_attr .extra_pip_args ,
392
395
platforms = sorted (platforms ), # here we only need keys
393
396
python_version = full_version (
394
- version = pip_attr . python_version ,
397
+ version = self . _get_python_version ( pip_attr ) ,
395
398
minor_mapping = self ._minor_mapping ,
396
399
),
397
400
logger = logger ,
398
401
),
399
402
platforms = platforms ,
400
403
extra_pip_args = pip_attr .extra_pip_args ,
401
- get_index_urls = self ._get_index_urls .get (pip_attr . python_version ),
404
+ get_index_urls = self ._get_index_urls .get (self . _get_python_version ( pip_attr ) ),
402
405
evaluate_markers = _evaluate_markers (self , pip_attr ),
403
406
logger = logger ,
404
407
)
@@ -431,15 +434,15 @@ def _create_whl_repos(
431
434
whl_library_args = whl_library_args ,
432
435
download_only = pip_attr .download_only ,
433
436
netrc = self ._config .netrc or pip_attr .netrc ,
434
- use_downloader = _use_downloader (self , pip_attr . python_version , whl .name ),
437
+ use_downloader = _use_downloader (self , self . _get_python_version ( pip_attr ) , whl .name ),
435
438
auth_patterns = self ._config .auth_patterns or pip_attr .auth_patterns ,
436
- python_version = _major_minor_version (pip_attr . python_version ),
439
+ python_version = _major_minor_version (self . _get_python_version ( pip_attr ) ),
437
440
is_multiple_versions = whl .is_multiple_versions ,
438
441
enable_pipstar = self ._config .enable_pipstar ,
439
442
)
440
443
_add_whl_library (
441
444
self ,
442
- python_version = pip_attr . python_version ,
445
+ python_version = self . _get_python_version ( pip_attr ) ,
443
446
whl = whl ,
444
447
repo = repo ,
445
448
)
@@ -579,3 +582,10 @@ def _use_downloader(self, python_version, whl_name):
579
582
normalize_name (whl_name ),
580
583
self ._get_index_urls .get (python_version ) != None ,
581
584
)
585
+
586
+ def _get_python_version (self , pip_attr ):
587
+ python_version = pip_attr .python_version
588
+ if python_version :
589
+ return python_version
590
+ else :
591
+ return self ._default_python_version
0 commit comments