"""simple docstring"""





import pytest

from datasets.parallel import ParallelBackendConfig, parallel_backend
from datasets.utils.py_utils import map_nested

from .utils import require_dill_gt_0_3_2, require_joblibspark, require_not_windows



def   lowerCamelCase_(__SCREAMING_SNAKE_CASE	)->     Union[str, Any]:  # picklable for multiprocessing
							return i + 1



@require_dill_gt_0_3_2
@require_joblibspark
@require_not_windows
def   lowerCamelCase_()->     Union[str, Any]:




							with parallel_backend("""spark"""	):
														assert ParallelBackendConfig.backend_name == "spark"

							_SCREAMING_SNAKE_CASE		:    Optional[Any]      	=     [1, 2, 3]
							with pytest.raises(__SCREAMING_SNAKE_CASE	):
														with parallel_backend("""unsupported backend"""	):
																					map_nested(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE  ,						num_proc=2	)

							with pytest.raises(__SCREAMING_SNAKE_CASE	):
														with parallel_backend("""unsupported backend"""	):
																					map_nested(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE  ,						num_proc=-1	)



@require_dill_gt_0_3_2
@require_joblibspark
@require_not_windows
@pytest.mark.parametrize("""num_proc"""  ,						[2, -1]	)
def   lowerCamelCase_(__SCREAMING_SNAKE_CASE	)->     str:
							_SCREAMING_SNAKE_CASE		:    Optional[Any]      	=     [1, 2]
							_SCREAMING_SNAKE_CASE		:    Dict      	=     {"""a""": 1, """b""": 2}
							_SCREAMING_SNAKE_CASE		:    List[str]      	=     {"""a""": [1, 2], """b""": [3, 4]}
							_SCREAMING_SNAKE_CASE		:    str      	=     {"""a""": {"""1""": 1}, """b""": 2}
							_SCREAMING_SNAKE_CASE		:    Optional[Any]      	=     {"""a""": 1, """b""": 2, """c""": 3, """d""": 4}
							_SCREAMING_SNAKE_CASE		:    List[Any]      	=     [2, 3]
							_SCREAMING_SNAKE_CASE		:    Union[str, Any]      	=     {"""a""": 2, """b""": 3}
							_SCREAMING_SNAKE_CASE		:    Tuple      	=     {"""a""": [2, 3], """b""": [4, 5]}
							_SCREAMING_SNAKE_CASE		:    int      	=     {"""a""": {"""1""": 2}, """b""": 3}
							_SCREAMING_SNAKE_CASE		:    Dict      	=     {"""a""": 2, """b""": 3, """c""": 4, """d""": 5}

							with parallel_backend("""spark"""	):
														assert map_nested(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE  ,						num_proc=__SCREAMING_SNAKE_CASE	) == expected_map_nested_sa
														assert map_nested(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE  ,						num_proc=__SCREAMING_SNAKE_CASE	) == expected_map_nested_sa
														assert map_nested(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE  ,						num_proc=__SCREAMING_SNAKE_CASE	) == expected_map_nested_sa
														assert map_nested(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE  ,						num_proc=__SCREAMING_SNAKE_CASE	) == expected_map_nested_sa
														assert map_nested(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE  ,						num_proc=__SCREAMING_SNAKE_CASE	) == expected_map_nested_sa




"""simple docstring"""

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


SCREAMING_SNAKE_CASE_            =    logging.get_logger(__name__)

SCREAMING_SNAKE_CASE_            =    {
    '''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				(		SCREAMING_SNAKE_CASE_				):
      __SCREAMING_SNAKE_CASE :				Optional[Any]				   =						"falcon"
      __SCREAMING_SNAKE_CASE :				List[Any]				   =						["past_key_values"]




      def __init__(				self ,							lowercase_=6_5_0_2_4 ,							lowercase_=4_5_4_4 ,							lowercase_=3_2 ,							lowercase_=7_1 ,							lowercase_=1E-5 ,							lowercase_=0.0_2 ,							lowercase_=True ,							lowercase_=0.0 ,							lowercase_=0.0 ,							lowercase_=None ,							lowercase_=False ,							lowercase_=False ,							lowercase_=True ,							lowercase_=True ,							lowercase_=False ,							lowercase_=1_1 ,							lowercase_=1_1 ,							**lowercase_ ,							)    ->       Any:
          UpperCAmelCase          =       vocab_size
          # Backward compatibility with n_embed kwarg
          UpperCAmelCase          =       kwargs.pop('n_embed' ,							lowercase_				)
          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=lowercase_ ,							eos_token_id=lowercase_ ,							**lowercase_				)




      @property
      def      a_   (				self				)    ->       List[Any]:
          return self.hidden_size // self.num_attention_heads




      @property
      def      a_   (				self				)    ->       List[str]:
          return not self.alibi



