





import unittest

from datasets import load_dataset

from transformers.pipelines import pipeline
from transformers.testing_utils import is_pipeline_test, nested_simplify, require_torch, slow



@is_pipeline_test
@require_torch
class  __lowerCAmelCase	(      unittest.TestCase					):






			@require_torch
			def       lowerCamelCase  (self   )					->       Optional[Any]:


							'''simple docstring'''



							snake_case_						:   Union[str, Any]           =  pipeline(
							    task='''zero-shot-audio-classification''' ,							model='''hf-internal-testing/tiny-clap-htsat-unfused'''   )
							snake_case_						:   Tuple           =  load_dataset('''ashraq/esc50'''   )
							snake_case_						:   Tuple           =  dataset['''train''']['''audio'''][-1]['''array''']
							snake_case_						:   Optional[Any]           =  audio_classifier(__magic_name__ ,							candidate_labels=['''Sound of a dog''', '''Sound of vaccum cleaner''']   )
							self.assertEqual(
							    nested_simplify(__magic_name__   ) ,							[{'''score''': 0.501, '''label''': '''Sound of a dog'''}, {'''score''': 0.499, '''label''': '''Sound of vaccum cleaner'''}] ,							)






			@unittest.skip('''No models are available in TF'''   )
			def       lowerCamelCase  (self   )					->       int:


							'''simple docstring'''



							pass






			@slow
			@require_torch
			def       lowerCamelCase  (self   )					->       Dict:


							'''simple docstring'''



							snake_case_						:   Union[str, Any]           =  pipeline(
							    task='''zero-shot-audio-classification''' ,							model='''laion/clap-htsat-unfused''' ,							)
							# This is an audio of a dog
							snake_case_						:   Any           =  load_dataset('''ashraq/esc50'''   )
							snake_case_						:   str           =  dataset['''train''']['''audio'''][-1]['''array''']
							snake_case_						:   Optional[int]           =  audio_classifier(__magic_name__ ,							candidate_labels=['''Sound of a dog''', '''Sound of vaccum cleaner''']   )

							self.assertEqual(
							    nested_simplify(__magic_name__   ) ,							[
							        {'''score''': 0.999, '''label''': '''Sound of a dog'''},
							        {'''score''': 0.001, '''label''': '''Sound of vaccum cleaner'''},
							    ] ,							)

							snake_case_						:   int           =  audio_classifier([audio] * 5 ,							candidate_labels=['''Sound of a dog''', '''Sound of vaccum cleaner''']   )
							self.assertEqual(
							    nested_simplify(__magic_name__   ) ,							[
							        [
							            {'''score''': 0.999, '''label''': '''Sound of a dog'''},
							            {'''score''': 0.001, '''label''': '''Sound of vaccum cleaner'''},
							        ],
							    ]
							    * 5 ,							)
							snake_case_						:   Optional[int]           =  audio_classifier(
							    [audio] * 5 ,							candidate_labels=['''Sound of a dog''', '''Sound of vaccum cleaner'''] ,							batch_size=5   )
							self.assertEqual(
							    nested_simplify(__magic_name__   ) ,							[
							        [
							            {'''score''': 0.999, '''label''': '''Sound of a dog'''},
							            {'''score''': 0.001, '''label''': '''Sound of vaccum cleaner'''},
							        ],
							    ]
							    * 5 ,							)






			@unittest.skip('''No models are available in TF'''   )
			def       lowerCamelCase  (self   )					->       Union[str, Any]:


							'''simple docstring'''



							pass







import time
from contextlib import contextmanager
from pathlib import Path

import pytest
import requests
from huggingface_hub.hf_api import HfApi, HfFolder


lowerCAmelCase_    =    '''__DUMMY_TRANSFORMERS_USER__'''
lowerCAmelCase_    =    '''Dummy User'''
lowerCAmelCase_    =    '''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'''

lowerCAmelCase_    =    '''https://hub-ci.huggingface.co'''
lowerCAmelCase_    =    CI_HUB_ENDPOINT + '''/datasets/{repo_id}/resolve/{revision}/{path}'''
lowerCAmelCase_    =    CI_HUB_ENDPOINT + '''/{repo_id}/resolve/{revision}/{filename}'''
lowerCAmelCase_    =    Path('''~/.huggingface/hub_ci_token''').expanduser()






@pytest.fixture
def 					lowerCamelCase_						(    _UpperCamelCase			)		->						Optional[int]:






				"""simple docstring"""


				monkeypatch.setattr(
				    '''huggingface_hub.file_download.HUGGINGFACE_CO_URL_TEMPLATE'''			,    _UpperCamelCase			)






@pytest.fixture
def 					lowerCamelCase_						(    _UpperCamelCase			)		->						Optional[int]:






				"""simple docstring"""


				monkeypatch.setattr('''datasets.config.HF_ENDPOINT'''			,    _UpperCamelCase			)
				monkeypatch.setattr('''datasets.config.HUB_DATASETS_URL'''			,    _UpperCamelCase			)






@pytest.fixture
def 					lowerCamelCase_						(    _UpperCamelCase			)		->						Any:






				"""simple docstring"""


				monkeypatch.setattr('''huggingface_hub.hf_api.HfFolder.path_token'''			,    _UpperCamelCase			)






@pytest.fixture
def 					lowerCamelCase_						(    _UpperCamelCase			,    _UpperCamelCase			)		->						Optional[Any]:






				"""simple docstring"""


				HfFolder.save_token(_UpperCamelCase			)
				yield
				HfFolder.delete_token()






@pytest.fixture(scope='''session'''			)
def 					lowerCamelCase_						(    )		->						List[str]:






				"""simple docstring"""


				return HfApi(endpoint=_UpperCamelCase			)






@pytest.fixture(scope='''session'''			)
def 					lowerCamelCase_						(    _UpperCamelCase			)		->						Dict:






				"""simple docstring"""


				snake_case_						:   Union[str, Any]           =  HfFolder.get_token()
				HfFolder.save_token(_UpperCamelCase			)
				yield CI_HUB_USER_TOKEN
				if previous_token is not None:
								HfFolder.save_token(_UpperCamelCase			)






@pytest.fixture
def 					lowerCamelCase_						(    _UpperCamelCase			)		->						List[str]:






				"""simple docstring"""


				def _cleanup_repo(_UpperCamelCase			):
								hf_api.delete_repo(_UpperCamelCase			,    token=_UpperCamelCase			,    repo_type='''dataset'''			)

				return _cleanup_repo






@pytest.fixture
def 					lowerCamelCase_						(    _UpperCamelCase			)		->						List[str]:






				"""simple docstring"""


				@contextmanager
				def _temporary_repo(_UpperCamelCase			):
								try:
												yield repo_id
								finally:
												cleanup_repo(_UpperCamelCase			)

				return _temporary_repo






@pytest.fixture(scope='''session'''			)
def 					lowerCamelCase_						(    _UpperCamelCase			,    _UpperCamelCase			,    _UpperCamelCase			)		->						Dict:






				"""simple docstring"""


				snake_case_						:   Optional[int]           =  f'''repo_txt_data-{int(time.time() * 10E3			)}'''
				snake_case_						:   Any           =  f'''{CI_HUB_USER}/{repo_name}'''
				hf_api.create_repo(_UpperCamelCase			,    token=_UpperCamelCase			,    repo_type='''dataset'''			,    private=_UpperCamelCase			)
				hf_api.upload_file(
				    token=_UpperCamelCase			,    path_or_fileobj=str(_UpperCamelCase			)			,    path_in_repo='''data/text_data.txt'''			,    repo_id=_UpperCamelCase			,    repo_type='''dataset'''			,    )
				yield repo_id
				try:
								hf_api.delete_repo(_UpperCamelCase			,    token=_UpperCamelCase			,    repo_type='''dataset'''			)
				except (requests.exceptions.HTTPError, ValueError):  # catch http error and token invalid error
								pass






@pytest.fixture()
def 					lowerCamelCase_						(    _UpperCamelCase			,    _UpperCamelCase			,    _UpperCamelCase			)		->						Dict:






				"""simple docstring"""


				return hf_private_dataset_repo_txt_data_






@pytest.fixture(scope='''session'''			)
def 					lowerCamelCase_						(    _UpperCamelCase			,    _UpperCamelCase			,    _UpperCamelCase			)		->						Optional[Any]:






				"""simple docstring"""


				snake_case_						:   int           =  f'''repo_zipped_txt_data-{int(time.time() * 10E3			)}'''
				snake_case_						:   Tuple           =  f'''{CI_HUB_USER}/{repo_name}'''
				hf_api.create_repo(_UpperCamelCase			,    token=_UpperCamelCase			,    repo_type='''dataset'''			,    private=_UpperCamelCase			)
				hf_api.upload_file(
				    token=_UpperCamelCase			,    path_or_fileobj=str(_UpperCamelCase			)			,    path_in_repo='''data.zip'''			,    repo_id=_UpperCamelCase			,    repo_type='''dataset'''			,    )
				yield repo_id
				try:
								hf_api.delete_repo(_UpperCamelCase			,    token=_UpperCamelCase			,    repo_type='''dataset'''			)
				except (requests.exceptions.HTTPError, ValueError):  # catch http error and token invalid error
								pass






@pytest.fixture()
def 					lowerCamelCase_						(    _UpperCamelCase			,    _UpperCamelCase			,    _UpperCamelCase			)		->						Dict:






				"""simple docstring"""


				return hf_private_dataset_repo_zipped_txt_data_






@pytest.fixture(scope='''session'''			)
def 					lowerCamelCase_						(    _UpperCamelCase			,    _UpperCamelCase			,    _UpperCamelCase			)		->						Optional[Any]:






				"""simple docstring"""


				snake_case_						:   List[str]           =  f'''repo_zipped_img_data-{int(time.time() * 10E3			)}'''
				snake_case_						:   str           =  f'''{CI_HUB_USER}/{repo_name}'''
				hf_api.create_repo(_UpperCamelCase			,    token=_UpperCamelCase			,    repo_type='''dataset'''			,    private=_UpperCamelCase			)
				hf_api.upload_file(
				    token=_UpperCamelCase			,    path_or_fileobj=str(_UpperCamelCase			)			,    path_in_repo='''data.zip'''			,    repo_id=_UpperCamelCase			,    repo_type='''dataset'''			,    )
				yield repo_id
				try:
								hf_api.delete_repo(_UpperCamelCase			,    token=_UpperCamelCase			,    repo_type='''dataset'''			)
				except (requests.exceptions.HTTPError, ValueError):  # catch http error and token invalid error
								pass






@pytest.fixture()
def 					lowerCamelCase_						(    _UpperCamelCase			,    _UpperCamelCase			,    _UpperCamelCase			)		->						int:






				"""simple docstring"""


				return hf_private_dataset_repo_zipped_img_data_
