
    ThB                     N    d Z ddlmZmZ ddlmZmZ ddddZd Zd Z	d Z
dd
Zy	)z*Utilities for handling prefix dictionaries   )U_EMPTY_STRINGU_PLUS)format_numberPhoneNumberFormatzh_Hant)zh_TWzh_HKzh_MOc                 (    | dk7  xr | dk7  xr | dk7  S )Nzhjako )langs    S/opt/server/standalone/crm/venv/lib/python3.12/site-packages/phonenumbers/prefix.py_may_fall_back_to_englishr   	   s     
 4<9DDL9TT\9    c                 B    ||
| d|d|S | d|S || d|S | S )N_r   )r   scriptregions      r   _full_localer      s<    !%vv66"F++		''r   c                    t        |||      }|t        v rt        |   | v r| t        |      S || v r| |   S ||d|}|| v r| |   S ||d|}|| v r| |   S || v r| |   S t        |      r| j                  dd      S y)zFReturn the entry in the dictionary for the given language information.Nr   en)r   _LOCALE_NORMALIZATION_MAPr   get)langdictr   r   r   full_localelang_scriptlang_regions          r   
_find_langr!      s     tVV4K00!+.(:1+>??h$$!%v.("K((!%v.("K((x~ &||D$''r   Nc                     t        |t        j                        }|j                  t              st        d      t        |dd      D ]-  }|dd|z    }|| v st        | |   |||      }	|	|	c S t        c S  t        S )aG  Return a text description of a PhoneNumber for the given language.

    Arguments:
    data -- Prefix dictionary to lookup up number in.
    longest_prefix -- Length of the longest key in data.
    numobj -- The PhoneNumber object for which we want to get a text description.
    lang -- A 2-letter lowercase ISO 639-1 language code for the language in
                  which the description should be returned (e.g. "en")
    script -- A 4-letter titlecase (first letter uppercase, rest lowercase)
                  ISO script code as defined in ISO 15924, separated by an
                  underscore (e.g. "Hant")
    region --  A 2-letter uppercase ISO 3166-1 country code (e.g. "GB")

    Returns a text description in the given language code, for the given phone
    number's area, or an empty string if no description is available.z"Expect E164 number to start with +    r   )	r   r   E164
startswithr   	Exceptionranger!   r   )
datalongest_prefixnumobjr   r   r   e164_num
prefix_lenprefixnames
             r   _prefix_description_for_numberr0   ;   s      V%6%;%;<Hv& <==NAr2 	&
!Q^-T> d6lD&&AD%%	& r   )NN)__doc__utilr   r   phonenumberutilr   r   r   r   r   r!   r0   r   r   r   <module>r4      s/    0 ( =&/)iX :	<r   