
    Thb                         d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	  ej                  d      Z G d d      Z G d de      Z G d d	e      Zd
 Z G d d      Zy)    N)AnyIteratorListOptionalTypeUnionzpycountry.dbc                   b     e Zd ZdefdZd Zdededdf fdZdefd	Zdee   fd
Z	d Z
 xZS )Datafieldsc                     || _         y N)_fields)selfr   s     L/opt/server/standalone/crm/venv/lib/python3.12/site-packages/pycountry/db.py__init__zData.__init__
   s	        c                 R    || j                   v r| j                   |   S t        |      r   )r   AttributeError)r   keys     r   __getattr__zData.__getattr__   s(    $,,<<$$S!!r   r   valuereturnNc                 N    |dk7  r|| j                   |<   t        | 	  ||       y )Nr   )r   super__setattr__)r   r   r   	__class__s      r   r   zData.__setattr__   s(    ) %DLLC'r   c                     | j                   j                  }dj                  d t        | j                  j                               D              }| d| dS )Nz, c              3   &   K   | ]	  }d |z    yw)z%s=%rN ).0is     r   	<genexpr>z Data.__repr__.<locals>.<genexpr>   s     M17Q;Ms   ())r   __name__joinsortedr   items)r   cls_namer   s      r   __repr__zData.__repr__   sJ    >>**Mt||7I7I7K0LMM1VHA&&r   c                 X    t        | j                        t        | j                        z   S r   )dirr   listr   r   s    r   __dir__zData.__dir__   s    4>>"T$,,%777r   c              #   N   K   | j                   D ]  }|t        | |      f  y wr   )r   getattr)r   fields     r   __iter__zData.__iter__   s+     \\ 	.Eu---	.s   #%)r%   
__module____qualname__strr   r   r   r*   r   r/   r3   __classcell__)r   s   @r   r
   r
   	   sO     "
(s (3 (4 (
'# '
8c 8.r   r
   c                       e Zd Zy)CountryNr%   r4   r5   r   r   r   r9   r9   %       r   r9   c                       e Zd Zy)SubdivisionNr:   r   r   r   r=   r=   )   r;   r   r=   c                       fd}|S )Nc                     | j                   s%| j                  5  | j                          d d d         | g|i |S # 1 sw Y   xY wr   )
_is_loaded
_load_lock_load)r   argskwfs      r   load_if_neededz!lazy_load.<locals>.load_if_needed.   sD     

#### s	   ?Ar   )rE   rF   s   ` r   	lazy_loadrG   -   s    $ r   c            	       
   e Zd ZU eeef   ed<   dZee   ed<   g Z	e
e   ed<   deddfdZd Zdd	Zed
        Zed        Zeded    fd       Zedefd       Zedddee   dee   dee   fd       Zededefd       Zy)Database
data_classNroot_keyno_indexfilenamer   c                     || _         d| _        t        j                         | _        t        | j                  t              r"t        | j                  t        fi       | _
        y | j                  | _
        y NF)rM   r@   	threadingLockrA   
isinstancerJ   r6   typer
   factory)r   rM   s     r   r   zDatabase.__init__<   sM     #..*doos+$"=DL??DLr   c                 L    d| _         g | _        t               | _        i | _        y rO   )r@   objectssetindex_namesindicesr.   s    r   _clearzDatabase._clearF   s!    5r   c           
      l   | j                   ry | j                          t        | j                  d      5 }t	        j
                  |      }d d d        | j                     D ]  } | j                  di |}| j                  j                  |       |j                         D ]{  \  }}|| j                  v r| j                  j                  |i       }|j                         }||v r2t        j!                  | j                  j"                  d|d|d       |||<   }  d| _         y # 1 sw Y   xY w)Nzutf-8)encoding z already taken in index z8 and will be ignored. This is an error in the databases.Tr   )r@   rZ   openrM   jsonloadrK   rT   rV   appendr(   rL   rY   
setdefaultlowerloggerdebugr%   )r   rE   treeentryobjr   r   indexs           r   rB   zDatabase._loadL   s   ?? $--'2 	 a99Q<D	  $--( 	#E$,,''CLL$#kkm #
U$--' //R8E>LL  <<00%>
  #e#		#& -	  	 s   D**D3c                     | j                   di |}| j                  j                  |       |j                         D ]E  \  }}|| j                  v r|j                         }| j                  j                  |i       }|||<   G y )Nr   )rT   rV   ra   r(   rL   rc   rY   rb   r   rD   rh   r   r   ri   s         r   	add_entryzDatabase.add_entrym   s     dll R  	C  ((* 	JCdmm#KKMELL++C4EE%L	r   c                 R   d|v r|d=  | j                   di |}|s$t        | j                  j                   d|       | j                  j                  |       |D ]H  \  }}|| j                  v r|j                         }| j                  j                  |i       }||v sF||= J y )Ndefaultz" not found and cannot be removed: r   )
getKeyErrorrT   r%   rV   removerL   rc   rY   rb   rk   s         r   remove_entryzDatabase.remove_entry}   s     ?9dhhnn<<(())KB4P 
 	C   	!JCdmm#KKMELL++C4E~%L	!r   c                 ,    t        | j                        S r   )iterrV   r.   s    r   r3   zDatabase.__iter__   s    DLL!!r   c                 ,    t        | j                        S r   )lenrV   r.   s    r   __len__zDatabase.__len__   s    4<<  r   )rn   rn   rD   c                    t        |      dk7  rt        d      |j                         \  }}t        |t              s
t               |j                         }| j                  |   }	 ||   S # t        $ r |cY S w xY w)N   zOnly one criteria may be given)	rv   	TypeErrorpopitemrR   r6   LookupErrorrc   rY   rp   )r   rn   rD   r2   r   ri   s         r   ro   zDatabase.get   sz     r7a<<==zz|u%%-U#	< 	 N		s   'A, ,A:9A:r   c                 x   t        |t              s
t               |j                         }| j                  D ]  }	 | j                  |   |   c S  | D ]J  }| j
                  D ]9  }|j                  j                  |      }|!|j                         |k(  s5|c c S  L t        d|z        # t        $ r Y w xY w)NzCould not find a record for %r)rR   r6   r|   rc   rY   rL   r   ro   )r   r   r   	candidatekvs         r   lookupzDatabase.lookup   s    %%-  << 	C||C(//	  	%I]] %%%))!,9779%$$%	% :UBCC  s   B--	B98B9)r   N)r%   r4   r5   r   r   r6   __annotations__rK   r   rL   r   r   rZ   rB   rG   rl   rr   r   r3   intrw   r   ro   r   r   r   r   rI   rI   7   s   dCi  "Hhsm"Hd3i+ + +B   ! !, "(:. " " ! ! ! *."3-6>sm	# & DC DD D Dr   rI   )r_   loggingrP   typingr   r   r   r   r   r   	getLoggerrd   r
   r9   r=   rG   rI   r   r   r   <module>r      s[       = =			>	*. .8	d 		$ 	QD QDr   