

"""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


_a       =							logging.get_logger(__name__)


_a       =							TypeVar('DatasetType', Dataset, IterableDataset)




def   _A  (  UpperCamelCase_     :       List[DatasetType],			UpperCamelCase_     :       Optional[List[float]] = None,			UpperCamelCase_     :       Optional[int] = None,			UpperCamelCase_     :       Optional[DatasetInfo] = None,			UpperCamelCase_     :       Optional[NamedSplit] = None,			UpperCamelCase_     :       Literal["first_exhausted", "all_exhausted"] = "first_exhausted",			)	->						DatasetType:
   '''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(UpperCamelCase_):
      if not isinstance(UpperCamelCase_,			(Dataset, IterableDataset)):
         if isinstance(UpperCamelCase_,			(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(UpperCamelCase_)}\n"""
                F"""Please pick one to interleave with the other datasets, for example: dataset['{next(iter(UpperCamelCase_))}']""")
         raise ValueError(
             F"""Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} is a {type(UpperCamelCase_).__name__}.""")
      if i == 0:
         __lowercase		,__lowercase								=						(
             (Dataset, IterableDataset) if isinstance(UpperCamelCase_,			UpperCamelCase_) else (IterableDataset, Dataset)
         )
      elif not isinstance(UpperCamelCase_,			UpperCamelCase_):
         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(
          UpperCamelCase_,			UpperCamelCase_,			UpperCamelCase_,			info=UpperCamelCase_,			split=UpperCamelCase_,			stopping_strategy=UpperCamelCase_)
   else:
      return _interleave_iterable_datasets(
          UpperCamelCase_,			UpperCamelCase_,			UpperCamelCase_,			info=UpperCamelCase_,			split=UpperCamelCase_,			stopping_strategy=UpperCamelCase_)




def   _A  (  UpperCamelCase_     :       List[DatasetType],			UpperCamelCase_     :       Optional[DatasetInfo] = None,			UpperCamelCase_     :       Optional[NamedSplit] = None,			UpperCamelCase_     :       int = 0,			)	->						DatasetType:
   '''simple docstring'''


   if not dsets:
      raise ValueError("Unable to concatenate an empty list of datasets.")
   for i, dataset in enumerate(UpperCamelCase_):
      if not isinstance(UpperCamelCase_,			(Dataset, IterableDataset)):
         if isinstance(UpperCamelCase_,			(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(UpperCamelCase_)}\n"""
                F"""Please pick one to interleave with the other datasets, for example: dataset['{next(iter(UpperCamelCase_))}']""")
         raise ValueError(
             F"""Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} is a {type(UpperCamelCase_).__name__}.""")
      if i == 0:
         __lowercase		,__lowercase								=						(
             (Dataset, IterableDataset) if isinstance(UpperCamelCase_,			UpperCamelCase_) else (IterableDataset, Dataset)
         )
      elif not isinstance(UpperCamelCase_,			UpperCamelCase_):
         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(UpperCamelCase_,			info=UpperCamelCase_,			split=UpperCamelCase_,			axis=UpperCamelCase_)
   else:
      return _concatenate_iterable_datasets(UpperCamelCase_,			info=UpperCamelCase_,			split=UpperCamelCase_,			axis=UpperCamelCase_)






"""simple docstring"""





from typing import TYPE_CHECKING

# rely on isort to merge the imports
from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_a														=		{
    """configuration_autoformer""": [
        """AUTOFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """AutoformerConfig""",
    ],
}

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				_a														=		[
				    """AUTOFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
				    """AutoformerForPrediction""",
				    """AutoformerModel""",
				    """AutoformerPreTrainedModel""",
				]


if TYPE_CHECKING:
				from .configuration_autoformer import (
				    AUTOFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
				    AutoformerConfig,
				)

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_autoformer import (
								    AUTOFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    AutoformerForPrediction,
								    AutoformerModel,
								    AutoformerPreTrainedModel,
								)

else:
				import sys

				_a														=		_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)






