|
|
|
from pydantic import BaseModel, ConfigDict, Field, field_validator, validator |
|
from typing import Dict, Optional |
|
|
|
class LampConnections(BaseModel): |
|
min: float |
|
max: float |
|
|
|
@field_validator('min', 'max', mode='before') |
|
def convert_values(cls, v): |
|
v_str = str(v) |
|
|
|
v_str = v_str.replace(',', '.') |
|
return float(v_str) |
|
|
|
|
|
class VoltageRange(BaseModel): |
|
min: float |
|
max: float |
|
|
|
@field_validator('min', 'max', mode='before') |
|
def convert_values(cls, v): |
|
v_str = str(v) |
|
|
|
v_str = v_str.replace(',', '.') |
|
return float(v_str) |
|
|
|
|
|
class PowerConverter(BaseModel): |
|
doc_id: Optional[str] = Field(None, alias="id") |
|
artnr: Optional[int] = Field(None, alias="artnr") |
|
ip_rating: Optional[int] = Field(None, alias="ip") |
|
lamps: Optional[Dict[str, LampConnections]] = Field(default_factory=dict, alias="lamps") |
|
|
|
type: Optional[str] = Field(None, alias="type") |
|
name: Optional[str] = Field(None, alias="name") |
|
efficiency: Optional[float] = Field(None, alias="efficiency_full_load") |
|
pdf_link: Optional[str] = Field(None, alias="pdf_link") |
|
converter_description: Optional[str] = Field(None, alias="converter_description") |
|
|
|
nom_input_voltage: Optional[VoltageRange] = Field(None, alias="nom_input_voltage_v") |
|
output_voltage:Optional[VoltageRange]= Field(None, alias="output_voltage_v") |
|
|
|
unit: Optional[str] = Field(None, alias="unit") |
|
price: Optional[float] = Field(None, alias="listprice") |
|
life_cycle: Optional[str] = Field(None, alias="lifecycle") |
|
size: Optional[str] = Field(None, alias="size") |
|
ccr_amplitude: Optional[str] = Field(None, alias="ccr_amplitude") |
|
dimmability: Optional[str] = Field(None, alias="dimmability") |
|
dim_list_type: Optional[str] = Field(None, alias="dimlist_type") |
|
|
|
strain_relief: Optional[str] = Field(None, alias="strain_relief") |
|
gross_weight: Optional[float] = Field(None, alias="gross_weight") |
|
|
|
similarity_score: Optional[float] = Field(None, alias="SimilarityScore") |
|
model_config = ConfigDict( |
|
populate_by_name=True, |
|
|
|
extra="ignore" |
|
) |