


"""simple docstring"""







import unittest

from datasets import load_dataset

from transformers import load_tool

from .test_tools_common import ToolTesterMixin






class  __A							(			unittest.TestCase,       _SCREAMING_SNAKE_CASE     ):






 """simple docstring"""




 def  SCREAMING_SNAKE_CASE				(						self		)   ->	str:
     a											=load_tool('''document-question-answering'''		)
     self.tool.setup()
     a											=load_tool('''document-question-answering'''					,       remote=__A		)


 def  SCREAMING_SNAKE_CASE				(						self		)   ->	Optional[Any]:
     a											=load_dataset('''hf-internal-testing/example-documents'''					,       split='''test'''		)
     a											=dataset[0]['''image''']

     a											=self.tool(__A					,       '''When is the coffee break?'''		)
     self.assertEqual(__A					,       '''11-14 to 11:39 a.m.'''		)


 def  SCREAMING_SNAKE_CASE				(						self		)   ->	Optional[int]:
     a											=load_dataset('''hf-internal-testing/example-documents'''					,       split='''test'''		)
     a											=dataset[0]['''image''']

     a											=self.remote_tool(__A					,       '''When is the coffee break?'''		)
     self.assertEqual(__A					,       '''11-14 to 11:39 a.m.'''		)


 def  SCREAMING_SNAKE_CASE				(						self		)   ->	Union[str, Any]:
     a											=load_dataset('''hf-internal-testing/example-documents'''					,       split='''test'''		)
     a											=dataset[0]['''image''']

     self.tool(document=__A					,       question='''When is the coffee break?'''		)





 def  SCREAMING_SNAKE_CASE				(						self		)   ->	Optional[int]:
     a											=load_dataset('''hf-internal-testing/example-documents'''					,       split='''test'''		)
     a											=dataset[0]['''image''']

     a											=self.remote_tool(document=__A					,       question='''When is the coffee break?'''		)
     self.assertEqual(__A					,       '''11-14 to 11:39 a.m.'''		)



"""simple docstring"""







import torch
import torch.nn as nn
from transformers.modeling_utils import ModuleUtilsMixin
from transformers.models.ta.modeling_ta import (
    TaBlock,
    TaConfig,
    TaLayerNorm,
)

from ...configuration_utils import ConfigMixin, register_to_config
from ...models import ModelMixin






class  __A							(			_SCREAMING_SNAKE_CASE,       _SCREAMING_SNAKE_CASE,       _SCREAMING_SNAKE_CASE     ):






 """simple docstring"""




 @register_to_config
 def __init__(						self					,       __A					,       __A					,       __A					,       __A					,       __A					,       __A					,       __A					,       __A					,       __A					,       __A = False					,       )   ->	Optional[Any]:
     super().__init__()

     a											=nn.Linear(__A					,       __A					,       bias=__A		)

     a											=nn.Embedding(__A					,       __A		)
     a											=False

     a											=nn.Dropout(p=__A		)

     a											=TaConfig(
         d_model=__A					,       num_heads=__A					,       d_kv=__A					,       d_ff=__A					,       feed_forward_proj=__A					,       dropout_rate=__A					,       is_decoder=__A					,       is_encoder_decoder=__A					,       )
     a											=nn.ModuleList()
     for lyr_num in range(__A		):
         a											=TaBlock(__A		)
         self.encoders.append(__A		)

     a											=TaLayerNorm(__A		)
     a											=nn.Dropout(p=__A		)





 def  SCREAMING_SNAKE_CASE				(						self					,       __A					,       __A		)   ->	str:
     a											=self.input_proj(__A		)

     # terminal relative positional encodings
     a											=encoder_inputs.shape[1]
     a											=torch.arange(__A					,       device=encoder_inputs.device		)

     a											=encoder_inputs_mask.sum(-1		)
     a											=torch.roll(input_positions.unsqueeze(0		)					,       tuple(seq_lens.tolist()		)					,       dims=0		)
     x += self.position_encoding(__A		)

     a											=self.dropout_pre(__A		)

     # inverted the attention mask
     a											=encoder_inputs.size()
     a											=self.get_extended_attention_mask(__A					,       __A		)

     for lyr in self.encoders:
         a											=lyr(__A					,       __A		)[0]
     a											=self.layer_norm(__A		)

     return self.dropout_post(__A		), encoder_inputs_mask