3434from http .client import IncompleteRead
3535from io import StringIO
3636from pathlib import Path
37- from typing import Optional , Dict , Union , List , Iterable
37+ from typing import Optional , Dict , Union , List , Iterable , Tuple , overload
38+ from typing_extensions import Literal , TypedDict
3839from urllib .parse import urlsplit , urlunsplit , urlparse , quote_plus , urlencode , unquote
3940from urllib .error import HTTPError
4041from urllib .request import pathname2url
@@ -3760,7 +3761,7 @@ def show_package_trigger_reason(apiurl: str, prj: str, pac: str, repo: str, arch
37603761 raise
37613762
37623763
3763- def show_package_meta (apiurl : str , prj : str , pac : str , meta = False , blame = None ):
3764+ def show_package_meta (apiurl : str , prj : str , pac : str , meta : bool = False , blame = None ) -> List [ bytes ] :
37643765 query : Dict [str , Union [str , int ]] = {}
37653766 if meta :
37663767 query ['meta' ] = 1
@@ -3822,7 +3823,7 @@ def show_scmsync(apiurl, prj, pac=None):
38223823 return node .text
38233824
38243825
3825- def show_devel_project (apiurl , prj , pac ) :
3826+ def show_devel_project (apiurl : str , prj : str , pac : str ) -> Tuple [ Optional [ str ], Optional [ str ]] :
38263827 m = show_package_meta (apiurl , prj , pac )
38273828 node = ET .fromstring (b'' .join (m )).find ('devel' )
38283829 if node is None :
@@ -3928,7 +3929,7 @@ def is_force_supported(self):
39283929 def __call__ (self , ** kwargs ):
39293930 return self ._delegate (** kwargs )
39303931
3931- def __init__ (self , url , input , change_is_required = False , file_ext = '.xml' , method = None ):
3932+ def __init__ (self , url , input : Union [ List [ str ], str , bytes , List [ bytes ]] , change_is_required = False , file_ext = '.xml' , method = None ):
39323933 if isinstance (url , self ._URLFactory ):
39333934 self ._url_factory = url
39343935 else :
@@ -4015,8 +4016,17 @@ def discard(self):
40154016 os .unlink (self .filename )
40164017
40174018
4019+ MetaType = Literal ['prj' , 'pkg' , 'attribute' , 'prjconf' , 'user' , 'group' , 'pattern' ]
4020+
4021+ class _MetaType (TypedDict ):
4022+ path : str
4023+ template : str
4024+ file_ext : str
4025+
4026+
40184027# different types of metadata
4019- metatypes = {'prj' : {'path' : 'source/%s/_meta' ,
4028+ metatypes : Dict [MetaType , _MetaType ] = {
4029+ 'prj' : {'path' : 'source/%s/_meta' ,
40204030 'template' : new_project_templ ,
40214031 'file_ext' : '.xml'
40224032 },
@@ -4047,7 +4057,7 @@ def discard(self):
40474057 }
40484058
40494059
4050- def meta_exists (metatype : str , path_args = None , template_args = None , create_new = True , apiurl = None ):
4060+ def meta_exists (metatype : MetaType , path_args = None , template_args = None , create_new = True , apiurl = None ):
40514061
40524062 global metatypes
40534063
@@ -4068,7 +4078,7 @@ def meta_exists(metatype: str, path_args=None, template_args=None, create_new=Tr
40684078
40694079
40704080def make_meta_url (
4071- metatype : str ,
4081+ metatype : MetaType ,
40724082 path_args = None ,
40734083 apiurl : Optional [str ] = None ,
40744084 force = False ,
@@ -4111,7 +4121,7 @@ def parse_meta_to_string(data: Union[bytes, list, Iterable]) -> str:
41114121
41124122
41134123def edit_meta (
4114- metatype ,
4124+ metatype : MetaType ,
41154125 path_args = None ,
41164126 data : Optional [List [str ]] = None ,
41174127 template_args = None ,
@@ -6050,6 +6060,7 @@ def attribute_branch_pkg(
60506060 return r
60516061
60526062
6063+ @overload
60536064def branch_pkg (
60546065 apiurl : str ,
60556066 src_project : str ,
@@ -6071,7 +6082,54 @@ def branch_pkg(
60716082 maintenance = False ,
60726083 newinstance = False ,
60736084 disable_build = False ,
6074- ):
6085+ ) -> Tuple [False , Optional [str ], Optional [str ], Optional [str ], Optional [str ]]: ...
6086+
6087+ @overload
6088+ def branch_pkg (
6089+ apiurl : str ,
6090+ src_project : str ,
6091+ src_package : str ,
6092+ nodevelproject = False ,
6093+ rev = None ,
6094+ linkrev = None ,
6095+ target_project : Optional [str ] = None ,
6096+ target_package = None ,
6097+ return_existing = True ,
6098+ msg = "" ,
6099+ force = False ,
6100+ noaccess = False ,
6101+ add_repositories = False ,
6102+ add_repositories_block = None ,
6103+ add_repositories_rebuild = None ,
6104+ extend_package_names = False ,
6105+ missingok = False ,
6106+ maintenance = False ,
6107+ newinstance = False ,
6108+ disable_build = False ,
6109+ ) -> Union [Tuple [True , str , str , None , None ], Tuple [False , Optional [str ], Optional [str ], Optional [str ], Optional [str ]]]: ...
6110+
6111+ def branch_pkg (
6112+ apiurl : str ,
6113+ src_project : str ,
6114+ src_package : str ,
6115+ nodevelproject = False ,
6116+ rev = None ,
6117+ linkrev = None ,
6118+ target_project : Optional [str ] = None ,
6119+ target_package = None ,
6120+ return_existing = False ,
6121+ msg = "" ,
6122+ force = False ,
6123+ noaccess = False ,
6124+ add_repositories = False ,
6125+ add_repositories_block = None ,
6126+ add_repositories_rebuild = None ,
6127+ extend_package_names = False ,
6128+ missingok = False ,
6129+ maintenance = False ,
6130+ newinstance = False ,
6131+ disable_build = False ,
6132+ ) -> Union [Tuple [True , str , str , None , None ], Tuple [False , Optional [str ], Optional [str ], Optional [str ], Optional [str ]]]:
60756133 """
60766134 Branch a package (via API call)
60776135 """
0 commit comments