
    _Vg                        d Z ddlmZ ddlmZ ddlZddlZddlZddlm	Z	m
Z
 ddlmZ eej                  f	 	 	 	 	 dd       Zej                  fddZdd	Zdd
Zddef	 	 	 	 	 	 	 ddZy)zx
Helpers for configuring locale settings.

Name `localization` is chosen to avoid overlap with builtin `locale` module.
    )annotations)contextmanagerN)CallableIterator)optionsc              #    K   t        j                  |      }	 t        j                  ||        t        j                         \  }}||
| d|  n|  t        j                  ||       y# t        j                  ||       w xY ww)aE  
    Context manager for temporarily setting a locale.

    Parameters
    ----------
    new_locale : str or tuple
        A string of the form <language_country>.<encoding>. For example to set
        the current locale to US English with a UTF8 encoding, you would pass
        "en_US.UTF-8".
    lc_var : int, default `locale.LC_ALL`
        The category of the locale being set.

    Notes
    -----
    This is useful when you want to run a particular block of code under a
    particular locale, without globally setting the locale. This probably isn't
    thread-safe.
    N.)locale	setlocale	getlocale)
new_localelc_varcurrent_localenormalized_codenormalized_encodings        \/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/_config/localization.py
set_localer      s     . %%f-N1,/5/?/?/A,,&+>+J$%Q':&;<<00s   B
?A/ B
/BB
c                    	 t        | |      5  	 ddd       y# 1 sw Y   yxY w# t        t        j                  f$ r Y yw xY w)aj  
    Check to see if we can set a locale, and subsequently get the locale,
    without raising an Exception.

    Parameters
    ----------
    lc : str
        The locale to attempt to set.
    lc_var : int, default `locale.LC_ALL`
        The category of the locale being set.

    Returns
    -------
    bool
        Whether the passed locale can be set
    )r   NTF)r   
ValueErrorr
   Error)lcr   s     r   can_set_localer   8   sJ    "6* 		 	 	 % s#   & & #& & AAc                V    fd| D        D cg c]  }t        |      r| c}S c c}w )ar  
    Return a list of normalized locales that do not throw an ``Exception``
    when set.

    Parameters
    ----------
    locales : str
        A string where each locale is separated by a newline.
    normalize : bool
        Whether to call ``locale.normalize`` on each locale.

    Returns
    -------
    valid_locales : list
        A list of valid locales.
    c              3     K   | ]9  }r#t        j                  |j                               n|j                          ; y w)N)r
   	normalizestrip).0locr   s     r   	<genexpr>z!_valid_locales.<locals>.<genexpr>f   s7      
 .7FSYY[)CIIKG
s   ?A)r   )localesr   r   s    ` r   _valid_localesr!   S   s7    &

 # 	  s   &c                 2    t        j                  dgd      S )Nz	locale -aT)shell)
subprocesscheck_output     r   _default_locale_getterr(   n   s    ""K===r'   Tc                   	  |       }	 |j                  d      }g }|D ]7  }	 |j                  t	        |t
        j                  j                               9 	 | t        |      S t        j                  |  d      }|j                  dj                              }t        ||      S # t         j                  $ r Y yw xY w# t        $ r |j                  t	        |d             Y w xY w# t        $ r Y w xY w)a  
    Get all the locales that are available on the system.

    Parameters
    ----------
    prefix : str
        If not ``None`` then return only those locales with the prefix
        provided. For example to get all English language locales (those that
        start with ``"en"``), pass ``prefix="en"``.
    normalize : bool
        Call ``locale.normalize`` on the resulting list of available locales.
        If ``True``, only locales that can be set without throwing an
        ``Exception`` are returned.
    locale_getter : callable
        The function to use to retrieve the current locales. This should return
        a string with each locale separated by a newline character.

    Returns
    -------
    locales : list of strings
        A list of locale strings that can be set with ``locale.setlocale()``.
        For example::

            locale.setlocale(locale.LC_ALL, locale_string)

    On error will return None (no locale available, e.g. Windows)

    N   
)encodingzwindows-1252z.*
)r$   CalledProcessErrorsplitappendstrr   displayr+   UnicodeError	TypeErrorr!   recompilefindalljoin)	prefixr   locale_getterraw_localessplit_raw_localesout_localesxpatternfounds	            r   get_localesr@   r   s   B#o (--e4" 		DAD""3q7??3K3K#LM		D ~k955jjF82'GOODIIk23E%++= ((     D ""3q>#BCD  sE   B, C0 4CC0 ,CC%C-*C0 ,C--C0 0	C<;C<)r   zstr | tuple[str, str]r   intreturnzIterator[str | tuple[str, str]])r   r0   r   rA   rB   bool)r    zlist[str] | strr   rC   rB   z	list[str])rB   bytes)r8   z
str | Noner   rC   r9   zCallable[[], bytes]rB   zlist[str] | None)__doc__
__future__r   
contextlibr   r
   r4   r$   typingr   r   pandas._config.configr   LC_ALLr   r   r!   r(   r@   r&   r'   r   <module>rK      s   
 # %  	 
 * 5;]] 1% 1/2 1$ 1  1F +1-- 66>
 )?A,A,A, 'A, 	A,r'   