
    Eqg*                     2   d Z ddlmZmZmZmZ ddlmZmZ ddlm	Z	m
Z
mZ ddlmZmZ ddlmZmZmZ ddlmZ ddlmZ 	 dd	lmZmZ dd
lmZ n# e$ r ddlZddlZej                            ej        d                   dk    s)ej                            ej        d                   dk    r3 edej                   dd ed          iiZdZdd ed          iiZn Y nw xY wg dZ ddZ!ddZ"ddZ#ddZ$e%dk    rddl&Z& e&j'                     dS dS )u  Phone number geocoding functionality

>>> import phonenumbers
>>> from phonenumbers.geocoder import description_for_number
>>> from phonenumbers.util import u
>>> gb_number = phonenumbers.parse("+442083612345", "GB")
>>> de_number = phonenumbers.parse("0891234567", "DE")
>>> ch_number = phonenumbers.parse("0431234567", "CH")
>>> str(description_for_number(gb_number, "en"))
'London'
>>> str(description_for_number(gb_number, "fr"))  # fall back to English
'London'
>>> str(description_for_number(gb_number, "en", region="GB"))
'London'
>>> str(description_for_number(gb_number, "en", region="US"))  # fall back to country
'United Kingdom'
>>> str(description_for_number(de_number, "en"))
'Munich'
>>> u('München') == description_for_number(de_number, "de")
True
>>> u('Zürich') == description_for_number(ch_number, "de")
True
>>> str(description_for_number(ch_number, "en"))
'Zurich'
>>> str(description_for_number(ch_number, "fr"))
'Zurich'
>>> str(description_for_number(ch_number, "it"))
'Zurigo'

   )prntunicoduU_EMPTY_STRING)region_code_for_numberPhoneNumberType)country_mobile_tokennational_significant_numbernumber_type)region_code_for_country_coderegion_codes_for_country_code)is_valid_number_for_regionparseNumberParseException)is_number_type_geographical)_prefix_description_for_number)GEOCODE_DATAGEOCODE_LONGEST_PREFIX)LOCALE_DATA    Nzbuildmetadatafromxml.pyzbuildprefixdata.pyzAFailed to import generated data (but OK as during autogeneration))file1enzUnited StatesUS)country_name_for_numberdescription_for_valid_numberdescription_for_numberc                 (   t          | j                  }t          |          dk    rt          |d         |||          S t	          d          }|D ]0}t          | |          r|t	          d          k    r	t          c S |}1t          ||||          S )a  Returns the customary display name in the given language for the given
    territory the given PhoneNumber object is from.  If it could be from many
    territories, nothing is returned.

    Arguments:
    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")

    The script and region parameters are currently ignored.

    Returns a text description in the given language code, for the given phone
    number's region, or an empty string if no description is available.r   r   ZZ)r   country_codelen_region_display_namer   r   r   )numobjlangscriptregionregion_codesregion_where_number_is_validregion_codes          G/var/www/html/env/lib/python3.11/site-packages/phonenumbers/geocoder.pyr   r   K   s    $ 11DEEL
<A#LOT66JJJ'(ww$' 	; 	;K)&+>> ; 01T77::))))/:,#$@$PVWWW    c                    | t           v rpt           |                              |d          }|                    d          r+|dd          }t           |                              |d          }t          |          S t          S )N *r   )r   get
startswithr   r   )r)   r$   r%   r&   name
other_langs         r*   r"   r"   m   sw    k!!;'++D"55??3 	@ abbJ{+//
B??Dd||r+   c                 &   t          |           }|||k    rt          | j                  }t          |           }|t          k    r|                    |          rn|t          |          d         }t          | j                  }	 t          ||          }n# t          $ r | }Y nw xY wt          t          t          ||||          }nt          t          t          | |||          }|dk    r|S t          | |||          S t          ||||          S )a  Return a text description of a PhoneNumber object, in the language
    provided.

    The description might consist of the name of the country where the phone
    number is from and/or the name of the geographical area the phone number
    is from if more detailed information is available.

    If the phone number is from the same region as the user, only a
    lower-level description will be returned, if one exists. Otherwise, the
    phone number's region will be returned, with optionally some more detailed
    information.

    For example, for a user from the region "US" (United States), we would
    show "Mountain View, CA" for a particular number, omitting the United
    States from the description. For a user from the United Kingdom (region
    "GB"), for the same number we may show "Mountain View, CA, United States"
    or even just "United States".

    This function assumes the validity of the number passed in has already
    been checked, and that the number is suitable for geocoding.  We consider
    fixed-line and mobile numbers possible candidates for geocoding.

    Arguments:
    numobj -- A valid 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 -- The region code for a given user. This region will be omitted
                  from the description if the phone number comes from this
                  region. It should be a two-letter upper-case CLDR region
                  code.

    Returns a text description in the given language code, for the given phone
    number, or an empty string if the number could come from multiple countries,
    or the country code is in fact invalid.Nr-   )r   r	   r    r
   r   r0   r!   r   r   r   r   r   r   r   r"   )	r#   r$   r%   r&   number_regionmobile_tokennational_numbercopied_numobjarea_descriptions	            r*   r   r   z   sG   N +622M~=00+F,?@@5f==>))o.H.H.V.V) .c,.?.?.@.@AO1&2EFFF' %ov > >' ' ' ' &'  >lLb>KTSY[a c  c  >lLb>DdFTZ \  \r!!## +64HHH $M4HHHs   B B'&B'c                     t          |           }|t          j        k    rdS t          || j                  st          | |||          S t          | |||          S )ax  Return a text description of a PhoneNumber object for the given language.

    The description might consist of the name of the country where the phone
    number is from and/or the name of the geographical area the phone number
    is from.  This function explicitly checks the validity of the number passed in

    Arguments:
    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 -- The region code for a given user. This region will be omitted
                  from the description if the phone number comes from this
                  region. It should be a two-letter upper-case CLDR region
                  code.

    Returns a text description in the given language code, for the given phone
    number, or an empty string if no description is available.r-   )r   r   UNKNOWNr   r    r   r   )r#   r$   r%   r&   ntypes        r*   r   r      sb    * E'''r(0CDD E&vtVVDDD'ffEEEr+   __main__)NN)(__doc__utilr   r   r   r   phonenumberutilr   r   r	   r
   r   r   r   r   r   r   r   prefixr   geodatar   r   geodata.localer   ImportErrorossyspathbasenameargvstderr__all__r   r"   r   r   __name__doctesttestmod r+   r*   <module>rO      sm   \ 2 1 1 1 1 1 1 1 1 1 1 1 D D D D D D D D [ [ [ [ [ [ [ [ [ [ X X X X X X X X T T T T T T T T T T 8 8 8 8 8 8 2 2 2 2 2 2========+++++++    IIIJJJ
!%%)BBB
!%%)===PWZWabbbbdAAo$6$678!"dAAo$6$678 	 `
_
_X X X XD
 
 
 
CI CI CI CIPF F F F: zNNNGO s    A BC%$C%