
    -[gi;                        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@y)8    N)metadata)patchc               #      K   t         j                  j                          t         j                   t         j                  j                          y wN)	pycountry	countries_clear     W/var/www/html/bid-api/venv/lib/python3.12/site-packages/pycountry/tests/test_general.pyr   r      s6      


 s   AAc                     t        t        j                        dk(  sJ t        t	        t        j                        d   t        j
                  j                        sJ y )N   r   )lenr   r   
isinstancelistdbDatar   s    r   test_country_listr      sE    y""#s***d9../2ILL4E4EFFFr   c                 
   t         j                  j                  d      }t        |      dk(  sJ |d   t         j                  j	                  d      k(  sJ t         j                  j                  d      }t        |      dk(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d	      k(  sJ t         j                  j                  d
      }t        |      dk(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ t         j                  j                  d      }|d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ |d   t         j                  j	                  d      k(  sJ t         j                  j                  d      }t        |      dk(  sJ |d   t         j                  j	                  d      k(  sJ y ) 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      sG   !!..y9Gw<11:,,000>>>> !!..~>Gw<11:,,000>>>>1:,,000>>>>
 !!..v6Gw<11:,,000>>>>1:,,000>>>>1:,,000>>>> !!..u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JGw<11:,,000>>>>r   c                     t         j                  j                  d      }t        |      dk(  sJ |d   t         j                  j	                  d      k(  sJ y )Nburmar   r   BUMMalpha_4)r   historic_countriesr4   r   r5   r6   s     r   "test_historic_country_fuzzy_searchr?   B   sP    **77@Gw<11:5599&9IIIIr   c                     t         j                  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 y )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   sx    !!%%d%3G??d"""??e###??e###<<9$$$  $AAAAr   c                 x   t         j                  j                  d      }|j                  dk(  sJ |j                  dk(  sJ t        j                  t        d      5  |j                   d d d        t        j                  t        d      5  |j                   d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)NAWr   ArubarI   matchcommon_name)
r   r   r5   r   rH   pytestraisesAttributeErrorrI   rQ   )r   arubas     r   test_missing_common_officialrV   Q   s    ##D#1E==D   ::   	~_	= 
>	~]	; 
<	; 
>	=	;	;s   B$B0$B-0B9c                     t         j                  j                  d      }|j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ y )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[   [   sh    !!%%d%3G??d"""<<:%%%  $DDDD)+++r   c                     t         j                  j                  d      }t        j                  t
              5  |j                  }d d d        y # 1 sw Y   y xY wNrA   r   )r   r   r5   rR   rS   rT   foo)r   rJ   _s      r   test_country_missing_attributer`   c   s<    !!%%d%3G	~	&KK 
'	&	&   AAc                    t        t        j                        dk(  sJ t        t	        t        j                        d   t        j
                  j                        sJ t        j                  j                  d      }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  J |j                  J |j                  t        j                  j                  d      u sJ y )	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1215y||7H7HIII""&&G&4E::   ::))))::<<$$$==I//33D3AAAAr   c                  ^   t         j                  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                  j                  d      u sJ | j                  j                  dk(  sJ y )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&4E::   ::::2222(((<<9115585DDDD<< 7777r   c                      t        t        j                  j                  d            dk(  sJ t        t        j                  j                  d            dk(  sJ y )NrA   country_code   r)   9   )r   r   rf   r5   r
   r   r   "test_query_subdivisions_of_countryrw      sP    y%%))t)<=CCCy%%))t)<=CCCr   c                  f   t        t        j                        dk(  sJ t        t	        t        j                        d   t        j
                  j                        sJ t        j                  j                  d      } | j                  dk(  sJ | j                  dk(  sJ | j                  dk(  sJ y )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),,2C2CDDD!!w!/E==F"""::   ==E!!!r   c                  f   t        t        j                        dk(  sJ t        t	        t        j                        d   t        j
                  j                        sJ t        j                  j                  d      } | j                  dk(  sJ | j                  dk(  sJ | j                  dk(  sJ y )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3Y\\5F5FGGG))--e-<N!!U***"2222!!U***r   c                  6   t        t        j                        dk(  sJ t        t	        t        j                        d   t        j
                  j                        sJ t        j                  j                  d      } | j                  dk(  sJ | j                  dk(  sJ | j                  dk(  sJ t        j                  j                  d      }|j                  dk(  sJ |j                  d	k(  sJ t        j                  j                  d
      }||k(  sJ y )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../2ILL4E4EFFF##'''5I$$$%%%>>[(((!!%%d%3G<<9$$$(*** ""))(3Hwr   c                  D   t        t        j                        dk(  sJ t        t	        t        j                        d   t        j
                  j                        sJ t        j                  j                  d      } | j                  dk(  sJ | j                  dk(  sJ y )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d9667:ILL<M<MNNN##'''6I%%%>>[(((r   c                  ~    t        j                  dt        j                  dg      } | j                  d      dk(  sJ y )Nz	iso3166-1de)r   rD   Deutschland)gettexttranslationr   LOCALES_DIR)germans    r   test_localesr      s:      Y**tfF >>)$555r   c                     t         j                  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 y )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dILL--...<<6!!!<<5   99CCCC<///r   c                     t        j                  dt        t        j                  j                  d                  sJ y )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      s;    88	; 	Y  $$T$23  r   c                     t         j                  j                  d      }ddddd|j                  d}t	        |      |k(  sJ y )NrA   r   rB   rD   rC   rE   )r   rF   rH   rG   rI   flag)r   r   r5   r   dict)r   rj   exps      r   	test_dictr      sL    !!%%d%3G6C =Cr   c                 p    t         j                  j                  d      }dD ]  }|t        |      v rJ  y )NrA   r   )r   rF   rH   rG   rI   )r   r   r5   dir)r   rJ   ns      r   test_dirr      s8    !!%%d%3GECL    Fr   c                 ^   t         j                  }t        j                  t              5  |j                  dd       d d d        |j                  d      |j                  d      k(  sJ |j                  d      J t               }|j                  d|      |u sJ y # 1 sw Y   fxY w)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555'''XF555/6999 
"	!s   B##B,c                    t         j                  }|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 ||j                  d      k(  sJ t         j                  j                  d	      }|t         j                  j                  d
      k(  sJ t         j
                  j                  d      }|t         j
                  j                  d      k(  sJ t         j                  j                  d      }|t         j                  j                  d      k(  sJ t         j                  j                  d      }|t         j                  j                  d      k(  sJ t         j                  j                  d      }|t         j                  j                  d      k(  sJ t        j                  t              5  t         j                  j                  d       d d d        t        j                  t              5  t         j                  j                  d       d d d        t        j                  t              5  t         j                  j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)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      sK   A	dAd########67777''++F+;D9//66u====  $$T$2FY((//5555##E#2D9''..v6666!!w!/EI%%,,V4444##''X'6FY++228<<<<	{	#""?3 
$	{	#""5) 
$	{	#. 
$	#	 
$	#	#	#	#	#s$    K K!KK
KK"c                      t         j                  } | j                  d      }|j                  dk(  sJ |j                  | j                  |j                        u sJ y )NzCV-BVrc   zCV-B)r   rf   r5   ri   rh   )ssds     r   test_subdivision_parentr   	  sP    A	
G	B>>V###992>>2222r   c                  L    t         j                  } | j                  d      J y )NzUS-ZZrc   )r   rf   r5   r   s    r   -test_subdivision_missing_code_raises_keyerrorr     s$    A55g5&&&r   c                      t         j                  } t        | j                  d            dk(  sJ t        | j                  d            dk(  sJ | j                  d      J y )NrA   rs   ru   JEr   FOOBAR)r   rf   r   r5   r   s    r   test_subdivision_empty_listr     s`    Aquu$u'(B...quu$u'(A---55h5'///r   c                     	 t        j                  d       t
        j                  dk7  sJ t        t
        j                        dk\  sJ dt
        j                  v sJ y # t         j                  $ r t        j                  d       Y rw xY w)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   E)))y$$%***)'''''	 33 MKLMs   A (B
	B
c                  X    t        t        j                  t        j                        sJ y r   )r   r   r   	Languagesr
   r   r   test_is_instance_of_languager   &  s    i))9+>+>???r   c                 ~    t         j                  j                  d      }|j                  j                  }|dk(  sJ y )Nr)   r   Country)r   r   r5   	__class____name__)r   united_states
class_names      r   test_is_instance_of_countryr   *  s:    ''++D+9M((11J"""r   c                  X    t        t        j                  t        j                        sJ y r   )r   r   rf   Subdivisionsr
   r   r   test_is_instance_of_subdivisionr   0  s    i,,i.D.DEEEr   c                  X    t        t        j                  t        j                        sJ y r   )r   r   r~   Scriptsr
   r   r   test_is_instance_of_scriptr   4  s    i''):):;;;r   c                  X    t        t        j                  t        j                        sJ y r   )r   r   r   
Currenciesr
   r   r   test_is_instance_of_currencyr   8  s    i**I,@,@AAAr   c                    t         j                  j                  d      J t         j                  j                  dddd       t         j                  j                  d      }t	        |t         j                  j
                        sJ y )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888!!e(E "  !!%%d%3Ggy22==>>>r   c                     t         j                  j                  d      J t         j                  j                  d       t         j                  j                  d      J y r]   )r   r   r5   remove_entryr   s    r   test_remove_entryr   G  sY    ""4"0<<<$$T$2""4"0888r   c                      t        j                  t        d      5  t        j                  j                  d       d d d        y # 1 sw Y   y xY w)Nz	not foundrO   zNot A Real Countryr{   )rR   rS   KeyErrorr   r   r   r
   r   r   test_remove_non_existent_entryr   O  s4    	x{	3((.B(C 
4	3	3s   !AAc                 >   	 dd l fd} |dd      }t	        j
                  t        j                  j                  |d            } d}t        j                  t              5  | j                  |       d d d        y # t        $ r	 ddlm Y w xY w# 1 sw Y   y xY w)Nr   )	resourcesc                 >    t        j                  |       |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I  E	{	#u% 
$	#  ?>? 
$	#s   A> #B>BBBc                      t         j                  j                  d      } t        |       dk(  sJ | d   j                  dk(  sJ y NAlabamar   r   r   rf   r4   r   rH   r7   s    r   #test_subdivision_fuzzy_search_matchr  i  s@    $$11)<Gw<11:??i'''r   c                      t         j                  j                  d      } t        |       dk(  sJ | d   j                  dk(  sJ y NMassachusettr   r   Massachusettsr  r  s    r   +test_subdivision_fuzzy_search_partial_matchr  o  s@    $$11.AGw<11:??o---r   c                      t         j                  j                  d      } t        |       dk(  sJ | d   j                  dk(  sJ y r  )r   rf   rP   r   rH   r  s    r   test_subdivision_matchr  u  s@    $$**95Gw<11:??i'''r   c                      t         j                  j                  d      } t        |       dk(  sJ | d   j                  dk(  sJ y r  )r   rf   partial_matchr   rH   r  s    r   test_subdivision_partial_matchr!  {  s@    $$22>BGw<11:??o---r   c                      t         j                  j                  d      } t        j                  t
              5  | j                   d d d        y # 1 sw Y   y xY w)NEnglishr{   )r   r   r5   rR   rS   rT   rI   )englishs    r    test_non_country_attribute_errorr%    s<    !!%%9%5G	~	& 
'	&	&ra   c                     t         j                  j                  d      }t        j                  t
              5  |j                   d d d        y # 1 sw Y   y xY w)Nr+   r   )r   r   r5   rR   rS   rT   maple_syrup)r   canadas     r   test_country_attribute_errorr)    s<      $$T$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 y )	Nu   CaféCafeu   résuméresumeu   naïvenaiveu
   São Pauloz	Sao Paulor   remove_accentsr
   r   r   test_with_accentsr0    sf    ##G,666##J/8;;;##H-888##L1[@@@r   c                  l    t        j                  d      dk(  sJ t        j                  d      dk(  sJ y )Napplebananar.  r
   r   r   test_without_accentsr4    s4    ##G,777##H-999r   c                  8    t        j                  d      dk(  sJ y )N r.  r
   r   r   test_empty_stringr7    s    ##B'2---r   c                  8    t        j                  d      dk(  sJ y )Nz
!@#$%^&*()r.  r
   r   r   test_special_charactersr9    s    ##L1\AAAr   c                  l    t        j                  d      dk(  sJ t        j                  d      dk(  sJ y )Nu   你好u   こんにちはr.  r
   r   r   test_unicode_charactersr;    s8    ##H-999  !237HHHr   c                      t        j                  t              5  t        j                  j                  d       d d d        y # 1 sw Y   y xY w)NNon Existent Subdivision)rR   rS   r   r   rf   r4   r
   r   r   6test_subdivision_search_fuzzy_non_existent_subdivisionr>    s/    	{	#++,FG 
$	#	#s    AAc                  b    t         j                  j                  d      } t        |       dk(  sJ y Nr=  r   )r   rf   r   r   results    r   "test_subdivision_partial_match_nonrC    s+    ##112LMFv;!r   c                  b    t         j                  j                  d      } t        |       dk(  sJ y r@  )r   rf   rP   r   rA  s    r   test_subdivision_match_nonrE    s+    ##))*DEFv;!r   c                      t        dt        j                        5  t        j                  d      } | dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzimportlib.metadata.version)side_effectnon_existent_packager   )r   r   r   r   get_versionrA  s    r   'test_get_version_with_package_not_foundrJ    sG    	$'<<

 &&'=> 
 
 
s   AAc                  ~    t         j                  } | D cg c]  }t        |d       }}t        |      }|sJ y c c}w )NrH   )r   rf   hasattrall)rf   subdivisionhas_name_attrall_have_name_attrs       r   )test_all_subdivisions_have_name_attributerQ    sK    ))L8D8DV$   ]+s   :c                      t         j                  D  cg c]2  } | j                  r$| j                  s| j                  | j                  f4 }} |g k(  sJ y c c} w r   )r   rf   ri   rh   rd   )irB  s     r   &test_subdivisions_with_missing_parentsrT    sW     '''A== 
'  
 R<<s   7A)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  rQ  rT  r
   r   r   <module>rY     sA     	 5     ! !G
&?RJB,
B8D
"+$)60	
 !:/83'
0(@#F<B?9D
&*(.(.A:
.BH



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