Commit 08c68820 authored by w-e-w's avatar w-e-w
Browse files

gradio 3.41.2 attempt

parent f0f100e6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -93,8 +93,8 @@ class PydanticModelGenerator:
            d.field: (d.field_type, Field(default=d.field_value, alias=d.field_alias, exclude=d.field_exclude)) for d in self._model_def
        }
        DynamicModel = create_model(self._model_name, **fields)
        DynamicModel.__config__.allow_population_by_field_name = True
        DynamicModel.__config__.allow_mutation = True
        DynamicModel.model_config['populate_by_name'] = True
        DynamicModel.model_config['frozen'] = True
        return DynamicModel

StableDiffusionTxt2ImgProcessingAPI = PydanticModelGenerator(
+70 −1
Original line number Diff line number Diff line
from inspect import signature
from functools import wraps
import gradio as gr

from modules import scripts, ui_tempdir, patches
@@ -64,10 +66,77 @@ def Blocks_get_config_file(self, *args, **kwargs):
    return config


original_IOComponent_init = patches.patch(__name__, obj=gr.components.IOComponent, field="__init__", replacement=IOComponent_init)
def gradio_component_compatibility_layer(component_function):
    @wraps(component_function)
    def patched_function(*args, **kwargs):
        original_signature = signature(component_function).parameters
        valid_kwargs = {k: v for k, v in kwargs.items() if k in original_signature}
        result = component_function(*args, **valid_kwargs)
        return result

    return patched_function


sub_events = ['then', 'success']


def gradio_component_events_compatibility_layer(component_function):
    @wraps(component_function)
    def patched_function(*args, **kwargs):
        kwargs['js'] = kwargs.get('js', kwargs.pop('_js', None))
        original_signature = signature(component_function).parameters
        valid_kwargs = {k: v for k, v in kwargs.items() if k in original_signature}

        result = component_function(*args, **valid_kwargs)

        for sub_event in sub_events:
            component_event_then_function = getattr(result, sub_event, None)
            if component_event_then_function:
                patched_component_event_then_function = gradio_component_sub_events_compatibility_layer(component_event_then_function)
                setattr(result, sub_event, patched_component_event_then_function)
        # original_component_event_then_function = patches.patch(f'{__name__}.', obj=result, field='then', replacement=patched_component_event_then_function)

        return result

    return patched_function


def gradio_component_sub_events_compatibility_layer(component_function):
    @wraps(component_function)
    def patched_function(*args, **kwargs):
        kwargs['js'] = kwargs.get('js', kwargs.pop('_js', None))
        original_signature = signature(component_function).parameters
        valid_kwargs = {k: v for k, v in kwargs.items() if k in original_signature}
        result = component_function(*args, **valid_kwargs)
        return result

    return patched_function


for component_name in set(gr.components.__all__ + gr.layouts.__all__):
    try:
        component = getattr(gr, component_name)
        component_init = getattr(component, '__init__')
        patched_component_init = gradio_component_compatibility_layer(component_init)
        original_IOComponent_init = patches.patch(f'{__name__}.{component_name}', obj=component, field="__init__", replacement=patched_component_init)

        component_events = set(getattr(component, 'EVENTS'))
        for component_event in component_events:
            component_event_function = getattr(component, component_event)
            patched_component_event_function = gradio_component_events_compatibility_layer(component_event_function)
            original_component_event_function = patches.patch(f'{__name__}.{component_name}.{component_event}', obj=component, field=component_event, replacement=patched_component_event_function)
    except Exception as e:
        print(e)
        pass

gr.Box = gr.Group


original_IOComponent_init = patches.patch(__name__, obj=gr.components.base.Component, field="__init__", replacement=IOComponent_init)
original_Block_get_config = patches.patch(__name__, obj=gr.blocks.Block, field="get_config", replacement=Block_get_config)
original_BlockContext_init = patches.patch(__name__, obj=gr.blocks.BlockContext, field="__init__", replacement=BlockContext_init)
original_Blocks_get_config_file = patches.patch(__name__, obj=gr.blocks.Blocks, field="get_config_file", replacement=Blocks_get_config_file)


ui_tempdir.install_ui_tempdir_override()
+2 −2
Original line number Diff line number Diff line
@@ -32,8 +32,8 @@ from modules.generation_parameters_copypaste import image_from_url_text

create_setting_component = ui_settings.create_setting_component

warnings.filterwarnings("default" if opts.show_warnings else "ignore", category=UserWarning)
warnings.filterwarnings("default" if opts.show_gradio_deprecation_warnings else "ignore", category=gr.deprecation.GradioDeprecationWarning)
# warnings.filterwarnings("default" if opts.show_warnings else "ignore", category=UserWarning)
# warnings.filterwarnings("default" if opts.show_gradio_deprecation_warnings else "ignore", category=gr.deprecation.GradioDeprecationWarning)

# this is a fix for Windows users. Without it, javascript files will be served with text/html content-type and the browser will not show any UI
mimetypes.init()
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ def save_pil_to_file(self, pil_image, dir=None, format="png"):

def install_ui_tempdir_override():
    """override save to file function so that it also writes PNG info"""
    gradio.components.IOComponent.pil_to_temp_file = save_pil_to_file
    # gradio.components.IOComponent.pil_to_temp_file = save_pil_to_file


def on_tmpdir_changed():
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ clean-fid
einops
fastapi>=0.90.1
gfpgan
gradio==3.41.2
gradio==4.7.1
inflection
jsonmerge
kornia
Loading