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
|