[CASE test_settings_are_parsed_into_django_conf_settings] from django.conf import settings reveal_type(settings.ROOT_DIR) # E: Revealed type is 'builtins.str' reveal_type(settings.APPS_DIR) # E: Revealed type is 'pathlib.Path' reveal_type(settings.OBJ) # E: Revealed type is 'django.utils.functional.LazyObject' reveal_type(settings.NUMBERS) # E: Revealed type is 'builtins.list[builtins.str]' reveal_type(settings.DICT) # E: Revealed type is 'builtins.dict[Any, Any]' [env DJANGO_SETTINGS_MODULE=mysettings] [file base.py] from pathlib import Path ROOT_DIR = '/etc' APPS_DIR = Path(ROOT_DIR) [file mysettings.py] from base import * SECRET_KEY = 112233 NUMBERS = ['one', 'two'] DICT = {} # type: ignore from django.utils.functional import LazyObject OBJ = LazyObject() [CASE test_settings_could_be_defined_in_different_module_and_imported_with_star] from django.conf import settings reveal_type(settings.ROOT_DIR) # E: Revealed type is 'pathlib.Path' reveal_type(settings.SETUP) # E: Revealed type is 'builtins.int' reveal_type(settings.DATABASES) # E: Revealed type is 'builtins.dict[builtins.str, builtins.str]' [env DJANGO_SETTINGS_MODULE=mysettings] [file mysettings.py] from local import * DATABASES = {'default': 'mydb'} [file local.py] from base import * SETUP = 3 [file base.py] from pathlib import Path ROOT_DIR = Path(__file__) [CASE global_settings_are_always_loaded] from django.conf import settings reveal_type(settings.AUTH_USER_MODEL) # E: Revealed type is 'builtins.str' reveal_type(settings.AUTHENTICATION_BACKENDS) # E: Revealed type is 'builtins.list[builtins.str]' [out] [CASE test_circular_dependency_in_settings_works_if_settings_have_annotations] from django.conf import settings class Class: pass reveal_type(settings.MYSETTING) # E: Revealed type is 'builtins.int' reveal_type(settings.REGISTRY) # E: Revealed type is 'Union[main.Class, None]' reveal_type(settings.LIST) # E: Revealed type is 'builtins.list[builtins.str]' [out] [env DJANGO_SETTINGS_MODULE=mysettings] [file mysettings.py] from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: from main import Class MYSETTING = 1122 REGISTRY: Optional['Class'] = None LIST: List[str] = ['1', '2'] [CASE fail_if_there_is_no_setting] from django.conf import settings reveal_type(settings.NOT_EXISTING) [env DJANGO_SETTINGS_MODULE=mysettings] [file mysettings.py] [out] main:2: error: Revealed type is 'Any' main:2: error: "LazySettings" has no attribute "NOT_EXISTING"