"""simple docstring"""





def   lowerCamelCase_(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE	)->     float:




							def get_matched_characters(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE	) -> str:
														_SCREAMING_SNAKE_CASE		:    Optional[Any]      	=     []
														_SCREAMING_SNAKE_CASE		:    List[Any]      	=     min(len(_stra	)  ,						len(_stra	)	) // 2
														for i, l in enumerate(_stra	):
																					_SCREAMING_SNAKE_CASE		:    str      	=     int(max(0  ,						i - limit	)	)
																					_SCREAMING_SNAKE_CASE		:    Union[str, Any]      	=     int(min(i + limit + 1  ,						len(_stra	)	)	)
																					if l in _stra[left:right]:
																												matched.append(__SCREAMING_SNAKE_CASE	)
																												_SCREAMING_SNAKE_CASE		:    Optional[Any]      	=     F"""{_stra[0:_stra.index(__SCREAMING_SNAKE_CASE	)]} {_stra[_stra.index(__SCREAMING_SNAKE_CASE	) + 1:]}"""

														return "".join(__SCREAMING_SNAKE_CASE	)

							# matching characters
							_SCREAMING_SNAKE_CASE		:    Union[str, Any]      	=     get_matched_characters(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE	)
							_SCREAMING_SNAKE_CASE		:    int      	=     get_matched_characters(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE	)
							_SCREAMING_SNAKE_CASE		:    List[Any]      	=     len(__SCREAMING_SNAKE_CASE	)

							# transposition
							_SCREAMING_SNAKE_CASE		:    int      	=     (
							    len([(ca, ca) for ca, ca in zip(__SCREAMING_SNAKE_CASE  ,						__SCREAMING_SNAKE_CASE	) if ca != ca]	) // 2
							)

							if not match_count:
														_SCREAMING_SNAKE_CASE		:    str      	=     0.0
							else:
														_SCREAMING_SNAKE_CASE		:    Union[str, Any]      	=     (
														    1
														    / 3
														    * (
														        match_count / len(__SCREAMING_SNAKE_CASE	)
														        + match_count / len(__SCREAMING_SNAKE_CASE	)
														        + (match_count - transpositions) / match_count
														    )
														)

							# common prefix up to 4 characters
							_SCREAMING_SNAKE_CASE		:    List[Any]      	=     0
							for ca, ca in zip(stra[:4]  ,						stra[:4]	):
														if ca == ca:
																					prefix_len += 1
														else:
																					break

							return jaro + 0.1 * prefix_len * (1 - jaro)


if __name__ == "__main__":
			import doctest

			doctest.testmod()
			print(jaro_winkler('''hello''', '''world'''))




"""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



