1+ import inspect
12from timeit import Timer
23from typing import Any , Callable , List , Set , Union
34
5+ import gradio
46from gradio .component_meta import ComponentMeta
57from gradio .components .base import BlockContext , Component
8+ from packaging import version
69
710from .app_context import AppContext
811
@@ -16,6 +19,10 @@ class ModelScopeLayoutComponent(BlockContext, metaclass=ComponentMeta):
1619 # supported slots
1720 SLOTS = []
1821
22+ @property
23+ def skip_api (self ):
24+ return True
25+
1926 def __exit__ (self , * args , ** kwargs ):
2027 self ._internal .update (layout = True )
2128 super ().__exit__ (* args , ** kwargs )
@@ -45,14 +52,24 @@ def __init__(
4552
4653 self .elem_style = elem_style
4754
48- @property
49- def skip_api (self ):
50- return True
51-
5255
5356class ModelScopeComponent (Component ):
5457 """
5558 """
59+ EVENTS = []
60+
61+ @property
62+ def skip_api (self ):
63+ return False
64+
65+ def api_info (self ):
66+ if version .Version (gradio .__version__ ) >= version .Version ("5.49.0" ):
67+ return super ().api_info ()
68+
69+ if hasattr (self , "_api_info" ):
70+ return self ._api_info
71+ self ._api_info = super ().api_info ()
72+ return self ._api_info
5673
5774 def __init__ (
5875 self ,
@@ -92,15 +109,21 @@ def __init__(
92109 self .elem_style = elem_style
93110
94111
95- class ModelScopeDataLayoutComponent (Component ,
112+ # MRO
113+ class ModelScopeDataLayoutComponent (ModelScopeComponent ,
96114 BlockContext ,
97115 metaclass = ComponentMeta ):
98116 """
99117 """
100118 EVENTS = []
119+
101120 # supported slots
102121 SLOTS = []
103122
123+ @property
124+ def skip_api (self ):
125+ return False
126+
104127 # fix gradio's bug
105128 @property
106129 def component_class_id (self ):
@@ -110,10 +133,6 @@ def component_class_id(self):
110133 def component_class_id (self , value ):
111134 pass
112135
113- @property
114- def skip_api (self ):
115- return False
116-
117136 def __exit__ (self , * args , ** kwargs ):
118137 self ._internal .update (layout = True )
119138 super ().__exit__ (* args , ** kwargs )
@@ -123,7 +142,6 @@ def __init__(
123142 value : Any = None ,
124143 * ,
125144 as_item : Union [str , None ] = None ,
126- _internal : None = None ,
127145 # gradio properties
128146 visible : bool = True ,
129147 elem_id : Union [str , None ] = None ,
@@ -141,23 +159,29 @@ def __init__(
141159 value = value ,
142160 elem_id = elem_id ,
143161 elem_classes = elem_classes ,
162+ elem_style = elem_style ,
144163 key = key ,
145164 every = every ,
146165 inputs = inputs ,
147166 load_fn = load_fn ,
167+ as_item = as_item ,
148168 # disable render twice
149169 render = False ,
150170 ** kwargs )
151- BlockContext .__init__ (self ,
152- visible = visible ,
153- elem_id = elem_id ,
154- elem_classes = elem_classes ,
155- render = render )
156- AppContext .assert_app ()
157-
158- if self .parent :
159- self ._internal = dict (index = len (self .parent .children ) - 1 )
171+ sig = inspect .signature (BlockContext .__init__ )
172+ has_preserved_by_key_parameter = "preserved_by_key" in sig .parameters
173+ if has_preserved_by_key_parameter :
174+ preserved_by_key = kwargs .get ("preserved_by_key" , "value" )
175+ BlockContext .__init__ (self ,
176+ visible = visible ,
177+ elem_id = elem_id ,
178+ elem_classes = elem_classes ,
179+ render = render ,
180+ key = key ,
181+ preserved_by_key = preserved_by_key )
160182 else :
161- self ._internal = dict ()
162- self .as_item = as_item
163- self .elem_style = elem_style
183+ BlockContext .__init__ (self ,
184+ visible = visible ,
185+ elem_id = elem_id ,
186+ elem_classes = elem_classes ,
187+ render = render )
0 commit comments