U
    Wh>                     @   s   d Z ddlZddlmZmZmZ ddlmZmZmZm	Z	 edZ
G dd deeZG d	d
 d
eeZdd ZG dd deeZdS )z PhoneMetadata object definitions    N   )UnicodeMixinImmutableMixinmutating_method)uunicodrprforce_unicodeZ001c                   @   sF   e Zd ZdZedddZdd Zdd Zd	d
 Zdd Z	dd Z
dS )NumberFormatzERepresentation of way that a phone number can be formatted for outputNc                 C   sd   t || _t || _g | _|d k	r2dd |D | _t || _|d k	rPt|| _nd | _t || _d S )Nc                 S   s   g | ]}t |qS  )r	   ).0pr   r   \/var/www/html/arya_register/venvv2/lib/python3.8/site-packages/phonenumbers/phonemetadata.py
<listcomp>D   s     z)NumberFormat.__init__.<locals>.<listcomp>)r	   patternformatleading_digits_patternnational_prefix_formatting_rulebool(national_prefix_optional_when_formatting%domestic_carrier_code_formatting_rule)selfr   r   r   r   r   r   r   r   r   __init__   s    



zNumberFormat.__init__c                 C   sl   |j dk	r|j | _ |jdk	r$|j| _| j|j |jdk	rD|j| _|jdk	rV|j| _|jdk	rh|j| _dS )zAMerge information from another NumberFormat object into this one.N)r   r   r   extendr   r   r   r   otherr   r   r   
merge_froml   s    




zNumberFormat.merge_fromc                 C   s   t |tsdS t| t|kS NF)
isinstancer
   reprr   r   r   r   __eq__z   s    
zNumberFormat.__eq__c                 C   s   |  | S Nr    r   r   r   r   __ne__   s    zNumberFormat.__ne__c                 C   s   t | S r!   strr   r   r   r   __repr__   s    zNumberFormat.__repr__c                 C   s   t dt| jt| jf }| jrH|t dt ddd | jD  7 }| jd k	rh|t dt| j 7 }| jd k	r|t dt| j 7 }| j	d k	r|t dt| j	 7 }|t d	7 }|S )
Nz"NumberFormat(pattern=%s, format=%sz, leading_digits_pattern=[%s], c                 S   s   g | ]}t |qS r   )r   )r   ldr   r   r   r      s     z,NumberFormat.__unicode__.<locals>.<listcomp>z$, national_prefix_formatting_rule=%sz-, national_prefix_optional_when_formatting=%sz*, domestic_carrier_code_formatting_rule=%s))
r   r   r   r   r   joinr   r   r%   r   r   resultr   r   r   __unicode__   s    


zNumberFormat.__unicode__)NNNNNN__name__
__module____qualname____doc__r   r   r   r    r#   r'   r.   r   r   r   r   r
      s         Or
   c                   @   sF   e Zd ZdZedddZdd Zdd Zd	d
 Zdd Z	dd Z
dS )PhoneNumberDescz=Class representing the description of a set of phone numbers.Nc                 C   s<   t || _t || _|d kr d}|| _|d kr2d}|| _d S )Nr   )r	   national_number_patternexample_numberpossible_lengthpossible_length_local_only)r   r5   r6   r7   r8   r   r   r   r      s    	


zPhoneNumberDesc.__init__c                 C   s(   |j dk	r|j | _ |jdk	r$|j| _dS )zDMerge information from another PhoneNumberDesc object into this one.N)r5   r6   r   r   r   r   r      s    

zPhoneNumberDesc.merge_fromc                 C   s   t |tsdS t| t|kS r   )r   r4   r   r   r   r   r   r       s    
zPhoneNumberDesc.__eq__c                 C   s   |  | S r!   r"   r   r   r   r   r#      s    zPhoneNumberDesc.__ne__c                 C   s   t | S r!   r$   r&   r   r   r   r'      s    zPhoneNumberDesc.__repr__c                 C   s   t d}t d}| jd k	r<|t d|t| jf 7 }t d}| jd k	rh|t d|t| jf 7 }t d}| jr|t d|t| jf 7 }t d}| jr|t d|t| jf 7 }t d}|t d7 }|S )	NzPhoneNumberDesc( z%snational_number_pattern=%sr(   z%sexample_number=%sz%spossible_length=%sz%spossible_length_local_only=%sr*   )r   r5   r   r6   r7   tupler8   )r   r-   sepr   r   r   r.      s     

zPhoneNumberDesc.__unicode__)NNNNr/   r   r   r   r   r4      s       )r4   c                 C   s4   | d kr|d krdS | d ks$|d kr(dS | j |j kS )NTF)r5   )leftrightr   r   r   _same_pattern   s
    r>   c                !   @   s   e Zd ZdZe Zi Zi Zi Z	i Z
i Zi ZedddZed ddZed!ddZed	d
 Zedd Zedd Zedd Zedd Zed"ddZdd Zdd Zdd Zdd ZdS )#PhoneMetadataa8  Class representing metadata for international telephone numbers for a region.

    This class is hand created based on phonemetadata.proto. Please refer to that file
    for detailed descriptions of the meaning of each field.

    WARNING: This API isn't stable. It is considered libphonenumber-internal
    and can change at any time. We only declare it as public for easy
    inclusion in our build tools not in this package.  Clients should not
    refer to this file, we do not commit to support backwards-compatibility or
    to warn about breaking changes.

    Nc                 C   sJ   | j |d }|d k	r<| j  || d | j |< | j  | j||S r!   )_region_availableget_metadata_lockacquirerelease_region_metadataklsregion_codedefaultloaderr   r   r   metadata_for_region  s    


z!PhoneMetadata.metadata_for_regionc                 C   sJ   | j |d }|d k	r<| j  || d | j |< | j  | j||S r!   )_short_region_availablerA   rB   rC   rD   _short_region_metadatarF   r   r   r   short_metadata_for_region  s    


z'PhoneMetadata.short_metadata_for_regionc                 C   sJ   | j |d }|d k	r<| j  || d | j |< | j  | j||S r!   )_country_code_availablerA   rB   rC   rD   _country_code_metadata)rG   country_coderI   rJ   r   r   r   metadata_for_nongeo_region)  s    


z(PhoneMetadata.metadata_for_nongeo_regionc                 C   s$   |t kr| |d S | |d S d S r!   )REGION_CODE_FOR_NON_GEO_ENTITYrR   rK   )rG   Zcountry_calling_coderH   r   r   r   #metadata_for_region_or_calling_code4  s    z1PhoneMetadata.metadata_for_region_or_calling_codec                 C   s   || j |< d S r!   )r@   rG   rH   rJ   r   r   r   register_region_loader;  s    z$PhoneMetadata.register_region_loaderc                 C   s   || j |< d S r!   )rL   rU   r   r   r   register_short_region_loader?  s    z*PhoneMetadata.register_short_region_loaderc                 C   s   || j |< d S r!   )rO   )rG   rQ   rJ   r   r   r   register_nongeo_region_loaderC  s    z+PhoneMetadata.register_nongeo_region_loaderc                 C   sh   t | j D ]"\}}|dk	r|| d| j|< qt | j D ]"\}}|dk	r@|| d| j|< q@dS )z$Force immediate load of all metadataN)listr@   itemsrO   )rG   rH   Zregion_loaderrQ   Z	cc_loaderr   r   r   load_allG  s    zPhoneMetadata.load_allFTc"           #      C   s  || _ || _|| _|| _|| _|| _|| _|	| _|
| _|| _	|| _
|| _|| _|| _|| _|| _|| _t|| _|| _t|| _t|| _t|| _t|| _t|| _t|| _t| j| j| _g | _|d k	r|| _g | _|d k	r|| _t|| _t|| _ t|| _!|| _"| | _#|!r| jt$krr| jt%j&krdt%j&| j }"| |"krpt'd| j| j| jf n| t%j&| j< n| j#r| jt%j(krt%j(| j }"| |"krt'd| j| j| jf n| t%j(| j< nJ| jt%j)krt%j)| j }"| |"krt'd| j| j| jf n| t%j)| j< d S )Nz3Duplicate non-geo PhoneMetadata for %s (from %s:%s)z1Duplicate short PhoneMetadata for %s (from %s:%s)z+Duplicate PhoneMetadata for %s (from %s:%s))*general_desc
fixed_linemobile	toll_freepremium_rateshared_costpersonal_numbervoippageruan	emergency	voicemail
short_codestandard_ratecarrier_specificsms_servicesno_international_diallingr	   idrQ   international_prefixpreferred_international_prefixnational_prefixpreferred_extn_prefixnational_prefix_for_parsingnational_prefix_transform_ruler>   Z"same_mobile_and_fixed_line_patternnumber_formatintl_number_formatr   main_country_for_codeleading_digitsleading_zero_possiblemobile_number_portable_region
short_datarS   r?   rP   	ExceptionrM   rE   )#r   rm   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rQ   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   registerr   r   r   r   r   T  sn    *





	

	




zPhoneMetadata.__init__c                 C   s   t |tsdS t| t|kS r   )r   r?   r   r   r   r   r   r    5  s    
zPhoneMetadata.__eq__c                 C   s   |  | S r!   r"   r   r   r   r   r#   :  s    zPhoneMetadata.__ne__c                 C   s   t | S r!   r$   r&   r   r   r   r'   =  s    zPhoneMetadata.__repr__c                 C   s|  t d| j| jt| jf }|t d| j 7 }| jd k	rJ|t d| j 7 }| jd k	rf|t d| j 7 }| jd k	r|t d| j 7 }| j	d k	r|t d| j	 7 }| j
d k	r|t d| j
 7 }| jd k	r|t d| j 7 }| jd k	r|t d	| j 7 }| jd k	r|t d
| j 7 }| jd k	r.|t d| j 7 }| jd k	rL|t d| j 7 }| jd k	rj|t d| j 7 }| jd k	r|t d| j 7 }| jd k	r|t d| j 7 }| jd k	r|t d| j 7 }| jd k	r|t d| j 7 }| jd k	r |t d| j 7 }| jd k	r"|t dt| j 7 }| jd k	rD|t dt| j 7 }| jd k	rf|t dt| j 7 }| jd k	r|t dt| j 7 }| jd k	r|t dt| j 7 }| jr|t dt dtt| j 7 }| jr|t dt dtt| j 7 }| j r|t d7 }| j!d k	r0|t d| j! 7 }| j"rD|t d7 }| j#rX|t d7 }| j$rl|t d7 }|t d 7 }|S )!Nz?PhoneMetadata(id='%s', country_code=%r, international_prefix=%sz,
    general_desc=%sz,
    fixed_line=%sz,
    mobile=%sz,
    toll_free=%sz,
    premium_rate=%sz,
    shared_cost=%sz,
    personal_number=%sz,
    voip=%sz,
    pager=%sz,
    uan=%sz,
    emergency=%sz,
    voicemail=%sz,
    short_code=%sz,
    standard_rate=%sz,
    carrier_specific=%sz,
    sms_services=%sz",
    no_international_dialling=%sz',
    preferred_international_prefix=%sz,
    national_prefix=%sz,
    preferred_extn_prefix=%sz$,
    national_prefix_for_parsing=%sz',
    national_prefix_transform_rule=%sz,
    number_format=[%s]z
,
        z,
    intl_number_format=[%s]z ,
    main_country_for_code=Truez,
    leading_digits='%s'z ,
    leading_zero_possible=Truez(,
    mobile_number_portable_region=Truez,
    short_data=Truer*   )%r   rm   rQ   r   rn   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   ro   rp   rq   rr   rs   rt   r+   mapr   ru   rv   rw   rx   ry   rz   r,   r   r   r   r.   @  s|    






""zPhoneMetadata.__unicode__)N)N)N) NNNNNNNNNNNNNNNNNNNNNNNNNNFNFFFT)r0   r1   r2   r3   	threadingLockrB   r@   rL   rO   rE   rM   rP   classmethodrK   rN   rR   rT   rV   rW   rX   r[   r   r   r    r#   r'   r.   r   r   r   r   r?      s~   







                                 ar?   )r3   r~   utilr   r   r   r   r   r   r	   rS   r
   r4   r>   r?   r   r   r   r   <module>   s   |R