U
    sVc                     @   sz  d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlZ	e pDg Z
eejZejje
 ddZejjee
dkddZejfeeddd	Zejd
ejejejfdd Zejd
ejejejfdd Zejd
ejejejfdd Zejdddddgejd
ejejejfdd Zdd Zdd Zedd Zeejdddddgdd Z d d! Z!dS )"    N)can_set_localeget_locales
set_localezNeed locales)reason   z)Need multiple locales for meaningful test)lc_varreturnc                 C   s
   t | S N)locale	setlocaler    r   I/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/config/test_localization.py_get_current_locale   s    r   r   c                 C   s0   t | }t|| dstt | }||ks,td S )Nr   r   r   AssertionErrorr   before_localeafter_localer   r   r   test_can_set_current_locale   s    r   c                 C   s0   t | }td| dstt | }||ks,td S )N r   r   r   r   r   r   test_can_set_locale_valid_set(   s    r   c                 C   s0   t | }td| drtt | }||ks,td S )Nznon-existent_localer   r   r   r   r   r   test_can_set_locale_invalid_set1   s    r   zlang,enc)it_CHzUTF-8)en_USascii)zh_CNGB2312)it_ITz
ISO-8859-1c                 C   s0   t |}t| |ftj t |}||ks,td S r	   )r   r   r
   LC_ALLr   )langencr   r   r   r   r   r   test_can_set_locale_no_leak:   s    r"   c              	   C   s:   dd }|    }|td| tdr,tW 5 Q R X d S )Nc                   S   s
   t  d S r	   )
ValueErrorr   r   r   r   mock_get_localeQ   s    z8test_can_set_locale_invalid_get.<locals>.mock_get_locale	getlocaler   )contextsetattrr
   r   r   )Zmonkeypatchr$   mr   r   r   test_can_set_locale_invalid_getL   s    
r)   c                   C   s   t tdkstd S )Nr   )len_all_localesr   r   r   r   r   test_get_locales_at_least_oneY   s    r,   c                  C   s*   t d } tt| d d ddks&td S )Nr      )prefix)r+   r*   r   r   )Zfirst_localer   r   r   test_get_locales_prefix^   s    r/   c           	   
   C   s   t  }t|j}| |f}t|sXd}tjtj|d t	| W 5 Q R X W 5 Q R X nBt	|4}|
d\}}t|j}||f}||kstW 5 Q R X t  }||kstd S )Nzunsupported locale setting)match.)r   codecslookupnamer   pytestZraisesr
   Errorr   splitr   )	r    r!   r   Z
new_localemsgZnormalized_localeZnew_langZnew_encr   r   r   r   test_set_localed   s    

r9   c                  C   sH   t jd} | r| dd nd}ttjjj	j
t|j
ksDtd S )Nr   r1   zutf-8)osenvirongetr7   r2   r3   pdoptionsZdisplayencodingr4   r   )Zsystem_localeZsystem_encodingr   r   r   test_encoding_detected   s    
rA   )"r2   r
   r;   r5   Zpandas._config.localizationr   r   r   Zpandasr>   r+   r   r   Z_current_localemarkZskipifZ
pytestmarkr*   Z_skip_if_only_one_localeintstrr   ZparametrizeLC_CTYPELC_TIMEr   r   r   r"   r)   r,   r/   r9   rA   r   r   r   r   <module>   sX   

 


	
	