Resource table objects
Functions¶
add_automated_history(session: sqlmodel.orm.session.Session) ‑> NoneAdd automated history to the session.
Args: session (Session): SQLAlchemy session.
create_session(*args: Any, **kwargs: Any) ‑> sqlmodel.orm.session.SessionCreate a new SQLModel session.
delete_descendants(session: sqlmodel.orm.session.Session, resource_entry: ResourceTable) ‑> list[str]Recursively delete all children of a resource entry. Args: session (Session): SQLAlchemy session. resource_entry (ResourceTable): The resource entry.
prevent_recursive_parent_relationships(session: sqlmodel.orm.session.Session, _flush_context: Any, _instances: Any) ‑> NoneEvent listener to prevent recursive parent relationships in ResourceTable before flush. Raises ValueError if a cycle is detected.
Classes¶
ResourceHistoryTable(**data)The table for storing information about historical Resources.
Ancestors (in MRO)¶
madsci.resource_manager.resource_tables.ResourceTableBase
madsci.common.types.resource_types.Resource
madsci.common.types.resource_types.definitions.ResourceDefinition
madsci.common.types.base_types.MadsciSQLModel
sqlmodel.main.SQLModel
pydantic.main.BaseModel
Instance variables¶
attributes: dict:base_type: str:capacity: decimal.Decimal | None:change_type: str:changed_at: datetime.datetime | None:child_ids: list[str] | None:columns: int | None:created_at: datetime.datetime | None:custom_attributes: list[madsci.common.types.resource_types.definitions.CustomResourceAttributeDefinition] | None:key: str | None:layers: int | None:locked_by: str | None:locked_until: datetime.datetime | None:owner: dict[str, str]:parent_id: str | None:quantity: decimal.Decimal | None:removed: bool:resource_class: str:resource_description: str | None:resource_id: str:resource_name: str:resource_name_prefix: str | None:resource_url: str | None:rows: int | None:template_name: str | None:updated_at: datetime.datetime | None:version: int | None:ResourceTable(**data)The table for storing information about active Resources, with various utility methods.
Ancestors (in MRO)¶
madsci.resource_manager.resource_tables.ResourceTableBase
madsci.common.types.resource_types.Resource
madsci.common.types.resource_types.definitions.ResourceDefinition
madsci.common.types.base_types.MadsciSQLModel
sqlmodel.main.SQLModel
pydantic.main.BaseModel
Instance variables¶
attributes: dict:base_type: str:capacity: decimal.Decimal | None:children: dict[str, 'ResourceTable']Get the children resources as a dictionary.
Returns: dict: Dictionary of children resources.
children_list: sqlalchemy.orm.base.Mapped[list[madsci.resource_manager.resource_tables.ResourceTable]]:columns: int | None:created_at: datetime.datetime | None:custom_attributes: list[madsci.common.types.resource_types.definitions.CustomResourceAttributeDefinition] | None:key: str | None:layers: int | None:locked_by: str | None:locked_until: datetime.datetime | None:owner: dict[str, str]:parent: sqlalchemy.orm.base.Mapped[madsci.resource_manager.resource_tables.ResourceTable | None]:parent_id: str | None:quantity: decimal.Decimal | None:removed: bool:resource_class: str:resource_description: str | None:resource_id: str:resource_name: str:resource_name_prefix: str | None:resource_url: str | None:rows: int | None:template_name: str | None:updated_at: datetime.datetime | None:Methods¶
check_no_recursive_parent(self) ‑> None- Check for recursive parent relationships (cycles) in the parent chain. Raises ValueError if a cycle is detected.
ResourceTableBase(**data: Any)Base class for all resource-based tables.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors (in MRO)¶
madsci.common.types.resource_types.Resource
madsci.common.types.resource_types.definitions.ResourceDefinition
madsci.common.types.base_types.MadsciSQLModel
sqlmodel.main.SQLModel
pydantic.main.BaseModel
Descendants¶
madsci.resource_manager.resource_tables.ResourceHistoryTable
madsci.resource_manager.resource_tables.ResourceTable
madsci.resource_manager.resource_tables.ResourceTemplateTable
Class variables¶
base_type: str:capacity: decimal.Decimal | None:columns: int | None:created_at: datetime.datetime | None:key: str | None:layers: int | None:locked_by: str | None:locked_until: datetime.datetime | None:owner: dict[str, str]:parent_id: str | None:quantity: decimal.Decimal | None:rows: int | None:template_name: str | None:Static methods¶
from_data_model(resource: typing.Annotated[typing.Annotated[madsci.common.types.resource_types.Resource, Tag(tag='resource')] | typing.Annotated[madsci.common.types.resource_types.Asset, Tag(tag='asset')] | typing.Annotated[madsci.common.types.resource_types.Consumable, Tag(tag='consumable')] | typing.Annotated[madsci.common.types.resource_types.DiscreteConsumable, Tag(tag='discrete_consumable')] | typing.Annotated[madsci.common.types.resource_types.ContinuousConsumable, Tag(tag='continuous_consumable')] | typing.Annotated[madsci.common.types.resource_types.Container, Tag(tag='container')] | typing.Annotated[madsci.common.types.resource_types.Collection, Tag(tag='collection')] | typing.Annotated[madsci.common.types.resource_types.Row, Tag(tag='row')] | typing.Annotated[madsci.common.types.resource_types.Grid, Tag(tag='grid')] | typing.Annotated[madsci.common.types.resource_types.VoxelGrid, Tag(tag='voxel_grid')] | typing.Annotated[madsci.common.types.resource_types.Stack, Tag(tag='stack')] | typing.Annotated[madsci.common.types.resource_types.Queue, Tag(tag='queue')] | typing.Annotated[madsci.common.types.resource_types.Pool, Tag(tag='pool')] | typing.Annotated[madsci.common.types.resource_types.Slot, Tag(tag='slot')], Discriminator(discriminator='base_type', custom_error_type=None, custom_error_message=None, custom_error_context=None)]) ‑> Self- Create a new Resource Table entry from a resource data model.
Methods¶
to_data_model(self, include_children: bool = True) ‑> madsci.common.types.resource_types.Resource | madsci.common.types.resource_types.Asset | madsci.common.types.resource_types.Consumable | madsci.common.types.resource_types.DiscreteConsumable | madsci.common.types.resource_types.ContinuousConsumable | madsci.common.types.resource_types.Container | madsci.common.types.resource_types.Collection | madsci.common.types.resource_types.Row | madsci.common.types.resource_types.Grid | madsci.common.types.resource_types.VoxelGrid | madsci.common.types.resource_types.Stack | madsci.common.types.resource_types.Queue | madsci.common.types.resource_types.Pool | madsci.common.types.resource_types.SlotConvert the table entry to a data model.
Returns: ResourceDataModels: The resource data model.
ResourceTemplateTable(**data)The table for storing Resource Template definitions.
Ancestors (in MRO)¶
madsci.resource_manager.resource_tables.ResourceTableBase
madsci.common.types.resource_types.Resource
madsci.common.types.resource_types.definitions.ResourceDefinition
madsci.common.types.base_types.MadsciSQLModel
sqlmodel.main.SQLModel
pydantic.main.BaseModel
Instance variables¶
attributes: dict:base_type: str:capacity: decimal.Decimal | None:columns: int | None:created_at: datetime.datetime | None:created_by: str | None:custom_attributes: list[madsci.common.types.resource_types.definitions.CustomResourceAttributeDefinition] | None:default_values: dict[str, typing.Any]:description: str:key: str | None:layers: int | None:locked_by: str | None:locked_until: datetime.datetime | None:owner: dict[str, str]:parent_id: str | None:quantity: decimal.Decimal | None:removed: bool:required_overrides: list[str]:resource_class: str:resource_description: str | None:resource_id: str:resource_name: str:resource_name_prefix: str | None:resource_url: str | None:rows: int | None:tags: list[str]:template_name: str:updated_at: datetime.datetime | None:version: str:SchemaVersionTable(**data)Table to track the current schema version of the MADSci database.
Ancestors (in MRO)¶
madsci.common.types.base_types.MadsciSQLModel
sqlmodel.main.SQLModel
pydantic.main.BaseModel
Instance variables¶
applied_at: datetime.datetime | None:migration_notes: str | None:version: str: