John6666 commited on
Commit
fa4fe82
·
verified ·
1 Parent(s): b1259e3

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -8
app.py CHANGED
@@ -2061,6 +2061,13 @@ with gr.Blocks(theme=args.theme, elem_id="main", fill_width=True, fill_height=Fa
2061
  def _generate_image(argv: List[Any]) -> Generator[Tuple[str, Optional[List[str]], Optional[str]], None, None]:
2062
  # Delegate to existing generator
2063
  yield from sd_gen_generate_pipeline(*argv)
 
 
 
 
 
 
 
2064
 
2065
  # 3) Signature-clone decorator: keep one signature across both endpoints
2066
  def clone_signature(src):
@@ -2072,23 +2079,35 @@ with gr.Blocks(theme=args.theme, elem_id="main", fill_width=True, fill_height=Fa
2072
 
2073
  # 4) Implementations: both share the same signature via clone_signature
2074
  @clone_signature(_signature_src)
2075
- def generate_image(**kwargs) -> Tuple[str, Optional[List[str]], Optional[str]]:
2076
- _load_model(kwargs["model_name"], kwargs["vae_model"], kwargs["task"], kwargs["controlnet_model"])
2077
- argv = _argv_from_kwargs(kwargs)
2078
- last = ("COMPLETE", None, None)
 
 
 
 
 
 
2079
  for last in _generate_image(argv):
2080
  pass
2081
  return last
2082
 
2083
  @clone_signature(_signature_src)
2084
- def generate_image_stream(**kwargs) -> Generator[Tuple[str, Optional[List[str]], Optional[str]], None, None]:
2085
- _load_model(kwargs["model_name"], kwargs["vae_model"], kwargs["task"], kwargs["controlnet_model"])
2086
- argv = _argv_from_kwargs(kwargs)
 
 
 
 
 
 
2087
  yield from _generate_image(argv)
2088
 
2089
  # 5) Register two APIs with identical, named kwargs
2090
  gr.api(generate_image, api_name="generate_image", show_api=True, queue=True, concurrency_id="gpu")
2091
- gr.api(generate_image_stream, api_name="generate_image_stream", show_api=True, queue=True, concurrency_id="gpu")
2092
 
2093
  gr.LoginButton()
2094
  gr.DuplicateButton(value="Duplicate Space for private use (This demo does not work on CPU. Requires GPU Space)")
 
2061
  def _generate_image(argv: List[Any]) -> Generator[Tuple[str, Optional[List[str]], Optional[str]], None, None]:
2062
  # Delegate to existing generator
2063
  yield from sd_gen_generate_pipeline(*argv)
2064
+
2065
+ _API_SIG = inspect.signature(_signature_src)
2066
+
2067
+ def _bind_api_args(*args: Any, **kwargs: Any) -> Dict[str, Any]:
2068
+ bound = _API_SIG.bind_partial(*args, **kwargs)
2069
+ bound.apply_defaults()
2070
+ return bound.arguments
2071
 
2072
  # 3) Signature-clone decorator: keep one signature across both endpoints
2073
  def clone_signature(src):
 
2079
 
2080
  # 4) Implementations: both share the same signature via clone_signature
2081
  @clone_signature(_signature_src)
2082
+ def generate_image(*args: Any, **kwargs: Any) -> Tuple[str, Optional[List[str]], Optional[str]]:
2083
+ params = _bind_api_args(*args, **kwargs)
2084
+ _load_model(
2085
+ params["model_name"],
2086
+ params["vae_model"],
2087
+ params["task"],
2088
+ params["controlnet_model"],
2089
+ )
2090
+ argv = _argv_from_kwargs(params)
2091
+ last: Tuple[str, Optional[List[str]], Optional[str]] = ("COMPLETE", None, None)
2092
  for last in _generate_image(argv):
2093
  pass
2094
  return last
2095
 
2096
  @clone_signature(_signature_src)
2097
+ def generate_image_stream(*args: Any, **kwargs: Any) -> Generator[Tuple[str, Optional[List[str]], Optional[str]], None, None]:
2098
+ params = _bind_api_args(*args, **kwargs)
2099
+ _load_model(
2100
+ params["model_name"],
2101
+ params["vae_model"],
2102
+ params["task"],
2103
+ params["controlnet_model"],
2104
+ )
2105
+ argv = _argv_from_kwargs(params)
2106
  yield from _generate_image(argv)
2107
 
2108
  # 5) Register two APIs with identical, named kwargs
2109
  gr.api(generate_image, api_name="generate_image", show_api=True, queue=True, concurrency_id="gpu")
2110
+ gr.api(generate_image_stream, api_name="generate_image_stream", show_api=True, queue=True, concurrency_id="gpu").stream()
2111
 
2112
  gr.LoginButton()
2113
  gr.DuplicateButton(value="Duplicate Space for private use (This demo does not work on CPU. Requires GPU Space)")