
    `ib                         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dS )    N)AnyIteratorListOptionalTypeUnionzpycountry.dbc                   h     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                     || _         d S N)_fields)selfr   s     `/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pycountry/db.py__init__zData.__init__
   s        c                 L    || j         v r| j         |         S t          |          r   )r   AttributeError)r   keys     r   __getattr__zData.__getattr__   s*    $,<$$S!!!r   r   valuereturnNc                 l    |dk    r
|| j         |<   t                                          ||           d S )Nr   )r   super__setattr__)r   r   r   	__class__s      r   r   zData.__setattr__   s:    ) %DLC'''''r   c                     | j         j        }d                    d t          | j                                                  D                       }| d| dS )Nz, c              3       K   | ]	}d |z  V  
dS )z%s=%rN ).0is     r   	<genexpr>z Data.__repr__.<locals>.<genexpr>   s&      MM17Q;MMMMMMr   ())r   __name__joinsortedr   items)r   cls_namer   s      r   __repr__zData.__repr__   sY    >*MMt|7I7I7K7K0L0LMMMMM&&V&&&&r   c                 T    t          | j                  t          | j                  z   S r   )dirr   listr   r   s    r   __dir__zData.__dir__   s!    4>""T$,%7%777r   c              #   F   K   | j         D ]}|t          | |          fV  d S r   )r   getattr)r   fields     r   __iter__zData.__iter__   s?      \ 	. 	.Eu-------	. 	.r   )r%   
__module____qualname__strr   r   r   r*   r   r/   r3   __classcell__)r   s   @r   r
   r
   	   s            " " "
(s (3 (4 ( ( ( ( ( (
'# ' ' ' '
8c 8 8 8 8. . . . . . .r   r
   c                       e Zd ZdS )CountryNr%   r4   r5   r   r   r   r9   r9   %           Dr   r9   c                       e Zd ZdS )SubdivisionNr:   r   r   r   r=   r=   )   r;   r   r=   c                       fd}|S )Nc                     | j         s3| j        5  |                                  d d d            n# 1 swxY w Y    | g|R i |S r   )
_is_loaded
_load_lock_load)r   argskwfs      r   load_if_neededz!lazy_load.<locals>.load_if_needed.   s     	  

              q#######s   155r   )rE   rF   s   ` r   	lazy_loadrG   -   s$    $ $ $ $ $ r   c            	       Z   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dS )Database
data_classNroot_keyno_indexfilenamer   c                     || _         d| _        t          j                    | _        t          | j        t                    r#t          | j        t          fi           | _
        d S | j        | _
        d S NF)rM   r@   	threadingLockrA   
isinstancerJ   r6   typer
   factory)r   rM   s     r   r   zDatabase.__init__<   s[     #.**dos++ 	+$"==DLLL?DLLLr   c                 V    d| _         g | _        t                      | _        i | _        d S rO   )r@   objectssetindex_namesindicesr.   s    r   _clearzDatabase._clearF   s'    55r   c           
      R   | j         rd S |                                  t          | j        d          5 }t	          j        |          }d d d            n# 1 swxY w Y   || j                 D ]} | j        di |}| j        	                    |           |
                                D ]t\  }}|| j        v r| j                            |i           }|                                }||v r-t                              | j        j        d|d|d           |||<   ud| _         d S )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   ? 	 F$-'222 	 a9Q<<D	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  $-( 	# 	#E$,''''CL$$$#kkmm # #
U$-'' //R88E>>LL  <000%%%>  
  #e# s   AAAc                     | j         di |}| j                            |           |                                D ]C\  }}|| j        v r|                                }| j                            |i           }|||<   Dd S )Nr   )rT   rV   ra   r(   rL   rc   rY   rb   r   rD   rh   r   r   ri   s         r   	add_entryzDatabase.add_entrym   s     dl  R   	C    ((** 	 	JCdm##KKMMEL++C44EE%LL	 	r   c                 2   d|v r|d=  | j         di |}|st          | j        j         d|           | j                            |           |D ]E\  }}|| j        v r|                                }| j        	                    |i           }||v r||= Fd S )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dhnnnn 	<(PPBPP  
 	C     	! 	!JCdm##KKMMEL++C44E~~%L	! 	!r   c                 *    t          | j                  S r   )iterrV   r.   s    r   r3   zDatabase.__iter__   s    DL!!!r   c                 *    t          | j                  S r   )lenrV   r.   s    r   __len__zDatabase.__len__   s    4<   r   )rn   rn   rD   c                2   t          |          dk    rt          d          |                                \  }}t          |t                    st                      |                                }| 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   s     r77a<<<===zz||u%%% 	 --U#	< 	 	 	 NNN		s   ?B BBr   c                    t          |t                    st                      |                                }| j        D ]'}	 | j        |         |         c S # t          $ r Y $w xY w| D ]G}| j        D ]=}|j                            |          }||                                |k    r|c c S >Ht          d|z            )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7799%%$$$$$$ &	% :UBCCCs   A
A$#A$)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   Y ! ! Y!, "(:. " " " Y" ! ! ! ! Y! *.  "3-6>sm	#   Y& DC DD D D D YD D Dr   rI   )r_   loggingrP   typingr   r   r   r   r   r   	getLoggerrd   r
   r9   r=   rG   rI   r   r   r   <module>r      s6         = = = = = = = = = = = = = = = =		>	*	*. . . . . . . .8	 	 	 	 	d 	 	 		 	 	 	 	$ 	 	 	  QD QD QD QD QD QD QD QD QD QDr   