gradio-app / gradio

Build and share delightful machine learning apps, all in Python. 🌟 Star to support our work!
http://www.gradio.app
Apache License 2.0
30.83k stars 2.29k forks source link

Error when loading min-dalle interface #1964

Closed nagolinc closed 1 year ago

nagolinc commented 1 year ago

Describe the bug

When importing https://huggingface.co/spaces/kuprel/min-dalle, gradio fails

dalle = gr.Interface.load("spaces/kuprel/min-dalle")

Fetching interface from: https://huggingface.co/spaces/kuprel/min-dalle

---------------------------------------------------------------------------

InvalidSchema                             Traceback (most recent call last)

[/usr/local/lib/python3.7/dist-packages/gradio/processing_utils.py](https://localhost:8080/#) in encode_url_or_file_to_base64(path)
     30     try:
---> 31         requests.get(path)
     32         return encode_url_to_base64(path)

19 frames

InvalidSchema: No connection adapters were found for 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMAAwADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCXzy6q0sZilJZdq8ADGF981y8MSx63ctjAZgJCO5UAf0rortzC0Szm2jfAXzI5GPYFd3r9a54gDUpWMsZRvmDBuGyByP1rz27zszlw7Tqa9i8GeXT4IljZ5I55NoTJOeDggc9Pao4Ee51e+lFumxLYmXPQKvUj3LAD8ajit47+R7VnaMkiWOQrkKQBkY64PPSoZJktm1Tyyhml2wxANkbT8zfgAnTFaJ+/fyNJr7JniVLfT3Vmzt3Elj1/z1ro40jtbKOJXCPCkbdQoBwMhj/nFcw1sJr2K3KgJJMAQfTPeupbP+kXEqbWz5ZUrkLgAn8wf0NZS1TuZ41/CkWxE63jCXdHIUdFKgDacHH04z+tUIWIcxpagSjJBK88mrl3LFGd6yYUONrd8Hg+/QmoNEWJUWZSHLpgksNwPXp9P5Vzckk9HozhtdakTjyJ5MLvkaTj5/UYGPxqGGJ7aCyS48lonO9UdjkSDGeR68kce1X5YgL2xLhQhbksRzzwf1FLG0KwRiaXaFRhtU5Egz0HGD+FbWV4p7HS7RgmupSlvVWJ4YYVRpGCAqQTnnOPwxUU3zXRt...

During handling of the above exception, another exception occurred:

OSError                                   Traceback (most recent call last)

[/usr/local/lib/python3.7/dist-packages/gradio/processing_utils.py](https://localhost:8080/#) in encode_file_to_base64(f, encryption_key)
     54 
     55 def encode_file_to_base64(f, encryption_key=None):
---> 56     with open(f, "rb") as file:
     57         encoded_string = base64.b64encode(file.read())
     58         if encryption_key:

OSError: [Errno 36] File name too long: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMAAwADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCXzy6q0sZilJZdq8ADGF981y8MSx63ctjAZgJCO5UAf0rortzC0Szm2jfAXzI5GPYFd3r9a54gDUpWMsZRvmDBuGyByP1rz27zszlw7Tqa9i8GeXT4IljZ5I55NoTJOeDggc9Pao4Ee51e+lFumxLYmXPQKvUj3LAD8ajit47+R7VnaMkiWOQrkKQBkY64PPSoZJktm1Tyyhml2wxANkbT8zfgAnTFaJ+/fyNJr7JniVLfT3Vmzt3Elj1/z1ro40jtbKOJXCPCkbdQoBwMhj/nFcw1sJr2K3KgJJMAQfTPeupbP+kXEqbWz5ZUrkLgAn8wf0NZS1TuZ41/CkWxE63jCXdHIUdFKgDacHH04z+tUIWIcxpagSjJBK88mrl3LFGd6yYUONrd8Hg+/QmoNEWJUWZSHLpgksNwPXp9P5Vzckk9HozhtdakTjyJ5MLvkaTj5/UYGPxqGGJ7aCyS48lonO9UdjkSDGeR68kce1X5YgL2xLhQhbksRzzwf1FLG0KwRiaXaFRhtU5Egz0HGD+FbWV4p7HS7RgmupSlvVWJ4YYVRpGCAqQTnnOPwxUU3zXRtXiETsVCysoBZc...

Is there an existing issue for this?

Reproduction

import gradio as gr
dalle = gr.Interface.load("spaces/kuprel/min-dalle")

Screenshot

No response

Logs

Fetching interface from: https://huggingface.co/spaces/kuprel/min-dalle

---------------------------------------------------------------------------

InvalidSchema                             Traceback (most recent call last)

/usr/local/lib/python3.7/dist-packages/gradio/processing_utils.py in encode_url_or_file_to_base64(path)
     30     try:
---> 31         requests.get(path)
     32         return encode_url_to_base64(path)

19 frames

/usr/local/lib/python3.7/dist-packages/requests/api.py in get(url, params, **kwargs)
     75     kwargs.setdefault('allow_redirects', True)
---> 76     return request('get', url, params=params, **kwargs)
     77 

/usr/local/lib/python3.7/dist-packages/requests/api.py in request(method, url, **kwargs)
     60     with sessions.Session() as session:
---> 61         return session.request(method=method, url=url, **kwargs)
     62 

/usr/local/lib/python3.7/dist-packages/requests/sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    529         send_kwargs.update(settings)
--> 530         resp = self.send(prep, **send_kwargs)
    531 

/usr/local/lib/python3.7/dist-packages/requests/sessions.py in send(self, request, **kwargs)
    636         # Get the appropriate adapter to use
--> 637         adapter = self.get_adapter(url=request.url)
    638 

/usr/local/lib/python3.7/dist-packages/requests/sessions.py in get_adapter(self, url)
    727         # Nothing matches :-/
--> 728         raise InvalidSchema("No connection adapters were found for {!r}".format(url))
    729 

InvalidSchema: No connection adapters were found for 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMAAwADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCXzy6q0sZilJZdq8ADGF981y8MSx63ctjAZgJCO5UAf0rortzC0Szm2jfAXzI5GPYFd3r9a54gDUpWMsZRvmDBuGyByP1rz27zszlw7Tqa9i8GeXT4IljZ5I55NoTJOeDggc9Pao4Ee51e+lFumxLYmXPQKvUj3LAD8ajit47+R7VnaMkiWOQrkKQBkY64PPSoZJktm1Tyyhml2wxANkbT8zfgAnTFaJ+/fyNJr7JniVLfT3Vmzt3Elj1/z1ro40jtbKOJXCPCkbdQoBwMhj/nFcw1sJr2K3KgJJMAQfTPeupbP+kXEqbWz5ZUrkLgAn8wf0NZS1TuZ41/CkWxE63jCXdHIUdFKgDacHH04z+tUIWIcxpagSjJBK88mrl3LFGd6yYUONrd8Hg+/QmoNEWJUWZSHLpgksNwPXp9P5Vzckk9HozhtdakTjyJ5MLvkaTj5/UYGPxqGGJ7aCyS48lonO9UdjkSDGeR68kce1X5YgL2xLhQhbksRzzwf1FLG0KwRiaXaFRhtU5Egz0HGD+FbWV4p7HS7RgmupSlvVWJ4YYVRpGCAqQTnnOPwxUU3zXRt...

During handling of the above exception, another exception occurred:

OSError                                   Traceback (most recent call last)

<ipython-input-11-341204f57e82> in <module>()
----> 1 dalle = gr.Interface.load("spaces/kuprel/min-dalle")

/usr/local/lib/python3.7/dist-packages/gradio/interface.py in load(cls, name, src, api_key, alias, **kwargs)
    107             demo.launch()
    108         """
--> 109         return super().load(name=name, src=src, api_key=api_key, alias=alias, **kwargs)
    110 
    111     @classmethod

/usr/local/lib/python3.7/dist-packages/gradio/blocks.py in load(self_or_cls, fn, inputs, outputs, name, src, api_key, alias, **kwargs)
    743             if outputs is not None:
    744                 kwargs["outputs"] = outputs
--> 745             return external.load_blocks_from_repo(name, src, api_key, alias, **kwargs)
    746         else:
    747             self_or_cls.set_event_trigger(

/usr/local/lib/python3.7/dist-packages/gradio/external.py in load_blocks_from_repo(name, src, api_key, alias, **kwargs)
     38         factory_methods.keys()
     39     )
---> 40     blocks: gradio.Blocks = factory_methods[src](name, api_key, alias, **kwargs)
     41     return blocks
     42 

/usr/local/lib/python3.7/dist-packages/gradio/external.py in get_spaces(model_name, api_key, alias, **kwargs)
    313         return get_spaces_interface(model_name, config, alias, **kwargs)
    314     else:  # Create a Blocks for Gradio 3.x Spaces
--> 315         return get_spaces_blocks(model_name, config)
    316 
    317 

/usr/local/lib/python3.7/dist-packages/gradio/external.py in get_spaces_blocks(model_name, config)
    358         else:
    359             fns.append(None)
--> 360     return gradio.Blocks.from_config(config, fns)
    361 
    362 

/usr/local/lib/python3.7/dist-packages/gradio/blocks.py in from_config(cls, config, fns)
    402 
    403         with Blocks(theme=config["theme"], css=config["theme"]) as blocks:
--> 404             iterate_over_children(config["layout"]["children"])
    405 
    406             # add the event triggers

/usr/local/lib/python3.7/dist-packages/gradio/blocks.py in iterate_over_children(children_list)
    399                 if children is not None:
    400                     with block:
--> 401                         iterate_over_children(children)
    402 
    403         with Blocks(theme=config["theme"], css=config["theme"]) as blocks:

/usr/local/lib/python3.7/dist-packages/gradio/blocks.py in iterate_over_children(children_list)
    399                 if children is not None:
    400                     with block:
--> 401                         iterate_over_children(children)
    402 
    403         with Blocks(theme=config["theme"], css=config["theme"]) as blocks:

/usr/local/lib/python3.7/dist-packages/gradio/blocks.py in iterate_over_children(children_list)
    393             for child_config in children_list:
    394                 id = child_config["id"]
--> 395                 block = get_block_instance(id)
    396                 original_mapping[id] = block
    397 

/usr/local/lib/python3.7/dist-packages/gradio/blocks.py in get_block_instance(id)
    385             block_config["props"].pop("name", None)
    386             style = block_config["props"].pop("style", None)
--> 387             block = cls(**block_config["props"])
    388             if style:
    389                 block.style(**style)

/usr/local/lib/python3.7/dist-packages/gradio/components.py in __init__(self, value, shape, image_mode, invert_colors, source, tool, type, label, show_label, interactive, visible, streaming, elem_id, mirror_webcam, **kwargs)
   1395         self.mirror_webcam = mirror_webcam
   1396         self.type = type
-> 1397         self.value = self.postprocess(value)
   1398         self.shape = shape
   1399         self.image_mode = image_mode

/usr/local/lib/python3.7/dist-packages/gradio/components.py in postprocess(self, y)
   1675             out_y = processing_utils.encode_array_to_base64(y)
   1676         elif dtype == "file":
-> 1677             out_y = processing_utils.encode_url_or_file_to_base64(y)
   1678         return out_y
   1679 

/usr/local/lib/python3.7/dist-packages/gradio/processing_utils.py in encode_url_or_file_to_base64(path)
     32         return encode_url_to_base64(path)
     33     except (requests.exceptions.MissingSchema, requests.exceptions.InvalidSchema):
---> 34         return encode_file_to_base64(path)
     35 
     36 

/usr/local/lib/python3.7/dist-packages/gradio/processing_utils.py in encode_file_to_base64(f, encryption_key)
     54 
     55 def encode_file_to_base64(f, encryption_key=None):
---> 56     with open(f, "rb") as file:
     57         encoded_string = base64.b64encode(file.read())
     58         if encryption_key:

OSError: [Errno 36] File name too long: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMAAwADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCXzy6q0sZilJZdq8ADGF981y8MSx63ctjAZgJCO5UAf0rortzC0Szm2jfAXzI5GPYFd3r9a54gDUpWMsZRvmDBuGyByP1rz27zszlw7Tqa9i8GeXT4IljZ5I55NoTJOeDggc9Pao4Ee51e+lFumxLYmXPQKvUj3LAD8ajit47+R7VnaMkiWOQrkKQBkY64PPSoZJktm1Tyyhml2wxANkbT8zfgAnTFaJ+/fyNJr7JniVLfT3Vmzt3Elj1/z1ro40jtbKOJXCPCkbdQoBwMhj/nFcw1sJr2K3KgJJMAQfTPeupbP+kXEqbWz5ZUrkLgAn8wf0NZS1TuZ41/CkWxE63jCXdHIUdFKgDacHH04z+tUIWIcxpagSjJBK88mrl3LFGd6yYUONrd8Hg+/QmoNEWJUWZSHLpgksNwPXp9P5Vzckk9HozhtdakTjyJ5MLvkaTj5/UYGPxqGGJ7aCyS48lonO9UdjkSDGeR68kce1X5YgL2xLhQhbksRzzwf1FLG0KwRiaXaFRhtU5Egz0HGD+FbWV4p7HS7RgmupSlvVWJ4YYVRpGCAqQTnnOPwxUU3zXRtXiETsVCysoBZc...

System Info

occurs in my gradio space https://huggingface.co/spaces/nagolinc/minDalle_GFPGAN or in google colab

Severity

blocking all usage of gradio

freddyaboulton commented 1 year ago

Hi @nagolinc ! Thanks for filing.

The problem seems to be that the min-dalle space is providing a default value for the output image. This sets the value in the config to be a base64 representation of the image and this fails when you try to load the config as it will assume the base64 representation is actually a filename.

We will look into a fix.