1313
1414"""This module contains customized asynchronous Tasks and Task Factories for the ReportPortal client."""
1515
16+ import sys
1617import asyncio
1718from abc import abstractmethod
1819from asyncio import Future
19- from typing import Any , Coroutine , Generator , Generic , Optional , TypeVar
20+ from typing import Any , Coroutine , Generator , Generic , Optional , TypeVar , TypeAlias
2021
2122# noinspection PyProtectedMember
2223from reportportal_client ._internal .static .abstract import AbstractBaseClass
@@ -28,6 +29,12 @@ class BlockingOperationError(RuntimeError):
2829 """An issue with task blocking execution."""
2930
3031
32+ if sys .version_info >= (3 , 12 ):
33+ _TaskCompatibleCoro : TypeAlias = Coroutine [Any , Any , Any ]
34+ else :
35+ _TaskCompatibleCoro : TypeAlias = Generator [Future [object ] | None , None , Any ] | Coroutine [Any , Any , Any ]
36+
37+
3138class Task (Generic [_T ], asyncio .Task , metaclass = AbstractBaseClass ):
3239 """Base class for ReportPortal client tasks.
3340
@@ -41,7 +48,7 @@ class Task(Generic[_T], asyncio.Task, metaclass=AbstractBaseClass):
4148
4249 def __init__ (
4350 self ,
44- coro : Generator [ Future [ object ] | None , None , Any ] | Coroutine [ Any , Any , Any ] ,
51+ coro : _TaskCompatibleCoro ,
4552 * ,
4653 loop : asyncio .AbstractEventLoop ,
4754 name : Optional [str ] = None ,
0 commit comments