
from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowerCamelCase_  :	Union[str, Any] 				=					{
    """configuration_bigbird_pegasus""": [
        """BIGBIRD_PEGASUS_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """BigBirdPegasusConfig""",
        """BigBirdPegasusOnnxConfig""",
    ],
}

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowerCamelCase_  :	Any 				=					[
							    """BIGBIRD_PEGASUS_PRETRAINED_MODEL_ARCHIVE_LIST""",
							    """BigBirdPegasusForCausalLM""",
							    """BigBirdPegasusForConditionalGeneration""",
							    """BigBirdPegasusForQuestionAnswering""",
							    """BigBirdPegasusForSequenceClassification""",
							    """BigBirdPegasusModel""",
							    """BigBirdPegasusPreTrainedModel""",
							]


if TYPE_CHECKING:
							from .configuration_bigbird_pegasus import (
							    BIGBIRD_PEGASUS_PRETRAINED_CONFIG_ARCHIVE_MAP,
							    BigBirdPegasusConfig,
							    BigBirdPegasusOnnxConfig,
							)

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_bigbird_pegasus import (
														    BIGBIRD_PEGASUS_PRETRAINED_MODEL_ARCHIVE_LIST,
														    BigBirdPegasusForCausalLM,
														    BigBirdPegasusForConditionalGeneration,
														    BigBirdPegasusForQuestionAnswering,
														    BigBirdPegasusForSequenceClassification,
														    BigBirdPegasusModel,
														    BigBirdPegasusPreTrainedModel,
														)


else:
							import sys

							lowerCamelCase_  :	Any 				=					_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)








from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding

class     _UpperCamelCase			(   _A					):






			'''simple docstring'''

			__UpperCamelCase :  Union[str, Any]    =	["""image_processor""", """tokenizer"""]
			__UpperCamelCase :  List[Any]    =	"""AutoImageProcessor"""
			__UpperCamelCase :  Tuple    =	"""AutoTokenizer"""

			def __init__(    self	:    Any  ,		snake_case_	:    Optional[Any]  ,		snake_case_	:    Any ):
							super().__init__(snake_case_  ,		snake_case_ )
							UpperCamelCase_:							int		=  self.image_processor

			def __call__(    self	:    str  ,		snake_case_	:    Optional[int]=None  ,		snake_case_	:    int=None  ,		snake_case_	:    Dict=None  ,		**snake_case_	:    Optional[int] ):

							if text is None and images is None:
											raise ValueError("""You have to specify either text or images. Both cannot be none.""" )

							if text is not None:
											UpperCamelCase_:							List[Any]		=  self.tokenizer(snake_case_  ,		return_tensors=snake_case_  ,		**snake_case_ )

							if images is not None:
											UpperCamelCase_:							Any		=  self.image_processor(snake_case_  ,		return_tensors=snake_case_  ,		**snake_case_ )

							if text is not None and images is not None:
											UpperCamelCase_:							Tuple		=  image_features.pixel_values
											return encoding
							elif text is not None:
											return encoding
							else:
											return BatchEncoding(data=dict(**snake_case_ )  ,		tensor_type=snake_case_ )

			def  lowerCAmelCase__		(    self	:    List[str]  ,		*snake_case_	:    int  ,		**snake_case_	:    Optional[Any] ):
							return self.tokenizer.batch_decode(*snake_case_  ,		**snake_case_ )

			def  lowerCAmelCase__		(    self	:    int  ,		*snake_case_	:    Optional[Any]  ,		**snake_case_	:    str ):
							return self.tokenizer.decode(*snake_case_  ,		**snake_case_ )




			@property
			def  lowerCAmelCase__		(    self	:    Union[str, Any] ):
							return ["input_ids", "attention_mask", "pixel_values"]






