Metal3d commited on
Commit
405761d
·
1 Parent(s): dc29d9d

Auto cleanup temporary files

Browse files

Images and zip files are kept 24 hours.

Files changed (1) hide show
  1. app.py +22 -8
app.py CHANGED
@@ -1,11 +1,16 @@
 
 
1
  import gradio as gr
2
  import spaces
3
  from PIL import Image
4
 
5
  from dataset import ImageDataset
 
6
  from labelizer import get_task_response
7
  from packager import create_dataset_zip
8
- from documentation import DOC_CONTENT
 
 
9
 
10
 
11
  @spaces.GPU
@@ -73,7 +78,8 @@ def labelize_all_images(
73
  def create_dataset_zipfile(dataset: ImageDataset, organize_in_folders: bool):
74
  """Create and return zip file for download."""
75
  zip_path = create_dataset_zip(dataset, organize_in_folders)
76
- return gr.update(visible=True, value=zip_path)
 
77
 
78
 
79
  def update_buttons_states(dataset: ImageDataset, labeling_in_progress=False):
@@ -99,7 +105,9 @@ def finish_labeling(dataset: ImageDataset):
99
  return update_buttons_states(dataset, labeling_in_progress=False)
100
 
101
 
102
- with gr.Blocks(title="Labelizer", fill_width=True) as demo:
 
 
103
  dataset = gr.State()
104
  with gr.Sidebar():
105
  gr.Markdown("# 🖼️ Image Labeling Tool")
@@ -128,16 +136,18 @@ with gr.Blocks(title="Labelizer", fill_width=True) as demo:
128
  )
129
 
130
  with gr.Group():
131
- organize_files = gr.Checkbox(
132
- label="📂 Organize in folders", value=False, render=False
133
- )
134
  download_button = gr.Button(
135
  "💾 Create zip file to download",
136
  interactive=False,
137
  size="lg",
138
  )
 
139
  download_file = gr.File(label="Generated datasets", visible=False)
140
- organize_files.render()
 
141
 
142
  @gr.render(inputs=[dataset, is_labeling_in_progress])
143
  def render_grid(ds, is_labeling_in_progress):
@@ -284,7 +294,11 @@ with gr.Blocks(title="Labelizer", fill_width=True) as demo:
284
  ).then(
285
  create_dataset_zipfile,
286
  inputs=[dataset, organize_files],
287
- outputs=download_file,
 
 
 
 
288
  )
289
 
290
 
 
1
+ import os
2
+
3
  import gradio as gr
4
  import spaces
5
  from PIL import Image
6
 
7
  from dataset import ImageDataset
8
+ from documentation import DOC_CONTENT
9
  from labelizer import get_task_response
10
  from packager import create_dataset_zip
11
+
12
+ # Drop files after 24 hours
13
+ CACHE_TTL = 24 * 60 * 60
14
 
15
 
16
  @spaces.GPU
 
78
  def create_dataset_zipfile(dataset: ImageDataset, organize_in_folders: bool):
79
  """Create and return zip file for download."""
80
  zip_path = create_dataset_zip(dataset, organize_in_folders)
81
+ output = gr.update(visible=True, value=zip_path)
82
+ return output, zip_path
83
 
84
 
85
  def update_buttons_states(dataset: ImageDataset, labeling_in_progress=False):
 
105
  return update_buttons_states(dataset, labeling_in_progress=False)
106
 
107
 
108
+ with gr.Blocks(
109
+ title="Labelizer", fill_width=True, delete_cache=(CACHE_TTL, CACHE_TTL)
110
+ ) as demo:
111
  dataset = gr.State()
112
  with gr.Sidebar():
113
  gr.Markdown("# 🖼️ Image Labeling Tool")
 
136
  )
137
 
138
  with gr.Group():
139
+ # original zip file to drop, see the click envent of download_button
140
+ to_delete = gr.State()
141
+ # should create a zip file
142
  download_button = gr.Button(
143
  "💾 Create zip file to download",
144
  interactive=False,
145
  size="lg",
146
  )
147
+ # the download section
148
  download_file = gr.File(label="Generated datasets", visible=False)
149
+ # to organize dataset in folders or not
150
+ organize_files = gr.Checkbox(label="📂 Organize in folders", value=False)
151
 
152
  @gr.render(inputs=[dataset, is_labeling_in_progress])
153
  def render_grid(ds, is_labeling_in_progress):
 
294
  ).then(
295
  create_dataset_zipfile,
296
  inputs=[dataset, organize_files],
297
+ outputs=[download_file, to_delete],
298
+ ).then(
299
+ # delete the generated files from /tmp as it is now coppied in gradio cache
300
+ lambda x: os.remove(x),
301
+ inputs=[to_delete],
302
  )
303
 
304