o
    i3                     @   sj   d Z ddlmZmZmZ ddlmZmZmZmZm	Z	 G dd de
ZG dd deZG dd	 d	eeZd
S )zPhoneNumber object definition   )UnicodeMixinImmutableMixinmutating_method)to_longunicodrprforce_unicodeuc                   @   s0   e Zd ZdZdZdZdZdZdZe	dd Z
d	S )
CountryCodeSourcez0The source from which a country code is derived.    r      
      c                 C   sf   |t jkr	tdS |t jkrtdS |t jkrtdS |t jkr$tdS |t jkr-tdS td| S )z;Return a string representation of a CountryCodeSource valueUNSPECIFIEDFROM_NUMBER_WITH_PLUS_SIGNFROM_NUMBER_WITH_IDDFROM_NUMBER_WITHOUT_PLUS_SIGNFROM_DEFAULT_COUNTRYzINVALID (%d))r
   r   r	   r   r   r   r   )clsval r   x/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/phonenumbers/phonenumber.py	to_string3   s   




zCountryCodeSource.to_stringN)__name__
__module____qualname____doc__r   r   r   r   r   classmethodr   r   r   r   r   r
      s    r
   c                   @   s\   e Zd ZdZddddddejdfddZdd Zdd Zd	d
 Z	dd Z
dd Zdd ZdS )PhoneNumberzClass representing international telephone numbers.

    This class is hand-created based on phonenumber.proto. Please refer
    to that file for detailed descriptions of the meaning of each field.
    Nc	           	      C   s   |d u rd | _ nt|| _ |d u rd | _nt|| _t|| _|d u r'd | _nt|| _|d u r4d | _nt|| _t|| _	|| _
| j
d u rJtj| _
t|| _d S N)country_codeintnational_numberr   r   	extensionitalian_leading_zeroboolnumber_of_leading_zeros	raw_inputcountry_code_sourcer
   r   preferred_domestic_carrier_code)	selfr    r"   r#   r$   r&   r'   r(   r)   r   r   r   __init__K   s$   







zPhoneNumber.__init__c                 C   s6   d| _ d| _d| _d| _d| _d| _tj| _d| _	dS )z Erase the contents of the objectN)
r    r"   r#   r$   r&   r'   r
   r   r(   r)   r*   r   r   r   clear   s   
zPhoneNumber.clearc                 C   s   |j dur	|j | _ |jdur|j| _|jdur|j| _|jdur$|j| _|jdur-|j| _|jdur6|j| _|jtjur@|j| _|j	durK|j	| _	dS dS )z@Merge information from another PhoneNumber object into this one.N)
r    r"   r#   r$   r&   r'   r(   r
   r   r)   r*   otherr   r   r   
merge_from   s"   






zPhoneNumber.merge_fromc                 C   sv   t |tsdS | j|jko:| j|jko:| j|jko:t| jt|jko:| j|jko:| j|jko:| j	|j	ko:| j
|j
kS )NF)
isinstancer   r    r"   r#   r%   r$   r&   r'   r(   r)   r.   r   r   r   __eq__   s"   






zPhoneNumber.__eq__c                 C   s   |  | S r   )r2   r.   r   r   r   __ne__   s   zPhoneNumber.__ne__c              
   C   s8   t dt| j| j| jt| j| j| j| j	t| j
f S )Nz%s(country_code=%s, national_number=%s, extension=%s, italian_leading_zero=%s, number_of_leading_zeros=%s, country_code_source=%s, preferred_domestic_carrier_code=%s))r   typer   r    r"   r   r#   r$   r&   r(   r)   r,   r   r   r   __repr__   s   zPhoneNumber.__repr__c                 C   s   t d| j| jf }| jd ur|t d| j 7 }| jd ur&|t d| j 7 }| jd ur4|t d| j 7 }| jtjurC|t d| j 7 }| j	d urQ|t d| j	 7 }|S )Nz$Country Code: %s National Number: %sz Leading Zero(s): %sz Number of leading zeros: %dz Extension: %sz Country Code Source: %sz$ Preferred Domestic Carrier Code: %s)
r   r    r"   r$   r&   r#   r(   r
   r   r)   )r*   resultr   r   r   __unicode__   s    




zPhoneNumber.__unicode__)r   r   r   r   r
   r   r+   r-   r0   r2   r3   r5   r7   r   r   r   r   r   D   s"    
mr   c                       s,   e Zd ZdZdd Ze fddZ  ZS )FrozenPhoneNumberz Immutable version of PhoneNumberc              	   C   s,   t | j| j| jt| j| j| j| j| j	fS r   )
hashr    r"   r#   r%   r$   r&   r'   r(   r)   r,   r   r   r   __hash__  s   zFrozenPhoneNumber.__hash__c                    s`   t |dkr#t |dkr#t|d tr#tt| jdi |d j d S tt| j|i | d S )Nr   r   r   )lenr1   r   superr8   r+   __dict__)r*   argskwargs	__class__r   r   r+     s   & zFrozenPhoneNumber.__init__)r   r   r   r   r:   r   r+   __classcell__r   r   r@   r   r8     s
    
r8   N)r   utilr   r   r   r   r   r   r   r	   objectr
   r   r8   r   r   r   r   <module>   s    - @