testframework.inventory.datamodel module

class testframework.inventory.datamodel.Battery(*, hardwareType: str, serialNumber: str, capacity: int, softwareVersion: str, slave: List[SlaveItem] | None = None)

Bases: BaseModel

Battery in PV system

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'capacity': FieldInfo(annotation=int, required=True, description='Capacity in Wh'), 'hardwareType': FieldInfo(annotation=str, required=True), 'serialNumber': FieldInfo(annotation=str, required=True, description='Serial number; For FoxESS the detail of battery master'), 'slave': FieldInfo(annotation=Union[List[SlaveItem], NoneType], required=False, default=None, description='For FoxESS slave details; For Huawei battery pack details'), 'softwareVersion': FieldInfo(annotation=str, required=True, description='Battery version; For FoxESS the detail of battery master')}

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

This replaces Model.__fields__ from Pydantic V1.

serialNumber: str
slave: List[SlaveItem] | None
softwareVersion: str
class testframework.inventory.datamodel.DcBench(*, id: Annotated[str, _PydanticGeneralMetadata(pattern='^DCBENCH_[0-9][0-9]')], name: str, testBrain: TestBrain, inventory: Inventory)

Bases: BaseModel

DC bench metadata

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'id': FieldInfo(annotation=str, required=True, description='Identifier of the testbench of format ^DCBENCH_[0-9][0-9]', metadata=[_PydanticGeneralMetadata(pattern='^DCBENCH_[0-9][0-9]')]), 'inventory': FieldInfo(annotation=Inventory, required=True), 'name': FieldInfo(annotation=str, required=True, description='Extended name of the DC bench'), 'testBrain': FieldInfo(annotation=TestBrain, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

name: str
testBrain: TestBrain
class testframework.inventory.datamodel.DcSource(*, manufacturer: str, hardwareType: str, serialNumber: str, maximumPower: int, dns: str, contactor: str)

Bases: BaseModel

DC source detail

contactor: str
dns: str
hardwareType: str
manufacturer: str
maximumPower: int
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'contactor': FieldInfo(annotation=str, required=True, description='DC contactor to switch DC Source output to this bench'), 'dns': FieldInfo(annotation=str, required=True, description='DNS string to access DC Source Bench API'), 'hardwareType': FieldInfo(annotation=str, required=True, description='DC Source Model name'), 'manufacturer': FieldInfo(annotation=str, required=True, description='Manufacturer name'), 'maximumPower': FieldInfo(annotation=int, required=True, description='Maximum output power in Watts'), 'serialNumber': FieldInfo(annotation=str, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

serialNumber: str
class testframework.inventory.datamodel.Dongle(*, serialNumber: str, hardwareType: str | None = None, softwareVersion: str | None = None)

Bases: BaseModel

Optional hardware component in PV system

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'hardwareType': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'serialNumber': FieldInfo(annotation=str, required=True), 'softwareVersion': FieldInfo(annotation=Union[str, NoneType], required=False, default=None)}

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

This replaces Model.__fields__ from Pydantic V1.

serialNumber: str
softwareVersion: str | None
class testframework.inventory.datamodel.HeatPump(root: RootModelRootType = PydanticUndefined)

Bases: RootModel[List[HeatPumpItem]]

Heatpumps in testbench

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].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=List[HeatPumpItem], required=True, description='Heatpumps in testbench')}

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

This replaces Model.__fields__ from Pydantic V1.

root: List[HeatPumpItem]
class testframework.inventory.datamodel.HeatPumpItem(*, manufacturer: str, hardwareType: str, serialNumber: str, softwareVersion: str)

Bases: BaseModel

Heatpump metadata

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'hardwareType': FieldInfo(annotation=str, required=True), 'manufacturer': FieldInfo(annotation=str, required=True), 'serialNumber': FieldInfo(annotation=str, required=True), 'softwareVersion': FieldInfo(annotation=str, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

serialNumber: str
softwareVersion: str
class testframework.inventory.datamodel.Inventory(*, pvsystem: PvSystem | None = None, heatpump: HeatPump | None = None, wallbox: Wallbox | None = None, dcsource: DcSource | None = None)

Bases: BaseModel

Inventory metadata in testbench

dcSource: DcSource | None
heatPump: HeatPump | None
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'populate_by_name': True}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'dcSource': FieldInfo(annotation=Union[DcSource, NoneType], required=False, default=None, alias='dcsource', alias_priority=2), 'heatPump': FieldInfo(annotation=Union[HeatPump, NoneType], required=False, default=None, alias='heatpump', alias_priority=2), 'pvSystem': FieldInfo(annotation=Union[PvSystem, NoneType], required=False, default=None, alias='pvsystem', alias_priority=2), 'wallbox': FieldInfo(annotation=Union[Wallbox, NoneType], required=False, default=None)}

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

This replaces Model.__fields__ from Pydantic V1.

pvSystem: PvSystem | None
wallbox: Wallbox | None
class testframework.inventory.datamodel.InventoryDataModel(*, testBenches: List[TestBench], dcBenches: List[DcBench] | None = None)

Bases: BaseModel

Inventory storing testbench capabilities as well as hardware details

dcBenches: List[DcBench] | None
filter_inventory(filter_options: InventoryFilter) list[TestBench]

Filters the inventory object

Parameters:

filter_options (InventoryFilter) – The parameters used for filtering

Returns:

The filtered list of test benches

Return type:

list[TestBenchTarget]

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].

model_fields: ClassVar[dict[str, FieldInfo]] = {'dcBenches': FieldInfo(annotation=Union[List[DcBench], NoneType], required=False, default=None, description='Available dc benches'), 'testBenches': FieldInfo(annotation=List[TestBench], required=True, description='Available testbenches')}

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

This replaces Model.__fields__ from Pydantic V1.

testBenches: List[TestBench]
class testframework.inventory.datamodel.InventoryFilter(*, with_testbrain: bool | None = None, type: TestBenchType | None = None, manufacturer: ManufacturerOptions | None = None, id: str | list[str] | None = None)

Bases: BaseModel

Inventory filter object. :param with_testbrain: (bool) Used to get benches with/without testbrains. (Optional) :param type: (TestBenchType) Filter the testbench type. (Optional) :param manufacturer: The specific manufacturer for the testbench’s type. (Optional) :param id: (str | list[str]) ID or IDs for the testbench For exaple TESTBENCH_14. Setting this will take precedence over all other filter options.

and you will only receive the single testbench matching this string. (Optional)

Example Usage: ` inventory = InventoryDataModel() filter = InventoryFilter(with_testbrain=True, type=TestBenchType.PVSYSTEM) inventory.filter_inventory(filter) `

static from_env() InventoryFilter
id: str | list[str] | None
manufacturer: ManufacturerOptions | None
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].

model_fields: ClassVar[dict[str, FieldInfo]] = {'id': FieldInfo(annotation=Union[str, list[str], NoneType], required=False, default=None), 'manufacturer': FieldInfo(annotation=Union[ManufacturerOptions, NoneType], required=False, default=None), 'type': FieldInfo(annotation=Union[TestBenchType, NoneType], required=False, default=None), 'with_testbrain': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None)}

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

This replaces Model.__fields__ from Pydantic V1.

type: TestBenchType | None
with_testbrain: bool | None
class testframework.inventory.datamodel.Inverter(*, hardwareType: str, serialNumber: str, softwareVersion1: str, softwareVersion2: str | None = None, softwareVersion3: str | None = None)

Bases: BaseModel

Inverter in PV system

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'hardwareType': FieldInfo(annotation=str, required=True, description='Hardware type of inverter', examples=['H3', 'SHT', 'SHRT', 'Luna2000', 'Smart']), 'serialNumber': FieldInfo(annotation=str, required=True), 'softwareVersion1': FieldInfo(annotation=str, required=True, description='Master version of FoxESS, ARM version of Sungrow, Software version of Huawei'), 'softwareVersion2': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Manager version of FoxESS, DSP version of Sungrow'), 'softwareVersion3': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Slave version of FoxESS')}

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

This replaces Model.__fields__ from Pydantic V1.

serialNumber: str
softwareVersion1: str
softwareVersion2: str | None
softwareVersion3: str | None
class testframework.inventory.datamodel.Iot(*, uuid: str, dns: str)

Bases: BaseModel

IoT device in Testbench

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'dns': FieldInfo(annotation=str, required=True, examples=['http://bench10.lab.enpal.io', 'http://bench01.lab.enpal.io']), 'uuid': FieldInfo(annotation=str, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

uuid: str
class testframework.inventory.datamodel.Loads(*, L1: int | None = None, L2: int | None = None, L3: int | None = None)

Bases: BaseModel

Load attached in testbench for testing

L1: int | None
L2: int | None
L3: int | None
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'L1': FieldInfo(annotation=Union[int, NoneType], required=False, default=None, description='Attached load in Watts'), 'L2': FieldInfo(annotation=Union[int, NoneType], required=False, default=None, description='Attached load in Watts'), 'L3': FieldInfo(annotation=Union[int, NoneType], required=False, default=None, description='Attached load in Watts')}

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

This replaces Model.__fields__ from Pydantic V1.

class testframework.inventory.datamodel.ManufacturerOptions(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

FoxESS = 'FoxESS'
Huawei = 'Huawei'
StarCharge = 'StarCharge'
Sungrow = 'Sungrow'
class testframework.inventory.datamodel.PvSimulation(root: RootModelRootType = PydanticUndefined)

Bases: RootModel[List[PvSimulationItem]]

DC bench details providing output to the testbench

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].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=List[PvSimulationItem], required=True, description='DC bench details providing output to the testbench')}

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

This replaces Model.__fields__ from Pydantic V1.

root: List[PvSimulationItem]
class testframework.inventory.datamodel.PvSimulationItem(*, inverter: str, string: str, dcbrain: str, slot: str)

Bases: BaseModel

DC bench metadata

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'dcbrain': FieldInfo(annotation=str, required=True, description='Connected DC bench'), 'inverter': FieldInfo(annotation=str, required=True, description='Serial number of the inverter to which DC bench is connected'), 'slot': FieldInfo(annotation=str, required=True, description='GPIO pin mapping in the DC bench'), 'string': FieldInfo(annotation=str, required=True, description='Solar panel string', examples=['1', '2'])}

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

This replaces Model.__fields__ from Pydantic V1.

slot: str
string: str
class testframework.inventory.datamodel.PvSystem(root: RootModelRootType = PydanticUndefined)

Bases: RootModel[List[PvSystemItem]]

PV systems in a testbench

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].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=List[PvSystemItem], required=True, description='PV systems in a testbench')}

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

This replaces Model.__fields__ from Pydantic V1.

root: List[PvSystemItem]
class testframework.inventory.datamodel.PvSystemItem(*, manufacturer: str, inverter: Inverter, battery: Battery, dongle: Dongle | None = None)

Bases: BaseModel

PV system metadata

battery: Battery
dongle: Dongle | None
inverter: Inverter
manufacturer: str
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'battery': FieldInfo(annotation=Battery, required=True, description='Battery in PV system'), 'dongle': FieldInfo(annotation=Union[Dongle, NoneType], required=False, default=None, description='Optional hardware component in PV system'), 'inverter': FieldInfo(annotation=Inverter, required=True, description='Inverter in PV system'), 'manufacturer': FieldInfo(annotation=str, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

class testframework.inventory.datamodel.SlaveItem(*, softwareVersion: str, serialNumber: str)

Bases: BaseModel

Battery slave information

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].

model_fields: ClassVar[dict[str, FieldInfo]] = {'serialNumber': FieldInfo(annotation=str, required=True), 'softwareVersion': FieldInfo(annotation=str, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

serialNumber: str
softwareVersion: str
class testframework.inventory.datamodel.TestBench(*, id: Annotated[str, _PydanticGeneralMetadata(pattern='^TESTBENCH_[0-9][0-9]')], name: str, testBrain: TestBrain | None = None, iot: Iot, inventory: Inventory, testEquipments: TestEquipments | None = None)

Bases: BaseModel

Testbench metadata

id: str
inventory: Inventory
iot: Iot
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'id': FieldInfo(annotation=str, required=True, description='Identifier of the testbench of format ^TESTBENCH_[0-9][0-9]', metadata=[_PydanticGeneralMetadata(pattern='^TESTBENCH_[0-9][0-9]')]), 'inventory': FieldInfo(annotation=Inventory, required=True), 'iot': FieldInfo(annotation=Iot, required=True), 'name': FieldInfo(annotation=str, required=True, description='Extended name of the testbench', examples=['01_Inverter_Huawei_Luna2000_Wallbox_Starcharge_Aurora']), 'testBrain': FieldInfo(annotation=Union[TestBrain, NoneType], required=False, default=None), 'testEquipments': FieldInfo(annotation=Union[TestEquipments, NoneType], required=False, default=None, description='Test equipments available for test')}

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

This replaces Model.__fields__ from Pydantic V1.

name: str
testBrain: TestBrain | None
testEquipments: TestEquipments | None
class testframework.inventory.datamodel.TestBenchType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

Testbench type enum

DCSOURCE = 'dcsource'
HEATPUMP = 'heatpump'
PVSYSTEM = 'pvsystem'
WALLBOX = 'wallbox'
class testframework.inventory.datamodel.TestBrain(*, uuid: str, dns: str)

Bases: BaseModel

Testbrain in testbench

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'dns': FieldInfo(annotation=str, required=True, examples=['http://brain10.lab.enpal.io', 'http://brain01.lab.enpal.io']), 'uuid': FieldInfo(annotation=str, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

uuid: str
class testframework.inventory.datamodel.TestEquipments(*, loads: Loads | None = None, pvSimulation: PvSimulation | None = None)

Bases: BaseModel

Test equipments available for test

loads: Loads | None
model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'loads': FieldInfo(annotation=Union[Loads, NoneType], required=False, default=None), 'pvSimulation': FieldInfo(annotation=Union[PvSimulation, NoneType], required=False, default=None)}

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

This replaces Model.__fields__ from Pydantic V1.

pvSimulation: PvSimulation | None
class testframework.inventory.datamodel.Wallbox(root: RootModelRootType = PydanticUndefined)

Bases: RootModel[List[WallboxItem]]

Wallboxes in testbench

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].

model_fields: ClassVar[dict[str, FieldInfo]] = {'root': FieldInfo(annotation=List[WallboxItem], required=True, description='Wallboxes in testbench')}

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

This replaces Model.__fields__ from Pydantic V1.

root: List[WallboxItem]
class testframework.inventory.datamodel.WallboxItem(*, manufacturer: str, hardwareType: str, serialNumber: str, softwareVersion: str)

Bases: BaseModel

Wallbox metadata

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

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

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

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

model_fields: ClassVar[dict[str, FieldInfo]] = {'hardwareType': FieldInfo(annotation=str, required=True), 'manufacturer': FieldInfo(annotation=str, required=True), 'serialNumber': FieldInfo(annotation=str, required=True), 'softwareVersion': FieldInfo(annotation=str, required=True)}

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

This replaces Model.__fields__ from Pydantic V1.

serialNumber: str
softwareVersion: str