Source code for honeybee_energy_ph.properties.load.lighting

# -*- coding: utf-8 -*-
# -*- Python Version: 2.7 -*-

"""Properties for Honeybee-Energy-PH | Load | Lighting"""

try:
    from typing import Any
except ImportError:
    pass  # Python 2.7

try:
    from honeybee_energy_ph.load.ph_equipment import PhEquipment, PhEquipmentBuilder
except ImportError as e:
    raise ImportError("Failed to import honeybee_energy_ph", e)


[docs] class LightingPhProperties_FromDictError(Exception): def __init__(self, _expected_types, _input_type): self.msg = 'Error: Expected type of "{}". Got: {}'.format(_expected_types, _input_type) super(LightingPhProperties_FromDictError, self).__init__(self.msg)
[docs] class LightingPhProperties(object): """Ph Properties for Honeybee-Energy Lighting""" def __init__(self, _host): self._host = _host self.id_num = 0 self.target_lux = 300 self.target_lux_height = 0.8 # m self._ph_equipment = None @property def ph_equipment(self): # type: () -> PhEquipment | None return self._ph_equipment @ph_equipment.setter def ph_equipment(self, _equipment): # type: (PhEquipment) -> None if not isinstance(_equipment, PhEquipment): raise ValueError("Input must be of type PhEquipment") self._ph_equipment = _equipment
[docs] def duplicate(self, new_host=None): # type: (Any) -> LightingPhProperties return self.__copy__(new_host)
def __copy__(self, new_host=None): # type: (Any) -> LightingPhProperties _host = new_host or self._host new_obj = self.__class__(_host) new_obj.id_num = self.id_num new_obj.target_lux = self.target_lux new_obj.target_lux_height = self.target_lux_height if self._ph_equipment: new_obj.ph_equipment = PhEquipmentBuilder.from_dict(self._ph_equipment.to_dict(), _host=new_obj) return new_obj @property def host(self): return self._host def __str__(self): return "{}()".format(self.__class__.__name__) def __repr__(self): return str(self)
[docs] def ToString(self): return str(self)
[docs] def to_dict(self, abridged=False): # type: (bool) -> dict[str, dict] d = {} if abridged: d["type"] = "LightingPhPropertiesAbridged" else: d["type"] = "LightingPhProperties" d["id_num"] = self.id_num d["target_lux"] = self.target_lux d["target_lux_height"] = self.target_lux_height if self._ph_equipment: d["equipment"] = self._ph_equipment.to_dict(_abridged=abridged) return {"ph": d}
[docs] @classmethod def from_dict(cls, _input_dict, host): # type: (dict, Any) -> LightingPhProperties valid_types = ("LightingPhProperties", "LightingPhPropertiesAbridged") if _input_dict["type"] not in valid_types: raise LightingPhProperties_FromDictError(valid_types, _input_dict["type"]) new_prop = cls(host) new_prop.id_num = _input_dict["id_num"] new_prop.target_lux = _input_dict["target_lux"] new_prop.target_lux_height = _input_dict["target_lux_height"] if "equipment" in _input_dict: new_prop.ph_equipment = PhEquipmentBuilder.from_dict(_input_dict["equipment"], _host=new_prop) return new_prop