"""
Django Cronjob Utils - A robust cronjob handling package for Django.

This package provides execution tracking, duplicate prevention, stakeholder
notifications, configurable retry, and comprehensive database logging for
cronjob tasks.
"""

__version__ = '0.1.0'

# Lazy imports to avoid AppRegistryNotReady errors
# These will be imported when accessed, after Django is initialized


def __getattr__(name):
    """Lazy import for module-level attributes."""
    if name == 'CronTask':
        from django_cronjob_utils.base import CronTask
        return CronTask
    elif name == 'register_task':
        from django_cronjob_utils.decorators import register_task
        return register_task
    elif name == 'TaskRegistry':
        from django_cronjob_utils.registry import TaskRegistry
        return TaskRegistry
    elif name == 'ExecutionPattern':
        from django_cronjob_utils.registry import ExecutionPattern
        return ExecutionPattern
    elif name == 'CronJobError':
        from django_cronjob_utils.exceptions import CronJobError
        return CronJobError
    elif name == 'TaskNotFoundError':
        from django_cronjob_utils.exceptions import TaskNotFoundError
        return TaskNotFoundError
    elif name == 'ConcurrentExecutionError':
        from django_cronjob_utils.exceptions import ConcurrentExecutionError
        return ConcurrentExecutionError
    elif name == 'CronValidationError':
        from django_cronjob_utils.exceptions import ValidationError as CronValidationError
        return CronValidationError
    elif name == 'CronjobHookContext':
        from django_cronjob_utils.hooks import CronjobHookContext
        return CronjobHookContext
    elif name == 'get_global_cronjob_hook_manager':
        from django_cronjob_utils.hooks import get_global_cronjob_hook_manager
        return get_global_cronjob_hook_manager
    elif name == 'clear_cronjob_hooks':
        from django_cronjob_utils.hooks import clear_cronjob_hooks
        return clear_cronjob_hooks
    elif name == 'HOOKS_AVAILABLE':
        from django_cronjob_utils.hooks import HOOKS_AVAILABLE
        return HOOKS_AVAILABLE
    raise AttributeError(f"module '{__name__}' has no attribute '{name}'")


__all__ = [
    'CronTask',
    'register_task',
    'TaskRegistry',
    'ExecutionPattern',
    'CronJobError',
    'TaskNotFoundError',
    'ConcurrentExecutionError',
    'CronValidationError',
    'CronjobHookContext',
    'get_global_cronjob_hook_manager',
    'clear_cronjob_hooks',
    'HOOKS_AVAILABLE',
]


def __dir__():
    """Return list of available attributes for IDE support."""
    return __all__
