Fix cache examples for audio, video and image (#1459)

* image examples fix

* fix image test

* fix cache examples for audio and video

* fix tests

* fix audio test

* fix restore flagged file

* fix tests

* reformat

* tests fixes

* fix test

* reformat

* format

* fix test

* reformat

* fix image test

* renamed video demo

* removed redundant test that may have been causing rate limiting

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
This commit is contained in:
Dawood Khan 2022-06-07 18:10:19 -04:00 committed by GitHub
parent ddd7fa13dc
commit f374eec22d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 51 additions and 35 deletions

View File

@ -13,7 +13,10 @@ def reverse_audio(audio):
demo = gr.Interface(fn=reverse_audio,
inputs="microphone",
outputs="audio",
examples=os.path.join(os.path.dirname(__file__), "audio"))
examples=[
os.path.join(os.path.dirname(__file__), "audio/cantina.wav"),
os.path.join(os.path.dirname(__file__), "audio/recording1.wav")
], cache_examples=True)
if __name__ == "__main__":
demo.launch()

View File

@ -1,11 +0,0 @@
import gradio as gr
def video_flip(video):
return video
demo = gr.Interface(video_flip, gr.Video(), "playable_video")
if __name__ == "__main__":
demo.launch()

View File

@ -0,0 +1,18 @@
import gradio as gr
import os
def video_identity(video):
return video
demo = gr.Interface(video_identity,
gr.Video(),
"playable_video",
examples=[
os.path.join(os.path.dirname(__file__),
"video/video_sample.mp4")],
cache_examples=True)
if __name__ == "__main__":
demo.launch()

View File

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

View File

@ -147,14 +147,23 @@ class IOComponent(Component):
dir: str,
file: str,
encryption_key: bool,
as_data: bool = False,
) -> Dict[str, Any]:
"""
Loads flagged data from file and returns it
"""
data = processing_utils.encode_file_to_base64(
os.path.join(dir, file), encryption_key=encryption_key
)
return {"name": file, "data": data}
if as_data:
data = processing_utils.encode_file_to_base64(
os.path.join(dir, file), encryption_key=encryption_key
)
return {"name": file, "data": data}
else:
return {
"name": os.path.join(dir, file),
"data": os.path.join(dir, file),
"file_name": file,
"is_example": True,
}
# Input Functionalities
def preprocess(self, x: Any) -> Any:
@ -1547,7 +1556,9 @@ class Image(Editable, Clearable, Changeable, Streamable, IOComponent):
return self.save_flagged_file(dir, label, data, encryption_key)
def restore_flagged(self, dir, data, encryption_key):
return os.path.join(dir, data)
return processing_utils.encode_file_to_base64(
os.path.join(dir, data), encryption_key=encryption_key
)
def generate_sample(self):
return deepcopy(media_data.BASE64_IMAGE)
@ -1580,8 +1591,7 @@ class Image(Editable, Clearable, Changeable, Streamable, IOComponent):
return out_y
def deserialize(self, x):
y = processing_utils.decode_base64_to_file(x).name
return y
return processing_utils.decode_base64_to_file(x).name
def style(
self,
@ -1618,7 +1628,7 @@ class Video(Changeable, Clearable, Playable, IOComponent):
Preprocessing: passes the uploaded video as a {str} filepath whose extension can be set by `format`.
Postprocessing: expects a {str} filepath to a video which is displayed.
Demos: video_flip
Demos: video_identity
"""
def __init__(
@ -1727,6 +1737,9 @@ class Video(Changeable, Clearable, Playable, IOComponent):
dir, label, None if data is None else data["data"], encryption_key
)
def restore_flagged(self, dir, data, encryption_key):
return self.restore_flagged_file(dir, data, encryption_key)
def generate_sample(self):
return deepcopy(media_data.BASE64_VIDEO)
@ -2016,9 +2029,11 @@ class Audio(Changeable, Clearable, Playable, Streamable, IOComponent):
if is_example:
file_obj = processing_utils.create_tmp_copy_of_file(data["name"])
return self.save_file(file_obj, dir, label)
return self.save_flagged_file(dir, label, data_string, encryption_key)
def restore_flagged(self, dir, data, encryption_key):
return self.restore_flagged_file(dir, data, encryption_key)
def generate_sample(self):
return deepcopy(media_data.BASE64_AUDIO)
@ -3460,7 +3475,7 @@ class Model3D(Changeable, Editable, Clearable, IOComponent):
return processing_utils.decode_base64_to_file(x).name
def restore_flagged(self, dir, data, encryption_key):
return self.restore_flagged_file(dir, data, encryption_key)
return self.restore_flagged_file(dir, data, encryption_key, as_data=True)
def style(
self,

View File

@ -588,7 +588,7 @@ class TestImage(unittest.TestCase):
to_save = image_input.save_flagged(tmpdirname, "image_input", img, None)
self.assertEqual("image_input/1.png", to_save)
restored = image_input.restore_flagged(tmpdirname, to_save, None)
self.assertEqual(restored, os.path.join(tmpdirname, "image_input/1.png"))
self.assertEqual(restored, media_data.BASE64_IMAGE)
self.assertIsInstance(image_input.generate_sample(), str)
image_input = gr.Image(
@ -779,7 +779,7 @@ class TestAudio(unittest.TestCase):
to_save = audio_input.save_flagged(tmpdirname, "audio_input", x_wav, None)
self.assertEqual("audio_input/1.wav", to_save)
restored = audio_input.restore_flagged(tmpdirname, to_save, None)
self.assertEqual(restored, "audio_input/1.wav")
self.assertEqual(restored["file_name"], "audio_input/1.wav")
self.assertIsInstance(audio_input.generate_sample(), dict)
audio_input = gr.Audio(label="Upload Your Audio")
@ -920,7 +920,7 @@ class TestFile(unittest.TestCase):
to_save = file_input.save_flagged(tmpdirname, "file_input", [x_file], None)
self.assertEqual("file_input/1", to_save)
restored = file_input.restore_flagged(tmpdirname, to_save, None)
self.assertEqual(restored["name"], "file_input/1")
self.assertEqual(restored["file_name"], "file_input/1")
self.assertIsInstance(file_input.generate_sample(), dict)
file_input = gr.File(label="Upload Your File")
@ -1154,7 +1154,7 @@ class TestVideo(unittest.TestCase):
to_save = video_input.save_flagged(tmpdirname, "video_input", x_video, None)
self.assertEqual("video_input/1.mp4", to_save)
restored = video_input.restore_flagged(tmpdirname, to_save, None)
self.assertEqual(restored, "video_input/1.mp4")
self.assertEqual(restored["file_name"], "video_input/1.mp4")
self.assertIsInstance(video_input.generate_sample(), dict)
video_input = gr.Video(label="Upload Your Video")

View File

@ -199,15 +199,6 @@ class TestLoadInterface(unittest.TestCase):
filename = io("chest")
self.assertTrue(filename.endswith(".jpg") or filename.endswith(".jpeg"))
def test_image_to_image_space(self):
def assertIsFile(path):
if not pathlib.Path(path).resolve().is_file():
raise AssertionError("File does not exist: %s" % str(path))
io = gr.Interface.load("spaces/abidlabs/image-identity")
output = io("gradio/test_data/lion.jpg")
assertIsFile(output)
class TestLoadFromPipeline(unittest.TestCase):
def test_text_to_text_model_from_pipeline(self):