grlll commited on
Commit
699fc75
Β·
1 Parent(s): 33a6bdd

add progress bar

Browse files
Files changed (1) hide show
  1. app.py +20 -1
app.py CHANGED
@@ -40,8 +40,9 @@ def create_interface():
40
 
41
  create_btn = gr.Button("Create Private MCP Server", variant="primary")
42
  create_status = gr.Markdown("")
 
43
 
44
- def create_health_landing_zone(file_path: str, project_name: str, oauth_token: gr.OAuthToken | None) -> str:
45
  """Create private dataset and MCP server space for Apple Health data."""
46
  if not oauth_token:
47
  return "❌ Please login first!"
@@ -53,6 +54,7 @@ def create_interface():
53
  return "❌ Please enter a project name!"
54
 
55
  try:
 
56
  # Use the OAuth token
57
  token = oauth_token.token
58
  if not token:
@@ -68,6 +70,7 @@ def create_interface():
68
  dataset_repo_id = f"{username}/{project_name}-data"
69
  space_repo_id = f"{username}/{project_name}-mcp"
70
 
 
71
  # Check if repositories already exist
72
  try:
73
  api.repo_info(dataset_repo_id, repo_type="dataset")
@@ -81,6 +84,7 @@ def create_interface():
81
  except RepositoryNotFoundError:
82
  pass
83
 
 
84
  # Create the private dataset
85
  dataset_url = create_repo(
86
  repo_id=dataset_repo_id,
@@ -89,6 +93,7 @@ def create_interface():
89
  token=token
90
  )
91
 
 
92
  # Upload the export.xml file (first commit)
93
  api.upload_file(
94
  path_or_fileobj=file_path,
@@ -99,6 +104,7 @@ def create_interface():
99
  commit_message="Initial upload: export.xml"
100
  )
101
 
 
102
  # Create README for dataset
103
  dataset_readme = f"""# Apple Health Data
104
 
@@ -123,6 +129,7 @@ This dataset is private and contains personal health information. Do not share a
123
  token=token
124
  )
125
 
 
126
  # Create the MCP server space
127
  space_url = create_repo(
128
  repo_id=space_repo_id,
@@ -132,6 +139,7 @@ This dataset is private and contains personal health information. Do not share a
132
  token=token
133
  )
134
 
 
135
  # Read MCP server code from mcp_server.py
136
  with open('mcp_server.py', 'r') as f:
137
  mcp_app_content = f.read()
@@ -145,6 +153,7 @@ This dataset is private and contains personal health information. Do not share a
145
  token=token
146
  )
147
 
 
148
  # Upload parser dependencies for auto-parsing functionality
149
  api.upload_file(
150
  path_or_fileobj="src/parser/parser.py",
@@ -178,6 +187,7 @@ This dataset is private and contains personal health information. Do not share a
178
  token=token
179
  )
180
 
 
181
  # Create requirements.txt for the space
182
  requirements_content = """gradio>=5.34.0
183
  huggingface-hub>=0.20.0
@@ -195,6 +205,7 @@ tqdm>=4.64.0
195
  token=token
196
  )
197
 
 
198
  # Create space variables for the dataset repo ID
199
  api.add_space_variable(
200
  repo_id=space_repo_id,
@@ -203,6 +214,7 @@ tqdm>=4.64.0
203
  token=token
204
  )
205
 
 
206
  # Add the token as a secret for dataset access
207
  api.add_space_secret(
208
  repo_id=space_repo_id,
@@ -211,6 +223,7 @@ tqdm>=4.64.0
211
  token=token
212
  )
213
 
 
214
  return f"""βœ… Successfully created Apple Health Landing Zone!
215
 
216
  **Private Dataset:** [{dataset_repo_id}]({dataset_url})
@@ -248,9 +261,15 @@ The MCP server uses a dedicated token with limited permissions for enhanced secu
248
 
249
  # Create landing zone button click
250
  create_btn.click(
 
 
 
251
  fn=create_health_landing_zone,
252
  inputs=[file_input, space_name_input],
253
  outputs=[create_status]
 
 
 
254
  )
255
 
256
  return demo
 
40
 
41
  create_btn = gr.Button("Create Private MCP Server", variant="primary")
42
  create_status = gr.Markdown("")
43
+ progress_bar = gr.Markdown(visible=False)
44
 
45
+ def create_health_landing_zone(file_path: str, project_name: str, oauth_token: gr.OAuthToken | None, progress=gr.Progress()) -> str:
46
  """Create private dataset and MCP server space for Apple Health data."""
47
  if not oauth_token:
48
  return "❌ Please login first!"
 
54
  return "❌ Please enter a project name!"
55
 
56
  try:
57
+ progress(0.1, desc="πŸ” Authenticating...")
58
  # Use the OAuth token
59
  token = oauth_token.token
60
  if not token:
 
70
  dataset_repo_id = f"{username}/{project_name}-data"
71
  space_repo_id = f"{username}/{project_name}-mcp"
72
 
73
+ progress(0.2, desc="πŸ” Checking repository availability...")
74
  # Check if repositories already exist
75
  try:
76
  api.repo_info(dataset_repo_id, repo_type="dataset")
 
84
  except RepositoryNotFoundError:
85
  pass
86
 
87
+ progress(0.3, desc="πŸ“Š Creating private dataset...")
88
  # Create the private dataset
89
  dataset_url = create_repo(
90
  repo_id=dataset_repo_id,
 
93
  token=token
94
  )
95
 
96
+ progress(0.4, desc="πŸ“€ Uploading export.xml...")
97
  # Upload the export.xml file (first commit)
98
  api.upload_file(
99
  path_or_fileobj=file_path,
 
104
  commit_message="Initial upload: export.xml"
105
  )
106
 
107
+ progress(0.5, desc="πŸ“ Creating dataset documentation...")
108
  # Create README for dataset
109
  dataset_readme = f"""# Apple Health Data
110
 
 
129
  token=token
130
  )
131
 
132
+ progress(0.6, desc="πŸš€ Creating MCP server space...")
133
  # Create the MCP server space
134
  space_url = create_repo(
135
  repo_id=space_repo_id,
 
139
  token=token
140
  )
141
 
142
+ progress(0.7, desc="πŸ“¦ Uploading MCP server code...")
143
  # Read MCP server code from mcp_server.py
144
  with open('mcp_server.py', 'r') as f:
145
  mcp_app_content = f.read()
 
153
  token=token
154
  )
155
 
156
+ progress(0.8, desc="πŸ“š Uploading parser dependencies...")
157
  # Upload parser dependencies for auto-parsing functionality
158
  api.upload_file(
159
  path_or_fileobj="src/parser/parser.py",
 
187
  token=token
188
  )
189
 
190
+ progress(0.85, desc="πŸ“‹ Creating requirements...")
191
  # Create requirements.txt for the space
192
  requirements_content = """gradio>=5.34.0
193
  huggingface-hub>=0.20.0
 
205
  token=token
206
  )
207
 
208
+ progress(0.9, desc="πŸ”§ Configuring environment variables...")
209
  # Create space variables for the dataset repo ID
210
  api.add_space_variable(
211
  repo_id=space_repo_id,
 
214
  token=token
215
  )
216
 
217
+ progress(0.95, desc="πŸ” Setting up secure access...")
218
  # Add the token as a secret for dataset access
219
  api.add_space_secret(
220
  repo_id=space_repo_id,
 
223
  token=token
224
  )
225
 
226
+ progress(1.0, desc="βœ… Complete!")
227
  return f"""βœ… Successfully created Apple Health Landing Zone!
228
 
229
  **Private Dataset:** [{dataset_repo_id}]({dataset_url})
 
261
 
262
  # Create landing zone button click
263
  create_btn.click(
264
+ fn=lambda: gr.update(interactive=False),
265
+ outputs=[create_btn]
266
+ ).then(
267
  fn=create_health_landing_zone,
268
  inputs=[file_input, space_name_input],
269
  outputs=[create_status]
270
+ ).then(
271
+ fn=lambda: gr.update(interactive=True),
272
+ outputs=[create_btn]
273
  )
274
 
275
  return demo