



'''simple docstring'''




from typing import TYPE_CHECKING

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


lowerCamelCase_							:Any       = {
    '''configuration_layoutlmv3''': [
        '''LAYOUTLMV3_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''LayoutLMv3Config''',
        '''LayoutLMv3OnnxConfig''',
    ],
    '''processing_layoutlmv3''': ['''LayoutLMv3Processor'''],
    '''tokenization_layoutlmv3''': ['''LayoutLMv3Tokenizer'''],
}

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase_							:Optional[int]       = ['''LayoutLMv3TokenizerFast''']

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase_							:Union[str, Any]       = [
						    '''LAYOUTLMV3_PRETRAINED_MODEL_ARCHIVE_LIST''',
						    '''LayoutLMv3ForQuestionAnswering''',
						    '''LayoutLMv3ForSequenceClassification''',
						    '''LayoutLMv3ForTokenClassification''',
						    '''LayoutLMv3Model''',
						    '''LayoutLMv3PreTrainedModel''',
						]

try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase_							:List[str]       = [
						    '''TF_LAYOUTLMV3_PRETRAINED_MODEL_ARCHIVE_LIST''',
						    '''TFLayoutLMv3ForQuestionAnswering''',
						    '''TFLayoutLMv3ForSequenceClassification''',
						    '''TFLayoutLMv3ForTokenClassification''',
						    '''TFLayoutLMv3Model''',
						    '''TFLayoutLMv3PreTrainedModel''',
						]

try:
						if not is_vision_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase_							:int       = ['''LayoutLMv3FeatureExtractor''']
						lowerCamelCase_							:Optional[int]       = ['''LayoutLMv3ImageProcessor''']


if TYPE_CHECKING:
						from .configuration_layoutlmva import (
						    LAYOUTLMV3_PRETRAINED_CONFIG_ARCHIVE_MAP,
						    LayoutLMvaConfig,
						    LayoutLMvaOnnxConfig,
						)
						from .processing_layoutlmva import LayoutLMvaProcessor
						from .tokenization_layoutlmva import LayoutLMvaTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_layoutlmva_fast import LayoutLMvaTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_layoutlmva import (
												    LAYOUTLMV3_PRETRAINED_MODEL_ARCHIVE_LIST,
												    LayoutLMvaForQuestionAnswering,
												    LayoutLMvaForSequenceClassification,
												    LayoutLMvaForTokenClassification,
												    LayoutLMvaModel,
												    LayoutLMvaPreTrainedModel,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_layoutlmva import (
												    TF_LAYOUTLMV3_PRETRAINED_MODEL_ARCHIVE_LIST,
												    TFLayoutLMvaForQuestionAnswering,
												    TFLayoutLMvaForSequenceClassification,
												    TFLayoutLMvaForTokenClassification,
												    TFLayoutLMvaModel,
												    TFLayoutLMvaPreTrainedModel,
												)

						try:
												if not is_vision_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .feature_extraction_layoutlmva import LayoutLMvaFeatureExtractor
												from .image_processing_layoutlmva import LayoutLMvaImageProcessor

else:
						import sys

						lowerCamelCase_							:Optional[int]       = _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)




'''simple docstring'''




from typing import Dict

from .base import GenericTensor, Pipeline







class      _lowerCAmelCase							(      __UpperCAmelCase			):


	def    _a     (self	,				lowercase=None	,				lowercase=None	,				lowercase=None	,				**lowercase							):
				if tokenize_kwargs is None:
							A_     :						Optional[Any]     =					{}

				if truncation is not None:
							if "truncation" in tokenize_kwargs:
										raise ValueError(
										    """truncation parameter defined twice (given as keyword argument as well as in tokenize_kwargs)"""							)
							A_     :						str     =					truncation

				A_     :						List[str]     =					tokenize_kwargs

				A_     :						Dict     =					{}
				if return_tensors is not None:
							A_     :						List[Any]     =					return_tensors

				return preprocess_params, {}, postprocess_params


	def    _a     (self	,				lowercase	,				**lowercase							):
				A_     :						Optional[int]     =					self.framework
				A_     :						str     =					self.tokenizer(lowercase	,				return_tensors=lowercase	,				**lowercase							)
				return model_inputs


	def    _a     (self	,				lowercase							):
				A_     :						str     =					self.model(**lowercase							)
				return model_outputs


	def    _a     (self	,				lowercase	,				lowercase=False							):
				# [0] is the first available tensor, logits or last_hidden_state.
				if return_tensors:
							return model_outputs[0]
				if self.framework == "pt":
							return model_outputs[0].tolist()
				elif self.framework == "tf":
							return model_outputs[0].numpy().tolist()


	def __call__(self	,				*lowercase	,				**lowercase							):
				return super().__call__(*lowercase	,				**lowercase							)