


'''simple docstring'''



from typing import List, Optional, TypeVar

from .arrow_dataset import Dataset, _concatenate_map_style_datasets, _interleave_map_style_datasets
from .dataset_dict import DatasetDict, IterableDatasetDict
from .info import DatasetInfo
from .iterable_dataset import IterableDataset, _concatenate_iterable_datasets, _interleave_iterable_datasets
from .splits import NamedSplit
from .utils import logging
from .utils.py_utils import Literal


_lowercase      :      List[str]            =					logging.get_logger(__name__)


_lowercase      :      int            =					TypeVar("""DatasetType""", Dataset, IterableDataset)


def 				lowerCamelCase__				(	A       :      List[DatasetType]				,       A       :      Optional[List[float]] = None				,       A       :      Optional[int] = None				,       A       :      Optional[DatasetInfo] = None				,       A       :      Optional[NamedSplit] = None				,       A       :      Literal["first_exhausted", "all_exhausted"] = "first_exhausted"				,       ):




						'''simple docstring'''






						from .arrow_dataset import Dataset
						from .iterable_dataset import IterableDataset

						if not datasets:
												raise ValueError('''Unable to interleave an empty list of datasets.'''					)
						for i, dataset in enumerate(A					):
												if not isinstance(A				,       (Dataset, IterableDataset)					):
																		if isinstance(A				,       (DatasetDict, IterableDatasetDict)					):
																								if not dataset:
																														raise ValueError(
																														    f"""Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} """
																														    '''is an empty dataset dictionary.'''					)
																								raise ValueError(
																								    f"""Dataset at position {i} has at least one split: {list(A					)}\n"""
																								    f"""Please pick one to interleave with the other datasets, for example: dataset['{next(iter(A					)					)}']"""					)
																		raise ValueError(
																		    f"""Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} is a {type(A					).__name__}."""					)
												if i == 0:
																		UpperCAmelCase    ,    UpperCAmelCase					    =     (
																		    (Dataset, IterableDataset) if isinstance(A				,       A					) else (IterableDataset, Dataset)
																		)
												elif not isinstance(A				,       A					):
																		raise ValueError(
																		    f"""Unable to interleave a {dataset_type.__name__} (at position 0) with a {other_type.__name__} (at position {i}). Expected a list of Dataset objects or a list of IterableDataset objects."""					)
						if stopping_strategy not in ["first_exhausted", "all_exhausted"]:
												raise ValueError(f"""{stopping_strategy} is not supported. Please enter a valid stopping_strategy."""					)
						if dataset_type is Dataset:
												return _interleave_map_style_datasets(
												    A				,       A				,       A				,       info=A				,       split=A				,       stopping_strategy=A					)
						else:
												return _interleave_iterable_datasets(
												    A				,       A				,       A				,       info=A				,       split=A				,       stopping_strategy=A					)




def 				lowerCamelCase__				(	A       :      List[DatasetType]				,       A       :      Optional[DatasetInfo] = None				,       A       :      Optional[NamedSplit] = None				,       A       :      int = 0				,       ):




						'''simple docstring'''






						if not dsets:
												raise ValueError('''Unable to concatenate an empty list of datasets.'''					)
						for i, dataset in enumerate(A					):
												if not isinstance(A				,       (Dataset, IterableDataset)					):
																		if isinstance(A				,       (DatasetDict, IterableDatasetDict)					):
																								if not dataset:
																														raise ValueError(
																														    f"""Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} """
																														    '''is an empty dataset dictionary.'''					)
																								raise ValueError(
																								    f"""Dataset at position {i} has at least one split: {list(A					)}\n"""
																								    f"""Please pick one to interleave with the other datasets, for example: dataset['{next(iter(A					)					)}']"""					)
																		raise ValueError(
																		    f"""Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} is a {type(A					).__name__}."""					)
												if i == 0:
																		UpperCAmelCase    ,    UpperCAmelCase					    =     (
																		    (Dataset, IterableDataset) if isinstance(A				,       A					) else (IterableDataset, Dataset)
																		)
												elif not isinstance(A				,       A					):
																		raise ValueError(
																		    f"""Unable to interleave a {dataset_type.__name__} (at position 0) with a {other_type.__name__} (at position {i}). Expected a list of Dataset objects or a list of IterableDataset objects."""					)
						if dataset_type is Dataset:
												return _concatenate_map_style_datasets(A				,       info=A				,       split=A				,       axis=A					)
						else:
												return _concatenate_iterable_datasets(A				,       info=A				,       split=A				,       axis=A					)









'''simple docstring'''



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_lowercase      :      List[str]            =					{
    """configuration_time_series_transformer""": [
        """TIME_SERIES_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """TimeSeriesTransformerConfig""",
    ],
}

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_lowercase      :      Dict            =					[
	    """TIME_SERIES_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """TimeSeriesTransformerForPrediction""",
	    """TimeSeriesTransformerModel""",
	    """TimeSeriesTransformerPreTrainedModel""",
	]


if TYPE_CHECKING:
	from .configuration_time_series_transformer import (
	    TIME_SERIES_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
	    TimeSeriesTransformerConfig,
	)

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_time_series_transformer import (
		    TIME_SERIES_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
		    TimeSeriesTransformerForPrediction,
		    TimeSeriesTransformerModel,
		    TimeSeriesTransformerPreTrainedModel,
		)

else:
	import sys

	_lowercase      :      Tuple            =					_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)





