mirror of
https://github.com/p2p-ld/nwb-linkml.git
synced 2024-11-14 10:44:28 +00:00
one last model generation
This commit is contained in:
parent
8c76ce82c3
commit
30e042444e
26 changed files with 708 additions and 44 deletions
|
@ -31,6 +31,7 @@ from nwb_linkml.includes.base import (
|
||||||
BASEMODEL_COERCE_VALUE,
|
BASEMODEL_COERCE_VALUE,
|
||||||
BASEMODEL_EXTRA_TO_VALUE,
|
BASEMODEL_EXTRA_TO_VALUE,
|
||||||
BASEMODEL_GETITEM,
|
BASEMODEL_GETITEM,
|
||||||
|
BASEMODEL_SERIALIZER,
|
||||||
)
|
)
|
||||||
from nwb_linkml.includes.hdmf import (
|
from nwb_linkml.includes.hdmf import (
|
||||||
DYNAMIC_TABLE_IMPORTS,
|
DYNAMIC_TABLE_IMPORTS,
|
||||||
|
@ -60,12 +61,20 @@ class NWBPydanticGenerator(PydanticGenerator):
|
||||||
BASEMODEL_CAST_WITH_VALUE,
|
BASEMODEL_CAST_WITH_VALUE,
|
||||||
BASEMODEL_COERCE_CHILD,
|
BASEMODEL_COERCE_CHILD,
|
||||||
BASEMODEL_EXTRA_TO_VALUE,
|
BASEMODEL_EXTRA_TO_VALUE,
|
||||||
|
BASEMODEL_SERIALIZER,
|
||||||
)
|
)
|
||||||
split: bool = True
|
split: bool = True
|
||||||
imports: list[Import] = field(
|
imports: list[Import] = field(
|
||||||
default_factory=lambda: [
|
default_factory=lambda: [
|
||||||
Import(module="numpy", alias="np"),
|
Import(module="numpy", alias="np"),
|
||||||
Import(module="pydantic", objects=[ObjectImport(name="model_validator")]),
|
Import(
|
||||||
|
module="pydantic",
|
||||||
|
objects=[
|
||||||
|
ObjectImport(name="model_validator"),
|
||||||
|
ObjectImport(name="model_serializer"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Import(module="pdb"),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -294,12 +303,15 @@ class AfterGenerateClass:
|
||||||
else: # pragma: no cover - for completeness, shouldn't happen
|
else: # pragma: no cover - for completeness, shouldn't happen
|
||||||
cls.imports = DYNAMIC_TABLE_IMPORTS.model_copy()
|
cls.imports = DYNAMIC_TABLE_IMPORTS.model_copy()
|
||||||
elif cls.cls.name == "VectorData":
|
elif cls.cls.name == "VectorData":
|
||||||
cls.cls.bases = ["VectorDataMixin"]
|
cls.cls.bases = ["VectorDataMixin[T]", "Generic[T]"]
|
||||||
# make ``value`` generic on T
|
# make ``value`` generic on T
|
||||||
if "value" in cls.cls.attributes:
|
if "value" in cls.cls.attributes:
|
||||||
cls.cls.attributes["value"].range = "Optional[T]"
|
cls.cls.attributes["value"].range = "Optional[T]"
|
||||||
elif cls.cls.name == "VectorIndex":
|
elif cls.cls.name == "VectorIndex":
|
||||||
cls.cls.bases = ["VectorIndexMixin"]
|
cls.cls.bases = ["VectorIndexMixin[T]", "Generic[T]"]
|
||||||
|
# make ``value`` generic on T
|
||||||
|
if "value" in cls.cls.attributes:
|
||||||
|
cls.cls.attributes["value"].range = "Optional[T]"
|
||||||
elif cls.cls.name == "DynamicTableRegion":
|
elif cls.cls.name == "DynamicTableRegion":
|
||||||
cls.cls.bases = ["DynamicTableRegionMixin", "VectorData"]
|
cls.cls.bases = ["DynamicTableRegionMixin", "VectorData"]
|
||||||
elif cls.cls.name == "AlignedDynamicTable":
|
elif cls.cls.name == "AlignedDynamicTable":
|
||||||
|
|
|
@ -88,3 +88,17 @@ BASEMODEL_EXTRA_TO_VALUE = """
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
BASEMODEL_SERIALIZER = """
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR":str(e), "TYPE": str(type(self))}
|
||||||
|
if 'Circular reference' in str(e):
|
||||||
|
return {"REFERENCE":"REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = ('indent', 'include', 'exclude', 'context', 'by_alias', 'exclude_unset', 'exclude_defaults', 'exclude_none', 'round_trip', 'warnings', 'serialize_as_any')
|
||||||
|
return self.model_dump_json(**{k:v for k,v in info.__dict__.items() if k in json_dump_fields})
|
||||||
|
"""
|
||||||
|
|
|
@ -171,23 +171,7 @@ def _load_node(
|
||||||
del args[".specloc"]
|
del args[".specloc"]
|
||||||
|
|
||||||
model = provider.get_class(obj.attrs["namespace"], obj.attrs["neurodata_type"])
|
model = provider.get_class(obj.attrs["namespace"], obj.attrs["neurodata_type"])
|
||||||
# try:
|
|
||||||
return model(**args)
|
return model(**args)
|
||||||
# except ValidationError as e1:
|
|
||||||
# # try to restack extra fields into ``value``
|
|
||||||
# if "value" in model.model_fields:
|
|
||||||
# value_dict = {
|
|
||||||
# key: val for key, val in args.items() if key not in model.model_fields
|
|
||||||
# }
|
|
||||||
# for k in value_dict:
|
|
||||||
# del args[k]
|
|
||||||
# args["value"] = value_dict
|
|
||||||
# try:
|
|
||||||
# return model(**args)
|
|
||||||
# except Exception as e2:
|
|
||||||
# raise e2 from e1
|
|
||||||
# else:
|
|
||||||
# raise e1
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if "name" in args:
|
if "name" in args:
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
Placeholder test module to test reading from pynwb-generated NWB file
|
Placeholder test module to test reading from pynwb-generated NWB file
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import pdb
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
@ -11,6 +12,7 @@ from numpydantic.interface.hdf5 import H5Proxy
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from pynwb import NWBHDF5IO
|
from pynwb import NWBHDF5IO
|
||||||
from pynwb import NWBFile as PyNWBFile
|
from pynwb import NWBFile as PyNWBFile
|
||||||
|
from pydantic_core import to_json
|
||||||
|
|
||||||
from nwb_linkml.io.hdf5 import HDF5IO
|
from nwb_linkml.io.hdf5 import HDF5IO
|
||||||
from nwb_models.models import NWBFile
|
from nwb_models.models import NWBFile
|
||||||
|
@ -29,6 +31,13 @@ def test_read_from_nwbfile(nwb_file):
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def read_nwbfile(nwb_file) -> NWBFile:
|
def read_nwbfile(nwb_file) -> NWBFile:
|
||||||
res = HDF5IO(nwb_file).read()
|
res = HDF5IO(nwb_file).read()
|
||||||
|
|
||||||
|
def fallback(*args, **kwargs):
|
||||||
|
pdb.set_trace()
|
||||||
|
|
||||||
|
to_json(res, fallback=fallback)
|
||||||
|
|
||||||
|
pdb.set_trace()
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,6 +72,7 @@ def test_nwbfile_base(read_nwbfile, read_pynwb):
|
||||||
"""
|
"""
|
||||||
Base attributes on top-level nwbfile are correct
|
Base attributes on top-level nwbfile are correct
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_compare_attrs(read_nwbfile, read_pynwb)
|
_compare_attrs(read_nwbfile, read_pynwb)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -32,6 +33,7 @@ from pydantic import (
|
||||||
RootModel,
|
RootModel,
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
field_validator,
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -134,6 +136,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...core.v2_7_0.core_nwb_base import (
|
from ...core.v2_7_0.core_nwb_base import (
|
||||||
NWBDataInterface,
|
NWBDataInterface,
|
||||||
|
@ -115,6 +124,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -8,7 +9,15 @@ from enum import Enum
|
||||||
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...core.v2_7_0.core_nwb_base import NWBContainer
|
from ...core.v2_7_0.core_nwb_base import NWBContainer
|
||||||
|
|
||||||
|
@ -108,6 +117,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -17,6 +18,7 @@ from pydantic import (
|
||||||
RootModel,
|
RootModel,
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
field_validator,
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -126,6 +128,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -17,6 +18,7 @@ from pydantic import (
|
||||||
RootModel,
|
RootModel,
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
field_validator,
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -124,6 +126,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...core.v2_7_0.core_nwb_base import (
|
from ...core.v2_7_0.core_nwb_base import (
|
||||||
Images,
|
Images,
|
||||||
|
@ -137,6 +146,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -17,6 +18,7 @@ from pydantic import (
|
||||||
RootModel,
|
RootModel,
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
field_validator,
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -133,6 +135,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...core.v2_7_0.core_nwb_base import (
|
from ...core.v2_7_0.core_nwb_base import (
|
||||||
Image,
|
Image,
|
||||||
|
@ -116,6 +125,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -17,6 +18,7 @@ from pydantic import (
|
||||||
RootModel,
|
RootModel,
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
field_validator,
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -126,6 +128,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...core.v2_7_0.core_nwb_base import (
|
from ...core.v2_7_0.core_nwb_base import (
|
||||||
NWBContainer,
|
NWBContainer,
|
||||||
|
@ -115,6 +124,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -17,6 +18,7 @@ from pydantic import (
|
||||||
RootModel,
|
RootModel,
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
field_validator,
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -133,6 +135,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...core.v2_7_0.core_nwb_base import NWBDataInterface
|
from ...core.v2_7_0.core_nwb_base import NWBDataInterface
|
||||||
|
|
||||||
|
@ -109,6 +118,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -8,7 +9,15 @@ from enum import Enum
|
||||||
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...core.v2_7_0.core_nwb_base import (
|
from ...core.v2_7_0.core_nwb_base import (
|
||||||
Image,
|
Image,
|
||||||
|
@ -280,6 +289,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -8,7 +9,15 @@ from enum import Enum
|
||||||
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
metamodel_version = "None"
|
metamodel_version = "None"
|
||||||
|
@ -106,6 +115,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...hdmf_common.v1_8_0.hdmf_common_base import Container
|
from ...hdmf_common.v1_8_0.hdmf_common_base import Container
|
||||||
|
|
||||||
|
@ -109,6 +118,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -32,6 +33,7 @@ from pydantic import (
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
ValidatorFunctionWrapHandler,
|
ValidatorFunctionWrapHandler,
|
||||||
field_validator,
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -133,6 +135,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
@ -908,7 +936,7 @@ linkml_meta = LinkMLMeta(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class VectorData(VectorDataMixin):
|
class VectorData(VectorDataMixin[T], Generic[T]):
|
||||||
"""
|
"""
|
||||||
An n-dimensional dataset representing a column of a DynamicTable. If used without an accompanying VectorIndex, first dimension is along the rows of the DynamicTable and each step along the first dimension is a cell of the larger table. VectorData can also be used to represent a ragged array if paired with a VectorIndex. This allows for storing arrays of varying length in a single cell of the DynamicTable by indexing into this VectorData. The first vector is at VectorData[0:VectorIndex[0]]. The second vector is at VectorData[VectorIndex[0]:VectorIndex[1]], and so on.
|
An n-dimensional dataset representing a column of a DynamicTable. If used without an accompanying VectorIndex, first dimension is along the rows of the DynamicTable and each step along the first dimension is a cell of the larger table. VectorData can also be used to represent a ragged array if paired with a VectorIndex. This allows for storing arrays of varying length in a single cell of the DynamicTable by indexing into this VectorData. The first vector is at VectorData[0:VectorIndex[0]]. The second vector is at VectorData[VectorIndex[0]:VectorIndex[1]], and so on.
|
||||||
"""
|
"""
|
||||||
|
@ -922,7 +950,7 @@ class VectorData(VectorDataMixin):
|
||||||
value: Optional[T] = Field(None)
|
value: Optional[T] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class VectorIndex(VectorIndexMixin):
|
class VectorIndex(VectorIndexMixin[T], Generic[T]):
|
||||||
"""
|
"""
|
||||||
Used with VectorData to encode a ragged array. An array of indices into the first dimension of the target VectorData, and forming a map between the rows of a DynamicTable and the indices of the VectorData. The name of the VectorIndex is expected to be the name of the target VectorData object followed by \"_index\".
|
Used with VectorData to encode a ragged array. An array of indices into the first dimension of the target VectorData, and forming a map between the rows of a DynamicTable and the indices of the VectorData. The name of the VectorIndex is expected to be the name of the target VectorData object followed by \"_index\".
|
||||||
"""
|
"""
|
||||||
|
@ -936,14 +964,7 @@ class VectorIndex(VectorIndexMixin):
|
||||||
None, description="""Reference to the target dataset that this index applies to."""
|
None, description="""Reference to the target dataset that this index applies to."""
|
||||||
)
|
)
|
||||||
description: str = Field(..., description="""Description of what these vectors represent.""")
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
value: Optional[
|
value: Optional[T] = Field(None)
|
||||||
Union[
|
|
||||||
NDArray[Shape["* dim0"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
|
||||||
]
|
|
||||||
] = Field(None)
|
|
||||||
|
|
||||||
|
|
||||||
class ElementIdentifiers(ElementIdentifiersMixin, Data):
|
class ElementIdentifiers(ElementIdentifiersMixin, Data):
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -8,7 +9,15 @@ from enum import Enum
|
||||||
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...hdmf_common.v1_8_0.hdmf_common_base import Container, Data, SimpleMultiContainer
|
from ...hdmf_common.v1_8_0.hdmf_common_base import Container, Data, SimpleMultiContainer
|
||||||
from ...hdmf_common.v1_8_0.hdmf_common_sparse import CSRMatrix
|
from ...hdmf_common.v1_8_0.hdmf_common_sparse import CSRMatrix
|
||||||
|
@ -117,6 +126,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...hdmf_common.v1_8_0.hdmf_common_table import VectorData
|
from ...hdmf_common.v1_8_0.hdmf_common_table import VectorData
|
||||||
|
|
||||||
|
@ -109,6 +118,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -9,7 +10,15 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...hdmf_common.v1_8_0.hdmf_common_base import Container, Data
|
from ...hdmf_common.v1_8_0.hdmf_common_base import Container, Data
|
||||||
|
|
||||||
|
@ -109,6 +118,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pdb
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
|
@ -8,7 +9,15 @@ from enum import Enum
|
||||||
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import (
|
||||||
|
BaseModel,
|
||||||
|
ConfigDict,
|
||||||
|
Field,
|
||||||
|
RootModel,
|
||||||
|
field_validator,
|
||||||
|
model_serializer,
|
||||||
|
model_validator,
|
||||||
|
)
|
||||||
|
|
||||||
from ...hdmf_common.v1_8_0.hdmf_common_base import Container, Data, SimpleMultiContainer
|
from ...hdmf_common.v1_8_0.hdmf_common_base import Container, Data, SimpleMultiContainer
|
||||||
from ...hdmf_common.v1_8_0.hdmf_common_sparse import CSRMatrix
|
from ...hdmf_common.v1_8_0.hdmf_common_sparse import CSRMatrix
|
||||||
|
@ -127,6 +136,32 @@ class ConfiguredBaseModel(BaseModel):
|
||||||
v["value"] = extras
|
v["value"] = extras
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
@model_serializer(mode="wrap", when_used="json")
|
||||||
|
def serialize_model(self, nxt, info) -> Dict[str, Any]:
|
||||||
|
try:
|
||||||
|
return nxt(self, info)
|
||||||
|
except Exception as e:
|
||||||
|
return {"ERROR": str(e), "TYPE": str(type(self))}
|
||||||
|
if "Circular reference" in str(e):
|
||||||
|
return {"REFERENCE": "REFERENCE"}
|
||||||
|
pdb.set_trace()
|
||||||
|
json_dump_fields = (
|
||||||
|
"indent",
|
||||||
|
"include",
|
||||||
|
"exclude",
|
||||||
|
"context",
|
||||||
|
"by_alias",
|
||||||
|
"exclude_unset",
|
||||||
|
"exclude_defaults",
|
||||||
|
"exclude_none",
|
||||||
|
"round_trip",
|
||||||
|
"warnings",
|
||||||
|
"serialize_as_any",
|
||||||
|
)
|
||||||
|
return self.model_dump_json(
|
||||||
|
**{k: v for k, v in info.__dict__.items() if k in json_dump_fields}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LinkMLMeta(RootModel):
|
class LinkMLMeta(RootModel):
|
||||||
root: Dict[str, Any] = {}
|
root: Dict[str, Any] = {}
|
||||||
|
|
|
@ -5,7 +5,7 @@ annotations:
|
||||||
value: 'False'
|
value: 'False'
|
||||||
namespace:
|
namespace:
|
||||||
tag: namespace
|
tag: namespace
|
||||||
value: hdmf-experimental
|
value: core
|
||||||
description: Adapter objects to mimic the behavior of elements in the nwb-schema-language
|
description: Adapter objects to mimic the behavior of elements in the nwb-schema-language
|
||||||
id: nwb.language
|
id: nwb.language
|
||||||
imports:
|
imports:
|
||||||
|
|
|
@ -5,7 +5,7 @@ annotations:
|
||||||
value: 'False'
|
value: 'False'
|
||||||
namespace:
|
namespace:
|
||||||
tag: namespace
|
tag: namespace
|
||||||
value: hdmf-experimental
|
value: core
|
||||||
description: Adapter objects to mimic the behavior of elements in the nwb-schema-language
|
description: Adapter objects to mimic the behavior of elements in the nwb-schema-language
|
||||||
id: nwb.language
|
id: nwb.language
|
||||||
imports:
|
imports:
|
||||||
|
|
Loading…
Reference in a new issue