Skip to content

Commit d427458

Browse files
committed
fix for the issues with tempdir when gradio is upgraded to 3.16.2
1 parent 8e0e392 commit d427458

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

modules/generation_parameters_copypaste.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22
import io
33
import os
44
import re
5-
from pathlib import Path
65

76
import gradio as gr
87
from modules.shared import script_path
9-
from modules import shared
10-
import tempfile
8+
from modules import shared, ui_tempdir
119
from PIL import Image
1210

1311
re_param_code = r'\s*([\w ]+):\s*("(?:\\|\"|[^\"])+"|[^,]*)(?:,|$)'
@@ -35,9 +33,15 @@ def quote(text):
3533

3634

3735
def image_from_url_text(filedata):
38-
if type(filedata) == dict and filedata["is_file"]:
36+
if filedata is None:
37+
return None
38+
39+
if type(filedata) == list and len(filedata) > 0 and type(filedata[0]) == dict and filedata[0].get("is_file", False):
40+
filedata = filedata[0]
41+
42+
if type(filedata) == dict and filedata.get("is_file", False):
3943
filename = filedata["name"]
40-
is_in_right_dir = any(Path(temp_dir).resolve() in Path(filename).resolve().parents for temp_dir in shared.demo.temp_dirs)
44+
is_in_right_dir = ui_tempdir.check_tmp_file(shared.demo, filename)
4145
assert is_in_right_dir, 'trying to open image file outside of allowed directories'
4246

4347
return Image.open(filename)
@@ -55,7 +59,6 @@ def image_from_url_text(filedata):
5559
image = Image.open(io.BytesIO(filedata))
5660
return image
5761

58-
5962
def add_paste_fields(tabname, init_img, fields):
6063
paste_fields[tabname] = {"init_img": init_img, "fields": fields}
6164

modules/ui_tempdir.py

+22-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import tempfile
33
from collections import namedtuple
4+
from pathlib import Path
45

56
import gradio as gr
67

@@ -12,10 +13,29 @@
1213
Savedfile = namedtuple("Savedfile", ["name"])
1314

1415

16+
def register_tmp_file(gradio, filename):
17+
if hasattr(gradio, 'temp_file_sets'): # gradio 3.15
18+
gradio.temp_file_sets[0] = gradio.temp_file_sets[0] | {os.path.abspath(filename)}
19+
20+
if hasattr(gradio, 'temp_dirs'): # gradio 3.9
21+
gradio.temp_dirs = gradio.temp_dirs | {os.path.abspath(os.path.dirname(filename))}
22+
23+
24+
def check_tmp_file(gradio, filename):
25+
if hasattr(gradio, 'temp_file_sets'):
26+
return any([filename in fileset for fileset in gradio.temp_file_sets])
27+
28+
if hasattr(gradio, 'temp_dirs'):
29+
return any(Path(temp_dir).resolve() in Path(filename).resolve().parents for temp_dir in gradio.temp_dirs)
30+
31+
return False
32+
33+
1534
def save_pil_to_file(pil_image, dir=None):
1635
already_saved_as = getattr(pil_image, 'already_saved_as', None)
1736
if already_saved_as and os.path.isfile(already_saved_as):
18-
shared.demo.temp_dirs = shared.demo.temp_dirs | {os.path.abspath(os.path.dirname(already_saved_as))}
37+
register_tmp_file(shared.demo, already_saved_as)
38+
1939
file_obj = Savedfile(already_saved_as)
2040
return file_obj
2141

@@ -44,7 +64,7 @@ def on_tmpdir_changed():
4464

4565
os.makedirs(shared.opts.temp_dir, exist_ok=True)
4666

47-
shared.demo.temp_dirs = shared.demo.temp_dirs | {os.path.abspath(shared.opts.temp_dir)}
67+
register_tmp_file(shared.demo, os.path.join(shared.opts.temp_dir, "x"))
4868

4969

5070
def cleanup_tmpdr():

0 commit comments

Comments
 (0)