Skip to content

Commit e73883e

Browse files
authored
external links (#559)
* external links * Code Ocean tweak
1 parent 7a58606 commit e73883e

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

src/aind_data_schema/metadata.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from datetime import datetime
44
from enum import Enum
5+
from typing import Dict, List
56

67
from pydantic import Extra, Field
78

@@ -18,6 +19,12 @@ class MetadataStatus(Enum):
1819
UNKNOWN = "Unknown"
1920

2021

22+
class ExternalPlatforms(Enum):
23+
"""External Platforms of Data Assets."""
24+
25+
CODEOCEAN = "Code Ocean"
26+
27+
2128
class Metadata(AindCoreModel):
2229
"""The records in the Data Asset Collection needs to contain certain fields
2330
to easily query and index the data."""
@@ -48,6 +55,9 @@ class Metadata(AindCoreModel):
4855
)
4956
metadata_status: MetadataStatus = Field(..., title=" Metadata Status", description="The status of the metadata.")
5057
schema_version: str = Field("0.0.1", title="Schema Version", const=True)
58+
external_links: List[Dict[ExternalPlatforms, str]] = Field(
59+
..., title="External Links", description="Links to the data asset on different platforms."
60+
)
5161
subject: Subject = Field(
5262
...,
5363
title="Subject",

tests/test_metadata.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import unittest
44
from datetime import datetime
55

6-
from aind_data_schema.metadata import Metadata, MetadataStatus
6+
from aind_data_schema.metadata import ExternalPlatforms, Metadata, MetadataStatus
77
from aind_data_schema.procedures import Procedures
88
from aind_data_schema.subject import Subject
99

@@ -22,6 +22,7 @@ def test_constructors(self):
2222
location="Test Location",
2323
metadata_status=MetadataStatus.VALID,
2424
subject=Subject.construct(),
25+
external_links=[{ExternalPlatforms.CODEOCEAN: "abc-1234"}],
2526
)
2627
self.assertIsNotNone(d1)
2728
self.assertEqual(d1.schema_version, "0.0.1")
@@ -36,9 +37,11 @@ def test_constructors(self):
3637
metadata_status=MetadataStatus.VALID,
3738
subject=Subject.construct(),
3839
procedures=Procedures.construct(),
40+
external_links=[{ExternalPlatforms.CODEOCEAN: "abc-1234"}],
3941
)
4042
self.assertIsNotNone(d2)
4143
self.assertTrue(hasattr(d2, "procedures"))
44+
self.assertTrue(hasattr(d2, "external_links"))
4245

4346

4447
if __name__ == "__main__":

0 commit comments

Comments
 (0)