


import unittest

from transformers import (
    MODEL_FOR_OBJECT_DETECTION_MAPPING,
    AutoFeatureExtractor,
    AutoModelForObjectDetection,
    ObjectDetectionPipeline,
    is_vision_available,
    pipeline,
)
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_pytesseract,
    require_tf,
    require_timm,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
			from PIL import Image
else:


			class 	_a							:

										@staticmethod
										def 				lowerCamelCase_			(							*UpperCamelCase_:     Optional[Any]   ,						**UpperCamelCase_:     Any							)      ->       Tuple:





												"""simple docstring"""







												pass


@is_pipeline_test
@require_vision
@require_timm
@require_torch
class 	_a							(      unittest.TestCase      ):
							_lowercase     :      Dict  				=			MODEL_FOR_OBJECT_DETECTION_MAPPING

							def 				lowerCamelCase_			(							self:     List[str]   ,						UpperCamelCase_:     Any   ,						UpperCamelCase_:     Tuple   ,						UpperCamelCase_:     List[Any]							)      ->       List[Any]:





									"""simple docstring"""







									lowercase__						=				ObjectDetectionPipeline(model=UpperCamelCase_   ,						image_processor=UpperCamelCase_							)
									return object_detector, ["./tests/fixtures/tests_samples/COCO/000000039769.png"]

							def 				lowerCamelCase_			(							self:     Any   ,						UpperCamelCase_:     Optional[Any]   ,						UpperCamelCase_:     Tuple							)      ->       Optional[int]:





									"""simple docstring"""







									lowercase__						=				object_detector('''./tests/fixtures/tests_samples/COCO/000000039769.png'''   ,						threshold=0.0							)

									self.assertGreater(len(UpperCamelCase_							)   ,						0							)
									for detected_object in outputs:
											self.assertEqual(
											    UpperCamelCase_   ,						{
											        '''score''': ANY(UpperCamelCase_							),
											        '''label''': ANY(UpperCamelCase_							),
											        '''box''': {'''xmin''': ANY(UpperCamelCase_							), '''ymin''': ANY(UpperCamelCase_							), '''xmax''': ANY(UpperCamelCase_							), '''ymax''': ANY(UpperCamelCase_							)},
											    }   ,						)

									import datasets

									lowercase__						=				datasets.load_dataset('''hf-internal-testing/fixtures_image_utils'''   ,						'''image'''   ,						split='''test'''							)

									lowercase__						=				[
									    Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''							),
									    '''http://images.cocodataset.org/val2017/000000039769.jpg''',
									    # RGBA
									    dataset[0]['''file'''],
									    # LA
									    dataset[1]['''file'''],
									    # L
									    dataset[2]['''file'''],
									]
									lowercase__						=				object_detector(UpperCamelCase_   ,						threshold=0.0							)

									self.assertEqual(len(UpperCamelCase_							)   ,						len(UpperCamelCase_							)							)
									for outputs in batch_outputs:
											self.assertGreater(len(UpperCamelCase_							)   ,						0							)
											for detected_object in outputs:
													self.assertEqual(
													    UpperCamelCase_   ,						{
													        '''score''': ANY(UpperCamelCase_							),
													        '''label''': ANY(UpperCamelCase_							),
													        '''box''': {'''xmin''': ANY(UpperCamelCase_							), '''ymin''': ANY(UpperCamelCase_							), '''xmax''': ANY(UpperCamelCase_							), '''ymax''': ANY(UpperCamelCase_							)},
													    }   ,						)

							@require_tf
							@unittest.skip('''Object detection not implemented in TF'''							)
							def 				lowerCamelCase_			(							self:     Tuple							)      ->       Dict:





									"""simple docstring"""







									pass

							@require_torch
							def 				lowerCamelCase_			(							self:     List[str]							)      ->       Optional[int]:





									"""simple docstring"""







									lowercase__						=				'''hf-internal-testing/tiny-detr-mobilenetsv3'''

									lowercase__						=				AutoModelForObjectDetection.from_pretrained(UpperCamelCase_							)
									lowercase__						=				AutoFeatureExtractor.from_pretrained(UpperCamelCase_							)
									lowercase__						=				ObjectDetectionPipeline(model=UpperCamelCase_   ,						feature_extractor=UpperCamelCase_							)

									lowercase__						=				object_detector('''http://images.cocodataset.org/val2017/000000039769.jpg'''   ,						threshold=0.0							)

									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        {'''score''': 0.3376, '''label''': '''LABEL_0''', '''box''': {'''xmin''': 159, '''ymin''': 120, '''xmax''': 480, '''ymax''': 359}},
									        {'''score''': 0.3376, '''label''': '''LABEL_0''', '''box''': {'''xmin''': 159, '''ymin''': 120, '''xmax''': 480, '''ymax''': 359}},
									    ]   ,						)

									lowercase__						=				object_detector(
									    [
									        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
									        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
									    ]   ,						threshold=0.0   ,						)

									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        [
									            {'''score''': 0.3376, '''label''': '''LABEL_0''', '''box''': {'''xmin''': 159, '''ymin''': 120, '''xmax''': 480, '''ymax''': 359}},
									            {'''score''': 0.3376, '''label''': '''LABEL_0''', '''box''': {'''xmin''': 159, '''ymin''': 120, '''xmax''': 480, '''ymax''': 359}},
									        ],
									        [
									            {'''score''': 0.3376, '''label''': '''LABEL_0''', '''box''': {'''xmin''': 159, '''ymin''': 120, '''xmax''': 480, '''ymax''': 359}},
									            {'''score''': 0.3376, '''label''': '''LABEL_0''', '''box''': {'''xmin''': 159, '''ymin''': 120, '''xmax''': 480, '''ymax''': 359}},
									        ],
									    ]   ,						)

							@require_torch
							@slow
							def 				lowerCamelCase_			(							self:     List[Any]							)      ->       str:





									"""simple docstring"""







									lowercase__						=				'''facebook/detr-resnet-50'''

									lowercase__						=				AutoModelForObjectDetection.from_pretrained(UpperCamelCase_							)
									lowercase__						=				AutoFeatureExtractor.from_pretrained(UpperCamelCase_							)
									lowercase__						=				ObjectDetectionPipeline(model=UpperCamelCase_   ,						feature_extractor=UpperCamelCase_							)

									lowercase__						=				object_detector('''http://images.cocodataset.org/val2017/000000039769.jpg'''							)
									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        {'''score''': 0.9982, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 70, '''xmax''': 175, '''ymax''': 117}},
									        {'''score''': 0.9960, '''label''': '''remote''', '''box''': {'''xmin''': 333, '''ymin''': 72, '''xmax''': 368, '''ymax''': 187}},
									        {'''score''': 0.9955, '''label''': '''couch''', '''box''': {'''xmin''': 0, '''ymin''': 1, '''xmax''': 639, '''ymax''': 473}},
									        {'''score''': 0.9988, '''label''': '''cat''', '''box''': {'''xmin''': 13, '''ymin''': 52, '''xmax''': 314, '''ymax''': 470}},
									        {'''score''': 0.9987, '''label''': '''cat''', '''box''': {'''xmin''': 345, '''ymin''': 23, '''xmax''': 640, '''ymax''': 368}},
									    ]   ,						)

									lowercase__						=				object_detector(
									    [
									        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
									        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
									    ]							)
									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        [
									            {'''score''': 0.9982, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 70, '''xmax''': 175, '''ymax''': 117}},
									            {'''score''': 0.9960, '''label''': '''remote''', '''box''': {'''xmin''': 333, '''ymin''': 72, '''xmax''': 368, '''ymax''': 187}},
									            {'''score''': 0.9955, '''label''': '''couch''', '''box''': {'''xmin''': 0, '''ymin''': 1, '''xmax''': 639, '''ymax''': 473}},
									            {'''score''': 0.9988, '''label''': '''cat''', '''box''': {'''xmin''': 13, '''ymin''': 52, '''xmax''': 314, '''ymax''': 470}},
									            {'''score''': 0.9987, '''label''': '''cat''', '''box''': {'''xmin''': 345, '''ymin''': 23, '''xmax''': 640, '''ymax''': 368}},
									        ],
									        [
									            {'''score''': 0.9982, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 70, '''xmax''': 175, '''ymax''': 117}},
									            {'''score''': 0.9960, '''label''': '''remote''', '''box''': {'''xmin''': 333, '''ymin''': 72, '''xmax''': 368, '''ymax''': 187}},
									            {'''score''': 0.9955, '''label''': '''couch''', '''box''': {'''xmin''': 0, '''ymin''': 1, '''xmax''': 639, '''ymax''': 473}},
									            {'''score''': 0.9988, '''label''': '''cat''', '''box''': {'''xmin''': 13, '''ymin''': 52, '''xmax''': 314, '''ymax''': 470}},
									            {'''score''': 0.9987, '''label''': '''cat''', '''box''': {'''xmin''': 345, '''ymin''': 23, '''xmax''': 640, '''ymax''': 368}},
									        ],
									    ]   ,						)

							@require_torch
							@slow
							def 				lowerCamelCase_			(							self:     Optional[int]							)      ->       Any:





									"""simple docstring"""







									lowercase__						=				'''facebook/detr-resnet-50'''

									lowercase__						=				pipeline('''object-detection'''   ,						model=UpperCamelCase_							)

									lowercase__						=				object_detector('''http://images.cocodataset.org/val2017/000000039769.jpg'''							)
									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        {'''score''': 0.9982, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 70, '''xmax''': 175, '''ymax''': 117}},
									        {'''score''': 0.9960, '''label''': '''remote''', '''box''': {'''xmin''': 333, '''ymin''': 72, '''xmax''': 368, '''ymax''': 187}},
									        {'''score''': 0.9955, '''label''': '''couch''', '''box''': {'''xmin''': 0, '''ymin''': 1, '''xmax''': 639, '''ymax''': 473}},
									        {'''score''': 0.9988, '''label''': '''cat''', '''box''': {'''xmin''': 13, '''ymin''': 52, '''xmax''': 314, '''ymax''': 470}},
									        {'''score''': 0.9987, '''label''': '''cat''', '''box''': {'''xmin''': 345, '''ymin''': 23, '''xmax''': 640, '''ymax''': 368}},
									    ]   ,						)

									lowercase__						=				object_detector(
									    [
									        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
									        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
									    ]							)
									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        [
									            {'''score''': 0.9982, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 70, '''xmax''': 175, '''ymax''': 117}},
									            {'''score''': 0.9960, '''label''': '''remote''', '''box''': {'''xmin''': 333, '''ymin''': 72, '''xmax''': 368, '''ymax''': 187}},
									            {'''score''': 0.9955, '''label''': '''couch''', '''box''': {'''xmin''': 0, '''ymin''': 1, '''xmax''': 639, '''ymax''': 473}},
									            {'''score''': 0.9988, '''label''': '''cat''', '''box''': {'''xmin''': 13, '''ymin''': 52, '''xmax''': 314, '''ymax''': 470}},
									            {'''score''': 0.9987, '''label''': '''cat''', '''box''': {'''xmin''': 345, '''ymin''': 23, '''xmax''': 640, '''ymax''': 368}},
									        ],
									        [
									            {'''score''': 0.9982, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 70, '''xmax''': 175, '''ymax''': 117}},
									            {'''score''': 0.9960, '''label''': '''remote''', '''box''': {'''xmin''': 333, '''ymin''': 72, '''xmax''': 368, '''ymax''': 187}},
									            {'''score''': 0.9955, '''label''': '''couch''', '''box''': {'''xmin''': 0, '''ymin''': 1, '''xmax''': 639, '''ymax''': 473}},
									            {'''score''': 0.9988, '''label''': '''cat''', '''box''': {'''xmin''': 13, '''ymin''': 52, '''xmax''': 314, '''ymax''': 470}},
									            {'''score''': 0.9987, '''label''': '''cat''', '''box''': {'''xmin''': 345, '''ymin''': 23, '''xmax''': 640, '''ymax''': 368}},
									        ],
									    ]   ,						)

							@require_torch
							@slow
							def 				lowerCamelCase_			(							self:     Any							)      ->       int:





									"""simple docstring"""







									lowercase__						=				0.9985
									lowercase__						=				'''facebook/detr-resnet-50'''

									lowercase__						=				pipeline('''object-detection'''   ,						model=UpperCamelCase_							)

									lowercase__						=				object_detector('''http://images.cocodataset.org/val2017/000000039769.jpg'''   ,						threshold=UpperCamelCase_							)
									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        {'''score''': 0.9988, '''label''': '''cat''', '''box''': {'''xmin''': 13, '''ymin''': 52, '''xmax''': 314, '''ymax''': 470}},
									        {'''score''': 0.9987, '''label''': '''cat''', '''box''': {'''xmin''': 345, '''ymin''': 23, '''xmax''': 640, '''ymax''': 368}},
									    ]   ,						)


							@require_torch
							@require_pytesseract
							@slow
							def 				lowerCamelCase_			(							self:     List[str]							)      ->       Any:





									"""simple docstring"""







									lowercase__						=				'''Narsil/layoutlmv3-finetuned-funsd'''
									lowercase__						=				0.9993

									lowercase__						=				pipeline('''object-detection'''   ,						model=UpperCamelCase_   ,						threshold=UpperCamelCase_							)

									lowercase__						=				object_detector(
									    '''https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png'''							)
									self.assertEqual(
									    nested_simplify(UpperCamelCase_   ,						decimals=4							)   ,						[
									        {'''score''': 0.9993, '''label''': '''I-ANSWER''', '''box''': {'''xmin''': 294, '''ymin''': 254, '''xmax''': 343, '''ymax''': 264}},
									        {'''score''': 0.9993, '''label''': '''I-ANSWER''', '''box''': {'''xmin''': 294, '''ymin''': 254, '''xmax''': 343, '''ymax''': 264}},
									    ]   ,						)






def       _a			(				SCREAMING_SNAKE_CASE						,    SCREAMING_SNAKE_CASE					):


		"""simple docstring"""




		return base * power(SCREAMING_SNAKE_CASE						,    (exponent - 1)					) if exponent else 1


if __name__ == "__main__":
			print('Raise base to the power of exponent using recursion...')
			lowerCAmelCase	=							int(input('Enter the base: ').strip())
			lowerCAmelCase	=							int(input('Enter the exponent: ').strip())
			lowerCAmelCase	=							power(base, abs(exponent))
			if exponent < 0:  # power() does not properly deal w/ negative exponents
						lowerCAmelCase	=							1 / result
			print(f"""{base} to the power of {exponent} is {result}""")


