
    :ii;                        S SK r S SKrS SKrS SKJr  S SKJr  S SK	r	S SK
r
S SKr
\	R                  S 5       rS rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S  r)S! r*S" r+S# r,S$ r-S% r.S& r/S' r0S( r1S) r2S* r3S+ r4S, r5S- r6S. r7S/ r8S0 r9S1 r:S2 r;S3 r<S4 r=S5 r>S6 r?S7 r@g)8    N)metadata)patchc               #      #    [         R                  R                  5         [         R                  v   [         R                  R                  5         g 7fN)	pycountry	countries_clear     V/home/james-whalen/.local/lib/python3.13/site-packages/pycountry/tests/test_general.pyr   r      s5      


 s   AAc                     [        [        R                  5      S:X  d   e[        [	        [        R                  5      S   [        R
                  R                  5      (       d   eg )N   r   )lenr   r   
isinstancelistdbDatar   s    r   test_country_listr      sH    y""#s***d9../2ILL4E4EFFFFr   c                    [         R                  R                  S5      n[        U5      S:X  d   eUS   [         R                  R	                  SS9:X  d   e[         R                  R                  S5      n[        U5      S:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  S	S9:X  d   e[         R                  R                  S
5      n[        U5      S:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   e[         R                  R                  S5      nUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   eUS   [         R                  R	                  SS9:X  d   e[         R                  R                  S5      n[        U5      S:X  d   eUS   [         R                  R	                  SS9:X  d   eg ) 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                     [         R                  R                  S5      n[        U5      S:X  d   eUS   [         R                  R	                  SS9:X  d   eg )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                     [         R                  R                  SS9nUR                  S:X  d   eUR                  S:X  d   eUR
                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg )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                    [         R                  R                  SS9nUR                  S:X  d   eUR                  S:X  d   e[
        R                  " [        SS9   UR                    S S S 5        [
        R                  " [        SS9   UR                    S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)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
B>c                     [         R                  R                  SS9nUR                  S:X  d   eUR                  S:X  d   eUR
                  S:X  d   eUR                  S:X  d   eg )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                     [         R                  R                  SS9n[        R                  " [
        5         UR                  nS S S 5        g ! , (       d  f       g = f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                    [        [        R                  5      S:X  d   e[        [	        [        R                  5      S   [        R
                  R                  5      (       d   e[        R                  R                  SS9nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  b   eUR                  b   eUR                  [        R                  R                  SS9L d   eg )	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I""&&G&4E::   ::))))::<<$$$==I//33D3AAAAr   c                  ^   [         R                  R                  SS9n U R                  S:X  d   eU R                  S:X  d   eU R
                  S:X  d   eU R                  S:X  d   eU R                  [         R                  R                  SS9L d   eU R                  R                  S:X  d   eg )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                      [        [        R                  R                  SS95      S:X  d   e[        [        R                  R                  SS95      S:X  d   eg )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                  r   [        [        R                  5      S:X  d   e[        [	        [        R                  5      S   [        R
                  R                  5      (       d   e[        R                  R                  SS9n U R                  S:X  d   eU R                  S:X  d   eU R                  S:X  d   eg )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D!!w!/E==F"""::   ==E!!!r   c                  r   [        [        R                  5      S:X  d   e[        [	        [        R                  5      S   [        R
                  R                  5      (       d   e[        R                  R                  SS9n U R                  S:X  d   eU R                  S:X  d   eU R                  S:X  d   eg )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G))--e-<N!!U***"2222!!U***r   c                  @   [        [        R                  5      S:X  d   e[        [	        [        R                  5      S   [        R
                  R                  5      (       d   e[        R                  R                  SS9n U R                  S:X  d   eU R                  S:X  d   eU R                  S:X  d   e[        R                  R                  SS9nUR                  S:X  d   eUR                  S	:X  d   e[        R                  R                  S
5      nX!:X  d   eg )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F##'''5I$$$%%%>>[(((!!%%d%3G<<9$$$(*** ""))(3Hr   c                  N   [        [        R                  5      S:X  d   e[        [	        [        R                  5      S   [        R
                  R                  5      (       d   e[        R                  R                  SS9n U R                  S:X  d   eU R                  S:X  d   eg )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N##'''6I%%%>>[(((r   c                  |    [         R                  " S[        R                  S/S9n U R                  S5      S:X  d   eg )Nz	iso3166-1de)r   rD   Deutschland)gettexttranslationr   LOCALES_DIR)germans    r   test_localesr      s:      Y**tfF >>)$555r   c                  $   [         R                  R                  SS9n [        U [         R                  R
                  5      (       d   eU R                  S:X  d   eU R                  S:X  d   eU R                  S:X  d   eU R                  S:X  d   eg )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           	          [         R                  " S[        [        R                  R                  SS95      5      (       d   eg )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                     [         R                  R                  SS9nSSSSSUR                  S.n[	        U5      U:X  d   eg )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                 r    [         R                  R                  SS9nS H  nU[        U5      ;   a  M   e   g )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                 R   [         R                  n[        R                  " [        5         UR                  SSS9  S S S 5        UR                  SS9UR                  SS9:X  d   eUR                  SS9b   e[        5       nUR                  SUS9UL d   eg ! , (       d  f       Nb= f)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                    [         R                  nUR                  SS9nX!R                  SS9:X  d   eX!R                  S5      :X  d   eX!R                  S5      :X  d   eX!R                  S5      :X  d   eX!R                  S5      :X  d   eX!R                  S5      :X  d   e[         R                  R                  SS	9nU[         R                  R                  S
5      :X  d   e[         R
                  R                  SS9nU[         R
                  R                  S5      :X  d   e[         R                  R                  SS9nU[         R                  R                  S5      :X  d   e[         R                  R                  SS9nU[         R                  R                  S5      :X  d   e[         R                  R                  SS9nU[         R                  R                  S5      :X  d   e[        R                  " [        5         [         R                  R                  S5        S S S 5        [        R                  " [        5         [         R                  R                  S5        S S S 5        [        R                  " [        5         [         R                  R                  SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N`= f! , (       d  f       g = f)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      s?   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$    J1 K
K1
J?
K
K!c                      [         R                  n U R                  SS9nUR                  S:X  d   eUR                  U R                  UR                  S9L d   eg )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                  H    [         R                  n U R                  SS9b   eg )NzUS-ZZrc   )r   rf   r5   r   s    r   -test_subdivision_missing_code_raises_keyerrorr     s$    A55g5&&&r   c                      [         R                  n [        U R                  SS95      S:X  d   e[        U R                  SS95      S:X  d   eU R                  SS9b   eg )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                  (    [         R                  " S5        [
        R                  S:w  d   e[        [
        R                  5      S:  d   eS[
        R                  ;   d   eg ! [         R                   a    [        R                  " S5         Nxf = f)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                  b    [        [        R                  [        R                  5      (       d   eg r   )r   r   r   	Languagesr
   r   r   test_is_instance_of_languager   &  s!    i))9+>+>????r   c                 z    [         R                  R                  SS9nUR                  R                  nUS:X  d   eg )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                  b    [        [        R                  [        R                  5      (       d   eg r   )r   r   rf   Subdivisionsr
   r   r   test_is_instance_of_subdivisionr   0  s!    i,,i.D.DEEEEr   c                  b    [        [        R                  [        R                  5      (       d   eg r   )r   r   r~   Scriptsr
   r   r   test_is_instance_of_scriptr   4  s!    i''):):;;;;r   c                  b    [        [        R                  [        R                  5      (       d   eg r   )r   r   r   
Currenciesr
   r   r   test_is_instance_of_currencyr   8  s!    i**I,@,@AAAAr   c                    [         R                  R                  SS9b   e[         R                  R                  SSSSS9  [         R                  R                  SS9n[	        U[         R                  R
                  5      (       d   eg )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                     [         R                  R                  SS9c   e[         R                  R                  SS9  [         R                  R                  SS9b   eg r]   )r   r   r5   remove_entryr   s    r   test_remove_entryr   G  sY    ""4"0<<<$$T$2""4"0888r   c                      [         R                  " [        SS9   [        R                  R                  SS9  S S S 5        g ! , (       d  f       g = f)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                 P  ^  SS K mU4S jnU" SS5      n[        R
                  " [        R                  R                  US5      5      n Sn[        R                  " [        5         U R                  U5        S S S 5        g ! [         a	    SSKJm   Nf = f! , (       d  f       g = f)Nr   )	resourcesc                 >   > [        TR                  U 5      U-  5      $ r   )strfiles)package_or_requirementresource_nameimportlib_resourcess     r   resource_filename7test_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   B &BBB
B%c                      [         R                  R                  S5      n [        U 5      S:X  d   eU S   R                  S:X  d   eg 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                      [         R                  R                  S5      n [        U 5      S:X  d   eU S   R                  S:X  d   eg NMassachusettr   r   Massachusettsr  r  s    r   +test_subdivision_fuzzy_search_partial_matchr  o  s@    $$11.AGw<11:??o---r   c                      [         R                  R                  S5      n [        U 5      S:X  d   eU S   R                  S:X  d   eg r  )r   rf   rP   r   rH   r  s    r   test_subdivision_matchr  u  s@    $$**95Gw<11:??i'''r   c                      [         R                  R                  S5      n [        U 5      S:X  d   eU S   R                  S:X  d   eg r  )r   rf   partial_matchr   rH   r  s    r   test_subdivision_partial_matchr"  {  s@    $$22>BGw<11:??o---r   c                      [         R                  R                  SS9n [        R                  " [
        5         U R                    S S S 5        g ! , (       d  f       g = f)NEnglishr{   )r   r   r5   rR   rS   rT   rI   )englishs    r    test_non_country_attribute_errorr&    s<    !!%%9%5G	~	& 
'	&	&ra   c                     [         R                  R                  SS9n[        R                  " [
        5         UR                    S S S 5        g ! , (       d  f       g = f)Nr+   r   )r   r   r5   rR   rS   rT   maple_syrup)r   canadas     r   test_country_attribute_errorr*    s<      $$T$2F	~	& 
'	&	&ra   c                      [         R                  " S5      S:X  d   e[         R                  " S5      S:X  d   e[         R                  " S5      S:X  d   e[         R                  " S5      S:X  d   eg )	Nu   CaféCafeu   résuméresumeu   naïvenaiveu
   São Pauloz	Sao Paulor   remove_accentsr
   r   r   test_with_accentsr1    sf    ##G,666##J/8;;;##H-888##L1[@@@r   c                  t    [         R                  " S5      S:X  d   e[         R                  " S5      S:X  d   eg )Napplebananar/  r
   r   r   test_without_accentsr5    s4    ##G,777##H-999r   c                  <    [         R                  " S5      S:X  d   eg )N r/  r
   r   r   test_empty_stringr8    s    ##B'2---r   c                  <    [         R                  " S5      S:X  d   eg )Nz
!@#$%^&*()r/  r
   r   r   test_special_charactersr:    s    ##L1\AAAr   c                  t    [         R                  " S5      S:X  d   e[         R                  " S5      S:X  d   eg )Nu   你好u   こんにちはr/  r
   r   r   test_unicode_charactersr<    s8    ##H-999  !237HHHr   c                      [         R                  " [        5         [        R                  R                  S5        S S S 5        g ! , (       d  f       g = f)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                  d    [         R                  R                  S5      n [        U 5      S:X  d   eg Nr>  r   )r   rf   r!  r   results    r   "test_subdivision_partial_match_nonrD    s+    ##112LMFv;!r   c                  d    [         R                  R                  S5      n [        U 5      S:X  d   eg rA  )r   rf   rP   r   rB  s    r   test_subdivision_match_nonrF    s+    ##))*DEFv;!r   c                      [        S[        R                  S9   [        R                  " S5      n U S:X  d   e S S S 5        g ! , (       d  f       g = f)Nzimportlib.metadata.version)side_effectnon_existent_packager   )r   r   r   r   get_versionrB  s    r   'test_get_version_with_package_not_foundrK    sG    	$'<<

 &&'=> 
 
 
s   A
Ac                      [         R                  n U  Vs/ s H  n[        US5      PM     nn[        U5      nU(       d   eg s  snf )NrH   )r   rf   hasattrall)rf   subdivisionhas_name_attrall_have_name_attrs       r   )test_all_subdivisions_have_name_attributerR    sK    ))L8D8DV$   ]+s   Ac                      [         R                   V s/ s HA  n U R                  (       d  M  U R                  (       a  M)  U R                  U R                  4PMC     nn U/ :X  d   eg s  sn f r   )r   rf   ri   rh   rd   )irC  s     r   &test_subdivisions_with_missing_parentsrU    s_     '''A== 	 !" 	 '  
 R<<s   A&A&A&)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*  r1  r5  r8  r:  r<  r?  rD  rF  rK  rR  rU  r
   r   r   <module>rZ     sA     	 5     ! !G
&?RJB,
B8D
"+$)60	
 !:/83'
0(@#F<B?9D
&*(.(.A:
.BH



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