# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__lowercase							 =					{
    '''configuration_xmod''': [
        '''XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''XmodConfig''',
        '''XmodOnnxConfig''',
    ],
}

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __lowercase							 =					[
        '''XMOD_PRETRAINED_MODEL_ARCHIVE_LIST''',
        '''XmodForCausalLM''',
        '''XmodForMaskedLM''',
        '''XmodForMultipleChoice''',
        '''XmodForQuestionAnswering''',
        '''XmodForSequenceClassification''',
        '''XmodForTokenClassification''',
        '''XmodModel''',
        '''XmodPreTrainedModel''',
    ]

if TYPE_CHECKING:
    from .configuration_xmod import XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP, XmodConfig, XmodOnnxConfig

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_xmod import (
            XMOD_PRETRAINED_MODEL_ARCHIVE_LIST,
            XmodForCausalLM,
            XmodForMaskedLM,
            XmodForMultipleChoice,
            XmodForQuestionAnswering,
            XmodForSequenceClassification,
            XmodForTokenClassification,
            XmodModel,
            XmodPreTrainedModel,
        )

else:
    import sys

    __lowercase							 =					_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)













from typing import Callable, Optional

from .. import Features
from ..packaged_modules.generator.generator import Generator
from .abc import AbstractDatasetInputStream

class     _SCREAMING_SNAKE_CASE       (			_a      ):





	def __init__(		self				:					List[Any] ,  __lowerCamelCase				:					Callable ,  __lowerCamelCase				:					Optional[Features] = None ,  __lowerCamelCase				:					str = None ,  __lowerCamelCase				:					bool = False ,  __lowerCamelCase				:					bool = False ,  __lowerCamelCase				:					Optional[dict] = None ,  __lowerCamelCase				:					Optional[int] = None ,  **__lowerCamelCase				:					List[Any] ,  ):
		super().__init__(
		    features=__lowerCamelCase ,  cache_dir=__lowerCamelCase ,  keep_in_memory=__lowerCamelCase ,  streaming=__lowerCamelCase ,  num_proc=__lowerCamelCase ,  **__lowerCamelCase ,  )
		UpperCamelCase     :Union[str, Any]          =	Generator(
		    cache_dir=__lowerCamelCase ,  features=__lowerCamelCase ,  generator=__lowerCamelCase ,  gen_kwargs=__lowerCamelCase ,  **__lowerCamelCase ,  )





	def 						_A (		self				:					List[str]	):
		# Build iterable dataset
		if self.streaming:
			UpperCamelCase     :Any          =	self.builder.as_streaming_dataset(split="""train"""	)
		# Build regular (map-style) dataset
		else:
			UpperCamelCase     :Tuple          =	None
			UpperCamelCase     :Dict          =	None
			UpperCamelCase     :Dict          =	None
			UpperCamelCase     :List[str]          =	None

			self.builder.download_and_prepare(
			    download_config=__lowerCamelCase ,  download_mode=__lowerCamelCase ,  verification_mode=__lowerCamelCase ,  base_path=__lowerCamelCase ,  num_proc=self.num_proc ,  )
			UpperCamelCase     :Tuple          =	self.builder.as_dataset(
			    split="""train""" ,  verification_mode=__lowerCamelCase ,  in_memory=self.keep_in_memory	)
		return dataset
