Spaces:
Configuration error
Configuration error
| import os | |
| import json | |
| import uuid | |
| from huggingface_hub import HfApi | |
| from huggingface_hub.utils import HfHubHTTPError | |
| def contribute_to_dataset(results, sample_name, repo_id, token=None): | |
| """ | |
| Safely contribute to dataset with error handling | |
| """ | |
| try: | |
| # Prepare anonymized entry | |
| entry = { | |
| "id": str(uuid.uuid4()), | |
| "sample_name": sample_name, | |
| "modalities": [k for k in results.keys() if k != 'sample_name'], | |
| "results": {k: v for k, v in results.items() if k != 'sample_name'} | |
| } | |
| # Save locally first | |
| os.makedirs("tmp", exist_ok=True) | |
| local_path = f"tmp/{entry['id']}.json" | |
| with open(local_path, "w") as f: | |
| json.dump(entry, f) | |
| # Upload to HF | |
| api = HfApi(token=token) | |
| api.upload_file( | |
| path_or_fileobj=local_path, | |
| path_in_repo=f"entries/{entry['id']}.json", | |
| repo_id=repo_id, | |
| repo_type="dataset", | |
| commit_message=f"Add sample: {sample_name}" | |
| ) | |
| return True, "Successfully contributed to dataset!" | |
| except HfHubHTTPError as e: | |
| if "401" in str(e): | |
| return False, "Authentication required to contribute to dataset." | |
| else: | |
| return False, f"Dataset contribution failed: {str(e)}" | |
| except Exception as e: | |
| return False, f"Unexpected error: {str(e)}" |