changed to generic types

This commit is contained in:
Gourav Kumar 2022-02-20 09:40:45 +05:30
parent b9366541f3
commit 4173736014

View File

@ -1,6 +1,7 @@
import datetime import datetime
from dataclasses import dataclass from dataclasses import dataclass
from typing import Dict, Iterable, List, Literal, Tuple, Union from msilib import sequence
from typing import Dict, Iterable, List, Literal, Mapping, Sequence, Tuple, Union
@dataclass @dataclass
@ -28,17 +29,17 @@ class AllFrequencies:
def _preprocess_timeseries( def _preprocess_timeseries(
data: Union[ data: Union[
List[Iterable[Union[str, datetime.datetime, float]]], Sequence[Iterable[Union[str, datetime.datetime, float]]],
List[Dict[str, Union[float, datetime.datetime]]], Sequence[Mapping[str, Union[float, datetime.datetime]]],
List[Dict[Union[str, datetime.datetime], float]], Sequence[Mapping[Union[str, datetime.datetime], float]],
Dict[Union[str, datetime.datetime], float] Mapping[Union[str, datetime.datetime], float]
], ],
date_format: str date_format: str
) -> List[Tuple[datetime.datetime, float]]: ) -> List[Tuple[datetime.datetime, float]]:
"""Converts any type of list to the correct type""" """Converts any type of list to the correct type"""
if isinstance(data, list): if isinstance(data, Sequence):
if isinstance(data[0], dict): if isinstance(data[0], Mapping):
if len(data[0].keys()) == 2: if len(data[0].keys()) == 2:
current_data = [tuple(i.values()) for i in data] current_data = [tuple(i.values()) for i in data]
elif len(data[0].keys()) == 1: elif len(data[0].keys()) == 1:
@ -47,7 +48,7 @@ def _preprocess_timeseries(
raise TypeError("Could not parse the data") raise TypeError("Could not parse the data")
current_data = _preprocess_timeseries(current_data, date_format) current_data = _preprocess_timeseries(current_data, date_format)
elif isinstance(data[0], Iterable): elif isinstance(data[0], Sequence):
if isinstance(data[0][0], str): if isinstance(data[0][0], str):
current_data = [] current_data = []
for i in data: for i in data:
@ -60,7 +61,7 @@ def _preprocess_timeseries(
else: else:
raise TypeError("Could not parse the data") raise TypeError("Could not parse the data")
elif isinstance(data, dict): elif isinstance(data, Mapping):
current_data = [(k, v) for k, v in data.items()] current_data = [(k, v) for k, v in data.items()]
current_data = _preprocess_timeseries(current_data, date_format) current_data = _preprocess_timeseries(current_data, date_format)