CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-homeassistant

Open-source home automation platform running on Python 3.

69

1.18x
Overview
Eval results
Files

registries.mddocs/

Registry System

Central registries for managing entities, devices, and areas within Home Assistant. Provides persistent storage, relationship tracking, and metadata management for the entity ecosystem.

Capabilities

Entity Registry

Central registry for managing entity metadata, customization, and persistence across Home Assistant restarts.

class EntityRegistry:
    """Registry for entity metadata and configuration."""
    
    def __init__(self, hass: HomeAssistant):
        """Initialize entity registry.
        
        Args:
            hass: Home Assistant instance
        """
    
    async def async_get_or_create(self, domain: str, platform: str, unique_id: str,
                                 suggested_object_id: str = None, config_entry: ConfigEntry = None,
                                 device_id: str = None, known_object_ids: set[str] = None,
                                 disabled_by: str = None, capabilities: dict = None,
                                 supported_features: int = None, device_class: str = None,
                                 unit_of_measurement: str = None, original_name: str = None,
                                 original_icon: str = None) -> RegistryEntry:
        """Get or create entity registry entry.
        
        Args:
            domain: Entity domain
            platform: Entity platform
            unique_id: Unique identifier
            suggested_object_id: Suggested object ID
            config_entry: Associated config entry
            device_id: Associated device ID
            known_object_ids: Known object IDs to avoid
            disabled_by: Reason entity is disabled
            capabilities: Entity capabilities
            supported_features: Supported features bitmask
            device_class: Device class
            unit_of_measurement: Unit of measurement
            original_name: Original entity name
            original_icon: Original entity icon
            
        Returns:
            Registry entry
        """
    
    async def async_update_entity(self, entity_id: str, *, name: str = None,
                                 icon: str = None, area_id: str = None,
                                 device_class: str = None, disabled_by: str = None,
                                 entity_category: str = None, hidden_by: str = None,
                                 new_entity_id: str = None, new_unique_id: str = None,
                                 **kwargs) -> RegistryEntry:
        """Update entity registry entry.
        
        Args:
            entity_id: Entity ID to update
            name: New name
            icon: New icon
            area_id: New area ID
            device_class: New device class
            disabled_by: Disable reason
            entity_category: Entity category
            hidden_by: Hide reason
            new_entity_id: New entity ID
            new_unique_id: New unique ID
            **kwargs: Additional update parameters
            
        Returns:
            Updated registry entry
        """
    
    async def async_remove(self, entity_id: str) -> None:
        """Remove entity from registry.
        
        Args:
            entity_id: Entity ID to remove
        """
    
    def async_get_entity_id(self, domain: str, platform: str, unique_id: str) -> str:
        """Get entity ID for domain/platform/unique_id.
        
        Args:
            domain: Entity domain
            platform: Entity platform
            unique_id: Unique identifier
            
        Returns:
            Entity ID or None if not found
        """
    
    def async_get_device_class(self, entity_id: str) -> str:
        """Get device class for entity.
        
        Args:
            entity_id: Entity ID
            
        Returns:
            Device class or None
        """
    
    @property
    def entities(self) -> dict[str, RegistryEntry]:
        """Return all entities."""

class RegistryEntry:
    """Entity registry entry."""
    
    def __init__(self, entity_id: str, unique_id: str, platform: str, domain: str,
                 config_entry_id: str = None, device_id: str = None,
                 area_id: str = None, capabilities: dict = None,
                 supported_features: int = None, device_class: str = None,
                 unit_of_measurement: str = None, original_name: str = None,
                 original_icon: str = None, entity_category: str = None,
                 disabled_by: str = None, hidden_by: str = None,
                 icon: str = None, name: str = None):
        """Initialize registry entry.
        
        Args:
            entity_id: Entity ID
            unique_id: Unique identifier
            platform: Entity platform
            domain: Entity domain
            config_entry_id: Config entry ID
            device_id: Device ID
            area_id: Area ID
            capabilities: Entity capabilities
            supported_features: Supported features
            device_class: Device class
            unit_of_measurement: Unit of measurement
            original_name: Original name
            original_icon: Original icon
            entity_category: Entity category
            disabled_by: Disabled reason
            hidden_by: Hidden reason
            icon: Custom icon
            name: Custom name
        """
    
    @property
    def entity_id(self) -> str:
        """Return entity ID."""
        
    @property
    def unique_id(self) -> str:
        """Return unique ID."""
        
    @property
    def platform(self) -> str:
        """Return platform."""
        
    @property
    def domain(self) -> str:
        """Return domain."""
        
    @property
    def config_entry_id(self) -> str:
        """Return config entry ID."""
        
    @property
    def device_id(self) -> str:
        """Return device ID."""
        
    @property
    def area_id(self) -> str:
        """Return area ID."""
        
    @property
    def name(self) -> str:
        """Return entity name."""
        
    @property
    def icon(self) -> str:
        """Return entity icon."""
        
    @property
    def disabled(self) -> bool:
        """Return True if entity is disabled."""
        
    @property
    def hidden(self) -> bool:
        """Return True if entity is hidden."""

Device Registry

Central registry for managing device information, connections, and relationships with entities.

class DeviceRegistry:
    """Registry for device information and configuration."""
    
    def __init__(self, hass: HomeAssistant):
        """Initialize device registry.
        
        Args:
            hass: Home Assistant instance
        """
    
    async def async_get_or_create(self, *, config_entry_id: str, connections: set = None,
                                 identifiers: set = None, manufacturer: str = None,
                                 model: str = None, name: str = None, 
                                 sw_version: str = None, hw_version: str = None,
                                 entry_type: str = None, via_device: tuple = None,
                                 area_id: str = None, name_by_user: str = None,
                                 suggested_area: str = None, disabled_by: str = None,
                                 configuration_url: str = None) -> DeviceEntry:
        """Get or create device registry entry.
        
        Args:
            config_entry_id: Config entry ID
            connections: Device connections
            identifiers: Device identifiers
            manufacturer: Device manufacturer
            model: Device model
            name: Device name
            sw_version: Software version
            hw_version: Hardware version
            entry_type: Entry type
            via_device: Parent device
            area_id: Area ID
            name_by_user: User-defined name
            suggested_area: Suggested area
            disabled_by: Disable reason
            configuration_url: Configuration URL
            
        Returns:
            Device entry
        """
    
    async def async_update_device(self, device_id: str, *, area_id: str = None,
                                 manufacturer: str = None, model: str = None,
                                 name: str = None, name_by_user: str = None,
                                 sw_version: str = None, hw_version: str = None,
                                 disabled_by: str = None, new_identifiers: set = None,
                                 merge_identifiers: set = None, merge_connections: set = None,
                                 configuration_url: str = None, **kwargs) -> DeviceEntry:
        """Update device registry entry.
        
        Args:
            device_id: Device ID to update
            area_id: New area ID
            manufacturer: New manufacturer
            model: New model
            name: New name
            name_by_user: User-defined name
            sw_version: Software version
            hw_version: Hardware version
            disabled_by: Disable reason
            new_identifiers: New identifiers
            merge_identifiers: Identifiers to merge
            merge_connections: Connections to merge
            configuration_url: Configuration URL
            **kwargs: Additional update parameters
            
        Returns:
            Updated device entry
        """
    
    async def async_remove_device(self, device_id: str) -> None:
        """Remove device from registry.
        
        Args:
            device_id: Device ID to remove
        """
    
    def async_get_device(self, identifiers: set = None, connections: set = None) -> DeviceEntry:
        """Get device by identifiers or connections.
        
        Args:
            identifiers: Device identifiers
            connections: Device connections
            
        Returns:
            Device entry or None
        """
    
    @property
    def devices(self) -> dict[str, DeviceEntry]:
        """Return all devices."""

class DeviceEntry:
    """Device registry entry."""
    
    def __init__(self, id: str, config_entries: set[str], connections: set,
                 identifiers: set, manufacturer: str = None, model: str = None,
                 name: str = None, sw_version: str = None, hw_version: str = None,
                 entry_type: str = None, via_device_id: str = None,
                 area_id: str = None, name_by_user: str = None,
                 disabled_by: str = None, configuration_url: str = None):
        """Initialize device entry.
        
        Args:
            id: Device ID
            config_entries: Associated config entries
            connections: Device connections
            identifiers: Device identifiers
            manufacturer: Device manufacturer
            model: Device model
            name: Device name
            sw_version: Software version
            hw_version: Hardware version
            entry_type: Entry type
            via_device_id: Parent device ID
            area_id: Area ID
            name_by_user: User-defined name
            disabled_by: Disabled reason
            configuration_url: Configuration URL
        """
    
    @property
    def id(self) -> str:
        """Return device ID."""
        
    @property
    def identifiers(self) -> set:
        """Return device identifiers."""
        
    @property
    def connections(self) -> set:
        """Return device connections."""
        
    @property
    def manufacturer(self) -> str:
        """Return device manufacturer."""
        
    @property
    def model(self) -> str:
        """Return device model."""
        
    @property
    def name(self) -> str:
        """Return device name."""
        
    @property
    def name_by_user(self) -> str:
        """Return user-defined name."""
        
    @property
    def sw_version(self) -> str:
        """Return software version."""
        
    @property
    def hw_version(self) -> str:
        """Return hardware version."""
        
    @property
    def via_device_id(self) -> str:
        """Return parent device ID."""
        
    @property
    def area_id(self) -> str:
        """Return area ID."""
        
    @property
    def disabled(self) -> bool:
        """Return True if device is disabled."""
        
    @property
    def configuration_url(self) -> str:
        """Return configuration URL."""

Area Registry

Registry for managing logical areas and organizing entities and devices into rooms or zones.

class AreaRegistry:
    """Registry for area information and configuration."""
    
    def __init__(self, hass: HomeAssistant):
        """Initialize area registry.
        
        Args:
            hass: Home Assistant instance
        """
    
    async def async_create(self, name: str, *, normalized_name: str = None,
                          picture: str = None) -> AreaEntry:
        """Create area registry entry.
        
        Args:
            name: Area name
            normalized_name: Normalized name
            picture: Area picture
            
        Returns:
            Created area entry
        """
    
    async def async_update(self, area_id: str, *, name: str = None,
                          picture: str = None) -> AreaEntry:
        """Update area registry entry.
        
        Args:
            area_id: Area ID to update
            name: New name
            picture: New picture
            
        Returns:
            Updated area entry
        """
    
    async def async_delete(self, area_id: str) -> None:
        """Delete area from registry.
        
        Args:
            area_id: Area ID to delete
        """
    
    def async_get_area(self, area_id: str) -> AreaEntry:
        """Get area by ID.
        
        Args:
            area_id: Area ID
            
        Returns:
            Area entry or None
        """
    
    def async_get_area_by_name(self, name: str) -> AreaEntry:
        """Get area by name.
        
        Args:
            name: Area name
            
        Returns:
            Area entry or None
        """
    
    @property
    def areas(self) -> dict[str, AreaEntry]:
        """Return all areas."""

class AreaEntry:
    """Area registry entry."""
    
    def __init__(self, id: str, name: str, normalized_name: str, 
                 picture: str = None):
        """Initialize area entry.
        
        Args:
            id: Area ID
            name: Area name
            normalized_name: Normalized name
            picture: Area picture
        """
    
    @property
    def id(self) -> str:
        """Return area ID."""
        
    @property
    def name(self) -> str:
        """Return area name."""
        
    @property
    def normalized_name(self) -> str:
        """Return normalized name."""
        
    @property
    def picture(self) -> str:
        """Return area picture."""

Registry Utilities

Utility functions for working with registries and managing entity relationships.

async def async_get_registry(hass: HomeAssistant, registry_type: str) -> Union[EntityRegistry, DeviceRegistry, AreaRegistry]:
    """Get registry instance.
    
    Args:
        hass: Home Assistant instance
        registry_type: Registry type ('entity', 'device', 'area')
        
    Returns:
        Registry instance
    """

def async_entries_for_device(registry: EntityRegistry, device_id: str, 
                            include_disabled_entities: bool = False) -> list[RegistryEntry]:
    """Get entity entries for device.
    
    Args:
        registry: Entity registry
        device_id: Device ID
        include_disabled_entities: Include disabled entities
        
    Returns:
        List of entity entries
    """

def async_entries_for_area(registry: EntityRegistry, area_id: str) -> list[RegistryEntry]:
    """Get entity entries for area.
    
    Args:
        registry: Entity registry
        area_id: Area ID
        
    Returns:
        List of entity entries
    """

def async_entries_for_config_entry(registry: EntityRegistry, 
                                  config_entry_id: str) -> list[RegistryEntry]:
    """Get entity entries for config entry.
    
    Args:
        registry: Entity registry
        config_entry_id: Config entry ID
        
    Returns:
        List of entity entries
    """

async def async_migrate_entries(hass: HomeAssistant, config_entry_id: str,
                               entity_migration: dict[str, str]) -> None:
    """Migrate entity registry entries.
    
    Args:
        hass: Home Assistant instance
        config_entry_id: Config entry ID
        entity_migration: Migration mapping
    """

Registry Constants

# Entity registry disabled reasons
DISABLED_USER = "user"
DISABLED_DEVICE = "device"
DISABLED_CONFIG_ENTRY = "config_entry"
DISABLED_INTEGRATION = "integration"

# Entity registry hidden reasons  
HIDDEN_USER = "user"
HIDDEN_INTEGRATION = "integration"

# Device registry entry types
ENTRY_TYPE_SERVICE = "service"

# Device registry disabled reasons
DISABLED_USER = "user"
DISABLED_CONFIG_ENTRY = "config_entry"
DISABLED_INTEGRATION = "integration"

# Device connection types
CONNECTION_NETWORK_MAC = "mac"
CONNECTION_UPNP = "upnp"
CONNECTION_ZIGBEE = "zigbee"
CONNECTION_BLUETOOTH = "bluetooth"

# Entity categories
ENTITY_CATEGORY_CONFIG = "config"
ENTITY_CATEGORY_DIAGNOSTIC = "diagnostic"

Types

from typing import Any, Dict, List, Optional, Set, Union

# Registry entry types
RegistryEntryType = Dict[str, Any]
DeviceEntryType = Dict[str, Any]  
AreaEntryType = Dict[str, Any]

# Registry data types
EntityRegistryType = Dict[str, RegistryEntry]
DeviceRegistryType = Dict[str, DeviceEntry]
AreaRegistryType = Dict[str, AreaEntry]

# Device connection/identifier types
DeviceConnectionType = tuple[str, str]
DeviceIdentifierType = tuple[str, str]
DeviceConnectionsType = Set[DeviceConnectionType]
DeviceIdentifiersType = Set[DeviceIdentifierType]

# Registry ID types
EntityIdType = str
DeviceIdType = str
AreaIdType = str
ConfigEntryIdType = str

Install with Tessl CLI

npx tessl i tessl/pypi-homeassistant

docs

auth.md

configuration.md

core-system.md

entity-framework.md

helpers.md

index.md

integration-framework.md

registries.md

tile.json