

'''simple docstring'''





import unittest

from transformers import MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING, is_vision_available, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
							from PIL import Image
else:





							class 		__SCREAMING_SNAKE_CASE       :







											@staticmethod
											def    lowerCamelCase_  (					*UpperCAmelCase__    :		int		,				**UpperCAmelCase__    :		str      ):
																	'''simple docstring'''
																	pass





@is_pipeline_test
@require_vision
@require_torch
class 		__SCREAMING_SNAKE_CASE       ( unittest.TestCase			):
				lowerCamelCase_							=						MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING







				def    lowerCamelCase_  (					self    :		Any		,				UpperCAmelCase__    :		str		,				UpperCAmelCase__    :		Tuple		,				UpperCAmelCase__    :		Dict      ):
										'''simple docstring'''
										lowercase   :       Union[str, Any]								=pipeline(
										    '''zero-shot-object-detection'''		,				model='''hf-internal-testing/tiny-random-owlvit-object-detection'''      )

										lowercase   :       Optional[int]								=[
										    {
										        '''image''': '''./tests/fixtures/tests_samples/COCO/000000039769.png''',
										        '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
										    }
										]
										return object_detector, examples







				def    lowerCamelCase_  (					self    :		Tuple		,				UpperCAmelCase__    :		List[Any]		,				UpperCAmelCase__    :		Optional[Any]      ):
										'''simple docstring'''
										lowercase   :       str								=object_detector(examples[0]		,				threshold=0.0      )

										lowercase   :       Optional[Any]								=len(UpperCAmelCase__      )
										self.assertGreater(UpperCAmelCase__		,				0      )
										self.assertEqual(
										    UpperCAmelCase__		,				[
										        {
										            '''score''': ANY(UpperCAmelCase__      ),
										            '''label''': ANY(UpperCAmelCase__      ),
										            '''box''': {'''xmin''': ANY(UpperCAmelCase__      ), '''ymin''': ANY(UpperCAmelCase__      ), '''xmax''': ANY(UpperCAmelCase__      ), '''ymax''': ANY(UpperCAmelCase__      )},
										        }
										        for i in range(UpperCAmelCase__      )
										    ]		,				)







				@require_tf
				@unittest.skip('''Zero Shot Object Detection not implemented in TF'''      )
				def    lowerCamelCase_  (					self    :		Optional[int]      ):
										'''simple docstring'''
										pass







				@require_torch
				def    lowerCamelCase_  (					self    :		Any      ):
										'''simple docstring'''
										lowercase   :       Union[str, Any]								=pipeline(
										    '''zero-shot-object-detection'''		,				model='''hf-internal-testing/tiny-random-owlvit-object-detection'''      )

										lowercase   :       Any								=object_detector(
										    '''./tests/fixtures/tests_samples/COCO/000000039769.png'''		,				candidate_labels=['''cat''', '''remote''', '''couch''']		,				threshold=0.64		,				)

										self.assertEqual(
										    nested_simplify(UpperCAmelCase__		,				decimals=4      )		,				[
										        {'''score''': 0.72_35, '''label''': '''cat''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
										        {'''score''': 0.72_18, '''label''': '''remote''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
										        {'''score''': 0.71_84, '''label''': '''couch''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
										        {'''score''': 0.67_48, '''label''': '''remote''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
										        {'''score''': 0.66_56, '''label''': '''cat''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
										        {'''score''': 0.66_14, '''label''': '''couch''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
										        {'''score''': 0.64_56, '''label''': '''remote''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
										        {'''score''': 0.6_42, '''label''': '''remote''', '''box''': {'''xmin''': 67, '''ymin''': 274, '''xmax''': 93, '''ymax''': 297}},
										        {'''score''': 0.64_19, '''label''': '''cat''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
										    ]		,				)

										lowercase   :       Union[str, Any]								=object_detector(
										    [
										        {
										            '''image''': '''./tests/fixtures/tests_samples/COCO/000000039769.png''',
										            '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
										        }
										    ]		,				threshold=0.64		,				)

										self.assertEqual(
										    nested_simplify(UpperCAmelCase__		,				decimals=4      )		,				[
										        [
										            {'''score''': 0.72_35, '''label''': '''cat''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
										            {'''score''': 0.72_18, '''label''': '''remote''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
										            {'''score''': 0.71_84, '''label''': '''couch''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
										            {'''score''': 0.67_48, '''label''': '''remote''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
										            {'''score''': 0.66_56, '''label''': '''cat''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
										            {'''score''': 0.66_14, '''label''': '''couch''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
										            {'''score''': 0.64_56, '''label''': '''remote''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
										            {'''score''': 0.6_42, '''label''': '''remote''', '''box''': {'''xmin''': 67, '''ymin''': 274, '''xmax''': 93, '''ymax''': 297}},
										            {'''score''': 0.64_19, '''label''': '''cat''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
										        ]
										    ]		,				)







				@require_torch
				@slow
				def    lowerCamelCase_  (					self    :		Optional[Any]      ):
										'''simple docstring'''
										lowercase   :       Any								=pipeline('''zero-shot-object-detection'''      )

										lowercase   :       str								=object_detector(
										    '''http://images.cocodataset.org/val2017/000000039769.jpg'''		,				candidate_labels=['''cat''', '''remote''', '''couch''']		,				)
										self.assertEqual(
										    nested_simplify(UpperCAmelCase__		,				decimals=4      )		,				[
										        {'''score''': 0.28_68, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
										        {'''score''': 0.2_77, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
										        {'''score''': 0.25_37, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
										        {'''score''': 0.14_74, '''label''': '''remote''', '''box''': {'''xmin''': 335, '''ymin''': 74, '''xmax''': 371, '''ymax''': 187}},
										        {'''score''': 0.12_08, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 642, '''ymax''': 476}},
										    ]		,				)

										lowercase   :       List[str]								=object_detector(
										    [
										        {
										            '''image''': '''http://images.cocodataset.org/val2017/000000039769.jpg''',
										            '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
										        },
										        {
										            '''image''': '''http://images.cocodataset.org/val2017/000000039769.jpg''',
										            '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
										        },
										    ]		,				)
										self.assertEqual(
										    nested_simplify(UpperCAmelCase__		,				decimals=4      )		,				[
										        [
										            {'''score''': 0.28_68, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
										            {'''score''': 0.2_77, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
										            {'''score''': 0.25_37, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
										            {'''score''': 0.14_74, '''label''': '''remote''', '''box''': {'''xmin''': 335, '''ymin''': 74, '''xmax''': 371, '''ymax''': 187}},
										            {'''score''': 0.12_08, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 642, '''ymax''': 476}},
										        ],
										        [
										            {'''score''': 0.28_68, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
										            {'''score''': 0.2_77, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
										            {'''score''': 0.25_37, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
										            {'''score''': 0.14_74, '''label''': '''remote''', '''box''': {'''xmin''': 335, '''ymin''': 74, '''xmax''': 371, '''ymax''': 187}},
										            {'''score''': 0.12_08, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 642, '''ymax''': 476}},
										        ],
										    ]		,				)







				@require_tf
				@unittest.skip('''Zero Shot Object Detection not implemented in TF'''      )
				def    lowerCamelCase_  (					self    :		List[Any]      ):
										'''simple docstring'''
										pass







				@require_torch
				@slow
				def    lowerCamelCase_  (					self    :		Any      ):
										'''simple docstring'''
										lowercase   :       Optional[int]								=0.2
										lowercase   :       Optional[int]								=pipeline('''zero-shot-object-detection'''      )

										lowercase   :       Optional[Any]								=object_detector(
										    '''http://images.cocodataset.org/val2017/000000039769.jpg'''		,				candidate_labels=['''cat''', '''remote''', '''couch''']		,				threshold=UpperCAmelCase__		,				)
										self.assertEqual(
										    nested_simplify(UpperCAmelCase__		,				decimals=4      )		,				[
										        {'''score''': 0.28_68, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
										        {'''score''': 0.2_77, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
										        {'''score''': 0.25_37, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
										    ]		,				)







				@require_torch
				@slow
				def    lowerCamelCase_  (					self    :		List[str]      ):
										'''simple docstring'''
										lowercase   :       Optional[Any]								=2
										lowercase   :       Tuple								=pipeline('''zero-shot-object-detection'''      )

										lowercase   :       int								=object_detector(
										    '''http://images.cocodataset.org/val2017/000000039769.jpg'''		,				candidate_labels=['''cat''', '''remote''', '''couch''']		,				top_k=UpperCAmelCase__		,				)
										self.assertEqual(
										    nested_simplify(UpperCAmelCase__		,				decimals=4      )		,				[
										        {'''score''': 0.28_68, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
										        {'''score''': 0.2_77, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
										    ]		,				)








'''simple docstring'''





# coding=utf-8
# Copyright 2023 The HuggingFace Inc. team.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# this script dumps information about the environment

import os
import platform
import sys


UpperCamelCase_							=					"""3"""

print("""Python version:""", sys.version)

print("""OS platform:""", platform.platform())
print("""OS architecture:""", platform.machine())

try:
							import torch

							print("""Torch version:""", torch.__version__)
							print("""Cuda available:""", torch.cuda.is_available())
							print("""Cuda version:""", torch.version.cuda)
							print("""CuDNN version:""", torch.backends.cudnn.version())
							print("""Number of GPUs available:""", torch.cuda.device_count())
except ImportError:
							print("""Torch version:""", None)

try:
							import transformers

							print("""transformers version:""", transformers.__version__)
except ImportError:
							print("""transformers version:""", None)





