Spaces:
Running
Running
''' | |
Copied from: https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/14184 | |
''' | |
import inspect | |
import warnings | |
from functools import wraps | |
import gradio as gr | |
class GradioDeprecationWarning(DeprecationWarning): | |
pass | |
def repair(grclass): | |
if not getattr(grclass, 'EVENTS', None): | |
return | |
def __repaired_init__(self, *args, tooltip=None, source=None, original=grclass.__init__, **kwargs): | |
if source: | |
kwargs["sources"] = [source] | |
allowed_kwargs = inspect.signature(original).parameters | |
fixed_kwargs = {} | |
for k, v in kwargs.items(): | |
if k in allowed_kwargs: | |
fixed_kwargs[k] = v | |
else: | |
warnings.warn(f"unexpected argument for {grclass.__name__}: {k}", GradioDeprecationWarning, stacklevel=2) | |
original(self, *args, **fixed_kwargs) | |
self.webui_tooltip = tooltip | |
for event in self.EVENTS: | |
replaced_event = getattr(self, str(event)) | |
def fun(*xargs, _js=None, replaced_event=replaced_event, **xkwargs): | |
if _js: | |
xkwargs['js'] = _js | |
return replaced_event(*xargs, **xkwargs) | |
setattr(self, str(event), fun) | |
grclass.__init__ = __repaired_init__ | |
grclass.update = gr.update | |
for component in set(gr.components.__all__ + gr.layouts.__all__): | |
repair(getattr(gr, component, None)) | |
class Dependency(gr.events.Dependency): | |
def __init__(self, *args, **kwargs): | |
super().__init__(*args, **kwargs) | |
def then(*xargs, _js=None, **xkwargs): | |
if _js: | |
xkwargs['js'] = _js | |
return original_then(*xargs, **xkwargs) | |
original_then = self.then | |
self.then = then | |
gr.events.Dependency = Dependency | |
gr.Box = gr.Group | |