1818import  shutil 
1919import  tempfile 
2020import  urllib .request 
21+ from  collections .abc  import  Iterable , Iterator , Sequence 
2122from  itertools  import  chain 
2223from  os .path  import  dirname , isfile 
2324from  pathlib  import  Path 
24- from  typing  import  Any , Dict ,  Iterable ,  Iterator ,  List ,  Optional ,  Sequence ,  Tuple 
25+ from  typing  import  Any , Optional 
2526
2627from  packaging .requirements  import  Requirement 
2728from  packaging .version  import  Version 
@@ -127,7 +128,7 @@ def _parse_requirements(lines: Iterable[str]) -> Iterator[_RequirementWithCommen
127128        pip_argument  =  None 
128129
129130
130- def  load_requirements (path_dir : str , file_name : str  =  "base.txt" , unfreeze : str  =  "all" ) ->  List [str ]:
131+ def  load_requirements (path_dir : str , file_name : str  =  "base.txt" , unfreeze : str  =  "all" ) ->  list [str ]:
131132    """Loading requirements from a file. 
132133
133134    >>> path_req = os.path.join(_PROJECT_ROOT, "requirements") 
@@ -222,7 +223,7 @@ def _load_aggregate_requirements(req_dir: str = "requirements", freeze_requireme
222223        fp .writelines ([ln  +  os .linesep  for  ln  in  requires ] +  [os .linesep ])
223224
224225
225- def  _retrieve_files (directory : str , * ext : str ) ->  List [str ]:
226+ def  _retrieve_files (directory : str , * ext : str ) ->  list [str ]:
226227    all_files  =  []
227228    for  root , _ , files  in  os .walk (directory ):
228229        for  fname  in  files :
@@ -232,7 +233,7 @@ def _retrieve_files(directory: str, *ext: str) -> List[str]:
232233    return  all_files 
233234
234235
235- def  _replace_imports (lines : List [str ], mapping : List [ Tuple [str , str ]], lightning_by : str  =  "" ) ->  List [str ]:
236+ def  _replace_imports (lines : list [str ], mapping : list [ tuple [str , str ]], lightning_by : str  =  "" ) ->  list [str ]:
236237    """Replace imports of standalone package to lightning. 
237238
238239    >>> lns = [ 
@@ -320,7 +321,7 @@ def copy_replace_imports(
320321            fo .writelines (lines )
321322
322323
323- def  create_mirror_package (source_dir : str , package_mapping : Dict [str , str ]) ->  None :
324+ def  create_mirror_package (source_dir : str , package_mapping : dict [str , str ]) ->  None :
324325    """Create a mirror package with adjusted imports.""" 
325326    # replace imports and copy the code 
326327    mapping  =  package_mapping .copy ()
@@ -480,6 +481,25 @@ def convert_version2nightly(ver_file: str = "src/version.info") -> None:
480481        with  open (ver_file , "w" ) as  fo :
481482            fo .write (version  +  os .linesep )
482483
484+     @staticmethod  
485+     def  generate_docker_tags (
486+         release_version : str ,
487+         python_version : str ,
488+         torch_version : str ,
489+         cuda_version : str ,
490+         docker_project : str  =  "pytorchlightning/pytorch_lightning" ,
491+         add_latest : bool  =  False ,
492+     ) ->  None :
493+         """Generate docker tags for the given versions.""" 
494+         tags  =  [f"latest-py{ python_version }  -torch{ torch_version }  -cuda{ cuda_version }  " ]
495+         if  release_version :
496+             tags  +=  [f"{ release_version }  -py{ python_version }  -torch{ torch_version }  -cuda{ cuda_version }  " ]
497+         if  add_latest :
498+             tags  +=  ["latest" ]
499+ 
500+         tags  =  [f"{ docker_project }  :{ tag }  "  for  tag  in  tags ]
501+         print ("," .join (tags ))
502+ 
483503
484504if  __name__  ==  "__main__" :
485505    import  jsonargparse 
0 commit comments