Ejemplo n.º 1
0
def from_dict(klass, dikt) -> Any:
    if is_dataclass(klass):
        fields = datafields(klass)
        args = {f.name: from_dict(f.type, dikt[f.name]) for f in fields}
        return klass(**args)
    else:
        return dikt
Ejemplo n.º 2
0
 def __str__(self):
     """
     Returns the dataclass fields as a URL query string.
     """
     result = '?'
     for field in datafields(self):
         name = field.name
         if value := getattr(self, name):
             value = str(value)
             if field.type is bool:
                 value = value.lower()
             name = self.fix(name)
             if self.validate(name, value):
                 result += f'{name}={value}&'
             else:
                 e_msg = f'Error: "{value}" is not a valid value for {name}'
                 raise ValueError(e_msg)
Ejemplo n.º 3
0
def dataclass_from_dict(klass, dikt):
    """Load any dataclass from a dict"""
    fieldtypes = {f.name: f.type for f in datafields(klass)}
    return klass(
        **{f: dataclass_from_dict(fieldtypes[f], dikt[f])
           for f in dikt})
def dataclass_from_dict(klass, dikt):
    try:
        fieldtypes = {f.name:f.type for f in datafields(klass)}
        return klass(**{f:dataclass_from_dict(fieldtypes[f], dikt[f]) for f in dikt})
    except:
        return dikt