
    Th>                         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ee      Z G d	 d
ee      Zd Z G d dee      Zy)z PhoneMetadata object definitions    N   )UnicodeMixinImmutableMixinmutating_method)uunicodrprforce_unicode001c                   L    e Zd ZdZe	 	 	 	 	 	 d	d       Zd Zd Zd Zd Z	d Z
y)
NumberFormatzERepresentation of way that a phone number can be formatted for outputNc                    t        |      | _        t        |      | _        g | _        ||D cg c]  }t        |       c}| _        t        |      | _        |t        |      | _        nd | _        t        |      | _        y c c}w N)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   ps           Z/opt/server/standalone/crm/venv/lib/python3.12/site-packages/phonenumbers/phonemetadata.py__init__zNumberFormat.__init__   s     %W- $F+$ ')#!-E[*\=+;*\D'& 0==\/], 4?<@Ai<jD9<@D9 6CCh5i2M +]s   Bc                 r   |j                   |j                   | _         |j                  |j                  | _        | j                  j                  |j                         |j                  |j                  | _        |j
                  |j
                  | _        |j                  |j                  | _        yy)zAMerge information from another NumberFormat object into this one.N)r   r   r   extendr   r   r   r   others     r   
merge_fromzNumberFormat.merge_froml   s    ==$ ==DL<<#,,DK##**5+G+GH00<383X3XD099E<A<j<jD966B9>9d9dD6 C    c                 R    t        |t              syt        |       t        |      k(  S NF)
isinstancer   reprr   s     r   __eq__zNumberFormat.__eq__z   s"    %.T
d5k)*r    c                 &    | j                  |       S r   r%   r   s     r   __ne__zNumberFormat.__ne__       ;;u%%%r    c                     t        |       S r   strr   s    r   __repr__zNumberFormat.__repr__       4yr    c           
      d   t        d      t        | j                        t        | j                        fz  }| j                  rJ|t        d      t        d      j                  | j                  D cg c]  }t        |       c}      z  z  }| j                  $|t        d      t        | j                        z  z  }| j                  $|t        d      t        | j                        z  z  }| j                  $|t        d      t        | j                        z  z  }|t        d      z  }|S c c}w )Nz"NumberFormat(pattern=%s, format=%sz, leading_digits_pattern=[%s], 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   resultlds      r   __unicode__zNumberFormat.__unicode__   s*    <=T\\ARTWX\XcXcTd@ee&&v=>d|((D<W<W)Xb#b')XYZ [F//;fCDs4KoKoGpppF88DfLMPSTX  UB  UB  QC  C  CF55AfIJSQUQ{Q{M|||F&+ *Ys   0D-)NNNNNN__name__
__module____qualname____doc__r   r   r   r%   r(   r.   r6    r    r   r   r      sH    O(,15:>7;Mj Mj^e+
&r    r   c                   H    e Zd ZdZe	 	 	 	 d	d       Zd Zd Zd Zd Z	d Z
y)
PhoneNumberDescz=Class representing the description of a set of phone numbers.Nc                 p    t        |      | _        t        |      | _        |d}|| _        |d}|| _        y )Nr<   )r
   national_number_patternexample_numberpossible_lengthpossible_length_local_only)r   r@   rA   rB   rC   s        r   r   zPhoneNumberDesc.__init__   sL     (55L'M$ ,N; " O. &-)+&*D'r    c                 z    |j                   |j                   | _         |j                  |j                  | _        yy)zDMerge information from another PhoneNumberDesc object into this one.N)r@   rA   r   s     r   r   zPhoneNumberDesc.merge_from   s;    ((4+0+H+HD(+"'"6"6D ,r    c                 R    t        |t              syt        |       t        |      k(  S r"   )r#   r>   r$   r   s     r   r%   zPhoneNumberDesc.__eq__   s"    %1T
d5k)*r    c                 &    | j                  |       S r   r'   r   s     r   r(   zPhoneNumberDesc.__ne__   r)   r    c                     t        |       S r   r+   r-   s    r   r.   zPhoneNumberDesc.__repr__   r/   r    c                 6   t        d      }t        d      }| j                  1|t        d      |t        | j                        fz  z  }t        d      }| j                  1|t        d      |t        | j                        fz  z  }t        d      }| j                  r1|t        d      |t        | j                        fz  z  }t        d      }| j                  r1|t        d      |t        | j                        fz  z  }t        d      }|t        d      z  }|S )	NzPhoneNumberDesc( z%snational_number_pattern=%sr1   z%sexample_number=%sz%spossible_length=%sz%spossible_length_local_only=%sr2   )r   r@   r	   rA   rB   tuplerC   )r   r4   seps      r   r6   zPhoneNumberDesc.__unicode__   s   *+Rj''3f;<SIeIeEf?gggF,C*f23sC@S@S<T6UUUF,Cf34U4CWCW=X7YYYF,C**f>?3dNmNmHnBoooF,C&+r    )NNNNr7   r<   r    r   r>   r>      s?    G)- $!%,0	'E 'ER7+
&r    r>   c                 H    | |y| |y| j                   |j                   k(  S )NTF)r@   )leftrights     r   _same_patternrO      s1    ||u}((E,I,IIJr    c                   :   e Zd ZdZ ej
                         Zi Zi Zi Z	i Z
i Zi Zedd       Zedd       Zedd       Zed        Zed        Zed        Zed	        Zed
        Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zd Zd Zd Zd Zy)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                    | j                   j                  |d       }|K| j                  j                           ||       d | j                   |<   | j                  j	                          | j
                  j                  ||      S r   )_region_availableget_metadata_lockacquirerelease_region_metadataklsregion_codedefaultloaders       r   metadata_for_regionz!PhoneMetadata.metadata_for_region  su    &&**;=&&(;15C!!+.&&(##''W==r    c                    | j                   j                  |d       }|K| j                  j                           ||       d | j                   |<   | j                  j	                          | j
                  j                  ||      S r   )_short_region_availablerT   rU   rV   rW   _short_region_metadatarY   s       r   short_metadata_for_regionz'PhoneMetadata.short_metadata_for_region  su    ,,00dC&&(;7;C''4&&())--k7CCr    c                    | j                   j                  |d       }|K| j                  j                           ||       d | j                   |<   | j                  j	                          | j
                  j                  ||      S r   )_country_code_availablerT   rU   rV   rW   _country_code_metadata)rZ   country_coder\   r]   s       r   metadata_for_nongeo_regionz(PhoneMetadata.metadata_for_nongeo_region)  su    ,,00tD&&(< 8<C''5&&())--lGDDr    c                 \    |t         k(  r| j                  |d       S | j                  |d       S r   )REGION_CODE_FOR_NON_GEO_ENTITYrg   r^   )rZ   country_calling_coder[   s      r   #metadata_for_region_or_calling_codez1PhoneMetadata.metadata_for_region_or_calling_code4  s2    88112FMM**;==r    c                 "    || j                   |<   y r   )rS   rZ   r[   r]   s      r   register_region_loaderz$PhoneMetadata.register_region_loader;  s    -3k*r    c                 "    || j                   |<   y r   )r`   rm   s      r   register_short_region_loaderz*PhoneMetadata.register_short_region_loader?  s    39##K0r    c                 "    || j                   |<   y r   )rd   )rZ   rf   r]   s      r   register_nongeo_region_loaderz+PhoneMetadata.register_nongeo_region_loaderC  s    4:##L1r    c                    t        | j                  j                               D ]  \  }}|	 ||       d| j                  |<   ! t        | j                  j                               D ]  \  }}|	 ||       d| j                  |<   ! y)z$Force immediate load of all metadataN)listrS   itemsrd   )rZ   r[   region_loaderrf   	cc_loaders        r   load_allzPhoneMetadata.load_allG  s     +/s/D/D/J/J/L*M 	:&K(k*59%%k2	: (,C,G,G,M,M,O'P 	A#L)$,'<@++L9	Ar    c"           	         || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        || _        || _        || _        || _        || _        || _        t#        |      | _        || _        t#        |      | _        t#        |      | _        t#        |      | _        t#        |      | _        t#        |      | _        t#        |      | _        t5        | j                  | j                        | _        g | _        ||| _        g | _        ||| _        t=        |      | _        t#        |      | _         t=        |      | _!        || _"        | | _#        |!r| j$                  tH        k(  r| j&                  tJ        jL                  v rUtJ        jL                  | j&                     }"| |"k7  rQtO        d| j&                  d| j$                  d| j&                  d      | tJ        jL                  | j&                  <   y y | jF                  r| j$                  tJ        jP                  v rUtJ        jP                  | j$                     }"| |"k7  rQtO        d| j$                  d| j$                  d| j&                  d      | tJ        jP                  | j$                  <   y y | j$                  tJ        jR                  v rVtJ        jR                  | j$                     }"| |"k7  r3tO        d| j$                  d| j$                  d| j&                  d      y | tJ        jR                  | j$                  <   y y )Nz$Duplicate non-geo PhoneMetadata for z (from :r2   z"Duplicate short PhoneMetadata for zDuplicate PhoneMetadata for )*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
   idrf   international_prefixpreferred_international_prefixnational_prefixpreferred_extn_prefixnational_prefix_for_parsingnational_prefix_transform_rulerO   "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_datari   rQ   re   	Exceptionra   rX   )#r   r   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   registerr   s#                                      r   r   zPhoneMetadata.__init__T  s!   T )$"(&.	
""$* 0( *C&  #
 ) %22F$G! /<<Z.[+  -_= &33H%I" ,99T+U( /<<Z.[+ 3@T__2]/  $!.D6 #%)&8D# &**?%@" ,N; &**?%@" .K* %ww88$$(L(LL)@@ARARSEu}'aearartxt{t{  ~B  ~O  ~O  )P  Q  QNRM889J9JK % 77mBBB)@@IEu}'_c_f_fhlhohoqu  rC  rC  )D  E  EDHM88A %
 77m<<<)::477CEu}'Y]Y`Y`bfbibikok|k|(}~~ % ?CM22477;- r    c                 R    t        |t              syt        |       t        |      k(  S r"   )r#   rQ   r$   r   s     r   r%   zPhoneMetadata.__eq__5  s"    %/T
d5k)*r    c                 &    | j                  |       S r   r'   r   s     r   r(   zPhoneMetadata.__ne__:  r)   r    c                     t        |       S r   r+   r-   s    r   r.   zPhoneMetadata.__repr__=  r/   r    c                 	   t        d      | j                  | j                  t        | j                        fz  }|t        d      | j
                  z  z  }| j                  |t        d      | j                  z  z  }| j                  |t        d      | j                  z  z  }| j                  |t        d      | j                  z  z  }| j                  |t        d      | j                  z  z  }| j                  |t        d      | j                  z  z  }| j                  |t        d      | j                  z  z  }| j                  |t        d	      | j                  z  z  }| j                  |t        d
      | j                  z  z  }| j                  |t        d      | j                  z  z  }| j                  |t        d      | j                  z  z  }| j                   |t        d      | j                   z  z  }| j"                  |t        d      | j"                  z  z  }| j$                  |t        d      | j$                  z  z  }| j&                  |t        d      | j&                  z  z  }| j(                  |t        d      | j(                  z  z  }| j*                  |t        d      | j*                  z  z  }| j,                  $|t        d      t        | j,                        z  z  }| j.                  $|t        d      t        | j.                        z  z  }| j0                  $|t        d      t        | j0                        z  z  }| j2                  $|t        d      t        | j2                        z  z  }| j4                  $|t        d      t        | j4                        z  z  }| j6                  rA|t        d      t        d      j9                  t;        t<        | j6                              z  z  }| j>                  rA|t        d      t        d      j9                  t;        t<        | j>                              z  z  }| j@                  r|t        d      z  }| jB                  |t        d      | jB                  z  z  }| jD                  r|t        d      z  }| jF                  r|t        d      z  }| jH                  r|t        d      z  }|t        d       z  }|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=Truer2   )%r   r   rf   r	   r   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   mapr   r   r   r   r   r   r   )r   r4   s     r   r6   zPhoneMetadata.__unicode__@  s   Z[77D--s43L3L/MNO&12T5F5FFF??&f34tFFF;;"f/04;;>>F>>%f23dnnDDF(f569J9JJJF'f458H8HHHF+f89D<P<PPPF99 f-.::F::!f./$**<<F88f_-88F>>%f23dnnDDF>>%f23dnnDDF??&f34tFFF)f67$:L:LLLF  ,f9:T=R=RRRF(f569J9JJJF))5fBCdFdFdddF..:fGH3tOrOrKsssF+f89C@T@T<UUUF%%1f>?#dF`F`BaaaF++7fDEDLlLlHmmmF..:fGH3tOrOrKsssFf89F=<Q<V<VWZ[\^b^p^pWq<rrrF""f=>AVA[A[\_`acgczcz\{A|||F%%f@AAF*f9:T=P=PPPF%%f@AAF--fHIIF??f566F&+r    r   ) NNNNNNNNNNNNNNNNNNNNNNNNNNFNFFFT)r8   r9   r:   r;   	threadingLockrU   rS   r`   rd   rX   ra   re   classmethodr^   rb   rg   rk   rn   rp   rr   rx   r   r   r%   r(   r.   r6   r<   r    r   rQ   rQ      st    $Y^^%N
   
  > > D D E E > > 4 4 : : ; ; 
A 
A  # "!!% #"&"+/"&*04!%'+-104#$(', $',/4!C^C ^C@+
&@r    rQ   )r;   r   utilr   r   r   r   r   r	   r
   ri   r   r>   rO   rQ   r<   r    r   <module>r      s[    &$  ? ? / /!"5 y< yxOlN OdKPL. Pr    