o
    tBhQ)                     @   s:  U d Z ddlZddlZddlmZ ddlmZm	Z	m
Z
mZ ddlZzddlZW n ey6   ddlmZ Y nw dededefd	d
Zdede
e fddZed dZeed< ed dZeed< ed Ze
e ed< dedefddZG dd d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)DictListOptionalType)	resourcespackage_or_requirementresource_namereturnc                 C   s   t t| | S )N)strimportlib_resourcesfiles)r	   r
    r   i/var/www/html/riverr-enterprise-integrations-main/venv/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d   fddZdS )ExistingCountriesz4Provides access to an ISO 3166 database (Countries).z3166-1queryr   c                    sx  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 ]6}|jd
|jd|jdfD ]"}|d urut | }||v ru||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 }|S )Ncountryzpycountry.db.Countrypointsr   c                    $     | jd  | j  |7  < d S Nr   )
setdefaultalpha_2)r,   r-   resultsr   r   
add_result@   s   z2ExistingCountries.search_fuzzy.<locals>.add_result2   )selfr+   1   nameofficial_namecomment            c                       g | ]
} j |d  dqS )r   r1   getr!   xr6   r   r   r#   r       z2ExistingCountries.search_fuzzy.<locals>.<listcomp>c                 S      | d  | d fS Nr>   r   r   rD   r   r   r   <lambda>w       z0ExistingCountries.search_fuzzy.<locals>.<lambda>key)r)   striplowerintlookupLookupErrorr   Subdivisionsmatchsubdivisionsr,   _fieldsrB   maxfindpartial_matchsorteditems)r6   r+   r4   match_subdivions	candidatevpartial_match_subdivisionssorted_resultsr   r3   r6   r   search_fuzzy9   sR   



zExistingCountries.search_fuzzyN)__name__
__module____qualname____doc__r   dbCountry
data_classroot_keyr   r   r   rb   r   r   r   r   r*   3   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)	rc   rd   re   rf   r   rg   rh   ri   rj   r   r   r   r   rk   |   s    rk   c                   @      e Zd ZdZdZdZdS )Scriptsz3Provides access to an ISO 15924 database (Scripts).Script15924Nrc   rd   re   rf   ri   rj   r   r   r   r   rm          rm   c                   @   rl   )
Currenciesz5Provides access to an ISO 4217 database (Currencies).Currency4217Nrp   r   r   r   r   rr      rq   rr   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)rc   rd   re   rf   no_indexri   rj   r   r   r   r   ru      s
    ru   c                   @   rl   )LanguageFamilieszLProvides access to an ISO 639-5 database
    (Language Families and Groups).LanguageFamilyz639-5Nrp   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   )r6   kwparts	__class__r   r   r      s   
zSubdivisionHierarchy.__init__c                 C   s   t j| jdS )Nr@   )	countriesrB   r   rE   r   r   r   r,      s   zSubdivisionHierarchy.countryc                 C   s   | j sd S tj| j dS )Nr   )r   rU   rB   rE   r   r   r   r      s   zSubdivisionHierarchy.parent)rc   rd   re   r   propertyr,   r   __classcell__r   r   r   r   r      s    
r   c                       sb   e Zd ZeZg dZdZ f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 )rS   )r8   r   r   rx   z3166-2c                    sN   t  j|i | i | jd< | D ]}| jd |j t }|| qd S )Nr   )r   _loadindicesr0   r   rO   setadd)r6   argsr   subdivisiondivsr   r   r   r      s   

zSubdivisions._loadc                    sJ   | dd }t jdi |}||u r#d|v r#tj|d dd ur#g S |S )Ndefaultr   r@   r   )r0   r   rB   r   )r6   r   r   rU   r   r   r   rB      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)   rN   rO   rU   rV   valuesr   append)r6   r+   matching_candidatesr]   r^   wr   r   r   rT      s   

zSubdivisions.matchc                 C   sL   t |  }g }tD ]}|jd}t | }||v r#|| q|S )Nr8   )r)   rN   rO   rU   rV   rB   r   )r6   r+   r   r]   r^   r   r   r   rY      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 )Nr   zpycountry.db.Subdivisionr-   r   c                    r.   r/   )r0   r   )r   r-   r2   r   r   r4      s   z-Subdivisions.search_fuzzy.<locals>.add_resultr5   r8   r>   r;   c                    r?   )r   r   rA   rC   rE   r   r   r#     rF   z-Subdivisions.search_fuzzy.<locals>.<listcomp>c                 S   rG   rH   r   rI   r   r   r   rJ     rK   z+Subdivisions.search_fuzzy.<locals>.<lambda>rL   )r)   rN   rO   rP   rT   rY   rV   rB   rW   rX   rR   rZ   r[   )r6   r+   r4   match_subdivisionsr]   r_   r^   r`   r   ra   r   rb      s2   


zSubdivisions.search_fuzzy)rc   rd   re   r   ri   r|   rj   r   rB   rT   rY   r   r   r   rb   r   r   r   r   r   rS      s    "rS   ziso3166-1.jsonr   ziso3166-2.jsonrU   ziso3166-3.jsonhistoric_countriesziso4217.json
currenciesziso639-3.json	languagesziso639-5.jsonlanguage_familiesziso15924.jsonscripts)-rf   os.pathosr   	importlibr   r   typingr   r   r   r   pycountry.dbr   r   ModuleNotFoundErrorr   r   r   r   r   __annotations__r   r   r)   rg   Databaser*   rk   rm   rr   ru   r}   Datar   rS   pathr&   r   rU   r   r   r   r   r   r   r   r   r   <module>   sP    I	b