Разве вызов django_stubs_ext.monkeypatch не должен быть внутри проверки TYPE_CHECKING?

Простой вопрос по поводу django_stubs_ext. Разве исправление ошибок не должно выполняться только во время проверки типов?

Что-то вроде этого:

# settings.py
if TYPE_CHECKING:
    import django_stubs_ext
    django_stubs_ext.monkeypatch()

django_stubs_ext.monkeypatch() не следует помещать внутри блока if TYPE_CHECKING:, поскольку он должен выполняться во время выполнения, а не только во время проверки типа.

Цель этой функции - исправить некоторые внутренние компоненты Django, чтобы mypy и подсказки по вводу текста работали корректно. Если вы обернете его в TYPE_CHECKING, он никогда не будет запущен во время выполнения программы, что противоречит его назначению.

Как указано в официальной документации:

“Это нужно вызвать только один раз, поэтому вызов monkeypatch следует поместить в настройки верхнего уровня”.

Поэтому убедитесь, что вы вызываете его в самом верху вашего файла настроек (или в другой центральной точке входа) перед любым импортом django.

Вот ссылка на справочник, который я использовал, чтобы ответить на ваш вопрос:

https://pypi.org/project/django-stubs-ext/

Пример кода, который приведен в документации:

from os import environ

import django_stubs_ext
from split_settings.tools import include, optional

# Monkeypatching Django, so stubs will work for all generics,
# see: https://github.com/typeddjango/django-stubs
django_stubs_ext.monkeypatch()

# Managing environment via `DJANGO_ENV` variable:
environ.setdefault('DJANGO_ENV', 'development')
_ENV = environ['DJANGO_ENV']

_base_settings = (
    'components/common.py',
    'components/logging.py',
    'components/csp.py',
    'components/caches.py',

    # Select the right env:
    'environments/{0}.py'.format(_ENV),

    # Optionally override some settings:
    optional('environments/local.py'),
)

# Include settings:
include(*_base_settings)
<время работы/>
Вернуться на верх