
    ThQ)                        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	 ddlZdededefd	Zd
ede
e   f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Z G d dej2                  j4                        Z G d de      Z G d dej2                  j4                        Z G d dej2                  j4                        Z G d dej2                  j4                        Z G d dej2                  j4                        Z  G d d ej2                  jB                        Z" G d! d"ej2                  j4                        Z# eejH                  jK                  ed#            Z&eed$<    e#ejH                  jK                  ed%            Z'e#ed&<    eejH                  jK                  ed'            Z(eed(<    eejH                  jK                  ed)            Z)eed*<    eejH                  jK                  ed+            Z*eed,<    e ejH                  jK                  ed-            Z+e ed.<    eejH                  jK                  ed/            Z,eed0<   y# e$ r
 ddlmZ Y Mw xY w)1	pycountry    N)metadata)DictListOptionalType)	resourcespackage_or_requirementresource_namereturnc                 D    t        t        j                  |       |z        S )N)strimportlib_resourcesfiles)r
   r   s     R/opt/server/standalone/crm/venv/lib/python3.12/site-packages/pycountry/__init__.pyresource_filenamer      s#    !!"89MI     distribution_namec                 `    	 t        j                  |       S # t         j                  $ r Y yw xY w)Nzn/a)_importlib_metadataversionPackageNotFoundError)r   s    r   get_versionr      s1    "**+<==33 s    --localesLOCALES_DIR	databasesDATABASE_DIR__version__	input_strc                     | }| j                         sKt        j                  d|       }dj                  |D cg c]  }t        j                  |      r| c}      }|S c c}w )NNFKD )isasciiunicodedata	normalizejoin	combining)r   
output_str	nfkd_formcs       r   remove_accentsr+   (   s\    J))&)<	WW!B1)>)>q)AQB

  Cs   A A c                   \    e Zd ZdZej
                  j                  ZdZde	de
ed       fdZy)ExistingCountriesz4Provides access to an ISO 3166 database (Countries).z3166-1queryr   c                 ^  	 t        |j                         j                               }i 	dddt        dd f	fd}	  || j	                  |      d       t        j                  j                  t        |      }|D ]  } ||j                  d        | D ]  }|j                  j                  d	      |j                  j                  d
      |j                  j                  d      fD ]M  }|t        |j                               }||v s$ ||t        ddd|j                  |      z  z
  g                t        j                  j                  t        |      }|D ]k  }|j                  j                  d	      }t        |j                               }||v s< ||j                  t        dd|j                  |      z
  g             m 	st        |      t!        	j#                         d       D cg c]  }| j                  |d          }}|S # t
        $ r Y w xY wc c}w )Ncountryzpycountry.db.Countrypointsr   c                 l    j                  | j                  d       | j                  xx   |z  cc<   y Nr   )
setdefaultalpha_2)r0   r1   resultss     r   
add_resultz2ExistingCountries.search_fuzzy.<locals>.add_result@   s+    w2GOO$.$r   2   )selfr.   1   nameofficial_namecomment            c                     | d    | d   fS NrA   r    xs    r   <lambda>z0ExistingCountries.search_fuzzy.<locals>.<lambda>w       QqTE1Q4= r   keyr   r5   )r+   striplowerintlookupLookupErrorr   Subdivisionsmatchsubdivisionsr0   _fieldsgetmaxfindpartial_matchsorteditems)
r9   r.   r7   match_subdivions	candidatevpartial_match_subdivisionsrF   sorted_resultsr6   s
            @r   search_fuzzyzExistingCountries.search_fuzzy9   sC   u{{}2245 #%	/ 6 	/ 	/ 	/
	t{{5)2.
 %1177U 8 
 * 	.Iy(("-	.  	I !!%%f-!!%%o6!!%%i0 
 =&qwwy1Az
 #%sArQ5F/G+H'I 	( &/%;%;%I%IU &J &
" 4 	KI!!%%f-Aqwwy)Az9,,c1a!&&-6G2H.IJ		K e$$ GMMO1HI

 	 HHQqTH"
 
 e  		V
s   H :H*	H'&H'N)__name__
__module____qualname____doc__r   dbCountry
data_classroot_keyr   r   r   r`   rD   r   r   r-   r-   3   s:    >%%JH@# @$t4G/H*I @r   r-   c                   @    e Zd ZdZej
                  j                  ZdZy)HistoricCountrieszcProvides access to an ISO 3166-3 database
    (Countries that have been removed from the standard).z3166-3N)	ra   rb   rc   rd   r   re   rf   rg   rh   rD   r   r   rj   rj   |   s    = %%JHr   rj   c                       e Zd ZdZdZdZy)Scriptsz3Provides access to an ISO 15924 database (Scripts).Script15924Nra   rb   rc   rd   rg   rh   rD   r   r   rl   rl      s    =JHr   rl   c                       e Zd ZdZdZdZy)
Currenciesz5Provides access to an ISO 4217 database (Currencies).Currency4217Nro   rD   r   r   rq   rq      s    ?JHr   rq   c                        e Zd ZdZg dZdZdZy)	Languagesz:Provides access to an ISO 639-1/2T/3 database (Languages).)statusscopetypeinverted_namecommon_nameLanguagez639-3N)ra   rb   rc   rd   no_indexrg   rh   rD   r   r   ru   ru      s    DJHJHr   ru   c                       e Zd ZdZdZdZy)LanguageFamilieszLProvides access to an ISO 639-5 database
    (Language Families and Groups).LanguageFamilyz639-5Nro   rD   r   r   r~   r~      s    ' "JHr   r~   c                   >     e Zd Z fdZed        Zed        Z xZS )SubdivisionHierarchyc                 D   d|v r	|d   |d<   nd |d<   t        |   di | | j                  j                  d      d   | _        | j
                  O| j
                  j                  d      }|d   | j                  k7  r!| j                   d| j
                   | _        y y y )Nparentparent_code-r   rD   )super__init__codesplitcountry_coder   )r9   kwparts	__class__s      r   r   zSubdivisionHierarchy.__init__   s    r> "8B} $B}2 IIOOC03'$$**3/EQx4,,,&*&7&7%8$:J:J9K#L  - (r   c                 B    t         j                  | j                        S )NrK   )	countriesrU   r   r9   s    r   r0   zSubdivisionHierarchy.country   s    }}T%6%6}77r   c                 \    | j                   sy t        j                  | j                         S )Nr   )r   rS   rU   r   s    r   r   zSubdivisionHierarchy.parent   s(    T%5%566r   )ra   rb   rc   r   propertyr0   r   __classcell__r   s   @r   r   r      s1    M 8 8 7 7r   r   c                   `     e Zd ZeZg dZdZ fdZ fdZd Z	d Z
dedeed       fd	Z xZS )
rQ   )r;   r   r   rx   z3166-2c                     t        |   |i | i | j                  d<   | D ]R  }| j                  d   j                  |j                  j                         t                     }|j                  |       T y )Nr   )r   _loadindicesr4   r   rM   setadd)r9   argsr   subdivisiondivsr   s        r   r   zSubdivisions._load   sp    t"r" (*^$ 	"K<</::((..0#%D HH[!		"r   c                     |j                  dd       }t        |   di |}||u rd|v rt        j                  |d         g S |S )Ndefaultr   rK   rD   )r4   r   rU   r   )r9   r   r   rS   r   s       r   rU   zSubdivisions.get   sV    --	40w{(R(7"~'; }}R%7}8D	r   c                 @   t        |j                         j                               }g }t        D ]k  }|j                  j                         D ]L  }|t        |j                               }|j                  d      D ]  }||k(  s	|j                  |        L N m |S )N;)r+   rL   rM   rS   rT   valuesr   append)r9   r.   matching_candidatesr\   r]   ws         r   rR   zSubdivisions.match   s    u{{}2245 % 		"I&&--/ "=&qwwy1A WWS\ ":/66yA!""		" #"r   c                    t        |j                         j                               }g }t        D ]L  }|j                  j                  d      }t        |j                               }||v s<|j                  |       N |S )Nr;   )r+   rL   rM   rS   rT   rU   r   )r9   r.   r   r\   r]   s        r   rX   zSubdivisions.partial_match   ss    u{{}2245 % 	6I!!%%f-Aqwwy)Az#**95		6 #"r   r.   r   c                 F  	 t        |j                         j                               }i 	dddt        dd f	fd}| j	                  |      }|D ]  } ||d        | j                  |      }|D ]a  }|j                  j                  d      }t        |j                               }||v s< ||t        dd	|j                  |      z
  g             c 	st        |      t        	j                         d
       D cg c]  }| j                  |d          }}|S c c}w )Nr   zpycountry.db.Subdivisionr1   r   c                 l    j                  | j                  d       | j                  xx   |z  cc<   y r3   )r4   r   )r   r1   r6   s     r   r7   z-Subdivisions.search_fuzzy.<locals>.add_result   s1     {//3K$$%/%r   r8   r;   rA   r>   c                     | d    | d   fS rC   rD   rE   s    r   rG   z+Subdivisions.search_fuzzy.<locals>.<lambda>  rH   r   rI   r   r   )r+   rL   rM   rN   rR   rX   rT   rU   rV   rW   rP   rY   rZ   )
r9   r.   r7   match_subdivisionsr\   r^   r]   rF   r_   r6   s
            @r   r`   zSubdivisions.search_fuzzy   s7   u{{}2245 #%	03	0=@	0	0 "ZZ.+ 	&Iy"%	& &*%7%7%>"3 	CI!!%%f-Aqwwy)Az9c1a!&&-.?*@&AB		C e$$ GMMO1HI

 	 HH!A$H
 
 
s   >D)ra   rb   rc   r   rg   r|   rh   r   rU   rR   rX   r   r   r   r`   r   r   s   @r   rQ   rQ      sE    
 &J8HH	"	# 	#$# $$tN/C*D $r   rQ   ziso3166-1.jsonr   ziso3166-2.jsonrS   ziso3166-3.jsonhistoric_countriesziso4217.json
currenciesziso639-3.json	languagesziso639-5.jsonlanguage_familiesziso15924.jsonscripts)-rd   os.pathosr$   	importlibr   r   typingr   r   r   r   pycountry.dbr   r   ModuleNotFoundErrorr	   r   r   r   r   __annotations__r   r   r+   re   Databaser-   rj   rl   rq   ru   r~   Datar   rQ   pathr&   r   rS   r   r   r   r   r   rD   r   r   <module>r      sZ      5 - - ;
c # # 3 8C=  %[)<S <%k;?c ?(5Xc] 5c c F	-- FR) ill## && 	%% y||,, 79<<,, 72^9<<(( ^D  1GGLL/0 	  *GGLL/0l  ):GGLL/0) %  $BGGLL~$NO
J O lO!LM	9 M&6GGLL/' #  277<<oFG G}  ;::;s   I& &I54I5