Severian commited on
Commit
5d37781
·
verified ·
1 Parent(s): e2cf881

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -123
app.py CHANGED
@@ -1420,126 +1420,3 @@ print("✅ CMT Holographic Visualization Suite Ready!")
1420
  if __name__ == "__main__":
1421
  pass
1422
 
1423
- # ================================================================
1424
- # Private Space Host/Proxy (per blog instructions)
1425
- # - Hosts a private HF Space inside this public Space via Gradio
1426
- # - Caches the private repo inside a visible directory
1427
- # - Dynamically imports and exposes its Gradio demo as `demo`
1428
- # ================================================================
1429
-
1430
- import os as _os
1431
- import sys as _sys
1432
- from pathlib import Path as _Path
1433
- import importlib.util as _importlib_util
1434
-
1435
- try:
1436
- from huggingface_hub import snapshot_download as _snapshot_download, hf_hub_download as _hf_hub_download
1437
- except Exception as _e: # pragma: no cover
1438
- _snapshot_download = None
1439
- _hf_hub_download = None
1440
-
1441
-
1442
- _PRIVATE_SPACE_REPO: str = _os.getenv("PRIVATE_SPACE_REPO", "Severian/CMT-Mapping")
1443
-
1444
-
1445
- def setup_cache_directory() -> _Path:
1446
- """Setup and return cache directory for private space files."""
1447
- cache_dir = _Path(_os.getenv("PRIVATE_SPACE_CACHE_DIR", "private_space_cache"))
1448
- cache_dir.mkdir(parents=True, exist_ok=True)
1449
- return cache_dir
1450
-
1451
-
1452
- def download_private_assets(cache_dir: _Path) -> _Path:
1453
- """Download private Space snapshot into a local directory and return its root."""
1454
- if _snapshot_download is None:
1455
- raise RuntimeError("huggingface_hub is required to download the private Space")
1456
-
1457
- token = _os.getenv("HF_TOKEN")
1458
- local_dir = cache_dir / "private_space"
1459
- local_dir.mkdir(parents=True, exist_ok=True)
1460
-
1461
- _snapshot_download(
1462
- repo_id=_PRIVATE_SPACE_REPO,
1463
- repo_type="space",
1464
- local_dir=str(local_dir),
1465
- token=token,
1466
- )
1467
-
1468
- return local_dir
1469
-
1470
-
1471
- def _load_private_space_app(module_root: _Path):
1472
- """Load the private Space's app.py and return (module, gradio_app)."""
1473
- app_path = module_root / "app.py"
1474
- token = _os.getenv("HF_TOKEN")
1475
-
1476
- if not app_path.exists():
1477
- if _hf_hub_download is None:
1478
- raise RuntimeError("huggingface_hub is required to locate app.py in the private Space")
1479
- downloaded_app = _hf_hub_download(
1480
- repo_id=_PRIVATE_SPACE_REPO,
1481
- filename="app.py",
1482
- repo_type="space",
1483
- token=token,
1484
- )
1485
- app_path = _Path(downloaded_app)
1486
- module_root = app_path.parent
1487
-
1488
- # Ensure private repo root is importable for any relative imports
1489
- if str(module_root) not in _sys.path:
1490
- _sys.path.insert(0, str(module_root))
1491
-
1492
- spec = _importlib_util.spec_from_file_location("private_space_app", str(app_path))
1493
- if spec is None or spec.loader is None:
1494
- raise ImportError(f"Unable to load spec for private app at {app_path}")
1495
- module = _importlib_util.module_from_spec(spec)
1496
- spec.loader.exec_module(module)
1497
-
1498
- # Try to find a Gradio app instance
1499
- private_demo = None
1500
- candidate_names = ("demo", "app", "iface")
1501
- for name in candidate_names:
1502
- obj = getattr(module, name, None)
1503
- if isinstance(obj, (gr.Blocks, gr.Interface)):
1504
- private_demo = obj
1505
- break
1506
- if private_demo is None:
1507
- for obj in module.__dict__.values():
1508
- if isinstance(obj, (gr.Blocks, gr.Interface)):
1509
- private_demo = obj
1510
- break
1511
-
1512
- return module, private_demo
1513
-
1514
-
1515
- # Resolve the private Space and expose its `demo`
1516
- try:
1517
- _cache_dir = setup_cache_directory()
1518
- # Propagate the cache dir so the private app imports use the same visible path
1519
- _os.environ.setdefault("PRIVATE_SPACE_CACHE_DIR", str(_cache_dir.resolve()))
1520
- _repo_root = download_private_assets(_cache_dir)
1521
- _module, _private_demo = _load_private_space_app(_repo_root)
1522
-
1523
- if _private_demo is not None:
1524
- demo = _private_demo # type: ignore[assignment]
1525
- else:
1526
- with gr.Blocks() as demo: # type: ignore[no-redef]
1527
- gr.Markdown(
1528
- """
1529
- ### Error
1530
- Could not locate a Gradio app object in the private Space. Expected a variable like `demo`, `app`, or `iface`.
1531
- """
1532
- )
1533
- except Exception as _err: # pragma: no cover
1534
- with gr.Blocks() as demo: # type: ignore[no-redef]
1535
- gr.Markdown(
1536
- f"""
1537
- ### Private Space Load Failure
1538
- Failed to load `{_PRIVATE_SPACE_REPO}` due to: `{type(_err).__name__}: {_err}`
1539
- """
1540
- )
1541
-
1542
-
1543
- if __name__ == "__main__":
1544
- # Launch for local testing; on Spaces, the platform will pick up `demo`
1545
- demo.launch(server_name="0.0.0.0", server_port=int(_os.getenv("PORT", "7860")))
 
1420
  if __name__ == "__main__":
1421
  pass
1422