Skip to content

Commit bcd21ea

Browse files
authored
feat: update to respect Gradio <= 5.49.0 (#109)
1 parent 51affa7 commit bcd21ea

4 files changed

Lines changed: 53 additions & 24 deletions

File tree

.changeset/social-bags-sing.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'modelscope_studio': patch
3+
---
4+
5+
feat: add `preserved_by_key` parameter and override `api_info` method

backend/modelscope_studio/utils/dev/component.py

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import inspect
12
from timeit import Timer
23
from typing import Any, Callable, List, Set, Union
34

5+
import gradio
46
from gradio.component_meta import ComponentMeta
57
from gradio.components.base import BlockContext, Component
8+
from packaging import version
69

710
from .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

5356
class 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)

docs/components/antdx/x_provider/README-zh_CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# XProvider
22

3-
Provide a uniform configuration support for x components.. See [Ant Design X](https://x.ant.design/components/x-provider/) for more information.
3+
Provide a uniform configuration support for x components. See [Ant Design X](https://x.ant.design/components/x-provider/) for more information.
44

55
The `XProvider` extends the `ConfigProvider` from antd and provides global configuration for components in `@ant-design/x`.
66

docs/components/antdx/x_provider/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# XProvider
22

3-
Provide a uniform configuration support for x components.. See [Ant Design X](https://x.ant.design/components/x-provider/) for more information.
3+
Provide a uniform configuration support for x components. See [Ant Design X](https://x.ant.design/components/x-provider/) for more information.
44

55
The `XProvider` extends the `ConfigProvider` from antd and provides global configuration for components in `@ant-design/x`.
66

0 commit comments

Comments
 (0)