from typing import TYPE_CHECKING

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


__SCREAMING_SNAKE_CASE						:   List[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:
				__SCREAMING_SNAKE_CASE						:   Dict         =			['LayoutLMv3TokenizerFast']

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

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

try:
				if not is_vision_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__SCREAMING_SNAKE_CASE						:   Dict         =			['LayoutLMv3FeatureExtractor']
				__SCREAMING_SNAKE_CASE						:   List[Any]         =			['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

				__SCREAMING_SNAKE_CASE						:   Union[str, Any]         =			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)
import logging

from transformers import PretrainedConfig


__SCREAMING_SNAKE_CASE						:   Any         =			logging.getLogger(__name__)


__SCREAMING_SNAKE_CASE						:   int         =			{
    'bertabs-finetuned-cnndm': 'https://huggingface.co/remi/bertabs-finetuned-cnndm-extractive-abstractive-summarization/resolve/main/config.json',
}



class        lowercase_   (					__snake_case		):
							_lowerCamelCase						=		'bertabs'



							def __init__(						self				,    lowercase_=30_522				,    lowercase_=512				,    lowercase_=6				,    lowercase_=512				,    lowercase_=8				,    lowercase_=512				,    lowercase_=0.2				,    lowercase_=6				,    lowercase_=768				,    lowercase_=8				,    lowercase_=2_048				,    lowercase_=0.2				,    **lowercase_				,    ):
													super().__init__(**lowercase_    )

													_snake_case						:					List[Any]    =   vocab_size
													_snake_case						:					int    =   max_pos

													_snake_case						:					Tuple    =   enc_layers
													_snake_case						:					Optional[Any]    =   enc_hidden_size
													_snake_case						:					Union[str, Any]    =   enc_heads
													_snake_case						:					str    =   enc_ff_size
													_snake_case						:					Any    =   enc_dropout

													_snake_case						:					Tuple    =   dec_layers
													_snake_case						:					Optional[Any]    =   dec_hidden_size
													_snake_case						:					Dict    =   dec_heads
													_snake_case						:					str    =   dec_ff_size
													_snake_case						:					List[str]    =   dec_dropout