
    :ib                         S SK r S SKrS SKrS SKJrJrJrJrJrJ	r	  \R                  " S5      r " S S5      r " S S\5      r " S S	\5      rS
 r " S S5      rg)    N)AnyIteratorListOptionalTypeUnionzpycountry.dbc                   t   ^  \ rS rSrS\4S jrS rS\S\SS4U 4S	 jjrS\4S
 jrS\	\   4S jr
S rSrU =r$ )Data	   fieldsc                     Xl         g N_fields)selfr   s     F/home/james-whalen/.local/lib/python3.13/site-packages/pycountry/db.py__init__Data.__init__
   s        c                 T    XR                   ;   a  U R                   U   $ [        U5      er   )r   AttributeError)r   keys     r   __getattr__Data.__getattr__   s&    ,,<<$$S!!r   r   valuereturnNc                 L   > US:w  a  X R                   U'   [        TU ]	  X5        g )Nr   )r   super__setattr__)r   r   r   	__class__s      r   r   Data.__setattr__   s$    ) %LLC'r   c                     U R                   R                  nSR                  S [        U R                  R                  5       5       5       5      nU SU S3$ )Nz, c              3   ,   #    U  H
  nS U-  v   M     g7f)z%s=%rN ).0is     r   	<genexpr> Data.__repr__.<locals>.<genexpr>   s     M0L17Q;0Ls   ())r    __name__joinsortedr   items)r   cls_namer   s      r   __repr__Data.__repr__   sJ    >>**Mt||7I7I7K0LMM1VHA&&r   c                 X    [        U R                  5      [        U R                  5      -   $ r   )dirr    listr   r   s    r   __dir__Data.__dir__   s    4>>"T$,,%777r   c              #   P   #    U R                    H  nU[        X5      4v   M     g 7fr   )r   getattr)r   fields     r   __iter__Data.__iter__   s#     \\E--- "s   $&r   )r+   
__module____qualname____firstlineno__strr   r   r   r0   r   r6   r;   __static_attributes____classcell__)r    s   @r   r
   r
   	   sT     "
(s (3 (4 (
'# '
8c 8. .r   r
   c                       \ rS rSrSrg)Country%   r$   Nr+   r=   r>   r?   rA   r$   r   r   rD   rD   %       r   rD   c                       \ rS rSrSrg)Subdivision)   r$   NrF   r$   r   r   rI   rI   )   rG   r   rI   c                    ^  U 4S jnU$ )Nc                    > U R                   (       d%  U R                     U R                  5         S S S 5        T" U /UQ70 UD6$ ! , (       d  f       N= fr   )
_is_loaded
_load_lock_load)r   argskwfs      r   load_if_needed!lazy_load.<locals>.load_if_needed.   s<    

 !#### !s   A
Ar$   )rR   rS   s   ` r   	lazy_loadrU   -   s    $ r   c            	           \ rS rSr% \\\4   \S'   Sr\	\   \S'   / r
\\   \S'   S\SS4S jrS	 rSS
 jr\S 5       r\S 5       r\S\S    4S j5       r\S\4S j5       r\SS.S\	\   S\	\   S\	\   4S jj5       r\S\S\4S j5       rSrg)Database7   
data_classNroot_keyno_indexfilenamer   c                     Xl         SU l        [        R                  " 5       U l        [        U R                  [        5      (       a"  [        U R                  [        40 5      U l
        g U R                  U l
        g NF)r\   rM   	threadingLockrN   
isinstancerY   r@   typer
   factory)r   r\   s     r   r   Database.__init__<   sN     #..*doos++$"=DL??DLr   c                 L    SU l         / U l        [        5       U l        0 U l        g r^   )rM   objectssetindex_namesindicesr5   s    r   _clearDatabase._clearF   s!    5r   c           
         U R                   (       a  g U R                  5         [        U R                  SS9 n[        R
                  " U5      nS S S 5        WU R                      H  nU R                  " S0 UD6nU R                  R                  U5        UR                  5        H  u  pVXPR                  ;   a  M  U R                  R                  U0 5      nUR                  5       nXg;   a5  [        R!                  U R                  R"                  < SU< SU< S35        XGU'   M     M     SU l         g ! , (       d  f       N= f)Nzutf-8)encoding z already taken in index z8 and will be ignored. This is an error in the databases.Tr$   )rM   rj   openr\   jsonloadrZ   rc   rf   appendr.   r[   ri   
setdefaultlowerloggerdebugr+   )r   rR   treeentryobjr   r   indexs           r   rO   Database._loadL   s    ?? $--'2a99Q<D 3 $--(E,,''CLL$#kkm
--' //R8>LL  <<00%>
  #e ,	 )& - 32s   D55
Ec                    U R                   " S0 UD6nU R                  R                  U5        UR                  5        HF  u  p4X0R                  ;   a  M  UR                  5       nU R                  R                  U0 5      nX%U'   MH     g )Nr$   )rc   rf   rr   r.   r[   rt   ri   rs   r   rQ   ry   r   r   rz   s         r   	add_entryDatabase.add_entrym   sr     ll R  	C  ((*JCmm#KKMELL++C4E%L %r   c                 h   SU;   a  US	 U R                   " S0 UD6nU(       d$  [        U R                  R                   SU 35      eU R                  R                  U5        U HK  u  p4X0R                  ;   a  M  UR                  5       nU R                  R                  U0 5      nXE;   d  MI  XT	 MM     g )Ndefaultz" not found and cannot be removed: r$   )
getKeyErrorrc   r+   rf   remover[   rt   ri   rs   r}   s         r   remove_entryDatabase.remove_entry}   s     ?9hhnn<<(())KB4P 
 	C  JCmm#KKMELL++C4E~L r   c                 ,    [        U R                  5      $ r   )iterrf   r5   s    r   r;   Database.__iter__   s    DLL!!r   c                 ,    [        U R                  5      $ r   )lenrf   r5   s    r   __len__Database.__len__   s    4<<  r   )r   r   rQ   c                   [        U5      S:w  a  [        S5      eUR                  5       u  p4[        U[        5      (       d
  [        5       eUR                  5       nU R                  U   n XT   $ ! [         a    Us $ f = f)N   zOnly one criteria may be given)	r   	TypeErrorpopitemra   r@   LookupErrorrt   ri   r   )r   r   rQ   r:   r   rz   s         r   r   Database.get   sy     r7a<<==zz|%%%-U#	< 	 N		s   ,A0 0A?>A?r   c                    [        U[        5      (       d
  [        5       eUR                  5       nU R                   H  n U R                  U   U   s  $    U  HP  nU R
                   H=  nUR                  R                  U5      nUc  M#  UR                  5       U:X  d  M9  Us  s  $    MR     [        SU-  5      e! [         a     M  f = f)NzCould not find a record for %r)ra   r@   r   rt   ri   r[   r   r   )r   r   r   	candidatekvs         r   lookupDatabase.lookup   s    %%%-  <<C||C(//   I]]%%))!,9779%$$ #  :UBCC  s    B::
CC)rM   rN   rc   r\   rh   ri   rf   )r   N)r+   r=   r>   r?   r   r   r@   __annotations__rZ   r   r[   r   r   rj   rO   rU   r~   r   r   r;   intr   r   r   r   rA   r$   r   r   rW   rW   7   s   dCi  "Hhsm"Hd3i+ + +B   ! !, "(:. " " ! ! ! *."3-6>sm	# & DC DD D Dr   rW   )rp   loggingr_   typingr   r   r   r   r   r   	getLoggerru   r
   rD   rI   rU   rW   r$   r   r   <module>r      sY       = =			>	*. .8	d 		$ 	QD QDr   