mirror of
https://github.com/gradio-app/gradio.git
synced 2025-02-05 11:10:03 +08:00
[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 <hello@pngwn.io> Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
This commit is contained in:
parent
be40307d1d
commit
bb11a2a702
7
.changeset/metal-cows-remain.md
Normal file
7
.changeset/metal-cows-remain.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
"@gradio/client": minor
|
||||
"@self/app": minor
|
||||
"gradio": minor
|
||||
---
|
||||
|
||||
feat:[ZeroGPU] Handshake-based postMessage
|
1
client/js/src/globals.d.ts
vendored
1
client/js/src/globals.d.ts
vendored
@ -7,5 +7,6 @@ declare global {
|
||||
gradio_api_info: ApiInfo<ApiData> | { api: ApiInfo<ApiData> };
|
||||
__is_colab__: boolean;
|
||||
__gradio_space__: string | null;
|
||||
supports_zerogpu_headers?: boolean;
|
||||
}
|
||||
}
|
||||
|
@ -254,7 +254,6 @@ export interface Dependency {
|
||||
trigger_mode: "once" | "multiple" | "always_last";
|
||||
final_event: Payload | null;
|
||||
show_api: boolean;
|
||||
zerogpu?: boolean;
|
||||
rendered_in: number | null;
|
||||
connection: "stream" | "sse";
|
||||
time_limit: number;
|
||||
|
@ -566,15 +566,14 @@ export function submit(
|
||||
? `https://moon-${hostname.split(".")[1]}.${hfhubdev}`
|
||||
: `https://huggingface.co`;
|
||||
|
||||
const is_iframe =
|
||||
const is_zerogpu_iframe =
|
||||
typeof window !== "undefined" &&
|
||||
typeof document !== "undefined" &&
|
||||
window.parent != window;
|
||||
const is_zerogpu_space = dependency.zerogpu && config.space_id;
|
||||
const zerogpu_auth_promise =
|
||||
is_iframe && is_zerogpu_space
|
||||
? post_message<Headers>("zerogpu-headers", origin)
|
||||
: Promise.resolve(null);
|
||||
window.parent != window &&
|
||||
window.supports_zerogpu_headers;
|
||||
const zerogpu_auth_promise = is_zerogpu_iframe
|
||||
? post_message<Map<string, string>>("zerogpu-headers", origin)
|
||||
: Promise.resolve(null);
|
||||
const post_data_promise = zerogpu_auth_promise.then((headers) => {
|
||||
return post_data(
|
||||
`${config.root}${api_prefix}/${SSE_DATA_URL}?${url_params}`,
|
||||
|
1
globals.d.ts
vendored
1
globals.d.ts
vendored
@ -12,6 +12,7 @@ declare global {
|
||||
parentIFrame?: {
|
||||
scrollTo: (x: number, y: number) => void;
|
||||
};
|
||||
supports_zerogpu_headers?: boolean;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -547,7 +547,6 @@ class BlockFunction:
|
||||
self.queue = False if fn is None else queue
|
||||
self.scroll_to_output = False if utils.get_space() else scroll_to_output
|
||||
self.show_api = show_api
|
||||
self.zero_gpu = hasattr(self.fn, "zerogpu")
|
||||
self.types_generator = inspect.isgeneratorfunction(
|
||||
self.fn
|
||||
) or inspect.isasyncgenfunction(self.fn)
|
||||
@ -608,7 +607,6 @@ class BlockFunction:
|
||||
"trigger_only_on_success": self.trigger_only_on_success,
|
||||
"trigger_mode": self.trigger_mode,
|
||||
"show_api": self.show_api,
|
||||
"zerogpu": self.zero_gpu,
|
||||
"rendered_in": self.rendered_in._id if self.rendered_in else None,
|
||||
"connection": self.connection,
|
||||
"time_limit": self.time_limit,
|
||||
|
@ -500,8 +500,6 @@ class ChatInterface(Blocks):
|
||||
|
||||
submit_triggers = [self.textbox.submit, self.chatbot.retry]
|
||||
submit_fn = self._stream_fn if self.is_generator else self._submit_fn
|
||||
if hasattr(self.fn, "zerogpu"):
|
||||
submit_fn.__func__.zerogpu = self.fn.zerogpu # type: ignore
|
||||
|
||||
synchronize_chat_state_kwargs = {
|
||||
"fn": lambda x: x,
|
||||
|
@ -215,6 +215,18 @@
|
||||
css_ready = true;
|
||||
window.__is_colab__ = config.is_colab;
|
||||
|
||||
const supports_zerogpu_headers = "supports-zerogpu-headers";
|
||||
window.addEventListener("message", (event) => {
|
||||
if (event.data === supports_zerogpu_headers) {
|
||||
window.supports_zerogpu_headers = true;
|
||||
}
|
||||
});
|
||||
const hostname = window.location.hostname;
|
||||
const origin = hostname.includes(".dev.")
|
||||
? `https://moon-${hostname.split(".")[1]}.dev.spaces.huggingface.tech`
|
||||
: `https://huggingface.co`;
|
||||
window.parent.postMessage(supports_zerogpu_headers, origin);
|
||||
|
||||
dispatch("loaded");
|
||||
|
||||
if (config.dev_mode) {
|
||||
|
Loading…
Reference in New Issue
Block a user