错误:无法在 mypy 中"Optional[str]" "urljoin"的类型变量"AnyStr"的值



我有一个这样的语句:

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

由于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问题

相关内容

  • 没有找到相关文章

最新更新