from tornado.util import Configurable, TimeoutError, import_object
import typing
-from typing import Union, Any, Type, Optional, Callable, TypeVar, Awaitable
+from typing import Any, Callable, TypeVar, Awaitable
if typing.TYPE_CHECKING:
from typing import Dict, List, Set, TypedDict # noqa: F401
_pending_tasks: set[Future] = set()
@classmethod
- def configure(
- cls, impl: Union[None, str, Type[Configurable]], **kwargs: Any
- ) -> None:
+ def configure(cls, impl: None | str | type[Configurable], **kwargs: Any) -> None:
from tornado.platform.asyncio import BaseAsyncIOLoop
if isinstance(impl, str):
class FutureCell(TypedDict):
# noqa: F841
- future: Optional[Future]
+ future: Future | None
timeout_called: bool
future_cell: FutureCell = {"future": None, "timeout_called": False}
def add_future(
self,
- future: Union[Future[_T], concurrent.futures.Future[_T]],
+ future: Future[_T] | concurrent.futures.Future[_T],
callback: Callable[[Future[_T]], None],
) -> None:
"""Schedules a callback on the ``IOLoop`` when the given
Content-Disposition: form-data; name="files"; filename="测试.txt"
Foo
---1234--""".encode("utf-8").replace(b"\n", b"\r\n")
+--1234--""".encode().replace(b"\n", b"\r\n")
args, files = form_data_args()
parse_multipart_form_data(b"1234", data, args, files)
file = files["files"][0]