========== LightGroup ========== .. py:class:: LightGroup .. py:method:: id :property: The id of the group. :type: str, read-only .. py:method:: name :property: The name of the group. :type: str :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: layer :property: The parent lighting layer of this group. :type: LightingLayer, read-only .. py:method:: parent_group :property: The parent group of this group or :py:obj:`None` if the group is at the root of the hierarchy. :type: LightGroup or None :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. :raises ValueError: If trying to move the group into one of its children or trying to move the layer to itself. .. py:method:: list_child_groups(recursive = True) List the child light groups of this group. :param recursive: If :py:obj:`True`, list light groups of this group recursively, otherwise only the direct child groups are returned. :type recursive: bool :returns: The list of child groups. :rtype: list(LightGroup) .. py:method:: list_lights(recursive = True) List the lights of this group. :param recursive: If :py:obj:`True`, list all lights in this group recursively, otherwise only the direct child lights are returned. :type recursive: bool :returns: The list of lights in the group. :rtype: list(Light) .. py:method:: remove(force = False) Delete the light group .. note:: By default, only empty groups can be deleted (:py:obj:`NotEmptyError` is raised otherwise), use ``force`` to force deletion of non empty groups. :param force: Force the deletion of the group even if it contains lights and/or groups. :type force: bool :raises NotEmptyError: If ``force`` is :py:obj:`False` and the group contains lights and/or groups. :raises ReadOnlyError: If :py:obj:`Database` is in read only mode.