Adjust the temp factory return type

BinaryIO is a subclass of IO[bytes] so it doesn't check out as
the return type of a callable we pass around.

Switch to the superclass instead.
This commit is contained in:
Jean-Paul Calderone
2023-07-11 16:30:54 -04:00
parent c838967a54
commit 79512a93e7

View File

@ -4,7 +4,7 @@ General web server-related utilities.
from __future__ import annotations from __future__ import annotations
from six import ensure_str from six import ensure_str
from typing import BinaryIO, Callable, Optional from typing import IO, Callable, Optional
import re, time, tempfile import re, time, tempfile
from urllib.parse import parse_qsl, urlencode from urllib.parse import parse_qsl, urlencode
@ -217,7 +217,7 @@ def censor(queryargs: bytes) -> bytes:
return urlencode(result, safe="[]").encode("ascii") return urlencode(result, safe="[]").encode("ascii")
def anonymous_tempfile_factory(tempdir: bytes) -> Callable[[], BinaryIO]: def anonymous_tempfile_factory(tempdir: bytes) -> Callable[[], IO[bytes]]:
""" """
Create a no-argument callable for creating a new temporary file in the Create a no-argument callable for creating a new temporary file in the
given directory. given directory.
@ -243,14 +243,14 @@ class TahoeLAFSSite(Site, object):
""" """
requestFactory = TahoeLAFSRequest requestFactory = TahoeLAFSRequest
def __init__(self, make_tempfile: Callable[[], BinaryIO], *args, **kwargs): def __init__(self, make_tempfile: Callable[[], IO[bytes]], *args, **kwargs):
Site.__init__(self, *args, logFormatter=_logFormatter, **kwargs) Site.__init__(self, *args, logFormatter=_logFormatter, **kwargs)
assert callable(make_tempfile) assert callable(make_tempfile)
with make_tempfile(): with make_tempfile():
pass pass
self._make_tempfile = make_tempfile self._make_tempfile = make_tempfile
def getContentFile(self, length: Optional[int]) -> BinaryIO: def getContentFile(self, length: Optional[int]) -> IO[bytes]:
if length is None or length >= 1024 * 1024: if length is None or length >= 1024 * 1024:
return self._make_tempfile() return self._make_tempfile()
return BytesIO() return BytesIO()