def area_from_dict(description, config=None): def optional(attr): return _instance_from_dict( description[attr]) if attr in description else None try: if 'type' in description: return _leaf_from_dict(description) # Area is a Leaf name = description['name'] uuid = description.get('uuid', None) if 'children' in description: children = [ area_from_dict(child) for child in description['children'] ] else: children = None grid_fee_percentage = description.get('grid_fee_percentage', None) area = Area(name, children, uuid, optional('strategy'), optional('appliance'), config, optional('budget_keeper'), grid_fee_percentage=grid_fee_percentage) if "display_type" in description: area.display_type = description["display_type"] return area except (json.JSONDecodeError, KeyError, TypeError, ValueError) as error: raise ValueError("Input is not a valid area description (%s)" % str(error))
def area_from_dict(description, config): def optional(attr): return _instance_from_dict( description[attr]) if attr in description else None try: if 'type' in description: return _leaf_from_dict(description, config) # Area is a Leaf name = description['name'] uuid = description.get('uuid', None) external_connection_available = description.get( 'allow_external_connection', False) baseline_peak_energy_import_kWh = description.get( 'baseline_peak_energy_import_kWh', None) baseline_peak_energy_export_kWh = description.get( 'baseline_peak_energy_export_kWh', None) import_capacity_kVA = description.get('import_capacity_kVA', None) export_capacity_kVA = description.get('export_capacity_kVA', None) if key_in_dict_and_not_none(description, 'children'): children = [ area_from_dict(child, config) for child in description['children'] ] else: children = None grid_fee_percentage = description.get('grid_fee_percentage', None) grid_fee_constant = description.get('grid_fee_constant', None) area = Area( name, children, uuid, optional('strategy'), config, optional('budget_keeper'), grid_fee_percentage=grid_fee_percentage, grid_fee_constant=grid_fee_constant, external_connection_available=external_connection_available and config.external_connection_enabled, throughput=ThroughputParameters( baseline_peak_energy_import_kWh=baseline_peak_energy_import_kWh, baseline_peak_energy_export_kWh=baseline_peak_energy_export_kWh, import_capacity_kVA=import_capacity_kVA, export_capacity_kVA=export_capacity_kVA)) if "display_type" in description: area.display_type = description["display_type"] return area except (json.JSONDecodeError, KeyError, TypeError, ValueError) as error: raise ValueError("Input is not a valid area description (%s)" % str(error)) from error