o
    T۷iB                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dl	Z	d dl
Z
d dlZ
e	jdd Ze	jdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Z d,d- Z!d.d/ Z"d0d1 Z#d2d3 Z$d4d5 Z%d6d7 Z&d8d9 Z'd:d; Z(d<d= Z)d>d? Z*d@dA Z+dBdC Z,dDdE Z-dFdG Z.dHdI Z/dJdK Z0dLdM Z1dNdO Z2dPdQ Z3dRdS Z4dTdU Z5dVdW Z6dXdY Z7dZd[ Z8d\d] Z9d^d_ Z:d`da Z;dbdc Z<ddde Z=dfdg Z>dhdi Z?djdk Z@dldm ZAdndo ZBdpdq ZCdS )r    N)metadata)patchc                   c   "    t j  t jV  t j  d S N)	pycountry	countries_clear r	   r	   R/home/ubuntu/vllm_env/lib/python3.10/site-packages/pycountry/tests/test_general.pyr         
r   c                   c   r   r   )r   subdivisionsr   r	   r	   r	   r
   r      r   r   c                 C   s2   t tjdks	J tttjd tjjsJ d S )N   r   )lenr   r   
isinstancelistdbDatar   r	   r	   r
   test_country_list   s    r   c                 C   s~  t jd}t|dksJ |d t jjddksJ t jd}t|dks)J |d t jjddks6J |d t jjd	dksCJ t jd
}t|dksQJ |d t jjddks^J |d t jjddkskJ |d t jjddksxJ t jd}|d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ |d t jjddksJ t jd}t|dksJ |d t jjddksJ t jd }t|dks-J t jjdd|d d v s=J d S )!NEngland   r   GBalpha_2zSint Maarten   NLSXCote   CIFRHNNewNCNZPG   US   CA   AU   BS   TW	   MHzunited states of americaUK)r   r   search_fuzzyr   getr   resultsr	   r	   r
   test_country_fuzzy_search    s:   $r7   c                 C   s:   t jd}t|dksJ |d t jjddksJ d S )Nburmar   r   BUMMalpha_4)r   historic_countriesr3   r   r4   r5   r	   r	   r
   "test_historic_country_fuzzy_searchO   s   r=   c                 C   sX   t jjdd}|jdksJ |jdksJ |jdksJ |jdks#J |jdks*J d S )NDEr   DEU276GermanyFederal Republic of Germany)r   r   r4   r   alpha_3numericnameofficial_name)r   germanyr	   r	   r
   test_germany_has_all_attributesU   s   rH   c                 C   s   t jjdd}|jdksJ |jdksJ tjtdd |j W d    n1 s*w   Y  tjtdd |j	 W d    d S 1 sEw   Y  d S )NAWr   ArubarF   matchcommon_name)
r   r   r4   r   rE   pytestraisesAttributeErrorrF   rM   )r   arubar	   r	   r
   test_missing_common_official^   s   "rR   c                 C   sJ   t jjdd}|jdksJ |jdksJ |jdksJ |jdks#J d S )NVNr   zViet NamzSocialist Republic of Viet NamVietnam)r   r   r4   r   rE   rF   rM   )r   vietnamr	   r	   r
   *test_missing_common_official_use_differenth   s
   rV   c                 C   sD   t jjdd}tt |j}W d    d S 1 sw   Y  d S Nr>   r   )r   r   r4   rN   rO   rP   foo)r   rG   _r	   r	   r
   test_country_missing_attributep      "rZ   c                 C   s   t tjdks	J tttjd tjjsJ tjjdd}|jdks%J |j	dks,J |j
dks3J |jd u s:J |jd u sAJ |jtjjddu sMJ d S )	Ni  r   zDE-STcodezSachsen-AnhaltLandr>   r   )r   r   r   r   r   r   r   r4   r]   rE   typeparentparent_codecountryr   )r   de_str	   r	   r
   %test_subdivisions_directly_accessiblev   s   rd   c                  C   sr   t jjdd} | jdksJ | jdksJ | jdksJ | jdks#J | jt jjddu s/J | jjdks7J d S )NzFR-01r\   AinzMetropolitan departmentFR-ARAu   Auvergne-Rhône-Alpes)r   r   r4   r]   rE   r_   ra   r`   )fr_01r	   r	   r
   ,test_subdivisions_have_subdivision_as_parent   s   rh   c                   C   s8   t tjjdddksJ t tjjdddksJ d S )Nr>   country_code   r'   9   )r   r   r   r4   r	   r	   r	   r
   "test_query_subdivisions_of_country   s   rm   c                  C   sj   t tjdks	J tttjd tjjsJ tjjdd} | jdks%J | j	dks,J | j
dks3J d S )N   r   LatinrE   Latn215)r   r   scriptsr   r   r   r   r4   r;   rE   rD   )latinr	   r	   r
   test_scripts      ru   c                  C   sj   t tjdks	J tttjd tjjsJ tjjdd} | jdks%J | j	dks,J | j
dks3J d S )N   r   ARSrC   zArgentine Peso032)r   r   
currenciesr   r   r   r   r4   rC   rE   rD   )argentine_pesor	   r	   r
   test_currencies   rv   r}   c                  C   s   t tjdks	J tttjd tjjsJ tjjdd} | jdks%J | j	dks,J | j
dks3J tjjdd}|j
dksAJ |jd	ksHJ tjd
}||ksTJ d S )Ni  r   anr   arg	AragonesebnBengaliBanglabAngLa)r   r   	languagesr   r   r   r   r4   r   rC   rE   rM   lookup)	aragonesebengalibengali2r	   r	   r
   test_languages   s   r   c                  C   s\   t tjdks	J tttjd tjjsJ tjjdd} | j	dks%J | j
dks,J d S )Ns   r   r   ry   r   )r   r   language_familiesr   r   r   r   r   r4   rC   rE   )r   r	   r	   r
   test_language_families   s
   r   c                  C   s*   t jdtjdgd} |  ddksJ d S )Nz	iso3166-1de)r   rA   Deutschland)gettexttranslationr   LOCALES_DIR)germanr	   r	   r
   test_locales   s   
r   c                  C   s\   t jjdd} t| t jjsJ | jdksJ | jdksJ | jdks%J | j	dks,J d S )NSUNry   SUHHz)USSR, Union of Soviet Socialist Republicsz
1992-08-30)
r   r<   r4   r   r   r   r;   rC   rE   withdrawal_date)ussrr	   r	   r
   test_removed_countries   s   r   c                 C   s"   t dttjjddsJ d S )NzCountry\(alpha_2=u?'DE', alpha_3=u?'DEU', flag='..', name=u?'Germany', numeric=u?'276', official_name=u?'Federal Republic of Germany'\)r>   r   )rerL   reprr   r   r4   r   r	   r	   r
   	test_repr   s   r   c                 C   s6   t jjdd}ddddd|jd}t||ksJ d S )Nr>   r   r?   rA   r@   rB   )r   rC   rE   rD   rF   flag)r   r   r4   r   dict)r   rb   expr	   r	   r
   	test_dict   s   r   c                 C   s,   t jjdd}dD ]
}|t|v sJ q	d S )Nr>   r   )r   rC   rE   rD   rF   )r   r   r4   dir)r   rG   nr	   r	   r
   test_dir   s   r   c                 C   s   t j}tt |jddd W d    n1 sw   Y  |jdd|jddks-J |jddd u s7J t }|jd|d|u sEJ d S )Nr>   r?   )r   rC   r   ry   Foo)r   default)r   r   rN   rO   	TypeErrorr4   object)r   ctracerr	   r	   r
   test_get   s   r   c                 C   s  t j}|jdd}||jddksJ ||dksJ ||dks%J ||dks.J ||dks7J ||dks@J t jjdd	}|t jd
ksQJ t jjdd}|t jdksbJ t jjdd}|t jdkssJ t jjdd}|t jdksJ t jjdd}|t jdksJ t	
t t jd W d    n1 sw   Y  t	
t t jd W d    n1 sw   Y  t	
t t jjdd W d    d S 1 sw   Y  d S )Nr>   r   r   r?   r@   rG   rB   BQAQr:   atbDeEURry   euroro   rp   latnrf   r\   zfr-arazbogus countryi90  )r   r   r4   r   r<   r   r{   rs   r   rN   rO   LookupError)r   r   gbqaqr   r   rt   fr_arar	   r	   r
   test_lookup   s6   "r   c                  C   s<   t j} | jdd}|jdksJ |j| j|jdu sJ d S )NzCV-BVr\   zCV-B)r   r   r4   ra   r`   )ssdr	   r	   r
   test_subdivision_parent  s   r   c                  C   s   t j} | jddd u sJ d S )NzUS-ZZr\   )r   r   r4   r   r	   r	   r
   -test_subdivision_missing_code_raises_keyerror  s   r   c                  C   sN   t j} t| jdddksJ t| jdddksJ | jddd u s%J d S )Nr>   ri   rk   JEr   FOOBAR)r   r   r   r4   r   r	   r	   r
   test_subdivision_empty_list"  s   r   c                   C   s`   zt d W n t jy   td Y nw tjdksJ ttjdks'J dtjv s.J d S )Nr   z5pycountry not installed correctly, you're on your ownn/ar(   .)_importlib_metadatadistributionPackageNotFoundErrorrN   skipr   __version__r   r	   r	   r	   r
   test_has_version_attribute)  s   r   c                   C      t tjtjs	J d S r   )r   r   r   	Languagesr	   r	   r	   r
   test_is_instance_of_language3     r   c                 C   s&   t jjdd}|jj}|dksJ d S )Nr'   r   Country)r   r   r4   	__class____name__)r   united_states
class_namer	   r	   r
   test_is_instance_of_country7  s   r   c                 C   r   r   )r   r   r   Subdivisionsr   r	   r	   r
   test_is_instance_of_subdivision=  r   r   c                   C   r   r   )r   r   rs   Scriptsr	   r	   r	   r
   test_is_instance_of_scriptA  r   r   c                   C   r   r   )r   r   r{   
Currenciesr	   r	   r	   r
   test_is_instance_of_currencyE  r   r   c                 C   sN   t jjddd u sJ t jjddddd t jjdd}t|t jjs%J d S )NXKr   XXKKosovo926)r   rC   rE   rD   )r   r   r4   	add_entryr   
data_class)r   rb   r	   r	   r
   test_country_add_entryI  s   r   c                 C   s>   t jjddd usJ t jjdd t jjddd u sJ d S rW   )r   r   r4   remove_entryr   r	   r	   r
   test_country_remove_entryT  s   r   c                 C   sB   t jtdd tjjdd W d    d S 1 sw   Y  d S )Nz	not foundrK   zNot A Real Countryrp   )rN   rO   KeyErrorr   r   r   r   r	   r	   r
   &test_country_remove_non_existent_entry\  s   "r   c                 C   s   | j ddd u s
J t| j dddd d}t|dksJ |d	 | j d
dks*J | jddddddd | j dd}t|| jsCJ t| j dddd d}t|dksWJ |d	 | j d
dkscJ d S )NzIT-A0r\   ITri   c                 S      | j S r   r\   r   r	   r	   r
   <lambda>e      z,test_subdivision_add_entry.<locals>.<lambda>key~   r   IT-21zValle d'Aosta23IT-23Province)r]   rj   rE   r`   ra   r_   c                 S   r   r   r\   r   r	   r	   r
   r   y  r      )r4   sortedr   r   r   r   )r   
it_subdivsit_a0r	   r	   r
   test_subdivision_add_entrya  s.   
	
r   c                 C   s   | j ddd us
J | jdd | j ddd u sJ t| j dddd d}t|dks.J |d	 | j d
dks:J | dd	 jdksFJ d S )Nr   r\   r   ri   c                 S   r   r   r\   r   r	   r	   r
   r     r   z/test_subdivision_remove_entry.<locals>.<lambda>r   }   r   r   )r4   r   r   r   rL   ra   )r   r   r	   r	   r
   test_subdivision_remove_entry  s   
r   c                    s   zdd l  W n ty   ddlm  Y nw  fdd}|dd}ttj|d} d}t	
t | | W d    d S 1 sCw   Y  d S )	Nr   )	resourcesc                    s   t  | | S r   )strfiles)package_or_requirementresource_nameimportlib_resourcesr	   r
   resource_filename  s   z7test_no_results_lookup_error.<locals>.resource_filenamer   	databasesziso3166-1.jsonznonexistent query)r   ModuleNotFoundError	importlibr   r   ExistingCountriesospathjoinrN   rO   r   r3   )r   r   DATABASE_DIRqueryr	   r   r
   test_no_results_lookup_error  s   
"r  c                 C   2   t jd}t|dksJ |d jdksJ d S NAlabamar   r   r   r   r3   r   rE   r   r6   r	   r	   r
   #test_subdivision_fuzzy_search_match     r  c                 C   2   t jd}t|dksJ |d jdksJ d S NMassachusettr   r   Massachusettsr	  r
  r	   r	   r
   +test_subdivision_fuzzy_search_partial_match  r  r  c                 C   r  r  )r   r   rL   r   rE   r
  r	   r	   r
   test_subdivision_match  r  r  c                 C   r  r  )r   r   partial_matchr   rE   r
  r	   r	   r
   test_subdivision_partial_match  r  r  c                  C   sD   t jjdd} tt | j W d    d S 1 sw   Y  d S )NEnglishrp   )r   r   r4   rN   rO   rP   rF   )englishr	   r	   r
    test_non_country_attribute_error  r[   r  c                 C   sD   t jjdd}tt |j W d    d S 1 sw   Y  d S )Nr)   r   )r   r   r4   rN   rO   rP   maple_syrup)r   canadar	   r	   r
   test_country_attribute_error  r[   r  c                   C   sL   t ddks	J t ddksJ t ddksJ t ddks$J d S )	Nu   CaféCafeu   résuméresumeu   naïvenaiveu
   São Pauloz	Sao Paulor   remove_accentsr	   r	   r	   r
   test_with_accents  s   r   c                   C   (   t ddks	J t ddksJ d S )Napplebananar  r	   r	   r	   r
   test_without_accents  s   r$  c                   C      t ddks	J d S )N r  r	   r	   r	   r
   test_empty_string  r   r'  c                   C   r%  )Nz
!@#$%^&*()r  r	   r	   r	   r
   test_special_characters  r   r(  c                   C   r!  )Nu   你好u   こんにちはr  r	   r	   r	   r
   test_unicode_characters  s   r)  c                 C   s<   t t tjd W d    d S 1 sw   Y  d S )NNon Existent Subdivision)rN   rO   r   r   r   r3   r   r	   r	   r
   6test_subdivision_search_fuzzy_non_existent_subdivision  s   "r+  c                 C       t jd}t|dksJ d S Nr*  r   )r   r   r  r   r   resultr	   r	   r
   "test_subdivision_partial_match_non     r0  c                 C   r,  r-  )r   r   rL   r   r.  r	   r	   r
   test_subdivision_match_non  r1  r2  c                  C   sJ   t dtjd td} | dksJ W d    d S 1 sw   Y  d S )Nzimportlib.metadata.version)side_effectnon_existent_packager   )r   r   r   r   get_version)r/  r	   r	   r
   'test_get_version_with_package_not_found  s   
"r6  c                 C   s"   dd | D }t |}|sJ d S )Nc                 S   s   g | ]}t |d qS rp   )hasattr).0subdivisionr	   r	   r
   
<listcomp>  s    
z=test_all_subdivisions_have_name_attribute.<locals>.<listcomp>)all)r   has_name_attrall_have_name_attrr	   r	   r
   )test_all_subdivisions_have_name_attribute  s
   r>  c                 C   s    dd t jD }|g ksJ d S )Nc                 S   s$   g | ]}|j r|js|j|j fqS r	   )ra   r`   r]   )r8  ir	   r	   r
   r:    s    
z:test_subdivisions_with_missing_parents.<locals>.<listcomp>)r   r   r.  r	   r	   r
   &test_subdivisions_with_missing_parents  s   r@  )Dr   os.pathr   r   r   r   r   unittest.mockr   rN   r   pycountry.dbfixturer   r   r   r7   r=   rH   rR   rV   rZ   rd   rh   rm   ru   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r$  r'  r(  r)  r+  r0  r2  r6  r>  r@  r	   r	   r	   r
   <module>   s    

/	



		

	