import contextlib
import importlib
import io
import unittest

import transformers

# Try to import everything from transformers to ensure every object can be loaded.
from transformers import *  # noqa F406
from transformers.testing_utils import DUMMY_UNKNOWN_IDENTIFIER, require_flax, require_tf, require_torch
from transformers.utils import ContextManagers, find_labels, is_flax_available, is_tf_available, is_torch_available


if is_torch_available():
       from transformers import BertForPreTraining, BertForQuestionAnswering, BertForSequenceClassification

if is_tf_available():
       from transformers import TFBertForPreTraining, TFBertForQuestionAnswering, TFBertForSequenceClassification

if is_flax_available():
       from transformers import FlaxBertForPreTraining, FlaxBertForQuestionAnswering, FlaxBertForSequenceClassification


UpperCAmelCase_			    =							DUMMY_UNKNOWN_IDENTIFIER
# An actual model hosted on huggingface.co

UpperCAmelCase_			    =							'''main'''
# Default branch name
UpperCAmelCase_			    =							'''f2c752cfc5c0ab6f4bdec59acea69eefbee381c2'''
# One particular commit (not the top of `main`)
UpperCAmelCase_			    =							'''aaaaaaa'''
# This commit does not exist, so we should 404.

UpperCAmelCase_			    =							'''d9e9f15bc825e4b2c9249e9578f884bbcb5e3684'''
# Sha-1 of config.json on the top of `main`, for checking purposes
UpperCAmelCase_			    =							'''4b243c475af8d0a7754e87d7d096c92e5199ec2fe168a2ee7998e3b8e9bcb1d3'''




@contextlib.contextmanager
def       lowerCAmelCase_     (		)    ->				Dict:







 '''simple docstring'''
 print('''Welcome!'''		)
 yield
 print('''Bye!'''		)




@contextlib.contextmanager
def       lowerCAmelCase_     (		)    ->				Dict:







 '''simple docstring'''
 print('''Bonjour!'''		)
 yield
 print('''Au revoir!'''		)




class  __magic_name__  (		unittest.TestCase    ):





   """simple docstring"""




   def   lowerCAmelCase						(	self					:  str							):



    """simple docstring"""



    assert transformers.__spec__ is not None
    assert importlib.util.find_spec('''transformers'''							) is not None




class  __magic_name__  (		unittest.TestCase    ):





   """simple docstring"""




   @unittest.mock.patch('''sys.stdout'''		,  new_callable=io.StringIO							)
   def   lowerCAmelCase						(	self					:  Dict		,  _lowercase					:  Optional[Any]							):



    """simple docstring"""



    with ContextManagers([]							):
     print('''Transformers are awesome!'''							)
    # The print statement adds a new line at the end of the output
    self.assertEqual(mock_stdout.getvalue()		,  '''Transformers are awesome!\n'''							)



   @unittest.mock.patch('''sys.stdout'''		,  new_callable=io.StringIO							)
   def   lowerCAmelCase						(	self					:  Tuple		,  _lowercase					:  Optional[Any]							):



    """simple docstring"""



    with ContextManagers([context_en()]							):
     print('''Transformers are awesome!'''							)
    # The output should be wrapped with an English welcome and goodbye
    self.assertEqual(mock_stdout.getvalue()		,  '''Welcome!\nTransformers are awesome!\nBye!\n'''							)



   @unittest.mock.patch('''sys.stdout'''		,  new_callable=io.StringIO							)
   def   lowerCAmelCase						(	self					:  int		,  _lowercase					:  List[str]							):



    """simple docstring"""



    with ContextManagers([context_fr(), context_en()]							):
     print('''Transformers are awesome!'''							)
    # The output should be wrapped with an English and French welcome and goodbye
    self.assertEqual(mock_stdout.getvalue()		,  '''Bonjour!\nWelcome!\nTransformers are awesome!\nBye!\nAu revoir!\n'''							)



   @require_torch
   def   lowerCAmelCase						(	self					:  List[str]							):



    """simple docstring"""



    self.assertEqual(find_labels(_lowercase							)		,  ['''labels''']							)
    self.assertEqual(find_labels(_lowercase							)		,  ['''labels''', '''next_sentence_label''']							)
    self.assertEqual(find_labels(_lowercase							)		,  ['''start_positions''', '''end_positions''']							)




    class  __magic_name__  (		__a    ):





       """simple docstring"""




       pass




    self.assertEqual(find_labels(_lowercase							)		,  ['''labels''']							)



   @require_tf
   def   lowerCAmelCase						(	self					:  Optional[int]							):



    """simple docstring"""



    self.assertEqual(find_labels(_lowercase							)		,  ['''labels''']							)
    self.assertEqual(find_labels(_lowercase							)		,  ['''labels''', '''next_sentence_label''']							)
    self.assertEqual(find_labels(_lowercase							)		,  ['''start_positions''', '''end_positions''']							)




    class  __magic_name__  (		__a    ):





       """simple docstring"""




       pass




    self.assertEqual(find_labels(_lowercase							)		,  ['''labels''']							)



   @require_flax
   def   lowerCAmelCase						(	self					:  Optional[Any]							):



    """simple docstring"""



    self.assertEqual(find_labels(_lowercase							)		,  []							)
    self.assertEqual(find_labels(_lowercase							)		,  []							)
    self.assertEqual(find_labels(_lowercase							)		,  []							)




    class  __magic_name__  (		__a    ):





       """simple docstring"""




       pass




    self.assertEqual(find_labels(_lowercase							)		,  []							)
# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# 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.

import argparse

from ...utils.dataclasses import (
    ComputeEnvironment,
    DistributedType,
    DynamoBackend,
    PrecisionType,
    SageMakerDistributedType,
)
from ..menu import BulletMenu


UpperCAmelCase_			    =							[
    '''EAGER''',
    '''AOT_EAGER''',
    '''INDUCTOR''',
    '''NVFUSER''',
    '''AOT_NVFUSER''',
    '''AOT_CUDAGRAPHS''',
    '''OFI''',
    '''FX2TRT''',
    '''ONNXRT''',
    '''IPEX''',
]




def       lowerCAmelCase_     (		lowercase:							str  ,					lowercase:							Optional[Any]=None  ,					lowercase:							List[str]=None  ,					lowercase:							List[str]=None		)    ->				Tuple:







 '''simple docstring'''
 _UpperCamelCase:     int							= True
 while ask_again:
  _UpperCamelCase:     Any							= input(lowercase		)
  try:
   if default is not None and len(lowercase		) == 0:
    return default
   return convert_value(lowercase		) if convert_value is not None else result
  except Exception:
   if error_message is not None:
    print(lowercase		)




def       lowerCAmelCase_     (		lowercase:							List[Any]  ,					lowercase:							Union[str, Any]=[]  ,					lowercase:							Union[str, Any]=None  ,					lowercase:							Union[str, Any]=0		)    ->				List[Any]:







 '''simple docstring'''
 _UpperCamelCase:     List[str]							= BulletMenu(lowercase  ,					lowercase		)
 _UpperCamelCase:     List[Any]							= menu.run(default_choice=lowercase		)
 return convert_value(lowercase		) if convert_value is not None else result




def       lowerCAmelCase_     (		lowercase:							Dict		)    ->				Optional[int]:







 '''simple docstring'''
 _UpperCamelCase:     int							= int(lowercase		)
 return ComputeEnvironment(['''LOCAL_MACHINE''', '''AMAZON_SAGEMAKER'''][value]		)




def       lowerCAmelCase_     (		lowercase:							Tuple		)    ->				Any:







 '''simple docstring'''
 _UpperCamelCase:     str							= int(lowercase		)
 return DistributedType(['''NO''', '''MULTI_CPU''', '''MULTI_XPU''', '''MULTI_GPU''', '''MULTI_NPU''', '''TPU'''][value]		)




def       lowerCAmelCase_     (		lowercase:							Union[str, Any]		)    ->				Optional[int]:







 '''simple docstring'''
 _UpperCamelCase:     Tuple							= int(lowercase		)
 return DynamoBackend(DYNAMO_BACKENDS[value]		).value




def       lowerCAmelCase_     (		lowercase:							int		)    ->				Any:







 '''simple docstring'''
 _UpperCamelCase:     int							= int(lowercase		)
 return PrecisionType(['''no''', '''fp16''', '''bf16''', '''fp8'''][value]		)




def       lowerCAmelCase_     (		lowercase:							List[str]		)    ->				List[str]:







 '''simple docstring'''
 _UpperCamelCase:     Dict							= int(lowercase		)
 return SageMakerDistributedType(['''NO''', '''DATA_PARALLEL''', '''MODEL_PARALLEL'''][value]		)




def       lowerCAmelCase_     (		lowercase:							Any		)    ->				List[str]:







 '''simple docstring'''
 return {"yes": True, "no": False}[value.lower()]





class  __magic_name__  (		argparse.RawDescriptionHelpFormatter    ):





   """simple docstring"""




   def   lowerCAmelCase						(	self					:  str		,  _lowercase					:  Optional[int]		,  _lowercase					:  List[Any]		,  _lowercase					:  Dict		,  _lowercase					:  Any							):



    """simple docstring"""



    _UpperCamelCase:     Optional[Any]							= super()._format_usage(_lowercase		,  _lowercase		,  _lowercase		,  _lowercase							)
    _UpperCamelCase:     int							= usage.replace('''<command> [<args>] '''		,  ''''''							)
    return usage