1212from packaging .specifiers import SpecifierSet
1313from packaging .version import Version
1414from pathlib import Path
15- from typing import Optional , Union
15+ from typing import Optional , Tuple , Union
1616
1717sys .path .append (os .path .abspath (os .path .join (os .path .dirname (__file__ ), ".." )))
1818
@@ -393,6 +393,50 @@ def write_tox_file(packages: dict) -> None:
393393 file .write ("\n " )
394394
395395
396+ def _get_package_name (integration : str ) -> Tuple [str , Optional [str ]]:
397+ package = TEST_SUITE_CONFIG [integration ]["package" ]
398+ extra = None
399+ if "[" in package :
400+ extra = package [package .find ("[" ) + 1 : package .find ("]" )]
401+ package = package [: package .find ("[" )]
402+
403+ return package , extra
404+
405+
406+ def _compare_min_version_with_defined (
407+ integration : str , releases : list [Version ]
408+ ) -> None :
409+ defined_min_version = _MIN_VERSIONS .get (integration )
410+ if defined_min_version :
411+ defined_min_version = Version ("." .join ([str (v ) for v in defined_min_version ]))
412+ if (
413+ defined_min_version .major != releases [0 ].major
414+ or defined_min_version .minor != releases [0 ].minor
415+ ):
416+ print (
417+ f" Integration defines { defined_min_version } as minimum "
418+ f"version, but the effective minimum version is { releases [0 ]} ."
419+ )
420+
421+
422+ def _add_python_versions_to_release (integration : str , package : str , release : Version ):
423+ release_pypi_data = fetch_release (package , release )
424+ time .sleep (0.1 ) # give PYPI some breathing room
425+
426+ target_python_versions = TEST_SUITE_CONFIG [integration ].get ("python" )
427+ if target_python_versions :
428+ target_python_versions = SpecifierSet (target_python_versions )
429+
430+ release .python_versions = pick_python_versions_to_test (
431+ supported_python_versions (
432+ determine_python_versions (release_pypi_data ),
433+ target_python_versions ,
434+ )
435+ )
436+
437+ release .rendered_python_versions = _render_python_versions (release .python_versions )
438+
439+
396440def main () -> None :
397441 print ("Finding out the lowest and highest Python version supported by the SDK..." )
398442 global MIN_PYTHON_VERSION , MAX_PYTHON_VERSION
@@ -413,11 +457,7 @@ def main() -> None:
413457 print (f"Processing { integration } ..." )
414458
415459 # Figure out the actual main package
416- package = TEST_SUITE_CONFIG [integration ]["package" ]
417- extra = None
418- if "[" in package :
419- extra = package [package .find ("[" ) + 1 : package .find ("]" )]
420- package = package [: package .find ("[" )]
460+ package , extra = _get_package_name (integration )
421461
422462 # Fetch data for the main package
423463 pypi_data = fetch_package (package )
@@ -428,42 +468,19 @@ def main() -> None:
428468 print (" Found no supported releases." )
429469 continue
430470
431- defined_min_version = _MIN_VERSIONS .get (integration )
432- if defined_min_version :
433- defined_min_version = Version (
434- "." .join ([str (v ) for v in defined_min_version ])
435- )
436- if (
437- defined_min_version .major != releases [0 ].major
438- or defined_min_version .minor != releases [0 ].minor
439- ):
440- print (
441- f" Integration defines { defined_min_version } as minimum version, but the effective minimum version is { releases [0 ]} ."
442- )
471+ _compare_min_version_with_defined (integration , releases )
443472
444473 # Pick a handful of the supported releases to actually test against
445474 # and fetch the PYPI data for each to determine which Python versions
446475 # to test it on
447476 test_releases = pick_releases_to_test (releases )
448477
449478 for release in test_releases :
450- target_python_versions = TEST_SUITE_CONFIG [integration ].get ("python" )
451- if target_python_versions :
452- target_python_versions = SpecifierSet (target_python_versions )
453- release_pypi_data = fetch_release (package , release )
454- release .python_versions = pick_python_versions_to_test (
455- supported_python_versions (
456- determine_python_versions (release_pypi_data ),
457- target_python_versions ,
458- )
479+ py_versions = _add_python_versions_to_release (
480+ integration , package , release
459481 )
460- if not release . python_versions :
482+ if not py_versions :
461483 print (f" Release { release } has no Python versions, skipping." )
462- release .rendered_python_versions = _render_python_versions (
463- release .python_versions
464- )
465-
466- time .sleep (0.1 ) # give PYPI some breathing room
467484
468485 test_releases = [
469486 release for release in test_releases if release .python_versions
0 commit comments