ошибка: значение переменной типа "AnyStr" для "urljoin" не может быть "Необязательным [str]" в mypy - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть такое утверждение:

import os
from urllib.parse import urljoin

ES_SEARCH_URL = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")

Я пытался указать много типов для ES_SEARCH_URL, но при запуске mypy всегда выдается следующая ошибка:

error: Value of type variable "AnyStr" of "urljoin" cannot be "Optional[str]"

Опции, которые я пробовал до сих пор:

from typing import Optional, AnyStr, Union
ES_SEARCH_URL: Union[str, None] = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")
ES_SEARCH_URL: Optional[str] = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")
ES_SEARCH_URL: Optional[AnyStr] = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")

Как устранить эту ошибку? Пожалуйста, помогите.
Python версия: Python 3,8

1 Ответ

1 голос
/ 26 апреля 2020

Так как os.getenv может вернуть None mypy не может знать, является ли это строковым значением или None.

Попробуйте задать его по умолчанию:

os.getenv("ELASTICSEARCH_URL", default="http://some.url.example.com/")

или обработать None кейс:

base_url = os.getenv("ELASTICSEARCH_URL")
if base_url is None:
  # handle here
ES_SEARCH_URL = urljoin(base=base_url, url="index/_search")

Ссылка: этот выпуск Github

...