
    `ii;                        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             Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8d0 Z9d1 Z:d2 Z;d3 Z<d4 Z=d5 Z>d6 Z?d7 Z@dS )8    N)metadata)patchc               #      K   t           j                                         t           j        V  t           j                                         d S N)	pycountry	countries_clear     p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pycountry/tests/test_general.pyr   r      sE         

     r   c                     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   s    r   test_country_listr      sO    y"##s****d9.//2IL4EFFFFFFFr   c                    t           j                            d          }t          |          dk    sJ |d         t           j                            d          k    sJ t           j                            d          }t          |          dk    sJ |d         t           j                            d          k    sJ |d         t           j                            d	          k    sJ t           j                            d
          }t          |          dk    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ t           j                            d          }|d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ |d         t           j                            d          k    sJ t           j                            d          }t          |          dk    sJ |d         t           j                            d          k    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)r   r   search_fuzzyr   getr   resultss     r   test_country_fuzzy_searchr8      s   !..y99Gw<<11:,000>>>>>> !..~>>Gw<<11:,000>>>>>>1:,000>>>>>>
 !..v66Gw<<11:,000>>>>>>1:,000>>>>>>1:,000>>>>>> !..u55G1:,000>>>>>>1:,000>>>>>>1:,000>>>>>>1:,000>>>>>>1:,000>>>>>>1:,000>>>>>>1:,000>>>>>>1:,000>>>>>>1:,000>>>>>>1:,000>>>>>> !../IJJGw<<11:,000>>>>>>>>r   c                     t           j                            d          }t          |          dk    sJ |d         t           j                            d          k    sJ d S )Nburmar   r   BUMMalpha_4)r   historic_countriesr4   r   r5   r6   s     r   "test_historic_country_fuzzy_searchr?   B   s^    *77@@Gw<<11:599&9IIIIIIIIr   c                     t           j                            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   r5   r   alpha_3numericnameofficial_name)r   germanys     r   test_germany_has_all_attributesrK   H   s    !%%d%33G?d""""?e####?e####<9$$$$ $AAAAAAAr   c                 d   t           j                            d          }|j        dk    sJ |j        dk    sJ t          j        t          d          5  |j         d d d            n# 1 swxY w Y   t          j        t          d          5  |j	         d d d            d S # 1 swxY w Y   d S )NAWr   ArubarI   matchcommon_name)
r   r   r5   r   rH   pytestraisesAttributeErrorrI   rQ   )r   arubas     r   test_missing_common_officialrV   Q   s6   ##D#11E=D    :    	~_	=	=	=                	~]	;	;	;                   s$   A**A.1A.B%%B),B)c                     t           j                            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   r5   r   rH   rI   rQ   )r   vietnams     r   *test_missing_common_official_use_differentr[   [   sp    !%%d%33G?d""""<:%%%% $DDDDD)++++++r   c                     t           j                            d          }t          j        t
                    5  |j        }d d d            d S # 1 swxY w Y   d S NrA   r   )r   r   r5   rR   rS   rT   foo)r   rJ   _s      r   test_country_missing_attributer`   c   s    !%%d%33G	~	&	&  K                    AAAc                    t          t          j                  dk    sJ t          t	          t          j                  d         t          j        j                  sJ t          j                            d          }|j        dk    sJ |j	        dk    sJ |j
        dk    sJ |j        J |j        J |j        t          j                            d          u sJ d S )	Ni  r   zDE-STcodezSachsen-AnhaltLandrA   r   )r   r   subdivisionsr   r   r   r   r5   rd   rH   typeparentparent_codecountryr   )r   de_sts     r   %test_subdivisions_directly_accessiblerl   i   s    y%&&$....d912215y|7HIIIII"&&G&44E:    :))))):<$$$=I/33D3AAAAAAAAr   c                  $   t           j                            d          } | j        dk    sJ | j        dk    sJ | j        dk    sJ | j        dk    sJ | j        t           j                            d          u sJ | j        j        dk    sJ d S )NzFR-01rc   AinzMetropolitan departmentFR-ARAu   Auvergne-Rhône-Alpes)r   rf   r5   rd   rH   rg   ri   rh   )fr_01s    r   ,test_subdivisions_have_subdivision_as_parentrq   v   s    "&&G&44E:    ::22222((((<915585DDDDDD< 7777777r   c                      t          t          j                            d                    dk    sJ t          t          j                            d                    dk    sJ d S )NrA   country_code   r)   9   )r   r   rf   r5   r
   r   r   "test_query_subdivisions_of_countryrw      sb    y%))t)<<==CCCCy%))t)<<==CCCCCCr   c                  N   t          t          j                  dk    sJ t          t	          t          j                  d         t          j        j                  sJ t          j                            d          } | j        dk    sJ | j	        dk    sJ | j
        dk    sJ d S )N   r   LatinrH   Latn215)r   r   scriptsr   r   r   r   r5   r=   rH   rG   )latins    r   test_scriptsr      s    y !!S((((d9,--a0),2CDDDDD!!w!//E=F"""":    =E!!!!!!r   c                  N   t          t          j                  dk    sJ t          t	          t          j                  d         t          j        j                  sJ t          j                            d          } | j        dk    sJ | j	        dk    sJ | j
        dk    sJ d S )N   r   ARSrF   zArgentine Peso032)r   r   
currenciesr   r   r   r   r5   rF   rH   rG   )argentine_pesos    r   test_currenciesr      s    y#$$++++d9/003Y\5FGGGGG)--e-<<N!U****"22222!U******r   c                     t          t          j                  dk    sJ t          t	          t          j                  d         t          j        j                  sJ t          j                            d          } | j        dk    sJ | j	        dk    sJ | j
        dk    sJ t          j                            d          }|j
        dk    sJ |j        d	k    sJ t          j                            d
          }||k    sJ d S )Ni  r   anr   arg	AragonesebnBengaliBanglabAngLa)r   r   	languagesr   r   r   r   r5   r   rF   rH   rQ   lookup)	aragonesebengalibengali2s      r   test_languagesr      s   y"##t++++d9.//2IL4EFFFFF#'''55I$$$$%%%%>[((((!%%d%33G<9$$$$(**** "))(33Hwr   c                  4   t          t          j                  dk    sJ t          t	          t          j                  d         t          j        j                  sJ t          j                            d          } | j	        dk    sJ | j
        dk    sJ d S )Ns   r   r   r   r   )r   r   language_familiesr   r   r   r   r   r5   rF   rH   )r   s    r   test_language_familiesr      s    y*++s2222d9677:IL<MNNNNN#'''66I%%%%>[((((((r   c                      t          j        dt          j        dg          } |                      d          dk    sJ d S )Nz	iso3166-1de)r   rD   Deutschland)gettexttranslationr   LOCALES_DIR)germans    r   test_localesr      sJ     Y*tf  F >>)$$555555r   c                      t           j                            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SUNr   SUHHz)USSR, Union of Soviet Socialist Republicsz
1992-08-30)
r   r>   r5   r   r   r   r=   rF   rH   withdrawal_date)ussrs    r   test_removed_countriesr      s    '++E+::DdIL-.....<6!!!!<5    9CCCCC<//////r   c                     t          j        dt          t          j                            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'\)rA   r   )rerP   reprr   r   r5   r   s    r   	test_reprr      sP    8	; 	Y $$T$2233      r   c                     t           j                            d          }ddddd|j        d}t	          |          |k    sJ d S )NrA   r   rB   rD   rC   rE   )r   rF   rH   rG   rI   flag)r   r   r5   r   dict)r   rj   exps      r   	test_dictr      sZ    !%%d%33G6 C ==Cr   c                 v    t           j                            d          }dD ]}|t          |          v sJ d S )NrA   r   )r   rF   rH   rG   rI   )r   r   r5   dir)r   rJ   ns      r   test_dirr      sN    !%%d%33GE ! !CLL     ! !r   c                    t           j        }t          j        t                    5  |                    dd           d d d            n# 1 swxY w Y   |                    d          |                    d          k    sJ |                    d          J t                      }|                    d|          |u sJ d S )NrA   rB   )r   rF   r   r   Foo)r   default)r   r   rR   rS   	TypeErrorr5   object)r   ctracers      r   test_getr      s    A	y	!	! + +	dE***+ + + + + + + + + + + + + + +555!%%%"6"66666555'''XXF555//6999999s   A

AAc                 &   t           j        }|                    d          }||                    d          k    sJ ||                    d          k    sJ ||                    d          k    sJ ||                    d          k    sJ ||                    d          k    sJ ||                    d          k    sJ t           j                            d	          }|t           j                            d
          k    sJ t           j                            d          }|t           j                            d          k    sJ t           j                            d          }|t           j                            d          k    sJ t           j                            d          }|t           j                            d          k    sJ t           j                            d          }|t           j                            d          k    sJ t          j
        t                    5  t           j                            d           d d d            n# 1 swxY w Y   t          j
        t                    5  t           j                            d           d d d            n# 1 swxY w Y   t          j
        t                    5  t           j                            d           d d d            d S # 1 swxY w Y   d S )NrA   r   r   rB   rC   rJ   rE   BQAQr<   atbDeEURr   eurorz   r{   latnro   rc   zfr-arazbogus countryi90  )r   r   r5   r   r>   r   r   r~   rf   rR   rS   LookupError)r   r   gbqaqr   r   r   fr_aras           r   test_lookupr      su   A	dAd############6777777'++F+;;D9/66u====== $$T$22FY(//555555##E#22D9'..v666666!!w!//EI%,,V444444#''X'66FY+228<<<<<<	{	#	# 4 4""?3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	{	#	# * *""5)))* * * * * * * * * * * * * * *	{	#	# / /.../ / / / / / / / / / / / / / / / / /s6   8 I$$I(+I( J44J8;J8!LL
L
c                      t           j        } |                     d          }|j        dk    sJ |j        |                     |j                  u sJ d S )NzCV-BVrc   zCV-B)r   rf   r5   ri   rh   )ssds     r   test_subdivision_parentr   	  sY    A	
G		B>V####92>22222222r   c                  N    t           j        } |                     d          J d S )NzUS-ZZrc   )r   rf   r5   r   s    r   -test_subdivision_missing_code_raises_keyerrorr     s*    A55g5&&&&&r   c                      t           j        } t          |                     d                    dk    sJ t          |                     d                    dk    sJ |                     d          J d S )NrA   rs   ru   JEr   FOOBAR)r   rf   r   r5   r   s    r   test_subdivision_empty_listr     sx    Aquu$u''((B....quu$u''((A----55h5''/////r   c                     	 t          j        d           n)# t           j        $ r t          j        d           Y nw xY 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PackageNotFoundErrorrR   skipr   __version__r   r
   r   r   test_has_version_attributer     s    M(55553 M M MKLLLLLM E))))y$%%****)'''''''s    #==c                  R    t          t          j        t          j                  sJ d S r   )r   r   r   	Languagesr
   r   r   test_is_instance_of_languager   &  s$    i)9+>???????r   c                 n    t           j                            d          }|j        j        }|dk    sJ d S )Nr)   r   Country)r   r   r5   	__class____name__)r   united_states
class_names      r   test_is_instance_of_countryr   *  s=    '++D+99M(1J""""""r   c                  R    t          t          j        t          j                  sJ d S r   )r   r   rf   Subdivisionsr
   r   r   test_is_instance_of_subdivisionr   0  s$    i,i.DEEEEEEEr   c                  R    t          t          j        t          j                  sJ d S r   )r   r   r~   Scriptsr
   r   r   test_is_instance_of_scriptr   4  s$    i'):;;;;;;;r   c                  R    t          t          j        t          j                  sJ d S r   )r   r   r   
Currenciesr
   r   r   test_is_instance_of_currencyr   8  s$    i*I,@AAAAAAAr   c                    t           j                            d          J t           j                            dddd           t           j                            d          }t	          |t           j        j                  sJ d S )NXKr   XXKKosovo926)r   rF   rH   rG   )r   r   r5   	add_entryr   
data_class)r   rj   s     r   test_add_entryr   <  s    ""4"00888!!e(E "    !%%d%33Ggy2=>>>>>>>r   c                     t           j                            d          J t           j                            d           t           j                            d          J d S r]   )r   r   r5   remove_entryr   s    r   test_remove_entryr   G  sb    ""4"00<<<$$T$222""4"0088888r   c                      t          j        t          d          5  t          j                            d           d d d            d S # 1 swxY w Y   d S )Nz	not foundrO   zNot A Real Countryr{   )rR   rS   KeyErrorr   r   r   r
   r   r   test_remove_non_existent_entryr   O  s    	x{	3	3	3 D D((.B(CCCD D D D D D D D D D D D D D D D D Ds   !A

AAc                 X   	 dd l n# t          $ r	 ddlm Y nw xY wfd} |dd          }t	          j        t          j                            |d                    } d}t          j
        t                    5  |                     |           d d d            d S # 1 swxY w Y   d S )Nr   )	resourcesc                 N    t                              |           |z            S r   )strfiles)package_or_requirementresource_nameimportlib_resourcess     r   resource_filenamez7test_no_results_lookup_error.<locals>.resource_filenameZ  s,    %%&<==M
 
 	
r   r   	databasesziso3166-1.jsonznonexistent query)r  ModuleNotFoundError	importlibr   r   ExistingCountriesospathjoinrR   rS   r   r4   )r   r  DATABASE_DIRqueryr  s       @r   test_no_results_lookup_errorr  T  s,   ?""""" ? ? ?>>>>>>>>?
 
 
 
 

 %$[+>>L+
\#344 I  E	{	#	# & &u%%%& & & & & & & & & & & & & & & & & &s    <BB#&B#c                      t           j                            d          } t          |           dk    sJ | d         j        dk    sJ d S NAlabamar   r   r   rf   r4   r   rH   r7   s    r   #test_subdivision_fuzzy_search_matchr  i  sL    $11)<<Gw<<11:?i''''''r   c                      t           j                            d          } t          |           dk    sJ | d         j        dk    sJ d S NMassachusettr   r   Massachusettsr  r  s    r   +test_subdivision_fuzzy_search_partial_matchr  o  sL    $11.AAGw<<11:?o------r   c                      t           j                            d          } t          |           dk    sJ | d         j        dk    sJ d S r  )r   rf   rP   r   rH   r  s    r   test_subdivision_matchr  u  sL    $**955Gw<<11:?i''''''r   c                      t           j                            d          } t          |           dk    sJ | d         j        dk    sJ d S r  )r   rf   partial_matchr   rH   r  s    r   test_subdivision_partial_matchr!  {  sL    $22>BBGw<<11:?o------r   c                      t           j                            d          } t          j        t
                    5  | j         d d d            d S # 1 swxY w Y   d S )NEnglishr{   )r   r   r5   rR   rS   rT   rI   )englishs    r    test_non_country_attribute_errorr%    s    !%%9%55G	~	&	&                   ra   c                     t           j                            d          }t          j        t
                    5  |j         d d d            d S # 1 swxY w Y   d S )Nr+   r   )r   r   r5   rR   rS   rT   maple_syrup)r   canadas     r   test_country_attribute_errorr)    s     $$T$22F	~	&	&                   ra   c                      t          j        d          dk    sJ t          j        d          dk    sJ t          j        d          dk    sJ t          j        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   test_with_accentsr0    sx    #G,,6666#J//8;;;;#H--8888#L11[@@@@@@r   c                  n    t          j        d          dk    sJ t          j        d          dk    sJ d S )Napplebananar.  r
   r   r   test_without_accentsr4    s@    #G,,7777#H--999999r   c                  :    t          j        d          dk    sJ d S )N r.  r
   r   r   test_empty_stringr7    s$    #B''2------r   c                  :    t          j        d          dk    sJ d S )Nz
!@#$%^&*()r.  r
   r   r   test_special_charactersr9    s$    #L11\AAAAAAr   c                  n    t          j        d          dk    sJ t          j        d          dk    sJ d S )Nu   你好u   こんにちはr.  r
   r   r   test_unicode_charactersr;    sB    #H--9999 !2337HHHHHHHr   c                      t          j        t                    5  t          j                            d           d d d            d S # 1 swxY w Y   d S )NNon Existent Subdivision)rR   rS   r   r   rf   r4   r
   r   r   6test_subdivision_search_fuzzy_non_existent_subdivisionr>    s    	{	#	# H H++,FGGGH H H H H H H H H H H H H H H H H Hs    AAAc                  n    t           j                            d          } t          |           dk    sJ d S Nr=  r   )r   rf   r   r   results    r   "test_subdivision_partial_match_nonrC    s6    #112LMMFv;;!r   c                  n    t           j                            d          } t          |           dk    sJ d S r@  )r   rf   rP   r   rA  s    r   test_subdivision_match_nonrE    s6    #))*DEEFv;;!r   c                      t          dt          j                  5  t          j        d          } | dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzimportlib.metadata.version)side_effectnon_existent_packager   )r   r   r   r   get_versionrA  s    r   'test_get_version_with_package_not_foundrJ    s    	$'<
 
 
  
 &'=>>                  s   AAAc                  \    t           j        } d | D             }t          |          }|sJ d S )Nc                 .    g | ]}t          |d           S r{   )hasattr).0subdivisions     r   
<listcomp>z=test_all_subdivisions_have_name_attribute.<locals>.<listcomp>  s/       )4V$$  r   )r   rf   all)rf   has_name_attrall_have_name_attrs      r   )test_all_subdivisions_have_name_attributerT    sJ    )L 8D  M ]++r   c                  B    d t           j        D             } | g k    sJ d S )Nc                 F    g | ]}|j         	|j        |j        |j         fS r
   )ri   rh   rd   )rN  is     r   rP  z:test_subdivisions_with_missing_parents.<locals>.<listcomp>  sE       = "#	
  r   )r   rf   rA  s    r   &test_subdivisions_with_missing_parentsrX    s6     '  F
 R<<<<<<r   )Ar   os.pathr  r   r
  r   r   unittest.mockr   rR   r   pycountry.dbfixturer   r   r8   r?   rK   rV   r[   r`   rl   rq   rw   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  r4  r7  r9  r;  r>  rC  rE  rJ  rT  rX  r
   r   r   <module>r]     s     				 5 5 5 5 5 5                ! ! !G G G
&? &? &?RJ J JB B B  , , ,  
B 
B 
B8 8 8D D D
" " "+ + +  $) ) )6 6 60 0 0	 	 	
  
  
 ! ! !: : :/ / /83 3 3' ' '
0 0 0( ( (@ @ @# # #F F F< < <B B B? ? ?9 9 9D D D
& & &*( ( (. . .( ( (. . .    A A A: : :
. . .B B B  H H H
  
  

 
 
      r   