Spaces:
Sleeping
Sleeping
Commit
·
355c69f
1
Parent(s):
146d64e
revert
Browse files
app.py
CHANGED
@@ -37,57 +37,6 @@ def process_file(file):
|
|
37 |
|
38 |
return results, report
|
39 |
|
40 |
-
def on_validate_stream(file):
|
41 |
-
results = []
|
42 |
-
|
43 |
-
def add_and_yield(name, passed, message, status, progress_message=None):
|
44 |
-
results.append((name, passed, message, status))
|
45 |
-
html = build_results_html(results)
|
46 |
-
return (
|
47 |
-
gr.update(value=html, visible=True),
|
48 |
-
gr.update(value=f"<div class='progress-status'>{progress_message}</div>", visible=True) if progress_message else gr.update(),
|
49 |
-
gr.update(visible=False),
|
50 |
-
None,
|
51 |
-
None
|
52 |
-
)
|
53 |
-
|
54 |
-
if file is None:
|
55 |
-
yield gr.update(visible=False), gr.update(value="No file selected", visible=True), gr.update(visible=False), None, None
|
56 |
-
return
|
57 |
-
|
58 |
-
filename = file.name.split("/")[-1]
|
59 |
-
|
60 |
-
yield gr.update(visible=False), gr.update(value="<div class='progress-status'>🔍 Starting validation...</div>", visible=True), gr.update(visible=False), None, None
|
61 |
-
|
62 |
-
# Step 1
|
63 |
-
json_valid, json_message, json_data = validate_json(file.name)
|
64 |
-
yield add_and_yield("JSON Format Validation", json_valid, json_message, "pass" if json_valid else "error", "✅ JSON check done. Checking Croissant schema...")
|
65 |
-
if not json_valid:
|
66 |
-
return
|
67 |
-
|
68 |
-
# Step 2
|
69 |
-
croissant_valid, croissant_message = validate_croissant(json_data)
|
70 |
-
yield add_and_yield("Croissant Schema Validation", croissant_valid, croissant_message, "pass" if croissant_valid else "error", "✅ Croissant schema check done. Testing record generation...")
|
71 |
-
if not croissant_valid:
|
72 |
-
return
|
73 |
-
|
74 |
-
# Step 3
|
75 |
-
records_valid, records_message, records_status = validate_records(json_data)
|
76 |
-
yield add_and_yield("Records Generation Test", records_valid, records_message, records_status, "✅ Record test complete.")
|
77 |
-
|
78 |
-
# Generate and save report
|
79 |
-
report = generate_validation_report(filename, json_data, results)
|
80 |
-
report_filename = f"report_croissant-validation_{json_data.get('name', 'unnamed')}.md"
|
81 |
-
with open(report_filename, "w") as f:
|
82 |
-
f.write(report)
|
83 |
-
|
84 |
-
# Final state
|
85 |
-
yield gr.update(value=build_results_html(results), visible=True), \
|
86 |
-
gr.update(visible=False), \
|
87 |
-
gr.update(visible=True), \
|
88 |
-
report, \
|
89 |
-
report_filename
|
90 |
-
|
91 |
def create_ui():
|
92 |
with gr.Blocks(theme=gr.themes.Soft()) as app:
|
93 |
gr.HTML("<p align='center'><img src='https://upload.wikimedia.org/wikipedia/en/0/08/Logo_for_Conference_on_Neural_Information_Processing_Systems.svg' alt='NeurIPS Logo' width='400'/></p>")
|
@@ -549,7 +498,7 @@ def create_ui():
|
|
549 |
report if report else None, # report_text
|
550 |
report_filename if report else None # report_md
|
551 |
]
|
552 |
-
|
553 |
# Connect UI events to functions with updated outputs
|
554 |
tabs.select(
|
555 |
on_tab_change,
|
@@ -578,6 +527,17 @@ def create_ui():
|
|
578 |
None # report_md
|
579 |
]
|
580 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
581 |
fetch_btn.click(
|
582 |
fetch_from_url,
|
583 |
inputs=url_input,
|
@@ -590,19 +550,9 @@ def create_ui():
|
|
590 |
<p>Learn more about <a href="https://github.com/mlcommons/croissant" target="_blank">Croissant</a>.</p>
|
591 |
</div>
|
592 |
""")
|
593 |
-
|
594 |
-
def setup_events():
|
595 |
-
validate_btn.click(
|
596 |
-
fn=on_validate_stream,
|
597 |
-
inputs=[file_input],
|
598 |
-
outputs=[validation_results, validation_progress, report_group, report_text, report_md],
|
599 |
-
stream=True
|
600 |
-
)
|
601 |
-
|
602 |
-
app.load(fn=setup_events)
|
603 |
|
604 |
return app
|
605 |
|
606 |
if __name__ == "__main__":
|
607 |
app = create_ui()
|
608 |
-
app.
|
|
|
37 |
|
38 |
return results, report
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
def create_ui():
|
41 |
with gr.Blocks(theme=gr.themes.Soft()) as app:
|
42 |
gr.HTML("<p align='center'><img src='https://upload.wikimedia.org/wikipedia/en/0/08/Logo_for_Conference_on_Neural_Information_Processing_Systems.svg' alt='NeurIPS Logo' width='400'/></p>")
|
|
|
498 |
report if report else None, # report_text
|
499 |
report_filename if report else None # report_md
|
500 |
]
|
501 |
+
|
502 |
# Connect UI events to functions with updated outputs
|
503 |
tabs.select(
|
504 |
on_tab_change,
|
|
|
527 |
None # report_md
|
528 |
]
|
529 |
|
530 |
+
validate_btn.click(
|
531 |
+
fn=show_progress,
|
532 |
+
inputs=None,
|
533 |
+
outputs=[validation_results, validation_progress, report_group, report_text, report_md],
|
534 |
+
queue=False
|
535 |
+
).then(
|
536 |
+
fn=on_validate,
|
537 |
+
inputs=file_input,
|
538 |
+
outputs=[validation_results, validation_progress, report_group, report_text, report_md]
|
539 |
+
)
|
540 |
+
|
541 |
fetch_btn.click(
|
542 |
fetch_from_url,
|
543 |
inputs=url_input,
|
|
|
550 |
<p>Learn more about <a href="https://github.com/mlcommons/croissant" target="_blank">Croissant</a>.</p>
|
551 |
</div>
|
552 |
""")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
553 |
|
554 |
return app
|
555 |
|
556 |
if __name__ == "__main__":
|
557 |
app = create_ui()
|
558 |
+
app.launch()
|