o
    T۷i(                     @   s  U d Z ddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlZdededefd	d
ZdededB fddZed dZeed< ed dZeed< ed ZedB ed< dedefddZG dd dejjejj ZG dd deZG dd dejjZG dd dejjZG dd dejjZG d d! d!ejjZG d"d# d#ejjZG d$d% d%ejjZ eej!"ed&Z#eed'< e ej!"ed(Z$e ed)< eej!"ed*Z%eed+< eej!"ed,Z&eed-< eej!"ed.Z'eed/< eej!"ed0Z(eed1< eej!"ed2Z)eed3< dS )4	pycountry    N)metadata)	resources)castpackage_or_requirementresource_namereturnc                 C   s   t t| | S N)str_importlib_resourcesfiles)r   r    r   H/home/ubuntu/vllm_env/lib/python3.10/site-packages/pycountry/__init__.pyresource_filename   s   r   distribution_namec                 C   s$   zt | W S  t jy   Y dS w )Nzn/a)_importlib_metadataversionPackageNotFoundError)r   r   r   r   get_version   s
   r   localesLOCALES_DIR	databasesDATABASE_DIR__version__	input_strc                 C   s0   | }|   std| }ddd |D }|S )NNFKD c                 S   s   g | ]	}t |s|qS r   )unicodedata	combining.0cr   r   r   
<listcomp>%   s    z"remove_accents.<locals>.<listcomp>)isasciir   	normalizejoin)r   
output_str	nfkd_formr   r   r   remove_accents   s   r(   c                   @   s6   e Zd ZdZejjZdZde	de
ejj fddZdS )ExistingCountriesz4Provides access to an ISO 3166 database (Countries).z3166-1queryr   c           	         s  t |  }i  dddtdd f fdd}z
||d W n	 ty*   Y nw tjjt	|d}|D ]}||j
d	 q5D ]O}|jd
|jd|jdfD ];}|d urddd |D }|t | krr||d  nt | }||v r||tddd||  g  nqSq@tjjt	|d}|D ]!}|jd
}t | }||v r||j
tdd|| g q st|fddt  dd dD }tttjj |S )Ncountryzpycountry.db.Countrypointsr   c                    $     | jd  | j  |7  < d S Nr   )
setdefaultalpha_2)r+   r,   resultsr   r   
add_result7   s   z2ExistingCountries.search_fuzzy.<locals>.add_result2   )selfr*   1   nameofficial_namecommentr   c                 S   s   g | ]}|  r|qS r   )isupperr   r   r   r   r"   R   s    z2ExistingCountries.search_fuzzy.<locals>.<listcomp>(               c                       g | ]
} j |d  dqS )r   r0   getr    xr5   r   r   r"   n       c                 S      | d  | d fS Nr?   r   r   rE   r   r   r   <lambda>s       z0ExistingCountries.search_fuzzy.<locals>.<lambda>key)r(   striplowerintlookupLookupErrorr   Subdivisionsmatchsubdivisionsr+   _fieldsrC   r%   maxfindpartial_matchsorteditemsr   listdbCountry)	r5   r*   r3   match_subdivions	candidatevinitialspartial_match_subdivisionssorted_resultsr   r2   r5   r   search_fuzzy0   sZ   




zExistingCountries.search_fuzzyN)__name__
__module____qualname____doc__r   r^   r_   
data_classroot_keyr
   r]   rg   r   r   r   r   r)   *   s
    r)   c                   @   s   e Zd ZdZejjZdZdS )HistoricCountrieszcProvides access to an ISO 3166-3 database
    (Countries that have been removed from the standard).z3166-3N)	rh   ri   rj   rk   r   r^   r_   rl   rm   r   r   r   r   rn   x   s    rn   c                   @      e Zd ZdZdZdZdS )Scriptsz3Provides access to an ISO 15924 database (Scripts).Script15924Nrh   ri   rj   rk   rl   rm   r   r   r   r   rp          rp   c                   @   ro   )
Currenciesz5Provides access to an ISO 4217 database (Currencies).Currency4217Nrs   r   r   r   r   ru      rt   ru   c                   @   s    e Zd ZdZg dZdZdZdS )	Languagesz:Provides access to an ISO 639-1/2T/3 database (Languages).)statusscopetypeinverted_namecommon_nameLanguagez639-3N)rh   ri   rj   rk   no_indexrl   rm   r   r   r   r   rx      s
    rx   c                   @   ro   )LanguageFamilieszLProvides access to an ISO 639-5 database
    (Language Families and Groups).LanguageFamilyz639-5Nrs   r   r   r   r   r      s    r   c                       s4   e Zd Z fddZedd Zedd Z  ZS )SubdivisionHierarchyc                    s   d|v r|d |d< nd |d< t  jdi | | jdd | _| jd ur?| jd}|d | jkrA| j d| j | _d S d S d S )Nparentparent_code-r   r   )super__init__codesplitcountry_coder   )r5   kwparts	__class__r   r   r      s   
zSubdivisionHierarchy.__init__c                 C   s   t j| jdS )NrA   )	countriesrC   r   rF   r   r   r   r+      s   zSubdivisionHierarchy.countryc                 C   s   | j sd S tj| j dS )Nr   )r   rV   rC   rF   r   r   r   r      s   zSubdivisionHierarchy.parent)rh   ri   rj   r   propertyr+   r   __classcell__r   r   r   r   r      s    
r   c                       sl   e Zd ZeZg dZdgZdZdd Zdd Z	 fdd	Z
d
d Zdd Zdedeed   fddZ  ZS )rT   )r7   r   r   r{   r   z3166-2c                 C   s4   | j |i }|t|| t }|| d S r	   )indicesr/   getattrrP   setaddr5   objrN   indexdivsr   r   r   _special_index   s   zSubdivisions._special_indexc                 C   s2   | j |}|t|| t }|| d S r	   )r   rC   r   rP   r   discardr   r   r   r   _special_deindex   s   zSubdivisions._special_deindexc                    sJ   | dd }t jdi |}||u r#d|v r#tj|d dd ur#g S |S )Ndefaultr   rA   r   )r/   r   rC   r   )r5   r   r   rV   r   r   r   rC      s   zSubdivisions.getc                 C   sl   t |  }g }tD ]'}|j D ]}|d ur2t | }|dD ]}||kr1||  nq$qq|S )N;)r(   rO   rP   rV   rW   valuesr   append)r5   r*   matching_candidatesra   rb   wr   r   r   rU      s   

zSubdivisions.matchc                 C   sL   t |  }g }tD ]}|jd}t | }||v r#|| q|S )Nr7   )r(   rO   rP   rV   rW   rC   r   )r5   r*   r   ra   rb   r   r   r   rZ      s   
zSubdivisions.partial_matchr*   r   c              	      s   t |  }i  dddtdd f fdd}|}|D ]}||d q|}|D ] }|jd}t | }||v rM||td	d
|	| g q- sTt
|fddt  dd dD }|S )Nsubdivisionzpycountry.db.Subdivisionr,   r   c                    r-   r.   )r/   r   )r   r,   r1   r   r   r3      s   z-Subdivisions.search_fuzzy.<locals>.add_resultr4   r7   r?   r<   c                    r@   )r   r   rB   rD   rF   r   r   r"     rG   z-Subdivisions.search_fuzzy.<locals>.<listcomp>c                 S   rH   rI   r   rJ   r   r   r   rK     rL   z+Subdivisions.search_fuzzy.<locals>.<lambda>rM   )r(   rO   rP   rQ   rU   rZ   rW   rC   rX   rY   rS   r[   r\   )r5   r*   r3   match_subdivisionsra   rd   rb   re   r   rf   r   rg      s2   


zSubdivisions.search_fuzzy)rh   ri   rj   r   rl   r   special_indexrm   r   r   rC   rU   rZ   r
   r]   r{   rg   r   r   r   r   r   rT      s    "rT   ziso3166-1.jsonr   ziso3166-2.jsonrV   ziso3166-3.jsonhistoric_countriesziso4217.json
currenciesziso639-3.json	languagesziso639-5.jsonlanguage_familiesziso15924.jsonscripts)*rk   os.pathosr   	importlibr   r   r   r   typingr   pycountry.dbr   r
   r   r   r   __annotations__r   r   r(   r^   Databaser_   r)   rn   rp   ru   rx   r   Datar   rT   pathr%   r   rV   r   r   r   r   r   r   r   r   r   <module>   sH    N	b