diff --git a/indico/http/serialization.py b/indico/http/serialization.py index 7038e8e0..98c68d92 100644 --- a/indico/http/serialization.py +++ b/indico/http/serialization.py @@ -1,6 +1,7 @@ """ Handles deserialization / decoding of responses """ + import gzip import io import json @@ -8,6 +9,7 @@ import traceback from collections import defaultdict from email.message import EmailMessage +from typing import Dict, Tuple from indico.errors import IndicoDecodingError @@ -42,6 +44,7 @@ def deserialize(response, force_json=False, force_decompress=False): content_type, charset, content.decode("ascii", "ignore") ) + async def aio_deserialize(response, force_json=False, force_decompress=False): content_type, params = parse_header(response.headers.get("Content-Type")) content = await response.read() @@ -63,11 +66,13 @@ async def aio_deserialize(response, force_json=False, force_decompress=False): content_type, charset, content.decode("ascii", "ignore") ) -def parse_header(header: str) -> tuple[str, dict[str, str]]: + +def parse_header(header: str) -> Tuple[str, Dict[str, str]]: email = EmailMessage() email["Content-Type"] = header return email.get_content_type(), email["Content-Type"].params + def raw_bytes(content, *args, **kwargs): return content diff --git a/indico/queries/model_export.py b/indico/queries/model_export.py index 197229ba..e802c10c 100644 --- a/indico/queries/model_export.py +++ b/indico/queries/model_export.py @@ -1,3 +1,5 @@ +from typing import List, Optional, Union + from indico.client.request import Delay, GraphQLRequest, RequestChain from indico.types.model_export import ModelExport @@ -36,13 +38,13 @@ class CreateModelExport(RequestChain): request_interval (int | float): the interval between requests in seconds. Defaults to 5. """ - previous: ModelExport | None = None + previous: Optional[ModelExport] = None def __init__( self, model_id: int, wait: bool = True, - request_interval: int | float = 5, + request_interval: Union[int, float] = 5, ): self.wait = wait self.model_id = model_id @@ -91,14 +93,14 @@ class GetModelExports(GraphQLRequest): "createdBy", ] - def __init__(self, export_ids: list[int], with_signed_url: bool = False): + def __init__(self, export_ids: List[int], with_signed_url: bool = False): if with_signed_url: self._base_fields.append("signedUrl") query_with_fields = self.query.replace("{fields}", "\n".join(self._base_fields)) super().__init__(query_with_fields, variables={"exportIds": export_ids}) - def process_response(self, response) -> list[ModelExport]: + def process_response(self, response) -> List[ModelExport]: return [ ModelExport(**export) for export in super().process_response(response)["modelExports"][ diff --git a/indico/queries/model_import.py b/indico/queries/model_import.py index afdcfff0..b4ab038e 100644 --- a/indico/queries/model_import.py +++ b/indico/queries/model_import.py @@ -1,4 +1,4 @@ -from typing import Generator +from typing import Generator, Optional, Union import requests @@ -100,7 +100,10 @@ class UploadStaticModelExport(RequestChain): """ def __init__( - self, file_path: str, auto_process: bool = False, workflow_id: int | None = None + self, + file_path: str, + auto_process: bool = False, + workflow_id: Optional[int] = None, ): self.file_path = file_path self.auto_process = auto_process @@ -111,7 +114,7 @@ def __init__( self.workflow_id = workflow_id - def requests(self) -> Generator[str | Job, None, None]: + def requests(self) -> Generator[Union[str, Job], None, None]: if self.auto_process: yield _UploadSMExport(self.file_path) yield ProcessStaticModelExport( diff --git a/indico/queries/submission.py b/indico/queries/submission.py index 1e150a1e..ccdd8265 100644 --- a/indico/queries/submission.py +++ b/indico/queries/submission.py @@ -490,7 +490,7 @@ class SubmitReview(GraphQLRequest): def __init__( self, submission: Union[int, Submission], - changes: Dict | List = None, + changes: Union[Dict, List] = None, rejected: bool = False, force_complete: bool = None, ): diff --git a/indico/queries/workflow_components.py b/indico/queries/workflow_components.py index 46b89a13..396bd84e 100644 --- a/indico/queries/workflow_components.py +++ b/indico/queries/workflow_components.py @@ -1,4 +1,4 @@ -from typing import Any, List +from typing import Any, Dict, List, Optional import jsons @@ -71,7 +71,7 @@ def __init__( after_component_link: int, workflow_id: int, component: dict, - blueprint_id: int | None = None, + blueprint_id: Optional[int] = None, ): super().__init__( self.query, @@ -464,12 +464,12 @@ class AddStaticModelComponent(RequestChain): def __init__( self, workflow_id: int, - after_component_id: int | None = None, - after_component_link_id: int | None = None, - static_component_config: dict[str, Any] | None = None, - component_name: str | None = None, + after_component_id: Optional[int] = None, + after_component_link_id: Optional[int] = None, + static_component_config: Optional[Dict[str, Any]] = None, + component_name: Optional[str] = None, auto_process: bool = False, - export_file: str | None = None, + export_file: Optional[str] = None, ): if not export_file and auto_process: raise IndicoInputError("Must provide export_file if auto_process is True.")