from django.apps.config import AppConfig from django.contrib.contenttypes.models import ContentType from django.contrib.sessions.models import Session from django.contrib.sites.models import Site from django.db.backends.base.base import BaseDatabaseWrapper from django.db.backends.sqlite3.base import DatabaseWrapper from django.db.models.base import Model from typing import ( Any, Callable, Dict, List, Type, Union, ) def load_backend(backend_name: str) -> Any: ... class ConnectionHandler: def __getitem__(self, alias: str) -> BaseDatabaseWrapper: ... def __init__(self, databases: Dict[str, Dict[str, str]] = ...) -> None: ... def all(self) -> List[DatabaseWrapper]: ... def close_all(self) -> None: ... @cached_property def databases(self) -> Dict[str, Dict[str, str]]: ... def ensure_defaults(self, alias: str) -> None: ... def prepare_test_settings(self, alias: str) -> None: ... class ConnectionRouter: def __init__(self, routers: None = ...) -> None: ... def allow_migrate(self, db: str, app_label: str, **hints) -> bool: ... def allow_migrate_model(self, db: str, model: Type[Model]) -> bool: ... def allow_relation(self, obj1: Model, obj2: Model, **hints) -> bool: ... def get_migratable_models( self, app_config: AppConfig, db: str, include_auto_created: bool = ... ) -> Union[List[Type[Model]], List[Type[Site]], List[Type[Session]], List[Type[ContentType]]]: ... @cached_property def routers(self) -> List[object]: ... class DatabaseErrorWrapper: def __call__(self, func: Callable) -> Callable: ... def __enter__(self) -> None: ... def __exit__(self, exc_type: None, exc_value: None, traceback: None) -> None: ... def __init__(self, wrapper: DatabaseWrapper) -> None: ...