77 Visibility , VisibilityMap )
88from modelscope .hub .utils .aigc import AigcModel
99from modelscope .hub .utils .utils import resolve_endpoint
10- from modelscope .utils .constant import REPO_TYPE_MODEL , REPO_TYPE_SUPPORT
10+ from modelscope .utils .constant import (REPO_TYPE_MODEL , REPO_TYPE_STUDIO ,
11+ REPO_TYPE_SUPPORT , StudioHardware ,
12+ StudioSDKType )
1113from modelscope .utils .logger import get_logger
1214
1315logger = get_logger ()
@@ -107,6 +109,35 @@ def define_args(parsers: _SubParsersAction):
107109 'then defaults to https://www.modelscope.cn.' ,
108110 )
109111
112+ # Studio specific arguments (only meaningful when --repo_type studio)
113+ studio_group = parser .add_argument_group (
114+ 'Studio Repo Creation' ,
115+ 'Optional arguments used only when `--repo_type studio` is set.' )
116+ studio_group .add_argument (
117+ '--sdk-type' ,
118+ dest = 'sdk_type' ,
119+ choices = StudioSDKType .SUPPORTED ,
120+ default = None ,
121+ help = 'Studio SDK type (only for studio repo-type).' )
122+ studio_group .add_argument (
123+ '--sdk-version' ,
124+ dest = 'sdk_version' ,
125+ type = str ,
126+ default = None ,
127+ help = 'Studio SDK version (only for gradio).' )
128+ studio_group .add_argument (
129+ '--base-image' ,
130+ dest = 'base_image' ,
131+ type = str ,
132+ default = None ,
133+ help = 'Studio base image (only for gradio/streamlit).' )
134+ studio_group .add_argument (
135+ '--hardware' ,
136+ dest = 'hardware' ,
137+ choices = StudioHardware .SUPPORTED ,
138+ default = None ,
139+ help = 'Studio hardware configuration.' )
140+
110141 # AIGC specific arguments
111142 aigc_group = parser .add_argument_group (
112143 'AIGC Model Creation' ,
@@ -179,6 +210,14 @@ def _create_regular_repo(self):
179210 endpoint = resolve_endpoint (self .args .endpoint )
180211 api = HubApi (endpoint = endpoint )
181212
213+ extra_kwargs = {}
214+ if self .args .repo_type == REPO_TYPE_STUDIO :
215+ # Pass studio-specific fields only when creating a studio repo.
216+ for field in ('sdk_type' , 'sdk_version' , 'base_image' , 'hardware' ):
217+ value = getattr (self .args , field , None )
218+ if value is not None :
219+ extra_kwargs [field ] = value
220+
182221 # Create repo
183222 api .create_repo (
184223 repo_id = self .args .repo_id ,
@@ -191,6 +230,7 @@ def _create_regular_repo(self):
191230 create_default_config = True ,
192231 endpoint = endpoint ,
193232 gated_mode = self .args .gated_mode ,
233+ ** extra_kwargs ,
194234 )
195235
196236 def _create_aigc_model (self ):
0 commit comments