nwb-linkml/nwb_linkml/models/hdmf_common_base.py

56 lines
No EOL
1.7 KiB
Python

from __future__ import annotations
from datetime import datetime, date
from enum import Enum
from typing import List, Dict, Optional, Any, Union
from pydantic import BaseModel as BaseModel, Field
from nptyping import NDArray, Shape, Float, Float32, Double, Float64, LongLong, Int64, Int, Int32, Int16, Short, Int8, UInt, UInt32, UInt16, UInt8, UInt64, Number, String, Unicode, Unicode, Unicode, String, Bool, Datetime64
import sys
if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal
metamodel_version = "None"
version = "None"
class ConfiguredBaseModel(BaseModel,
validate_assignment = True,
validate_default = True,
extra = 'forbid',
arbitrary_types_allowed = True,
use_enum_values = True):
pass
class Data(ConfiguredBaseModel):
"""
An abstract data type for a dataset.
"""
name:str= Field(...)
class Container(ConfiguredBaseModel):
"""
An abstract data type for a group storing collections of data and metadata. Base type for all data and metadata containers.
"""
name:str= Field(...)
class SimpleMultiContainer(Container):
"""
A simple Container for holding onto multiple containers.
"""
name:str= Field(...)
data:Optional[List[Data]]= Field(default_factory=list, description="""Data objects held within this SimpleMultiContainer.""")
container:Optional[List[Container]]= Field(default_factory=list, description="""Container objects held within this SimpleMultiContainer.""")
# Model rebuild
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
Data.model_rebuild()
Container.model_rebuild()
SimpleMultiContainer.model_rebuild()