Spaces:
Running
Running
| import pandas as pd | |
| import streamlit as st | |
| from core.state import Metadata | |
| import mlcroissant as mlc | |
| def render_jsonld(): | |
| if not st.session_state[Metadata]: | |
| return st.code({}, language="json") | |
| try: | |
| croissant = st.session_state[Metadata] | |
| distribution = [] | |
| for file in croissant.distribution: | |
| distribution.append( | |
| mlc.FileObject( | |
| id=file.id, | |
| name=file.name, | |
| description=file.description, | |
| content_url=file.content_url, | |
| encoding_format=file.encoding_format, | |
| sha256=file.sha256, | |
| ) | |
| ) | |
| record_sets = [] | |
| for record_set in croissant.record_sets: | |
| fields = [] | |
| for _, field in record_set.get("fields", pd.DataFrame()).iterrows(): | |
| fields.append( | |
| mlc.Field( | |
| id=field["id"], | |
| name=field["name"], | |
| description=field["description"], | |
| data_types=field["data_type"], | |
| source=mlc.Source( | |
| distribution=file.name, | |
| extract=mlc.Extract(column=field["name"]), | |
| ), | |
| ) | |
| ) | |
| record_sets.append( | |
| mlc.RecordSet( | |
| id=record_set["id"], | |
| name=record_set["name"], | |
| description=record_set["description"], | |
| fields=fields, | |
| ) | |
| ) | |
| if croissant.metadata: | |
| metadata = mlc.Metadata( | |
| id=croissant.metadata.id, | |
| name=croissant.metadata.name, | |
| cite_as=croissant.metadata.cite_as, | |
| license=croissant.metadata.license, | |
| description=croissant.metadata.description, | |
| url=croissant.metadata.url, | |
| distribution=distribution, | |
| record_sets=record_sets, | |
| ) | |
| return st.json(metadata.to_json(), expanded=True) | |
| except Exception as exception: | |
| return st.code(exception, language="text") | |