Spaces:
Running
Running
add progress bar
Browse files
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
|