Files
wehub-resource-sync adf0d17497
publish / version_or_publish (push) Has been cancelled
storybook-build / changes (push) Has been cancelled
storybook-build / :storybook-build (push) Has been cancelled
Sync Gradio Skills to Hugging Face / sync-skills (push) Has been cancelled
functional / changes (push) Has been cancelled
functional / build-frontend (push) Has been cancelled
functional / functional-test-SSR=false (push) Has been cancelled
functional / functional-reload (push) Has been cancelled
js / changes (push) Has been cancelled
js / js-test (push) Has been cancelled
docs-build / changes (push) Has been cancelled
docs-build / docs-build (push) Has been cancelled
docs-build / website-build (push) Has been cancelled
functional / functional-test-SSR=true (push) Has been cancelled
hygiene / hygiene-test (push) Has been cancelled
python / changes (push) Has been cancelled
python / build (push) Has been cancelled
python / test-ubuntu-latest-flaky (push) Has been cancelled
python / test-ubuntu-latest-not-flaky (push) Has been cancelled
python / test-windows-latest-flaky (push) Has been cancelled
python / test-windows-latest-not-flaky (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:17:32 +08:00

65 lines
2.2 KiB
Python

import numpy as np
import PIL
import gradio as gr
class TestAnnotatedImage:
def test_postprocess(self):
"""
postprocess
"""
component = gr.AnnotatedImage()
img = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8)
mask1 = [40, 40, 50, 50]
mask2 = np.zeros((100, 100), dtype=np.uint8)
mask2[10:20, 10:20] = 1
input = (img, [(mask1, "mask1"), (mask2, "mask2")])
assert (result := component.postprocess(input)) # type: ignore
result = result.model_dump()
base_img_out = PIL.Image.open(result["image"]["path"]) # type: ignore
assert result["annotations"][0]["label"] == "mask1"
mask1_img_out = PIL.Image.open(result["annotations"][0]["image"]["path"]) # type: ignore
assert mask1_img_out.size == base_img_out.size
mask1_array_out = np.array(mask1_img_out)
assert np.max(mask1_array_out[40:50, 40:50]) == 255
assert np.max(mask1_array_out[50:60, 50:60]) == 0
def test_annotated_image_format_parameter(self):
component = gr.AnnotatedImage(format="jpeg")
img = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8)
mask1 = (40, 40, 50, 50)
data = (img, [(mask1, "mask1"), (mask1, "mask2")])
assert (output := component.postprocess(data))
assert output.image.path.endswith(".jpeg")
assert output.annotations[0].image.path.endswith(".png")
def test_component_functions(self):
ht_output = gr.AnnotatedImage(label="sections", show_legend=False)
assert ht_output.get_config() == {
"name": "annotatedimage",
"show_label": True,
"label": "sections",
"show_legend": False,
"container": True,
"min_width": 160,
"scale": None,
"format": "webp",
"color_map": None,
"height": None,
"width": None,
"elem_id": None,
"elem_classes": [],
"visible": True,
"value": None,
"proxy_url": None,
"_selectable": False,
"key": None,
"preserved_by_key": ["value"],
"buttons": ["fullscreen"],
}