



"""simple docstring"""


import unittest

from transformers import MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING, AutoTokenizer, is_vision_available
from transformers.pipelines import pipeline
from transformers.pipelines.document_question_answering import apply_tesseract
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_detectrona,
    require_pytesseract,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
					from PIL import Image

					from transformers.image_utils import load_image
else:
					class 	_a       :
								"""simple docstring"""



								@staticmethod
								def        lowercase__  (						*__UpperCamelCase   :			Optional[Any] ,      **__UpperCamelCase   :			List[str]      )->Union[str, Any]:
												pass







					def        lowercase		(					_SCREAMING_SNAKE_CASE      :  Dict ):






									'''simple docstring'''



									return None


# This is a pinned image from a specific revision of a document question answering space, hosted by HuggingFace,
# so we can expect it to be available.
__A      :							Dict   =      (
    "https://huggingface.co/spaces/impira/docquery/resolve/2f6c96314dc84dfda62d40de9da55f2f5165d403/invoice.png"
)
@is_pipeline_test
@require_torch
@require_vision
class 	_a       (    unittest.TestCase):
			"""simple docstring"""
			UpperCamelCase__						=		MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING



			@require_pytesseract
			@require_vision
			def        lowercase__  (						self   :			Any ,      __UpperCamelCase   :			Dict ,      __UpperCamelCase   :			Union[str, Any] ,      __UpperCamelCase   :			str      )->List[str]:
							_UpperCAmelCase							=			pipeline(
							    '''document-question-answering''' ,      model=__UpperCamelCase ,      tokenizer=__UpperCamelCase ,      image_processor=__UpperCamelCase      )

							_UpperCAmelCase							=			INVOICE_URL
							_UpperCAmelCase							=			list(zip(*apply_tesseract(load_image(__UpperCamelCase      ) ,      __UpperCamelCase ,      ''''''      )      )      )
							_UpperCAmelCase							=			'''What is the placebo?'''
							_UpperCAmelCase							=			[
							    {
							        '''image''': load_image(__UpperCamelCase      ),
							        '''question''': question,
							    },
							    {
							        '''image''': image,
							        '''question''': question,
							    },
							    {
							        '''image''': image,
							        '''question''': question,
							        '''word_boxes''': word_boxes,
							    },
							]
							return dqa_pipeline, examples



			def        lowercase__  (						self   :			List[Any] ,      __UpperCamelCase   :			List[Any] ,      __UpperCamelCase   :			Tuple      )->str:
							_UpperCAmelCase							=			dqa_pipeline(__UpperCamelCase ,      top_k=2      )
							self.assertEqual(
							    __UpperCamelCase ,      [
							        [
							            {'''score''': ANY(__UpperCamelCase      ), '''answer''': ANY(__UpperCamelCase      ), '''start''': ANY(__UpperCamelCase      ), '''end''': ANY(__UpperCamelCase      )},
							            {'''score''': ANY(__UpperCamelCase      ), '''answer''': ANY(__UpperCamelCase      ), '''start''': ANY(__UpperCamelCase      ), '''end''': ANY(__UpperCamelCase      )},
							        ]
							    ]
							    * 3 ,      )



			@require_torch
			@require_detectrona
			@require_pytesseract
			def        lowercase__  (						self   :			Any      )->Dict:
							_UpperCAmelCase							=			pipeline('''document-question-answering''' ,      model='''hf-internal-testing/tiny-random-layoutlmv2'''      )
							_UpperCAmelCase							=			INVOICE_URL
							_UpperCAmelCase							=			'''How many cats are there?'''

							_UpperCAmelCase							=			[
							    {'''score''': 0.0_0_0_1, '''answer''': '''oy 2312/2019''', '''start''': 3_8, '''end''': 3_9},
							    {'''score''': 0.0_0_0_1, '''answer''': '''oy 2312/2019 DUE''', '''start''': 3_8, '''end''': 4_0},
							]
							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      __UpperCamelCase      )

							_UpperCAmelCase							=			dqa_pipeline({'''image''': image, '''question''': question} ,      top_k=2      )
							self.assertEqual(nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      __UpperCamelCase      )

							# This image does not detect ANY text in it, meaning layoutlmv2 should fail.
							# Empty answer probably
							_UpperCAmelCase							=			'''./tests/fixtures/tests_samples/COCO/000000039769.png'''
							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(__UpperCamelCase ,      []      )

							# We can optionnally pass directly the words and bounding boxes
							_UpperCAmelCase							=			'''./tests/fixtures/tests_samples/COCO/000000039769.png'''
							_UpperCAmelCase							=			[]
							_UpperCAmelCase							=			[]
							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      words=__UpperCamelCase ,      boxes=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(__UpperCamelCase ,      []      )



			@slow
			@require_torch
			@require_detectrona
			@require_pytesseract
			def        lowercase__  (						self   :			Any      )->Dict:
							_UpperCAmelCase							=			pipeline(
							    '''document-question-answering''' ,      model='''tiennvcs/layoutlmv2-base-uncased-finetuned-docvqa''' ,      revision='''9977165''' ,      )
							_UpperCAmelCase							=			INVOICE_URL
							_UpperCAmelCase							=			'''What is the invoice number?'''

							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.9_9_4_4, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        {'''score''': 0.0_0_0_9, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							    ] ,      )

							_UpperCAmelCase							=			dqa_pipeline({'''image''': image, '''question''': question} ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.9_9_4_4, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        {'''score''': 0.0_0_0_9, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							    ] ,      )

							_UpperCAmelCase							=			dqa_pipeline(
							    [{'''image''': image, '''question''': question}, {'''image''': image, '''question''': question}] ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        [
							            {'''score''': 0.9_9_4_4, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							            {'''score''': 0.0_0_0_9, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        ],
							    ]
							    * 2 ,      )



			@slow
			@require_torch
			@require_detectrona
			@require_pytesseract
			def        lowercase__  (						self   :			Any      )->str:
							_UpperCAmelCase							=			pipeline(
							    '''document-question-answering''' ,      model='''tiennvcs/layoutlmv2-base-uncased-finetuned-docvqa''' ,      revision='''9977165''' ,      max_seq_len=5_0 ,      )
							_UpperCAmelCase							=			INVOICE_URL
							_UpperCAmelCase							=			'''What is the invoice number?'''

							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.9_9_7_4, '''answer''': '''1110212019''', '''start''': 2_3, '''end''': 2_3},
							        {'''score''': 0.9_9_4_8, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							    ] ,      )

							_UpperCAmelCase							=			dqa_pipeline({'''image''': image, '''question''': question} ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.9_9_7_4, '''answer''': '''1110212019''', '''start''': 2_3, '''end''': 2_3},
							        {'''score''': 0.9_9_4_8, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							    ] ,      )

							_UpperCAmelCase							=			dqa_pipeline(
							    [{'''image''': image, '''question''': question}, {'''image''': image, '''question''': question}] ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        [
							            {'''score''': 0.9_9_7_4, '''answer''': '''1110212019''', '''start''': 2_3, '''end''': 2_3},
							            {'''score''': 0.9_9_4_8, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        ]
							    ]
							    * 2 ,      )



			@slow
			@require_torch
			@require_pytesseract
			@require_vision
			def        lowercase__  (						self   :			Tuple      )->str:
							_UpperCAmelCase							=			AutoTokenizer.from_pretrained(
							    '''impira/layoutlm-document-qa''' ,      revision='''3dc6de3''' ,      add_prefix_space=__UpperCamelCase      )
							_UpperCAmelCase							=			pipeline(
							    '''document-question-answering''' ,      model='''impira/layoutlm-document-qa''' ,      tokenizer=__UpperCamelCase ,      revision='''3dc6de3''' ,      )
							_UpperCAmelCase							=			INVOICE_URL
							_UpperCAmelCase							=			'''What is the invoice number?'''

							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.4_2_5_1, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        {'''score''': 0.0_8_1_9, '''answer''': '''1110212019''', '''start''': 2_3, '''end''': 2_3},
							    ] ,      )

							_UpperCAmelCase							=			dqa_pipeline({'''image''': image, '''question''': question} ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.4_2_5_1, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        {'''score''': 0.0_8_1_9, '''answer''': '''1110212019''', '''start''': 2_3, '''end''': 2_3},
							    ] ,      )

							_UpperCAmelCase							=			dqa_pipeline(
							    [{'''image''': image, '''question''': question}, {'''image''': image, '''question''': question}] ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        [
							            {'''score''': 0.4_2_5_1, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							            {'''score''': 0.0_8_1_9, '''answer''': '''1110212019''', '''start''': 2_3, '''end''': 2_3},
							        ]
							    ]
							    * 2 ,      )

							_UpperCAmelCase							=			list(zip(*apply_tesseract(load_image(__UpperCamelCase      ) ,      __UpperCamelCase ,      ''''''      )      )      )

							# This model should also work if `image` is set to None
							_UpperCAmelCase							=			dqa_pipeline({'''image''': None, '''word_boxes''': word_boxes, '''question''': question} ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.4_2_5_1, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        {'''score''': 0.0_8_1_9, '''answer''': '''1110212019''', '''start''': 2_3, '''end''': 2_3},
							    ] ,      )



			@slow
			@require_torch
			@require_pytesseract
			@require_vision
			def        lowercase__  (						self   :			Any      )->Any:
							_UpperCAmelCase							=			AutoTokenizer.from_pretrained(
							    '''impira/layoutlm-document-qa''' ,      revision='''3dc6de3''' ,      add_prefix_space=__UpperCamelCase      )
							_UpperCAmelCase							=			pipeline(
							    '''document-question-answering''' ,      model='''impira/layoutlm-document-qa''' ,      tokenizer=__UpperCamelCase ,      revision='''3dc6de3''' ,      max_seq_len=5_0 ,      )
							_UpperCAmelCase							=			INVOICE_URL
							_UpperCAmelCase							=			'''What is the invoice number?'''

							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.9_9_9_9, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        {'''score''': 0.9_9_9_8, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							    ] ,      )

							_UpperCAmelCase							=			dqa_pipeline(
							    [{'''image''': image, '''question''': question}, {'''image''': image, '''question''': question}] ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        [
							            {'''score''': 0.9_9_9_9, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							            {'''score''': 0.9_9_9_8, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        ]
							    ]
							    * 2 ,      )

							_UpperCAmelCase							=			list(zip(*apply_tesseract(load_image(__UpperCamelCase      ) ,      __UpperCamelCase ,      ''''''      )      )      )

							# This model should also work if `image` is set to None
							_UpperCAmelCase							=			dqa_pipeline({'''image''': None, '''word_boxes''': word_boxes, '''question''': question} ,      top_k=2      )
							self.assertEqual(
							    nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [
							        {'''score''': 0.9_9_9_9, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							        {'''score''': 0.9_9_9_8, '''answer''': '''us-001''', '''start''': 1_6, '''end''': 1_6},
							    ] ,      )



			@slow
			@require_torch
			def        lowercase__  (						self   :			Optional[Any]      )->List[Any]:
							_UpperCAmelCase							=			pipeline(
							    '''document-question-answering''' ,      model='''naver-clova-ix/donut-base-finetuned-docvqa''' ,      tokenizer=AutoTokenizer.from_pretrained('''naver-clova-ix/donut-base-finetuned-docvqa'''      ) ,      feature_extractor='''naver-clova-ix/donut-base-finetuned-docvqa''' ,      )

							_UpperCAmelCase							=			INVOICE_URL
							_UpperCAmelCase							=			'''What is the invoice number?'''
							_UpperCAmelCase							=			dqa_pipeline(image=__UpperCamelCase ,      question=__UpperCamelCase ,      top_k=2      )
							self.assertEqual(nested_simplify(__UpperCamelCase ,      decimals=4      ) ,      [{'''answer''': '''us-001'''}]      )



			@require_tf
			@unittest.skip('''Document question answering not implemented in TF'''      )
			def        lowercase__  (						self   :			Any      )->Union[str, Any]:
							pass









from __future__ import annotations





def 		__A		(	__lowerCamelCase							,			__lowerCamelCase    )      ->       float:
	a										=							sorted(numsa + numsa    )
	a				, a										=							divmod(len(__lowerCamelCase    )							,			2    )
	if mod == 1:
		return all_numbers[div]
	else:
		return (all_numbers[div] + all_numbers[div - 1]) / 2


if __name__ == "__main__":
		import doctest

		doctest.testmod()
		__UpperCamelCase					:       Tuple    					=      [float(x) for x in input("Enter the elements of first array: ").split()]
		__UpperCamelCase					:       List[Any]    					=      [float(x) for x in input("Enter the elements of second array: ").split()]
		print(F'The median of two arrays is: {median_of_two_arrays(array_a, array_a)}')

