"""
Core Application Configuration

This module defines the configuration for the core Django application,
which provides shared functionality, utilities, and base models used
throughout the Stream Processor project.
"""

from django.apps import AppConfig


class AuthenticationConfig(AppConfig):
    """
    Configuration class for the authentication application.
    
    This class defines the authentication application settings and handles
    application initialization, including setting up signals
    and performing any necessary startup tasks.
    
    Attributes:
        default_auto_field (str): The default primary key field type for models
        name (str): The application name used by Django
        verbose_name (str): Human-readable name for the application
    """
    
    # Use BigAutoField as the default primary key type
    default_auto_field = 'django.db.models.BigAutoField'
    
    # Application name as registered in Django
    name = 'apps.authentication'
    
    # Human-readable application name
    verbose_name = 'Authentication'
    
    def ready(self):
        """
        Perform initialization when the application is ready.
        
        This method is called once Django has loaded all applications
        and models. It's used to import signal handlers and perform
        any necessary setup tasks.
        """
        # Import signal handlers to ensure they are registered
        try:
            import apps.authentication.signals  # noqa: F401
        except ImportError:
            # Signal handlers are optional
            pass
