CodeChamp95 commited on
Commit
e40b4af
Β·
verified Β·
1 Parent(s): e3044ac

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -27
app.py CHANGED
@@ -25,30 +25,34 @@ starlette.templating.Jinja2Templates.TemplateResponse = _patched_template_respon
25
 
26
 
27
  # ── Patch the gradio_client JSON-schema parser crash safely ──────────────────
28
- import gradio.blocks as _gr_blocks
 
29
 
30
- _original_get_api_info = _gr_blocks.Blocks.get_api_info
31
 
32
- def _safe_get_api_info(self, *args, **kwargs):
33
- # 1. Get the actual API routing map
34
- api_info = _original_get_api_info(self, *args, **kwargs)
35
-
36
- # 2. Recursively scrub boolean `additionalProperties`
37
- def fix_schema_booleans(obj):
38
- if isinstance(obj, dict):
39
- if "additionalProperties" in obj and isinstance(obj["additionalProperties"], bool):
40
- # Replace the boolean with an empty dict to prevent the iterable crash
41
- obj["additionalProperties"] = {}
42
- for k, v in obj.items():
43
- fix_schema_booleans(v)
44
- elif isinstance(obj, list):
45
- for item in obj:
46
- fix_schema_booleans(item)
47
-
48
- fix_schema_booleans(api_info)
49
- return api_info
50
-
51
- _gr_blocks.Blocks.get_api_info = _safe_get_api_info
 
 
 
52
 
53
 
54
  import pandas as pd
@@ -657,15 +661,11 @@ def build_app():
657
  # Entry point
658
  # ──────────────────────────────────────────────────────────────────────────────
659
 
660
- # Build the app at module level so Hugging Face Spaces can import it correctly.
661
- # The `if __name__ == "__main__"` guard prevented launch() from running on Spaces
662
- # because HF imports app.py rather than executing it as a script.
663
  app = build_app()
664
- _on_spaces = os.environ.get("SPACE_ID") is not None
665
 
666
  app.launch(
667
  server_name="0.0.0.0",
668
  server_port=7860,
669
- share=_on_spaces,
670
  show_error=True
671
  )
 
25
 
26
 
27
  # ── Patch the gradio_client JSON-schema parser crash safely ──────────────────
28
+ import gradio_client.utils as gc_utils
29
+ import copy
30
 
31
+ _original_parser = gc_utils._json_schema_to_python_type
32
 
33
+ def _patched_parser(schema):
34
+ try:
35
+ # Deepcopy to avoid mutating the original schema object
36
+ safe_schema = copy.deepcopy(schema)
37
+
38
+ # Recursively hunt down and replace boolean additionalProperties
39
+ def fix_booleans(obj):
40
+ if isinstance(obj, dict):
41
+ if "additionalProperties" in obj and isinstance(obj["additionalProperties"], bool):
42
+ obj["additionalProperties"] = {}
43
+ for v in obj.values():
44
+ fix_booleans(v)
45
+ elif isinstance(obj, list):
46
+ for item in obj:
47
+ fix_booleans(item)
48
+
49
+ fix_booleans(safe_schema)
50
+ return _original_parser(safe_schema)
51
+ except Exception:
52
+ # Fallback to the original schema if our scrubber fails
53
+ return _original_parser(schema)
54
+
55
+ gc_utils._json_schema_to_python_type = _patched_parser
56
 
57
 
58
  import pandas as pd
 
661
  # Entry point
662
  # ──────────────────────────────────────────────────────────────────────────────
663
 
 
 
 
664
  app = build_app()
 
665
 
666
  app.launch(
667
  server_name="0.0.0.0",
668
  server_port=7860,
669
+ share=False,
670
  show_error=True
671
  )