kithairon.labware.PlateInfo

aoeu

class kithairon.labware.PlateInfo(
*,
plate_type: str,
plate_format: str,
usage: str,
fluid: str | None = None,
manufacturer: str,
lot_number: str,
part_number: str,
rows: int,
cols: int,
a1_offset_y: int,
center_spacing_x: int,
center_spacing_y: int,
plate_height: int,
skirt_height: int,
well_width: int,
well_length: int,
well_capacity: int,
bottom_inset: float,
center_well_pos_x: float,
center_well_pos_y: float,
min_well_vol: float | None = None,
max_well_vol: float | None = None,
max_vol_total: float | None = None,
min_volume: float | None = None,
drop_volume: float | None = None,
)

Bases: BaseXmlModel

Plate type information for a single plate.

__init__(**data: Any) None

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.

self is explicitly positional-only to allow self as a field name.

copy(
*,
include: AbstractSetIntStr | MappingIntStrAny | None = None,
exclude: AbstractSetIntStr | MappingIntStrAny | None = None,
update: Dict[str, Any] | None = None,
deep: bool = False,
) Model

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`py data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Args:

include: Optional set or mapping specifying which fields to include in the copied model. exclude: Optional set or mapping specifying which fields to exclude in the copied model. update: Optional dictionary of field-value pairs to override field values in the copied model. deep: If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

classmethod from_xml(
source: str | bytes,
context: Dict[str, Any] | None = None,
) ModelT

Deserializes an xml string to an object of cls type.

Parameters:
  • source – xml string

  • context – pydantic validation context

Returns:

deserialized object

classmethod from_xml_tree(
root: Element,
context: Dict[str, Any] | None = None,
) ModelT

Deserializes an xml element tree to an object of cls type.

Parameters:
  • root – xml element to deserialize the object from

  • context – pydantic validation context

Returns:

deserialized object

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set: set[str] | None = None, **values: Any) Model

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = 'allow' was set since it adds all passed values

Args:

_fields_set: The set of field names accepted for the Model instance. values: Trusted or pre-validated data dictionary.

Returns:

A new instance of the Model class with validated data.

model_copy(
*,
update: dict[str, Any] | None = None,
deep: bool = False,
) Model

Usage docs: https://docs.pydantic.dev/2.6/concepts/serialization/#model_copy

Returns a copy of the model.

Args:
update: Values to change/add in the new model. Note: the data is not validated

before creating the new model. You should trust this data.

deep: Set to True to make a deep copy of the model.

Returns:

New model instance.

model_dump(
*,
mode: Literal['json', 'python'] | str = 'python',
include: IncEx = None,
exclude: IncEx = None,
by_alias: bool = False,
exclude_unset: bool = False,
exclude_defaults: bool = False,
exclude_none: bool = False,
round_trip: bool = False,
warnings: bool = True,
) dict[str, Any]

Usage docs: https://docs.pydantic.dev/2.6/concepts/serialization/#modelmodel_dump

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Args:
mode: The mode in which to_python should run.

If mode is ‘json’, the output will only contain JSON serializable types. If mode is ‘python’, the output may contain non-JSON-serializable Python objects.

include: A list of fields to include in the output. exclude: A list of fields to exclude from the output. by_alias: Whether to use the field’s alias in the dictionary key if defined. exclude_unset: Whether to exclude fields that have not been explicitly set. exclude_defaults: Whether to exclude fields that are set to their default value. exclude_none: Whether to exclude fields that have a value of None. round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T]. warnings: Whether to log warnings when invalid fields are encountered.

Returns:

A dictionary representation of the model.

model_dump_json(
*,
indent: int | None = None,
include: IncEx = None,
exclude: IncEx = None,
by_alias: bool = False,
exclude_unset: bool = False,
exclude_defaults: bool = False,
exclude_none: bool = False,
round_trip: bool = False,
warnings: bool = True,
) str

Usage docs: https://docs.pydantic.dev/2.6/concepts/serialization/#modelmodel_dump_json

Generates a JSON representation of the model using Pydantic’s to_json method.

Args:

indent: Indentation to use in the JSON output. If None is passed, the output will be compact. include: Field(s) to include in the JSON output. exclude: Field(s) to exclude from the JSON output. by_alias: Whether to serialize using field aliases. exclude_unset: Whether to exclude fields that have not been explicitly set. exclude_defaults: Whether to exclude fields that are set to their default value. exclude_none: Whether to exclude fields that have a value of None. round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T]. warnings: Whether to log warnings when invalid fields are encountered.

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields: ClassVar[dict[str, FieldInfo]] = {'a1_offset_y': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='a1offsety', nillable=False), 'bottom_inset': XmlEntityInfo(annotation=float, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='bottominset', nillable=False), 'center_spacing_x': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='centerspacingx', nillable=False), 'center_spacing_y': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='centerspacingy', nillable=False), 'center_well_pos_x': XmlEntityInfo(annotation=float, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='centerwellposx', nillable=False), 'center_well_pos_y': XmlEntityInfo(annotation=float, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='centerwellposy', nillable=False), 'cols': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='cols', nillable=False), 'drop_volume': XmlEntityInfo(annotation=Union[float, NoneType], required=False, location=<EntityLocation.ATTRIBUTE: 2>, path='dropvolume', nillable=False), 'fluid': XmlEntityInfo(annotation=Union[str, NoneType], required=False, location=<EntityLocation.ATTRIBUTE: 2>, path='fluid', nillable=False), 'lot_number': XmlEntityInfo(annotation=str, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='lotnumber', nillable=False), 'manufacturer': XmlEntityInfo(annotation=str, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='manufacturer', nillable=False), 'max_vol_total': XmlEntityInfo(annotation=Union[float, NoneType], required=False, location=<EntityLocation.ATTRIBUTE: 2>, path='maxvoltotal', nillable=False), 'max_well_vol': XmlEntityInfo(annotation=Union[float, NoneType], required=False, location=<EntityLocation.ATTRIBUTE: 2>, path='maxwellvol', nillable=False), 'min_volume': XmlEntityInfo(annotation=Union[float, NoneType], required=False, location=<EntityLocation.ATTRIBUTE: 2>, path='minvolume', nillable=False), 'min_well_vol': XmlEntityInfo(annotation=Union[float, NoneType], required=False, location=<EntityLocation.ATTRIBUTE: 2>, path='minwellvol', nillable=False), 'part_number': XmlEntityInfo(annotation=str, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='partnumber', nillable=False), 'plate_format': XmlEntityInfo(annotation=str, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='plateformat', nillable=False), 'plate_height': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='plateheight', nillable=False), 'plate_type': XmlEntityInfo(annotation=str, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='platetype', nillable=False), 'rows': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='rows', nillable=False), 'skirt_height': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='skirtheight', nillable=False), 'usage': XmlEntityInfo(annotation=str, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='usage', nillable=False), 'well_capacity': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='wellcapacity', nillable=False), 'well_length': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='welllength', nillable=False), 'well_width': XmlEntityInfo(annotation=int, required=True, location=<EntityLocation.ATTRIBUTE: 2>, path='wellwidth', nillable=False)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

property model_fields_set: set[str]

Returns the set of fields that have been explicitly set on this model instance.

Returns:
A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(
by_alias: bool = True,
ref_template: str = '#/$defs/{model}',
schema_generator: type[~pydantic.json_schema.GenerateJsonSchema] = <class 'pydantic.json_schema.GenerateJsonSchema'>,
mode: ~typing.Literal['validation',
'serialization'] = 'validation',
) dict[str, Any]

Generates a JSON schema for a model class.

Args:

by_alias: Whether to use attribute aliases or not. ref_template: The reference template. schema_generator: To override the logic used to generate the JSON schema, as a subclass of

GenerateJsonSchema with your desired modifications

mode: The mode in which to generate the schema.

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params: tuple[type[Any], ...]) str

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Args:
params: Tuple of types of the class. Given a generic class

Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError: Raised when trying to generate concrete names for non-generic models.

model_post_init(_BaseModel__context: Any) None

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

classmethod model_rebuild(**kwargs: Any) None

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Args:

force: Whether to force the rebuilding of the model schema, defaults to False. raise_errors: Whether to raise errors, defaults to True. _parent_namespace_depth: The depth level of the parent namespace, defaults to 2. _types_namespace: The types namespace, defaults to None.

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(
obj: Any,
*,
strict: bool | None = None,
from_attributes: bool | None = None,
context: dict[str, Any] | None = None,
) Model

Validate a pydantic model instance.

Args:

obj: The object to validate. strict: Whether to enforce types strictly. from_attributes: Whether to extract data from object attributes. context: Additional context to pass to the validator.

Raises:

ValidationError: If the object could not be validated.

Returns:

The validated model instance.

classmethod model_validate_json(
json_data: str | bytes | bytearray,
*,
strict: bool | None = None,
context: dict[str, Any] | None = None,
) Model

Usage docs: https://docs.pydantic.dev/2.6/concepts/json/#json-parsing

Validate the given JSON data against the Pydantic model.

Args:

json_data: The JSON data to validate. strict: Whether to enforce types strictly. context: Extra variables to pass to the validator.

Returns:

The validated Pydantic model.

Raises:

ValueError: If json_data is not a JSON string.

classmethod model_validate_strings(
obj: Any,
*,
strict: bool | None = None,
context: dict[str, Any] | None = None,
) Model

Validate the given object contains string data against the Pydantic model.

Args:

obj: The object contains string data to validate. strict: Whether to enforce types strictly. context: Extra variables to pass to the validator.

Returns:

The validated Pydantic model.

to_xml(*, skip_empty: bool = False, **kwargs: Any) str | bytes

Serializes the object to an xml string.

Parameters:
  • skip_empty – skip empty elements (elements without sub-elements, attributes and text, Nones)

  • kwargs – additional xml serialization arguments

Returns:

object xml representation

to_xml_tree(*, skip_empty: bool = False) Element

Serializes the object to an xml tree.

Parameters:

skip_empty – skip empty elements (elements without sub-elements, attributes and text, Nones)

Returns:

object xml representation