Skip to content

Commit bb11a2a

Browse files
cbensimonpngwngradio-pr-botabidlabs
authored
[ZeroGPU] Handshake-based postMessage (#10270)
* handshake-based ZeroGPU postMessage * HF Hub dev mode * window is always defined here * pnpm format:write * add changeset * change --------- Co-authored-by: pngwn <[email protected]> Co-authored-by: gradio-pr-bot <[email protected]> Co-authored-by: Abubakar Abid <[email protected]>
1 parent be40307 commit bb11a2a

File tree

8 files changed

+27
-12
lines changed

8 files changed

+27
-12
lines changed

.changeset/metal-cows-remain.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@gradio/client": minor
3+
"@self/app": minor
4+
"gradio": minor
5+
---
6+
7+
feat:[ZeroGPU] Handshake-based postMessage

client/js/src/globals.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ declare global {
77
gradio_api_info: ApiInfo<ApiData> | { api: ApiInfo<ApiData> };
88
__is_colab__: boolean;
99
__gradio_space__: string | null;
10+
supports_zerogpu_headers?: boolean;
1011
}
1112
}

client/js/src/types.ts

-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,6 @@ export interface Dependency {
254254
trigger_mode: "once" | "multiple" | "always_last";
255255
final_event: Payload | null;
256256
show_api: boolean;
257-
zerogpu?: boolean;
258257
rendered_in: number | null;
259258
connection: "stream" | "sse";
260259
time_limit: number;

client/js/src/utils/submit.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -566,15 +566,14 @@ export function submit(
566566
? `https://moon-${hostname.split(".")[1]}.${hfhubdev}`
567567
: `https://huggingface.co`;
568568

569-
const is_iframe =
569+
const is_zerogpu_iframe =
570570
typeof window !== "undefined" &&
571571
typeof document !== "undefined" &&
572-
window.parent != window;
573-
const is_zerogpu_space = dependency.zerogpu && config.space_id;
574-
const zerogpu_auth_promise =
575-
is_iframe && is_zerogpu_space
576-
? post_message<Headers>("zerogpu-headers", origin)
577-
: Promise.resolve(null);
572+
window.parent != window &&
573+
window.supports_zerogpu_headers;
574+
const zerogpu_auth_promise = is_zerogpu_iframe
575+
? post_message<Map<string, string>>("zerogpu-headers", origin)
576+
: Promise.resolve(null);
578577
const post_data_promise = zerogpu_auth_promise.then((headers) => {
579578
return post_data(
580579
`${config.root}${api_prefix}/${SSE_DATA_URL}?${url_params}`,

globals.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ declare global {
1212
parentIFrame?: {
1313
scrollTo: (x: number, y: number) => void;
1414
};
15+
supports_zerogpu_headers?: boolean;
1516
}
1617
}
1718

gradio/blocks.py

-2
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,6 @@ def __init__(
547547
self.queue = False if fn is None else queue
548548
self.scroll_to_output = False if utils.get_space() else scroll_to_output
549549
self.show_api = show_api
550-
self.zero_gpu = hasattr(self.fn, "zerogpu")
551550
self.types_generator = inspect.isgeneratorfunction(
552551
self.fn
553552
) or inspect.isasyncgenfunction(self.fn)
@@ -608,7 +607,6 @@ def get_config(self):
608607
"trigger_only_on_success": self.trigger_only_on_success,
609608
"trigger_mode": self.trigger_mode,
610609
"show_api": self.show_api,
611-
"zerogpu": self.zero_gpu,
612610
"rendered_in": self.rendered_in._id if self.rendered_in else None,
613611
"connection": self.connection,
614612
"time_limit": self.time_limit,

gradio/chat_interface.py

-2
Original file line numberDiff line numberDiff line change
@@ -500,8 +500,6 @@ def _setup_events(self) -> None:
500500

501501
submit_triggers = [self.textbox.submit, self.chatbot.retry]
502502
submit_fn = self._stream_fn if self.is_generator else self._submit_fn
503-
if hasattr(self.fn, "zerogpu"):
504-
submit_fn.__func__.zerogpu = self.fn.zerogpu # type: ignore
505503

506504
synchronize_chat_state_kwargs = {
507505
"fn": lambda x: x,

js/app/src/routes/[...catchall]/+page.svelte

+12
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,18 @@
215215
css_ready = true;
216216
window.__is_colab__ = config.is_colab;
217217
218+
const supports_zerogpu_headers = "supports-zerogpu-headers";
219+
window.addEventListener("message", (event) => {
220+
if (event.data === supports_zerogpu_headers) {
221+
window.supports_zerogpu_headers = true;
222+
}
223+
});
224+
const hostname = window.location.hostname;
225+
const origin = hostname.includes(".dev.")
226+
? `https://moon-${hostname.split(".")[1]}.dev.spaces.huggingface.tech`
227+
: `https://huggingface.co`;
228+
window.parent.postMessage(supports_zerogpu_headers, origin);
229+
218230
dispatch("loaded");
219231
220232
if (config.dev_mode) {

0 commit comments

Comments
 (0)