error: Value of type variable "AnyStr" of "urljoin" cannot be "Optional[str]" in mypy
error: Value of type variable "AnyStr" of "urljoin" cannot be "Optional[str]" in mypy
我有这样的声明:
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版本:Python3.8
因为 os.getenv
可以 return 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")
我有这样的声明:
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版本:Python3.8
因为 os.getenv
可以 return 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")