o
    0 ii;                     @   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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@dS )l    N)metadata)patchc                   c   s"    t j  t jV  t j  d S N)	pycountry	countries_clear r   r   h/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/pycountry/tests/test_general.pyr      s   
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 d S ) NZEngland   r   GBalpha_2zSint Maarten   NLZSXZCote   CIZFRZHNZNewZNCZNZZPG   US   CA   ZAU   ZBS   ZTW	   ZMHzunited states of america)r   r   search_fuzzyr   getr   resultsr   r   r	   test_country_fuzzy_search   s4    r&   c                 C   s:   t jd}t|dksJ |d t jjddksJ d S )NZburmar   r   ZBUMMalpha_4)r   historic_countriesr"   r   r#   r$   r   r   r	   "test_historic_country_fuzzy_searchB   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   r#   r   alpha_3numericnameofficial_name)r   germanyr   r   r	   test_germany_has_all_attributesH   s   r5   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 )NZAWr   ZArubar3   matchcommon_name)
r   r   r#   r   r2   pytestraisesAttributeErrorr3   r8   )r   arubar   r   r	   test_missing_common_officialQ   s   "r=   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 )NZVNr   zViet NamzSocialist Republic of Viet NamZVietnam)r   r   r#   r   r2   r3   r8   )r   vietnamr   r   r	   *test_missing_common_official_use_different[   s
   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   r#   r9   r:   r;   Zfoo)r   r4   _r   r   r	   test_country_missing_attributec      "rB   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-AnhaltZLandr+   r   )r   r   subdivisionsr   r   r   r   r#   rE   r2   typeparentparent_codecountryr   )r   Zde_str   r   r	   %test_subdivisions_directly_accessiblei   s   rK   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-01rD   ZAinzMetropolitan departmentFR-ARAu   Auvergne-Rhône-Alpes)r   rF   r#   rE   r2   rG   rI   rH   )Zfr_01r   r   r	   ,test_subdivisions_have_subdivision_as_parentv   s   rM   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+   Zcountry_code   r   9   )r   r   rF   r#   r   r   r   r	   "test_query_subdivisions_of_country   s   rQ   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r2   ZLatnZ215)r   r   scriptsr   r   r   r   r#   r(   r2   r1   )latinr   r   r	   test_scripts      rW   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   ZARSr0   zArgentine PesoZ032)r   r   
currenciesr   r   r   r   r#   r0   r2   r1   )Zargentine_pesor   r   r	   test_currencies   rX   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	AragoneseZbnZBengaliZBanglaZbAngLa)r   r   	languagesr   r   r   r   r#   r   r0   r2   r8   lookup)	aragoneseZbengaliZbengali2r   r   r	   test_languages   s   rc   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^   rZ   r_   )r   r   Zlanguage_familiesr   r   r   r   r`   r#   r0   r2   )rb   r   r   r	   test_language_families   s
   re   c                  C   s*   t jdtjdgd} |  ddksJ d S )Nz	iso3166-1de)r`   r.   ZDeutschland)gettexttranslationr   ZLOCALES_DIR)germanr   r   r	   test_locales   s   
rj   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 )NZSUNrZ   ZSUHHz)USSR, Union of Soviet Socialist Republicsz
1992-08-30)
r   r)   r#   r   r   r   r(   r0   r2   Zwithdrawal_date)Zussrr   r   r	   test_removed_countries   s   rk   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   )rer7   reprr   r   r#   r   r   r   r	   	test_repr   s   rn   c                 C   s6   t jjdd}ddddd|jd}t||ksJ d S )Nr+   r   r,   r.   r-   r/   )r   r0   r2   r1   r3   flag)r   r   r#   ro   dict)r   rJ   expr   r   r	   	test_dict   s   rr   c                 C   s,   t jjdd}dD ]
}|t|v sJ q	d S )Nr+   r   )r   r0   r2   r1   r3   )r   r   r#   dir)r   r4   nr   r   r	   test_dir   s   ru   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   r0   r   rZ   ZFoo)r   default)r   r   r9   r:   	TypeErrorr#   object)r   cZtracerr   r   r	   test_get   s   rz   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   rf   r,   r-   r4   r/   ZBQAQr'   ZatbZDeZEURrZ   eurorS   rT   ZlatnrL   rD   zfr-arazbogus countryi90  )r   r   r#   ra   r)   r`   r[   rU   rF   r9   r:   LookupError)r   ry   gZbqaqri   r{   rV   Z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-BVrD   zCV-B)r   rF   r#   rI   rH   )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-ZZrD   )r   rF   r#   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+   rN   rO   ZJEr   ZFOOBAR)r   rF   r   r#   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PackageNotFoundErrorr9   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`   Z	Languagesr   r   r   r	   test_is_instance_of_language&     r   c                 C   s&   t jjdd}|jj}|dksJ d S )Nr   r   ZCountry)r   r   r#   	__class____name__)r   united_states
class_namer   r   r	   test_is_instance_of_country*  s   r   c                   C   r   r   )r   r   rF   ZSubdivisionsr   r   r   r	   test_is_instance_of_subdivision0  r   r   c                   C   r   r   )r   r   rU   Scriptsr   r   r   r	   test_is_instance_of_script4  r   r   c                   C   r   r   )r   r   r[   Z
Currenciesr   r   r   r	   test_is_instance_of_currency8  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 )NZXKr   ZXXKZKosovoZ926)r   r0   r2   r1   )r   r   r#   	add_entryr   Z
data_class)r   rJ   r   r   r	   test_add_entry<  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 r@   )r   r   r#   remove_entryr   r   r   r	   test_remove_entryG  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 foundr6   zNot A Real CountryrT   )r9   r:   KeyErrorr   r   r   r   r   r   r	   test_remove_non_existent_entryO  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_filenameZ  s   z7test_no_results_lookup_error.<locals>.resource_filenamer   Z	databasesziso3166-1.jsonznonexistent query)r   ModuleNotFoundError	importlibr   r   ZExistingCountriesospathjoinr9   r:   r|   r"   )r   r   ZDATABASE_DIRqueryr   r   r	   test_no_results_lookup_errorT  s   
"r   c                  C   2   t jd} t| dksJ | d jdksJ d S NZAlabamar   r   r   rF   r"   r   r2   r%   r   r   r	   #test_subdivision_fuzzy_search_matchi     r   c                  C   2   t jd} t| dksJ | d jdksJ d S NZMassachusettr   r   ZMassachusettsr   r   r   r   r	   +test_subdivision_fuzzy_search_partial_matcho  r   r   c                  C   r   r   )r   rF   r7   r   r2   r   r   r   r	   test_subdivision_matchu  r   r   c                  C   r   r   )r   rF   partial_matchr   r2   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 )NZEnglishrT   )r   r`   r#   r9   r:   r;   r3   )englishr   r   r	    test_non_country_attribute_error  rC   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   r#   r9   r:   r;   Zmaple_syrup)r   canadar   r   r	   test_country_attribute_error  rC   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éZCafeu   résuméresumeu   naïveZnaiveu
   São Pauloz	Sao Paulor   Z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)r9   r:   r|   r   rF   r"   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   rF   r   r   resultr   r   r	   "test_subdivision_partial_match_non     r   c                  C   r   r   )r   rF   r7   r   r   r   r   r	   test_subdivision_match_non  r   r   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)Zside_effectZnon_existent_packager   )r   r   r   r   get_versionr   r   r   r	   'test_get_version_with_package_not_found  s   
"r   c                  C   s(   t j} dd | D }t|}|sJ d S )Nc                 S   s   g | ]}t |d qS rT   )hasattr).0Zsubdivisionr   r   r	   
<listcomp>  s    
z=test_all_subdivisions_have_name_attribute.<locals>.<listcomp>)r   rF   all)rF   Zhas_name_attrZ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   )rI   rH   rE   )r   ir   r   r	   r     s    
z:test_subdivisions_with_missing_parents.<locals>.<listcomp>)r   rF   r   r   r   r	   &test_subdivisions_with_missing_parents  s   r   )Arg   Zos.pathr   rl   r   r   r   Zunittest.mockr   r9   r   Zpycountry.dbZfixturer   r   r&   r*   r5   r=   r?   rB   rK   rM   rQ   rW   r\   rc   re   rj   rk   rn   rr   ru   rz   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	   <module>   sz    
)	



		


