


"""simple docstring"""



import unittest

import pytest

from transformers import (
    MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
    TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
    MBartaaTokenizerFast,
    MBartConfig,
    MBartForConditionalGeneration,
    TranslationPipeline,
    pipeline,
)
from transformers.testing_utils import is_pipeline_test, require_tf, require_torch, slow

from .test_pipelines_common import ANY







@is_pipeline_test
class       __a	(   unittest.TestCase       ):
				lowerCamelCase    :					Any 					=MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING
				lowerCamelCase    :					Union[str, Any] 					=TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING







				def     lowerCamelCase_    (   self			,  UpperCAmelCase			,  UpperCAmelCase			,  UpperCAmelCase      ):

					'''simple docstring'''






					if isinstance(model.config			,  __SCREAMING_SNAKE_CASE      ):
						lowerCAmelCase_       ,  lowerCAmelCase_			       = list(tokenizer.lang_code_to_id.keys()      )[:2]
						lowerCAmelCase_			       = TranslationPipeline(model=__SCREAMING_SNAKE_CASE			,  tokenizer=__SCREAMING_SNAKE_CASE			,  src_lang=__SCREAMING_SNAKE_CASE			,  tgt_lang=__SCREAMING_SNAKE_CASE      )
					else:
						lowerCAmelCase_			       = TranslationPipeline(model=__SCREAMING_SNAKE_CASE			,  tokenizer=__SCREAMING_SNAKE_CASE      )
					return translator, ["Some string", "Some other text"]







				def     lowerCamelCase_    (   self			,  UpperCAmelCase			,  UpperCAmelCase      ):

					'''simple docstring'''






					lowerCAmelCase_			       = translator('''Some string'''      )
					self.assertEqual(__SCREAMING_SNAKE_CASE			,  [{'''translation_text''': ANY(__SCREAMING_SNAKE_CASE      )}]      )

					lowerCAmelCase_			       = translator(['''Some string''']      )
					self.assertEqual(__SCREAMING_SNAKE_CASE			,  [{'''translation_text''': ANY(__SCREAMING_SNAKE_CASE      )}]      )

					lowerCAmelCase_			       = translator(['''Some string''', '''other string''']      )
					self.assertEqual(__SCREAMING_SNAKE_CASE			,  [{'''translation_text''': ANY(__SCREAMING_SNAKE_CASE      )}, {'''translation_text''': ANY(__SCREAMING_SNAKE_CASE      )}]      )







				@require_torch
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = pipeline('''translation_en_to_ro'''			,  model='''patrickvonplaten/t5-tiny-random'''			,  framework='''pt'''      )
					lowerCAmelCase_			       = translator('''This is a test string'''			,  max_length=20      )
					self.assertEqual(
					    __SCREAMING_SNAKE_CASE			,  [
					        {
					            '''translation_text''': (
					                '''Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide'''
					                ''' Beide Beide'''
					            )
					        }
					    ]			,  )







				@require_tf
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = pipeline('''translation_en_to_ro'''			,  model='''patrickvonplaten/t5-tiny-random'''			,  framework='''tf'''      )
					lowerCAmelCase_			       = translator('''This is a test string'''			,  max_length=20      )
					self.assertEqual(
					    __SCREAMING_SNAKE_CASE			,  [
					        {
					            '''translation_text''': (
					                '''Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide Beide'''
					                ''' Beide Beide'''
					            )
					        }
					    ]			,  )







				@require_torch
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = pipeline('''translation_en_to_de'''			,  model='''patrickvonplaten/t5-tiny-random'''			,  framework='''pt'''      )
					lowerCAmelCase_			       = translator('''This is a test string'''			,  max_length=20      )
					self.assertEqual(
					    __SCREAMING_SNAKE_CASE			,  [
					        {
					            '''translation_text''': (
					                '''monoton monoton monoton monoton monoton monoton monoton monoton monoton monoton urine urine'''
					                ''' urine urine urine urine urine urine urine'''
					            )
					        }
					    ]			,  )







				@require_tf
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = pipeline('''translation_en_to_de'''			,  model='''patrickvonplaten/t5-tiny-random'''			,  framework='''tf'''      )
					lowerCAmelCase_			       = translator('''This is a test string'''			,  max_length=20      )
					self.assertEqual(
					    __SCREAMING_SNAKE_CASE			,  [
					        {
					            '''translation_text''': (
					                '''monoton monoton monoton monoton monoton monoton monoton monoton monoton monoton urine urine'''
					                ''' urine urine urine urine urine urine urine'''
					            )
					        }
					    ]			,  )







class       __a	(   unittest.TestCase       ):







				@require_torch
				@slow
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					with self.assertRaises(__SCREAMING_SNAKE_CASE      ):
						pipeline(task='''translation_cn_to_ar'''      )

					# but we do for this one
					lowerCAmelCase_			       = pipeline(task='''translation_en_to_de'''      )
					self.assertEqual(translator._preprocess_params['''src_lang''']			,  '''en'''      )
					self.assertEqual(translator._preprocess_params['''tgt_lang''']			,  '''de'''      )







				@require_torch
				@slow
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = MBartForConditionalGeneration.from_pretrained('''facebook/mbart-large-50-many-to-many-mmt'''      )
					lowerCAmelCase_			       = MBartaaTokenizerFast.from_pretrained('''facebook/mbart-large-50-many-to-many-mmt'''      )

					lowerCAmelCase_			       = pipeline(task='''translation'''			,  model=__SCREAMING_SNAKE_CASE			,  tokenizer=__SCREAMING_SNAKE_CASE      )
					# Missing src_lang, tgt_lang
					with self.assertRaises(__SCREAMING_SNAKE_CASE      ):
						translator('''This is a test'''      )

					lowerCAmelCase_			       = translator('''This is a test'''			,  src_lang='''en_XX'''			,  tgt_lang='''ar_AR'''      )
					self.assertEqual(__SCREAMING_SNAKE_CASE			,  [{'''translation_text''': '''هذا إختبار'''}]      )

					lowerCAmelCase_			       = translator('''This is a test'''			,  src_lang='''en_XX'''			,  tgt_lang='''hi_IN'''      )
					self.assertEqual(__SCREAMING_SNAKE_CASE			,  [{'''translation_text''': '''यह एक परीक्षण है'''}]      )

					# src_lang, tgt_lang can be defined at pipeline call time
					lowerCAmelCase_			       = pipeline(task='''translation'''			,  model=__SCREAMING_SNAKE_CASE			,  tokenizer=__SCREAMING_SNAKE_CASE			,  src_lang='''en_XX'''			,  tgt_lang='''ar_AR'''      )
					lowerCAmelCase_			       = translator('''This is a test'''      )
					self.assertEqual(__SCREAMING_SNAKE_CASE			,  [{'''translation_text''': '''هذا إختبار'''}]      )







				@require_torch
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = '''patrickvonplaten/t5-tiny-random'''
					lowerCAmelCase_			       = pipeline(task='''translation_cn_to_ar'''			,  model=__SCREAMING_SNAKE_CASE      )
					self.assertEqual(translator._preprocess_params['''src_lang''']			,  '''cn'''      )
					self.assertEqual(translator._preprocess_params['''tgt_lang''']			,  '''ar'''      )







				@require_torch
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = '''patrickvonplaten/t5-tiny-random'''
					with pytest.warns(__SCREAMING_SNAKE_CASE			,  match=r'''.*translation_en_to_de.*'''      ):
						lowerCAmelCase_			       = pipeline(task='''translation'''			,  model=__SCREAMING_SNAKE_CASE      )
					self.assertEqual(translator.task			,  '''translation_en_to_de'''      )
					self.assertEqual(translator._preprocess_params['''src_lang''']			,  '''en'''      )
					self.assertEqual(translator._preprocess_params['''tgt_lang''']			,  '''de'''      )







				@require_torch
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					with self.assertRaises(__SCREAMING_SNAKE_CASE      ):
						pipeline(task='''translation'''      )










"""simple docstring"""



import subprocess
from argparse import ArgumentParser
from typing import List, Union

from huggingface_hub.hf_api import HfFolder, create_repo, whoami
from requests.exceptions import HTTPError

from . import BaseTransformersCLICommand







class       __a	(   __snake_case       ):







				@staticmethod
				def     lowerCamelCase_    (   UpperCAmelCase      ):

					'''simple docstring'''






					lowerCAmelCase_			       = parser.add_parser('''login'''			,  help='''Log in using the same credentials as on huggingface.co'''      )
					login_parser.set_defaults(func=lambda UpperCAmelCase      : LoginCommand(UpperCAmelCase      )      )
					lowerCAmelCase_			       = parser.add_parser('''whoami'''			,  help='''Find out which huggingface.co account you are logged in as.'''      )
					whoami_parser.set_defaults(func=lambda UpperCAmelCase      : WhoamiCommand(UpperCAmelCase      )      )
					lowerCAmelCase_			       = parser.add_parser('''logout'''			,  help='''Log out'''      )
					logout_parser.set_defaults(func=lambda UpperCAmelCase      : LogoutCommand(UpperCAmelCase      )      )

					# new system: git-based repo system
					lowerCAmelCase_			       = parser.add_parser(
					    '''repo'''			,  help='''Deprecated: use `huggingface-cli` instead. Commands to interact with your huggingface.co repos.'''			,  )
					lowerCAmelCase_			       = repo_parser.add_subparsers(
					    help='''Deprecated: use `huggingface-cli` instead. huggingface.co repos related commands'''      )
					lowerCAmelCase_			       = repo_subparsers.add_parser(
					    '''create'''			,  help='''Deprecated: use `huggingface-cli` instead. Create a new repo on huggingface.co'''      )
					repo_create_parser.add_argument(
					    '''name'''			,  type=UpperCAmelCase			,  help='''Name for your model\'s repo. Will be namespaced under your username to build the model id.'''			,  )
					repo_create_parser.add_argument('''--organization'''			,  type=UpperCAmelCase			,  help='''Optional: organization namespace.'''      )
					repo_create_parser.add_argument('''-y'''			,  '''--yes'''			,  action='''store_true'''			,  help='''Optional: answer Yes to the prompt'''      )
					repo_create_parser.set_defaults(func=lambda UpperCAmelCase      : RepoCreateCommand(UpperCAmelCase      )      )







class       __a	:
				lowerCamelCase    :					Dict 					='\u001b[1m'
				lowerCamelCase    :					Tuple 					='\u001b[31m'
				lowerCamelCase    :					List[str] 					='\u001b[90m'
				lowerCamelCase    :					Any 					='\u001b[0m'







				@classmethod
				def     lowerCamelCase_    (   cls			,  UpperCAmelCase      ):

					'''simple docstring'''






					return F"""{cls._bold}{s}{cls._reset}"""







				@classmethod
				def     lowerCamelCase_    (   cls			,  UpperCAmelCase      ):

					'''simple docstring'''






					return F"""{cls._bold}{cls._red}{s}{cls._reset}"""







				@classmethod
				def     lowerCamelCase_    (   cls			,  UpperCAmelCase      ):

					'''simple docstring'''






					return F"""{cls._gray}{s}{cls._reset}"""




def     UpperCAmelCase    (					_lowercase   :      List[List[Union[str, int]]] ,      _lowercase   :      List[str]  )	->   str:


	"""simple docstring"""




	lowerCAmelCase_			       = [max(len(str(_lowercase  )  ) for x in col  ) for col in zip(*_lowercase ,      _lowercase  )]
	lowerCAmelCase_			       = ('''{{:{}}} ''' * len(_lowercase  )).format(*_lowercase  )
	lowerCAmelCase_			       = []
	lines.append(row_format.format(*_lowercase  )  )
	lines.append(row_format.format(*['''-''' * w for w in col_widths]  )  )
	for row in rows:
		lines.append(row_format.format(*_lowercase  )  )
	return "\n".join(_lowercase  )







class       __a	:







				def __init__(   self			,  UpperCAmelCase      ):

					'''simple docstring'''






					lowerCAmelCase_			       = args







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''ERROR! `huggingface-cli login` uses an outdated login mechanism '''
					        '''that is not compatible with the Hugging Face Hub backend anymore. '''
					        '''Please use `huggingface-cli login instead.'''      )      )







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''WARNING! `transformers-cli whoami` is deprecated and will be removed in v5. Please use '''
					        '''`huggingface-cli whoami` instead.'''      )      )
					lowerCAmelCase_			       = HfFolder.get_token()
					if token is None:
						print('''Not logged in'''      )
						exit()
					try:
						lowerCAmelCase_       ,  lowerCAmelCase_			       = whoami(UpperCAmelCase      )
						print(UpperCAmelCase      )
						if orgs:
							print(ANSI.bold('''orgs: '''      )			,  ''','''.join(UpperCAmelCase      )      )
					except HTTPError as e:
						print(UpperCAmelCase      )
						print(ANSI.red(e.response.text      )      )
						exit(1      )







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''ERROR! `transformers-cli logout` uses an outdated logout mechanism '''
					        '''that is not compatible with the Hugging Face Hub backend anymore. '''
					        '''Please use `huggingface-cli logout instead.'''      )      )







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''WARNING! Managing repositories through transformers-cli is deprecated. '''
					        '''Please use `huggingface-cli` instead.'''      )      )
					lowerCAmelCase_			       = HfFolder.get_token()
					if token is None:
						print('''Not logged in'''      )
						exit(1      )
					try:
						lowerCAmelCase_			       = subprocess.check_output(['''git''', '''--version''']      ).decode('''utf-8'''      )
						print(ANSI.gray(stdout.strip()      )      )
					except FileNotFoundError:
						print('''Looks like you do not have git installed, please install.'''      )

					try:
						lowerCAmelCase_			       = subprocess.check_output(['''git-lfs''', '''--version''']      ).decode('''utf-8'''      )
						print(ANSI.gray(stdout.strip()      )      )
					except FileNotFoundError:
						print(
						    ANSI.red(
						        '''Looks like you do not have git-lfs installed, please install.'''
						        ''' You can install from https://git-lfs.github.com/.'''
						        ''' Then run `git lfs install` (you only have to do this once).'''      )      )
					print(''''''      )

					lowerCAmelCase_       ,  lowerCAmelCase_			       = whoami(UpperCAmelCase      )
					lowerCAmelCase_			       = self.args.organization if self.args.organization is not None else user
					lowerCAmelCase_			       = F"""{namespace}/{self.args.name}"""
					print(F"""You are about to create {ANSI.bold(UpperCAmelCase      )}"""      )

					if not self.args.yes:
						lowerCAmelCase_			       = input('''Proceed? [Y/n] '''      ).lower()
						if not (choice == "" or choice == "y" or choice == "yes"):
							print('''Abort'''      )
							exit()
					try:
						lowerCAmelCase_			       = create_repo(UpperCAmelCase			,  name=self.args.name			,  organization=self.args.organization      )
					except HTTPError as e:
						print(UpperCAmelCase      )
						print(ANSI.red(e.response.text      )      )
						exit(1      )
					print('''\nYour repo now lives at:'''      )
					print(F"""  {ANSI.bold(UpperCAmelCase      )}"""      )
					print('''\nYou can clone it locally with the command below, and commit/push as usual.'''      )
					print(F"""\n  git clone {url}"""      )
					print(''''''      )