spaces 0.50.dev0__tar.gz → 0.50.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {spaces-0.50.dev0 → spaces-0.50.dev1}/PKG-INFO +1 -1
- {spaces-0.50.dev0 → spaces-0.50.dev1}/pyproject.toml +1 -1
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/__init__.py +1 -1
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/__init__.py +18 -2
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/gradio.py +2 -2
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/lifecycle.py +8 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/middleware.py +3 -3
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/patching.py +0 -4
- {spaces-0.50.dev0 → spaces-0.50.dev1}/README.md +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/asgiref/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/asgiref/typing.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/codefind/LICENSE +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/codefind/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/codefind/registry.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/codefind/version.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/jurigged/LICENSE +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/jurigged/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/jurigged/codetools.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/jurigged/parse.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/jurigged/register.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/jurigged/utils.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/jurigged/version.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/LICENSE +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/abc.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/codegen.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/core.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/dependent.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/medley.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/mro.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/py.typed +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/recode.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/signatures.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/typemap.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/types.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/utils.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/ovld/version.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/sse_starlette/LICENSE +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/sse_starlette/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/sse_starlette/event.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/sse_starlette/py.typed +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/sse_starlette/sse.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/sseclient/LICENSE +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/_vendor/sseclient/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/config.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/reloading/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/reloading/client.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/reloading/server.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/reloading/types.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/reloading/types.ts +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/utils.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/api.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/client.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/context.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/decorator.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/mmap.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/__init__.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/aoti.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/bitsandbytes.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/bitsandbytes_legacy.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/cudart.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/packing.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/patching_legacy.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/static.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/types.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/torch/utils.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/tqdm.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/types.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/utils.py +0 -0
- {spaces-0.50.dev0 → spaces-0.50.dev1}/spaces/zero/wrappers.py +0 -0
|
@@ -6,6 +6,10 @@ from importlib import metadata
|
|
|
6
6
|
from packaging.version import Version
|
|
7
7
|
|
|
8
8
|
from ..config import Config
|
|
9
|
+
from .context import ZeroGPUError
|
|
10
|
+
from .context import ZeroGPUErrorResponse
|
|
11
|
+
from .context import ZeroGPUException
|
|
12
|
+
from .context import ZeroGPULog
|
|
9
13
|
from .middleware import ZeroGPUMiddleware
|
|
10
14
|
from .lifecycle import zerogpu_mode_enable
|
|
11
15
|
from .lifecycle import zerogpu_mode_enabled
|
|
@@ -18,11 +22,23 @@ def _maybe_enable_gradio_compat():
|
|
|
18
22
|
except metadata.PackageNotFoundError: # pragma: no cover
|
|
19
23
|
pass
|
|
20
24
|
else:
|
|
21
|
-
if Version(gradio_version) < Version('6.
|
|
25
|
+
if Version(gradio_version) < Version('6.14'):
|
|
22
26
|
from . import gradio
|
|
23
|
-
gradio.patch(
|
|
27
|
+
gradio.patch()
|
|
24
28
|
|
|
25
29
|
|
|
26
30
|
if Config.zero_gpu:
|
|
27
31
|
zerogpu_mode_enable()
|
|
28
32
|
_maybe_enable_gradio_compat()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
__all__ = [
|
|
36
|
+
'ZeroGPUError',
|
|
37
|
+
'ZeroGPUErrorResponse',
|
|
38
|
+
'ZeroGPUException',
|
|
39
|
+
'ZeroGPULog',
|
|
40
|
+
'ZeroGPUMiddleware',
|
|
41
|
+
'zerogpu_mode_enable',
|
|
42
|
+
'zerogpu_mode_enabled',
|
|
43
|
+
'zerogpu_startup',
|
|
44
|
+
]
|
|
@@ -37,7 +37,7 @@ class WorkerContextualizer:
|
|
|
37
37
|
LocalContext.progress.set(self.progress)
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
def patch(
|
|
40
|
+
def patch():
|
|
41
41
|
|
|
42
42
|
try:
|
|
43
43
|
Success = gr.Success # pyright: ignore[reportAttributeAccessIssue] (Gradio<5.10)
|
|
@@ -70,7 +70,7 @@ def patch(zerogpu_middleware_class: Type[ZeroGPUMiddleware]):
|
|
|
70
70
|
def create_app(*args, **kwargs):
|
|
71
71
|
app = orig_create_app(*args, **kwargs)
|
|
72
72
|
app.add_middleware(
|
|
73
|
-
|
|
73
|
+
ZeroGPUMiddleware,
|
|
74
74
|
exception_mapper=lambda err, exc: (
|
|
75
75
|
setattr(exc, 'print_exception', False) or exc
|
|
76
76
|
if isinstance(exc, gr.Error)
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"""
|
|
2
2
|
"""
|
|
3
3
|
|
|
4
|
+
import shutil
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from ..config import Config
|
|
8
|
+
|
|
9
|
+
|
|
4
10
|
BAD_FORK_EXCEPTION_MESSAGE = (
|
|
5
11
|
"CUDA has been initialized before importing the `spaces` package. "
|
|
6
12
|
"Try importing `spaces` before any other CUDA-related package."
|
|
@@ -16,6 +22,8 @@ def zerogpu_mode_enable():
|
|
|
16
22
|
if torch.is_in_bad_fork():
|
|
17
23
|
raise RuntimeError(BAD_FORK_EXCEPTION_MESSAGE)
|
|
18
24
|
torch.patch()
|
|
25
|
+
shutil.rmtree(Config.zerogpu_offload_dir, ignore_errors=True)
|
|
26
|
+
Path(Config.zerogpu_offload_dir).mkdir(parents=True)
|
|
19
27
|
_zerogpu_mode_enabled = True
|
|
20
28
|
|
|
21
29
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
import asyncio.threads
|
|
5
5
|
from typing import Any
|
|
6
6
|
from typing import Awaitable
|
|
7
7
|
from typing import Callable
|
|
@@ -61,7 +61,7 @@ class ZeroGPUMiddleware:
|
|
|
61
61
|
async def wrapped_receive() -> ASGIReceiveEvent:
|
|
62
62
|
message = await asgi_receive()
|
|
63
63
|
if message['type'] == 'lifespan.startup':
|
|
64
|
-
zerogpu_startup
|
|
64
|
+
await asyncio.threads.to_thread(zerogpu_startup)
|
|
65
65
|
return message
|
|
66
66
|
await asgi_app(asgi_scope, wrapped_receive, asgi_send)
|
|
67
67
|
return # pragma: no cover
|
|
@@ -5,13 +5,11 @@
|
|
|
5
5
|
import gc
|
|
6
6
|
import multiprocessing
|
|
7
7
|
import os
|
|
8
|
-
import shutil
|
|
9
8
|
from collections import defaultdict
|
|
10
9
|
from concurrent.futures import ProcessPoolExecutor
|
|
11
10
|
from concurrent.futures import ThreadPoolExecutor
|
|
12
11
|
from contextlib import nullcontext
|
|
13
12
|
from contextvars import copy_context
|
|
14
|
-
from pathlib import Path
|
|
15
13
|
from typing import Any
|
|
16
14
|
from typing import Callable
|
|
17
15
|
|
|
@@ -391,8 +389,6 @@ def _pack(offload_dir: str):
|
|
|
391
389
|
def pack():
|
|
392
390
|
if len(cuda_aliases) == 0:
|
|
393
391
|
return 0
|
|
394
|
-
shutil.rmtree(Config.zerogpu_offload_dir, ignore_errors=True)
|
|
395
|
-
Path(Config.zerogpu_offload_dir).mkdir(parents=True)
|
|
396
392
|
mmap_addrs = [tensor.data_ptr() for tensor in cuda_aliases.values() if tensor is not None]
|
|
397
393
|
with unmap_capture(mmap_addrs) as unmapped_paths:
|
|
398
394
|
total_size = _pack(Config.zerogpu_offload_dir)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|