
from abc import ABC, abstractmethod
from typing import Optional, Union

from .. import Dataset, DatasetDict, Features, IterableDataset, IterableDatasetDict, NamedSplit
from ..utils.typing import NestedDataStructureLike, PathLike





class    __A(					UpperCAmelCase							):

					def __init__(						self       :  Any ,       __UpperCamelCase       :  Optional[NestedDataStructureLike[PathLike]] = None ,       __UpperCamelCase       :  Optional[NamedSplit] = None ,       __UpperCamelCase       :  Optional[Features] = None ,       __UpperCamelCase       :  str = None ,       __UpperCamelCase       :  bool = False ,       __UpperCamelCase       :  bool = False ,       __UpperCamelCase       :  Optional[int] = None ,       **__UpperCamelCase       :  List[Any] ,       ):
												lowerCamelCase_					=       path_or_paths
												lowerCamelCase_					=       split if split or isinstance(__UpperCamelCase ,       __UpperCamelCase ) else """train"""
												lowerCamelCase_					=       features
												lowerCamelCase_					=       cache_dir
												lowerCamelCase_					=       keep_in_memory
												lowerCamelCase_					=       streaming
												lowerCamelCase_					=       num_proc
												lowerCamelCase_					=       kwargs



					@abstractmethod
					def  lowercase__   (						self       :  Optional[Any] ):
												pass





class    __A(					UpperCAmelCase							):

					def __init__(						self       :  int ,       __UpperCamelCase       :  Optional[Features] = None ,       __UpperCamelCase       :  str = None ,       __UpperCamelCase       :  bool = False ,       __UpperCamelCase       :  bool = False ,       __UpperCamelCase       :  Optional[int] = None ,       **__UpperCamelCase       :  int ,       ):
												lowerCamelCase_					=       features
												lowerCamelCase_					=       cache_dir
												lowerCamelCase_					=       keep_in_memory
												lowerCamelCase_					=       streaming
												lowerCamelCase_					=       num_proc
												lowerCamelCase_					=       kwargs



					@abstractmethod
					def  lowercase__   (						self       :  int ):
												pass







from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


lowercase   =	{
    '''configuration_blip''': [
        '''BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''BlipConfig''',
        '''BlipTextConfig''',
        '''BlipVisionConfig''',
    ],
    '''processing_blip''': ['''BlipProcessor'''],
}

try:
		if not is_vision_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowercase   =	['''BlipImageProcessor''']


try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowercase   =	[
		    '''BLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''BlipModel''',
		    '''BlipPreTrainedModel''',
		    '''BlipForConditionalGeneration''',
		    '''BlipForQuestionAnswering''',
		    '''BlipVisionModel''',
		    '''BlipTextModel''',
		    '''BlipForImageTextRetrieval''',
		]

try:
		if not is_tf_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowercase   =	[
		    '''TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''TFBlipModel''',
		    '''TFBlipPreTrainedModel''',
		    '''TFBlipForConditionalGeneration''',
		    '''TFBlipForQuestionAnswering''',
		    '''TFBlipVisionModel''',
		    '''TFBlipTextModel''',
		    '''TFBlipForImageTextRetrieval''',
		]

if TYPE_CHECKING:
		from .configuration_blip import BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP, BlipConfig, BlipTextConfig, BlipVisionConfig
		from .processing_blip import BlipProcessor

		try:
				if not is_vision_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .image_processing_blip import BlipImageProcessor

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_blip import (
				    BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
				    BlipForConditionalGeneration,
				    BlipForImageTextRetrieval,
				    BlipForQuestionAnswering,
				    BlipModel,
				    BlipPreTrainedModel,
				    BlipTextModel,
				    BlipVisionModel,
				)

		try:
				if not is_tf_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_tf_blip import (
				    TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
				    TFBlipForConditionalGeneration,
				    TFBlipForImageTextRetrieval,
				    TFBlipForQuestionAnswering,
				    TFBlipModel,
				    TFBlipPreTrainedModel,
				    TFBlipTextModel,
				    TFBlipVisionModel,
				)

else:
		import sys

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





