





from datasets.utils.patching import _PatchedModuleObj, patch_submodule

from . import _test_patching
def      A__       (    )  ->  Dict:






   """simple docstring"""







   import os as original_os
   from os import path as original_path
   from os import rename as original_rename
   from os.path import dirname as original_dirname
   from os.path import join as original_join

   assert _test_patching.os is original_os
   assert _test_patching.path is original_path
   assert _test_patching.join is original_join

   assert _test_patching.renamed_os is original_os
   assert _test_patching.renamed_path is original_path
   assert _test_patching.renamed_join is original_join

   _UpperCAmelCase           =   '''__test_patch_submodule_mock__'''
   with patch_submodule(_test_patching				,	'''os.path.join'''				,	SCREAMING_SNAKE_CASE_						):
      # Every way to access os.path.join must be patched, and the rest must stay untouched

      # check os.path.join
      assert isinstance(_test_patching.os				,	_PatchedModuleObj						)
      assert isinstance(_test_patching.os.path				,	_PatchedModuleObj						)
      assert _test_patching.os.path.join is mock

      # check path.join
      assert isinstance(_test_patching.path				,	_PatchedModuleObj						)
      assert _test_patching.path.join is mock

      # check join
      assert _test_patching.join is mock

      # check that the other attributes are untouched
      assert _test_patching.os.rename is original_rename
      assert _test_patching.path.dirname is original_dirname
      assert _test_patching.os.path.dirname is original_dirname

      # Even renamed modules or objects must be patched

      # check renamed_os.path.join
      assert isinstance(_test_patching.renamed_os				,	_PatchedModuleObj						)
      assert isinstance(_test_patching.renamed_os.path				,	_PatchedModuleObj						)
      assert _test_patching.renamed_os.path.join is mock

      # check renamed_path.join
      assert isinstance(_test_patching.renamed_path				,	_PatchedModuleObj						)
      assert _test_patching.renamed_path.join is mock

      # check renamed_join
      assert _test_patching.renamed_join is mock

      # check that the other attributes are untouched
      assert _test_patching.renamed_os.rename is original_rename
      assert _test_patching.renamed_path.dirname is original_dirname
      assert _test_patching.renamed_os.path.dirname is original_dirname

   # check that everthing is back to normal when the patch is over

   assert _test_patching.os is original_os
   assert _test_patching.path is original_path
   assert _test_patching.join is original_join

   assert _test_patching.renamed_os is original_os
   assert _test_patching.renamed_path is original_path
   assert _test_patching.renamed_join is original_join
def      A__       (    )  ->  Dict:






   """simple docstring"""







   assert _test_patching.open is open

   _UpperCAmelCase           =   '''__test_patch_submodule_builtin_mock__'''
   # _test_patching has "open" in its globals
   assert _test_patching.open is open
   with patch_submodule(_test_patching				,	'''open'''				,	SCREAMING_SNAKE_CASE_						):
      assert _test_patching.open is mock

   # check that everthing is back to normal when the patch is over

   assert _test_patching.open is open
def      A__       (    )  ->  List[Any]:






   """simple docstring"""







   _UpperCAmelCase           =   '''__test_patch_submodule_missing_mock__'''
   with patch_submodule(_test_patching				,	'''pandas.read_csv'''				,	SCREAMING_SNAKE_CASE_						):
      pass
def      A__       (    )  ->  List[Any]:






   """simple docstring"""







   _UpperCAmelCase           =   '''__test_patch_submodule_missing_builtin_mock__'''
   # _test_patching doesn't have "len" in its globals
   assert getattr(_test_patching				,	'''len'''				,	SCREAMING_SNAKE_CASE_						) is None
   with patch_submodule(_test_patching				,	'''len'''				,	SCREAMING_SNAKE_CASE_						):
      assert _test_patching.len is mock
   assert _test_patching.len is len
def      A__       (    )  ->  Tuple:






   """simple docstring"""







   _UpperCAmelCase           =   '''__test_patch_submodule_start_and_stop_mock__'''
   _UpperCAmelCase           =   patch_submodule(_test_patching				,	'''open'''				,	SCREAMING_SNAKE_CASE_						)
   assert _test_patching.open is open
   patch.start()
   assert _test_patching.open is mock
   patch.stop()
   assert _test_patching.open is open
def      A__       (    )  ->  Union[str, Any]:






   """simple docstring"""







   from os import rename as original_rename
   from os.path import dirname as original_dirname
   from os.path import join as original_join

   _UpperCAmelCase           =   '''__test_patch_submodule_successive_join__'''
   _UpperCAmelCase           =   '''__test_patch_submodule_successive_dirname__'''
   _UpperCAmelCase           =   '''__test_patch_submodule_successive_rename__'''
   assert _test_patching.os.path.join is original_join
   assert _test_patching.os.path.dirname is original_dirname
   assert _test_patching.os.rename is original_rename

   with patch_submodule(_test_patching				,	'''os.path.join'''				,	SCREAMING_SNAKE_CASE_						):
      with patch_submodule(_test_patching				,	'''os.rename'''				,	SCREAMING_SNAKE_CASE_						):
         with patch_submodule(_test_patching				,	'''os.path.dirname'''				,	SCREAMING_SNAKE_CASE_						):
            assert _test_patching.os.path.join is mock_join
            assert _test_patching.os.path.dirname is mock_dirname
            assert _test_patching.os.rename is mock_rename

    # try another order
   with patch_submodule(_test_patching				,	'''os.rename'''				,	SCREAMING_SNAKE_CASE_						):
      with patch_submodule(_test_patching				,	'''os.path.join'''				,	SCREAMING_SNAKE_CASE_						):
         with patch_submodule(_test_patching				,	'''os.path.dirname'''				,	SCREAMING_SNAKE_CASE_						):
            assert _test_patching.os.path.join is mock_join
            assert _test_patching.os.path.dirname is mock_dirname
            assert _test_patching.os.rename is mock_rename

   assert _test_patching.os.path.join is original_join
   assert _test_patching.os.path.dirname is original_dirname
   assert _test_patching.os.rename is original_rename
def      A__       (    )  ->  List[Any]:






   """simple docstring"""







   _UpperCAmelCase           =   '''__test_patch_submodule_doesnt_exist_mock__'''
   with patch_submodule(_test_patching				,	'''__module_that_doesn_exist__.__attribute_that_doesn_exist__'''				,	SCREAMING_SNAKE_CASE_						):
      pass
   with patch_submodule(_test_patching				,	'''os.__attribute_that_doesn_exist__'''				,	SCREAMING_SNAKE_CASE_						):
      pass






from ...configuration_utils import PretrainedConfig
from ...utils import logging


UpperCAmelCase_           =	logging.get_logger(__name__)

UpperCAmelCase_           =	{
    "tiiuae/falcon-40b": "https://huggingface.co/tiiuae/falcon-40b/resolve/main/config.json",
    "tiiuae/falcon-7b": "https://huggingface.co/tiiuae/falcon-7b/resolve/main/config.json",
}




class 			__UpperCamelCase    (							A__    ):
     __A	:  Dict							  =   """falcon"""
     __A	:  Any							  =   ["""past_key_values"""]





     def __init__(     self				,							_UpperCamelCase=65024				,							_UpperCamelCase=4544				,							_UpperCamelCase=32				,							_UpperCamelCase=71				,							_UpperCamelCase=1e-5				,							_UpperCamelCase=0.02				,							_UpperCamelCase=True				,							_UpperCamelCase=0.0				,							_UpperCamelCase=0.0				,							_UpperCamelCase=None				,							_UpperCamelCase=False				,							_UpperCamelCase=False				,							_UpperCamelCase=True				,							_UpperCamelCase=True				,							_UpperCamelCase=False				,							_UpperCamelCase=11				,							_UpperCamelCase=11				,							**_UpperCamelCase				,							):
        _UpperCAmelCase           =   vocab_size
        # Backward compatibility with n_embed kwarg
        _UpperCAmelCase           =   kwargs.pop('''n_embed'''				,							_UpperCamelCase					)
        _UpperCAmelCase           =   hidden_size if n_embed is None else n_embed
        _UpperCAmelCase           =   num_hidden_layers
        _UpperCAmelCase           =   num_attention_heads
        _UpperCAmelCase           =   layer_norm_epsilon
        _UpperCAmelCase           =   initializer_range
        _UpperCAmelCase           =   use_cache
        _UpperCAmelCase           =   hidden_dropout
        _UpperCAmelCase           =   attention_dropout

        _UpperCAmelCase           =   bos_token_id
        _UpperCAmelCase           =   eos_token_id
        _UpperCAmelCase           =   num_attention_heads if num_kv_heads is None else num_kv_heads
        _UpperCAmelCase           =   alibi
        _UpperCAmelCase           =   new_decoder_architecture
        _UpperCAmelCase           =   multi_query  # Ignored when new_decoder_architecture is True
        _UpperCAmelCase           =   parallel_attn
        _UpperCAmelCase           =   bias

        super().__init__(bos_token_id=_UpperCamelCase				,							eos_token_id=_UpperCamelCase				,							**_UpperCamelCase					)





     @property
     def 		UpperCamelCase(     self					):
        return self.hidden_size // self.num_attention_heads





     @property
     def 		UpperCamelCase(     self					):
        return not self.alibi