+
    7*ilV  c                   s   ^ RI t ^ RIHtHtHtHtHtHtHtH	t	 ^ RI
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHtHt ^ RIH t H!t! ]'       dD   ^ RI"s"^ RI#H$t$ ^ RI%H&t& ^ R	I'H(t( ^ R
I)H*t* ]]*RR3,          t+ ! R R]$RR7      t, ! R R]$RR7      t-MRs" ! R R].4      t,]]/]0]1]]]/]0]13,          ]]/]13,          3,          3,          t2. RQOt3Rs4Rs5Rs6Rs7Rs8R!t9R"t:R#t;R$t<R%t=R&t>R' R( lt?R) R* lt@R+ R, ltAR- R. ltBR/ R0 ltC ! R1 R]/4      tD ! R2 R]D4      tE ! R3 R]E4      tF ! R4 R]D4      tG ! R5 R6]D4      tH ! R7 R]H4      tI ! R8 R]D4      tJ ! R9 R]D4      tK ! R: R]D4      tL ! R; R]D4      tM ! R< R ]D4      tNR=R>R?^R@RRRAR>RBR>RCR/RD RE lltORF RG ltP ! RH R]/4      tQ ! RI R]4      tR ! RJ R]4      tS ! RK R]4      tT ! RL R]	4      tU] P                  ! RM4      tWRNtX RO RP ltYR# )S    N)IPv4AddressIPv4InterfaceIPv4NetworkIPv6AddressIPv6InterfaceIPv6Network_BaseAddress_BaseNetwork)TYPE_CHECKINGAny
CollectionDict	GeneratorListMatchOptionalPatternSetTupleTypeUnioncastno_type_check)errors)Representationupdate_not_none)constr_length_validatorstr_validator)	TypedDict)
BaseConfig)
ModelField)AnyCallablec                   s,   a  ] tR t^,t o V 3R ltRtV tR# )Partsc                s"  < V ^8  d   Qh/ S[ ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R	&   S[S[ ,          ;R
&   # )   schemeuserpasswordipv4ipv6domainportpathqueryfragmentstrr   format__classdict__   "9/usr/lib/python3.14/site-packages/pydantic/v1/networks.py__annotate__ZParts.__annotate__,   s      sm  3-  sm	 
 sm    sm  sm  }  3-      N__name__
__module____qualname____firstlineno____annotate_func____static_attributes____classdictcell__r1      @r3   r!   r!   ,         r5   r!   F)Ztotalc                   s,   a  ] tR t^8t o V 3R ltRtV tR# )	HostPartsc                s   < V ^8  d   Qh/ S[ ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[;R&   # )r"   hosttld	host_typer)   rebuild)r.   r   boolr/   r2   r3   r4   ZHostParts.__annotate__8   sL     	 c]  C=   sm	 
  r5   r6   Nr7   r?   r@   r3   rB   rB   8   rA   r5   rB   c                   s    ] tR t^BtRtR# )r!   r6   N)r8   r9   r:   r;   r=   r6   r5   r3   r!   r!   B   s    r5   AnyUrl
AnyHttpUrlFileUrlHttpUrlEmailStr	NameEmailIPvAnyAddressIPvAnyInterfaceIPvAnyNetworkPostgresDsnCockroachDsnAmqpDsnRedisDsnMongoDsnKafkaDsnz(?:(?P<ipv4>(?:\d{1,3}\.){3}\d{1,3})(?=$|[/:#?])|(?P<ipv6>\[[A-F0-9]*:[A-F0-9:]+\])(?=$|[/:#?])|(?P<domain>[^\s/:?#]+))?(?::(?P<port>\d+))?z&(?:(?P<scheme>[a-z][a-z0-9+\-.]+)://)?z3(?:(?P<user>[^\s:/]*)(?::(?P<password>[^\s/]*))?@)?z(?P<path>/[^\s?#]*)?z(?:\?(?P<query>[^\s#]*))?z(?:#(?P<fragment>[^\s#]*))?c                :    V ^8  d   QhR\         \        ,          /# r"   returnr   r.   r0      "r3   r4   r4   q   s      73< r5   c                  s    \         fJ   \        P                  ! \         \         \
         \         \         \         2\        P                  4      s \         # N)
_url_regex_cacherecompile_scheme_regex_user_info_regex_host_regex_path_regex_query_regex_fragment_regex
IGNORECASEr6   r5   r3   	url_regexrh   q   sF    ::/0k]<.YhXijMM
 r5   c                rW   rX   rZ   r[   r\   r3   r4   r4   {   s     ' 'gcl 'r5   c                 s    \         fE   \        P                  ! \         \         R\
         \         \         2\        P                  4      s \         # )z
Compiled multi host url regex.

Additionally to `url_regex` it allows to match multiple hosts.
E.g. host1.db.net,host2.db.net
z(?P<hosts>([^/]*)))	_multi_host_url_regex_cacher_   r`   ra   rb   rd   re   rf   rg   r6   r5   r3   multi_host_url_regexrj   {   sK     #*&(jj/0!}\N?*;= MM	'
# '&r5   c                rW   rX   rZ   r[   r\   r3   r4   r4      s     % %GCL %r5   c                      \         f2   Rp Rp\        P                  ! RV  RV  V 2\        P                  4      s \         # )Nz'[_0-9a-z](?:[-_0-9a-z]{0,61}[_0-9a-z])?z(?P<tld>\.[a-z]{2,63})?\.?(?:\.)*?)_ascii_domain_regex_cacher_   r`   rg   )Zascii_chunkZascii_domain_ending     r3   ascii_domain_regexrp      sF     (@;$&JJ;-u[M2E1FG%
! %$r5   c                rW   rX   rZ   r[   r\   r3   r4   r4      s     # #'#, #r5   c                  rk   )NzB[_0-9a-\U00040000](?:[-_0-9a-\U00040000]{0,61}[_0-9a-\U00040000])?z<(?P<tld>(\.[^\W\d_]{2,63})|(\.(?:xn--)[_0-9a-z-]{2,63}))?\.?rl   rm   )_int_domain_regex_cacher_   r`   rg   )Z	int_chunkZint_domain_endingro   r3   int_domain_regexrr      sD    &Y	["$**I;eI;O`Na-bdfdqdq"r""r5   c                rW   rX   rZ   r[   r\   r3   r4   r4      s      GCL r5   c                  sp    \         f*   \        P                  ! \        \        P                  4      s \         # r]   )_host_regex_cacher_   r`   rc   rg   r6   r5   r3   
host_regexrt      s)     JJMM
 r5   c                   s"  a a ] tR t^t oRt^tR,tRtRtRt	Rt
]! 4       tR-t]V3R lR l4       tRRRRRRRRRRR	RR
RRRRR/	V3R lR llt]RRRRR	RR
RRRRR/V3R lR ll4       t]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]R.V3R  lR! ll4       t]V3R" lR# l4       t]V3R$ lR% l4       t]V3R& lR' l4       tV3R( lV 3R) lltV3R* ltR+t Vt!V ;t"# )/rH   TNFr$   r%   rC   rD   rE   r)   r*   r+   r,   c                s6   < V ^8  d   QhRS[ S[,          RS[/# r"   urlrY   )r   r.   Zobjectr/   r2   r3   r4   AnyUrl.__annotate__   s#     M M(3- Mf Mr5   c                s`    \         P                  Yf   V P                  ! R/ VB 4      # T4      # )Nr6   )r.   __new__build)clsrv   kwargss   &&,r3   rx   ZAnyUrl.__new__   s)    {{3{		 3F 3LLLLr5   r(   c                s   < V ^8  d   QhRS[ RS[ RS[S[ ,          RS[S[ ,          RS[S[ ,          RS[S[ ,          RS[ RS[S[ ,          R	S[S[ ,          R
S[S[ ,          RS[S[ ,          RR/# )r"   rv   r#   r$   r%   rC   rD   rE   r)   r*   r+   r,   rY   Nr-   r/   r2   r3   r4   rw      s     ! !! 	!
 sm! 3-! sm! c]! ! sm! sm! }! 3-! 
!r5   c       
        s    \         P                  V4       W n        W0n        W@n        WPn        W`n        Wpn        Wn        Wn	        Wn
        Wn        R # r]   )r.   __init__r#   r$   r%   rC   rD   rE   r)   r*   r+   r,   )selfrv   r#   r$   r%   rC   rD   rE   r)   r*   r+   r,   s   &&$$$$$$$$$$r3   r|   ZAnyUrl.__init__   sB     	S	 	"		
 r5   c                s   < V ^8  d   QhRS[ RS[S[ ,          RS[S[ ,          RS[ RS[S[ ,          RS[S[ ,          RS[S[ ,          RS[S[ ,          R	S[ R
S[ /
# )r"   r#   r$   r%   rC   r)   r*   r+   r,   _kwargsrY   r-   r/   r2   r3   r4   rw      s     ) ) ) sm	)
 3-) ) sm) sm) }) 3-) ) 
)r5   c               s   \        RR VRVRVRVRVRVRVRV/V	B p
VR,           pV'       d	   W,          pV'       d   VR	V,           ,          pV'       g	   V'       d
   VR
,          pW,          pV'       dG   RV P                  9  g&   V P                  V
4      P                  R4      V8w  d   VR	V,           ,          pV'       d	   W,          pV'       d   VRV,           ,          pV'       d   VRV,           ,          pV# )r#   r$   r%   rC   r)   r*   r+   r,   z://Z:@Z?Z#r6   )r!   hidden_partsget_default_partsget)rz   r#   r$   r%   rC   r)   r*   r+   r,   r~   partsrv   s   &$$$$$$$$,  r3   ry   ZAnyUrl.build   s     





 

 	


 

 

 

 

 

 unKC3>!C83JCV3#3#33s7L7LU7S7W7WX^7_cg7g3:CKC3;C3>!C
r5   c                :   < V ^8  d   QhRS[ S[S[3,          RR/# r"   field_schemarY   Nr   r.   r
   r/   r2   r3   r4   rw     s'     h hT#s(^ h hr5   c                sJ    \        WP                  V P                  R R7       R# )Zuri)Z	minLengthZ	maxLengthr0   N)r   
min_length
max_lengthrz   r      &&r3   __modify_schema__ZAnyUrl.__modify_schema__  s    #..afgr5   c                   < V ^8  d   QhRR/# r"   rY   CallableGeneratorr6   r/   r2   r3   r4   rw           #6 r5   c              #  *   "   V P                   x  R # 5ir]   validaterz      &r3   __get_validators__ZAnyUrl.__get_validators__       ll   c                s,   < V ^8  d   QhRS[ RRRRRR/# )r"   valuefieldr   configr   rY   rH   r
   r/   r2   r3   r4   rw     s*     - -S - -| -PX -r5   c                s   VP                   V 8X  d   V# \        V4      pV P                  '       d   VP                  4       p\	        \
        \        WV4      4      pV P                  V4      pV'       g   Q R 4       h\	        RVP                  4       4      pV P                  V4      pV P                  V4      pVP                  4       \        V4      8w  d(   \        P                  ! WEP                  4       R R7      hV P                  WTV4      # )zURL regex failed unexpectedlyr!   N)extra)	__class__r   strip_whitespacestripr   r.   r   
_match_url	groupdictapply_default_partsvalidate_partsZendlenr   ZUrlExtraError
_build_url)rz   r   r   r   rv   mZoriginal_partsr      &&&&    r3   r   ZAnyUrl.validate
  s    ??c!Le$KKME4U6JKNN3111qgq{{}5''7""5)557c#h&&S^<<~~ae,,r5   c                >   < V ^8  d   QhRS[ S[,          RS[RRRR/# )r"   r   rv   r   r!   rY   rH   r   r.   r/   r2   r3   r4   rw   !  s-     
 
5: 
C 
 
H 
r5   c                s    V P                  V4      w  rErgT ! V'       d   RMTVR,          VR,          VR,          VVVVR,          VR,          VR,          VR,          R	7      # )
zt
Validate hosts and build the AnyUrl object. Split from `validate` so this method
can be altered in `MultiHostDsn`.
Nr#   r$   r%   r)   r*   r+   r,   
r#   r$   r%   rC   rD   rE   r)   r*   r+   r,   )validate_host)rz   r   rv   r   rC   rD   rE   rF   r   r3   r   ZAnyUrl._build_url   si     ),(9(9%(@%9D?v:&vv.:&
 	
r5   c                F   < V ^8  d   QhRS[ RS[S[S[ ,          ,          /# ru   r.   r   r   r/   r2   r3   r4   rw   7  s$     & & &s 4 &r5   c                4    \        4       P                  V 4      # r]   )rh   matchrv   r   r3   r   ZAnyUrl._match_url6  s    {  %%r5   c                s4   < V ^8  d   QhRS[ S[,          RR/# )r"   r)   rY   N)r   r.   r/   r2   r3   r4   rw   ;  s     ( (Xc] (t (r5   c                s\    V e(   \        V 4      R8  d   \        P                  ! 4       hR # R # )Ni  )intr   ZUrlPortError)r)   r   r3   _validate_portZAnyUrl._validate_port:  s*    D	F 2%%'' !3r5   c                (   < V ^8  d   QhRRRS[ RR/# r"   r   r!   validate_portrY   rG   r/   r2   r3   r4   rw   @  s"      7 4 7 r5   c                s   VR,          pVf   \         P                  ! 4       hV P                  '       dI   VP                  4       V P                  9  d*   \         P                  ! \        V P                  4      4      hV'       d   V P                  VR,          4       VR,          pV P                  '       d   Vf   \         P                  ! 4       hV# )zj
A method used to validate parts of a URL.
Could be overridden to set default values for parts if missing
r#   r)   r$   )	r   ZUrlSchemeErrorallowed_schemeslowerZUrlSchemePermittedErrorsetr   user_requiredZUrlUserInfoError)rz   r   r   r#   r$   s   &&&  r3   r   ZAnyUrl.validate_parts?  s     x>''))6<<>9L9L#L00S5H5H1IJJuV}-V}))++r5   c                sR   < V ^8  d   QhRRRS[ S[S[S[,          S[S[3,          /# r"   r   r!   rY   )r   r.   r   rG   r/   r2   r3   r4   rw   V  s-     '- '-' '-eC#T4Q.R '-r5   c                s   R R RrCpR	 F  pW,          pV'       g   K  Tp M	  Xf*   V P                   '       d   \        P                  ! 4       hEM/VR8X  Ed(   Rp\        4       P	                  V4      pVf5   \        4       P	                  V4      pVf   \        P                  ! 4       hRpVP                  R4      pVf;   V'       g3   \        4       P	                  V4      pVf   Q hVP                  R4      pRpVe   VR,          pM'V P                  '       d   \        P                  ! 4       hV'       dI   RpRpVP                  R4      P                  R4      pVe!   VP                  R4      P                  R4      pWbW43# )
NFr(   TrD   :   NNZ
int_domainZidnaZascii)r(   r&   r'   )host_requiredr   ZUrlHostErrorrp   	fullmatchrr   Zgrouptld_requiredZUrlHostTldErrorZencodeZdecode)	rz   r   rD   rE   rF   ZfrC   Zis_internationalds	   &&       r3   r   ZAnyUrl.validate_hostU  sb   "&e+A8Dt		 , <   ))++ !("$"$..t4Ay$&0069 --//#' ''%.C{#3$&006}$}ggen#' "g!!!,,..(	{{6*11':?**V,33G<C),,r5   c                "   < V ^8  d   QhRRRR/# r   r6   r/   r2   r3   r4   rw     s       W r5   c                s    / # r]   r6   r   r   r3   r   ZAnyUrl.get_default_parts  s    	r5   c                r   r   r6   r/   r2   r3   r4   rw     s       G r5   c                s~    V P                  V4      P                  4        F  w  r#W,          '       d   K  W1V&   K  	  V# r]   )r   Zitems)rz   r   Zkeyr   s   &&  r3   r   ZAnyUrl.apply_default_parts  s7    //6<<>JC::"c
 ? r5   c                    < V ^8  d   QhRS[ /# rX   r.   r/   r2   r3   r4   rw     s     K K# Kr5   c                s   <a  R P                  V 3R lS P                   4       4      pS P                  P                   R\        SS `  4        R V R2# )z, c              3   sh   <"   T F'  p\        SV4      f   K  V R\        SV4      : 2x  K)  	  R # 5i)NZ=)Zgetattr)Z.0Znr}   s   & r3   Z	<genexpr>Z"AnyUrl.__repr__.<locals>.<genexpr>  s3     n~!QXY]_`Qa5QCqq!1 45~s   22Z(Z))Zjoin	__slots__r   r8   super__repr__)r}   r   r   s   f r3   r   ZAnyUrl.__repr__  sH    		nt~~nn..))*!EG,<,>+?r%JJr5   c                s   < V ^8  d   Qh/ S[ S[S[,          ,          ;R&   S[;R&   S[;R&   S[;R&   S[S[,          ;R&   # )r"   r   r   r   r   r   )r   r   r.   rG   r   r/   r2   r3   r4   rw      sS      jo.5	 
       c(" r5   )
r,   rC   rE   r%   r*   r)   r+   r#   rD   r$      r   T)#r8   r9   r:   r;   r   r   r   r   r   r   r   r   r   r   r   rx   r|   classmethodry   r   r   r   r   staticmethodr   r   r   r   r   r   r   r<   r=   r>   __classcell__r   r1      @@r3   rH   rH      s    JJ15OLMM ULoIM M!
 #! #'! #! "! "! #! #!  $! #'! !6 ) #	)
 #') #) #)  $) #') ) )V h h   - -* 
 
* & & ( (   * '- '-R    K K  r5   c                   s"    ] tR tRtRR0tRtRtR# )rI   i  httpZhttpsr6   N)r8   r9   r:   r;   r   r   r=   r6   r5   r3   rI   rI     s    w'OIr5   c                   sJ   a  ] tR tRt o RtRtR0t]V 3R lR l4       tRt	V t
R# )	rK   i  Ti#  r)   c                r   r   r6   r/   r2   r3   r4   ZHttpUrl.__annotate__  s     F F FW Fr5   c                s,    R V R,          R8X  d   R/# R/# )r)   r#   r   Z80Z443r6   r   r   r3   r   ZHttpUrl.get_default_parts  s     h6 9EEuEEr5   r6   N)r8   r9   r:   r;   r   r   r   r   r   r=   r>   r?   r@   r3   rK   rK     s*     LJ8LF Fr5   c                   s$    ] tR tRtR0tRtRtRtR# )rJ   i  ZfileFr6   N)r8   r9   r:   r;   r   r   r   r=   r6   r5   r3   rJ   rJ     s    hOMIr5   c                   s   a a ] tR tRt o]P
                  R,           tRR/V3R lV 3R lllt]V3R lR l4       t]	RV3R lV 3R	 lll4       t
]	V3R
 lR l4       tRtVtV ;t# )MultiHostDsni  hostsNc                sJ   < V ^8  d   QhRS[ RS[S[R,          ,          RS[ /# )r"   argsr   rB   r{   )r
   r   r   r/   r2   r3   r4   MultiHostDsn.__annotate__  s-      c (43D*E X[ r5   c               s4   < \         SV `  ! V/ VB  Wn        R # r]   )r   r|   r   )r}   r   r   r{   r   s   &$*,r3   r|   ZMultiHostDsn.__init__  s    $)&)
r5   c                r   ru   r   r/   r2   r3   r4   r     s$     1 1 1s 4 1r5   c                r   r]   )rj   r   r   r   r3   r   ZMultiHostDsn._match_url  s    #%++C00r5   c                r   r   r   r/   r2   r3   r4   r     s'     B B7 B4 B7 Br5   c                s&   < \         SV `  VR R7      # )F)r   )r   r   )rz   r   r   r   s   &&&r3   r   ZMultiHostDsn.validate_parts  s    w%e5%AAr5   c                r   )r"   r   rv   r   r!   rY   r   r   r/   r2   r3   r4   r     s-     - -5: -C - -N -r5   c                s<   . p\        4       pVP                  4       R ,          P                  R4       Fs  pVP                  V4      P                  4       pV P	                  V4      w  rhrVP                  R4      pV P                  V4       VP                  RVRV	RVRV
RV/4       Ku  	  \        V4      ^8  de   T ! \        V Uu. uF  qR,          NK  	  up4      '       d   RMTVR,          VR	,          VR
,          VR,          VR,          VR,          RVR7	      # V^ ,          pT ! VR,          '       d   RMTVR,          VR	,          VR
,          VR,          VR,          VR,          VP                  R4      VR,          VR,          VR,          R7      # u upi )r   Z,r)   rC   rE   rD   rF   Nr#   r$   r%   r*   r+   r,   )r#   r$   r%   r*   r+   r,   rE   r   r   )
rt   r   Zsplitr   r   r   r   Zappendr   Zany)rz   r   rv   r   Zhosts_partsZhost_rerC   r   rD   rE   rF   r)   ZhpZ	host_parts   &&&&          r3   r   ZMultiHostDsn._build_url  s   )+,KKM'*005D}}T*446A,/,=,=a,@)Dy55=Dt$D3wD 6 {a[A[r	]][ABBX6]z*6]Gnz*!
 
 $AI!),,#X6]z*v&e$#K0]]6*6]Gnz*  Bs   F)r   r   )r8   r9   r:   r;   rH   r   r|   r   r   r   r   r   r=   r>   r   r   r   r3   r   r     so       :-I   1 1 B B B - - -r5   r   c                   s&    ] tR tRt0 RmtRtRtRtR# )rQ   i  Tr6   N>	   ZpostgresZ
postgresqlzpostgresql+pg8000zpostgresql+asyncpgzpostgresql+psycopgzpostgresql+psycopg2zpostgresql+pygresqlzpostgresql+psycopg2cffizpostgresql+py-postgresql)r8   r9   r:   r;   r   r   r   r=   r6   r5   r3   rQ   rQ     s    
O MIr5   c                   s"    ] tR tRt0 RmtRtRtR# )rR   i  Tr6   N>   Zcockroachdbzcockroachdb+asyncpgzcockroachdb+psycopg2)r8   r9   r:   r;   r   r   r=   r6   r5   r3   rR   rR     s    O
 Mr5   c                   s"    ] tR tRtRR0tRtRtR# )rS   i  ZamqpZamqpsFr6   N)r8   r9   r:   r;   r   r   r=   r6   r5   r3   rS   rS     s    w'OMr5   c                   sL   a  ] tR tRt o RtRR0tRt]V 3R lR l4       tRt	V t
R# )	rT   i  ZredisZredissFc                r   r   r6   r/   r2   r3   r4   ZRedisDsn.__annotate__  s     
 
 
W 
r5   c                sR    R V R,          '       g   V R,          '       g   RMRRRRR/# )	r(   r&   r'   	localhostZ r)   Z6379r*   z/0r6   r   r   r3   r   ZRedisDsn.get_default_parts  s/     %--5==krFD
 	
r5   r6   N)r8   r9   r:   r;   r   r   r   r   r   r=   r>   r?   r@   r3   rT   rT     s+     I)OM
 
r5   c                   B   a  ] tR tRt o R0t]V 3R lR l4       tRtV tR# )rU   i  Zmongodbc                r   r   r6   r/   r2   r3   r4   ZMongoDsn.__annotate__  s     
 
 
W 
r5   c                s
    R R/# )r)   Z27017r6   r   r   r3   r   ZMongoDsn.get_default_parts  s     G
 	
r5   r6   N	r8   r9   r:   r;   r   r   r   r=   r>   r?   r@   r3   rU   rU     s       kO 
 
r5   c                   r   )rV   i  Zkafkac                r   r   r6   r/   r2   r3   r4   ZKafkaDsn.__annotate__#  s     
 
 
W 
r5   c                s    R RRR/# )r(   r   r)   Z9092r6   r   r   r3   r   ZKafkaDsn.get_default_parts"  s     kF
 	
r5   r6   Nr   r?   r@   r3   rV   rV     s     iO
 
r5   r   Tr   r   r   r   r   c                s    V ^8  d   QhR\         R\        R\        R\         R\         R\        \        \        ,          ,          R\
        \        ,          /# )r"   r   r   r   r   r   r   rY   )rG   r   r   r   r.   r   rH   r[   r\   r3   r4   r4   *  s]     2 22 2 	2
 2 2 jo.2 
&\2r5   c           	      sH    \        V VVVVVR 7      p\        R\        3V4      # ))r   r   r   r   r   r   ZUrlValue)dicttyperH   )r   r   r   r   r   r   Z	namespaces   $$$$$$ r3   	stricturlr   *  s3     )!#'I 
VIy11r5   c                s    V ^8  d   QhRR/# )r"   rY   Nr6   r[   r\   r3   r4   r4   ?  s     h h hr5   c                  sN     ^ RI s R#   \         d   p \        R4      T hRp ? ii ; i)r    NzCemail-validator is not installed, run `pip install pydantic[email]`)email_validatorZImportError)es    r3   import_email_validatorr   ?  s,    h h_`fgghs    $$c                   t   a  ] tR tRt o ]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tRtV t	R	# )
rL   iG  c                r   r   r   r/   r2   r3   r4   EmailStr.__annotate__I  s#     ; ;T#s(^ ; ;r5   c                ,    VP                  R RR7       R# )stringemailr   r0   NZupdater   r   r3   r   ZEmailStr.__modify_schema__H  s    ':r5   c                r   r   r6   r/   r2   r3   r4   r   M  s      #6 r5   c              #  sN   "   \        4        \        x  V P                  x  R # 5ir]   )r   r   r   r   r   r3   r   ZEmailStr.__get_validators__L  s      	 lls   #%c                s6   < V ^8  d   QhRS[ S[,          RS[/# r"   r   rY   )r   r.   r/   r2   r3   r4   r   U  s     ( (U3Z (C (r5   c                s&    \        V4      ^,          # )r   )validate_emailrz   r   r   r3   r   ZEmailStr.validateT  s    e$Q''r5   r6   N
r8   r9   r:   r;   r   r   r   r   r=   r>   r?   r@   r3   rL   rL   G  s?     ; ;   ( (r5   c                   s   a  ] tR tRt o RtV 3R lR ltV 3R lR lt]V 3R lR l4       t]V 3R lR	 l4       t	]V 3R
 lR l4       t
V 3R lR ltRtV tR# )rM   iY  c                s&   < V ^8  d   QhRS[ RS[ /# )r"   namer   r   r/   r2   r3   r4   NameEmail.__annotate__\  s      S  r5   c                s    Wn         W n        R # r]   r   r   )r}   r   r   s   &&&r3   r|   ZNameEmail.__init__\  s    	
r5   c                s&   < V ^8  d   QhRS[ RS[/# )r"   otherrY   )r
   rG   r/   r2   r3   r4   r   `  s     e eC eD er5   c                s    \        V\        4      ;'       d2    V P                  V P                  3VP                  VP                  38H  # r]   )Z
isinstancerM   r   r   )r}   r   r   r3   __eq__ZNameEmail.__eq__`  s9    %+ddDJJ0GEJJX]XcXcKd0ddr5   c                r   r   r   r/   r2   r3   r4   r   d  s'     @ @T#s(^ @ @r5   c                r   )r   z
name-emailr   Nr   r   r   r3   r   ZNameEmail.__modify_schema__c  s    ,?r5   c                r   r   r6   r/   r2   r3   r4   r   h  s      #6 r5   c              #  s>   "   \        4        V P                  x  R # 5ir]   )r   r   r   r   r3   r   ZNameEmail.__get_validators__g  s      lls   c                s$   < V ^8  d   QhRS[ RR/# )r"   r   rY   rM   r   r/   r2   r3   r4   r   n  s     + +S +[ +r5   c                s\    VP                   V 8X  d   V# \        V4      pV ! \        V4      !  # r]   )r   r   r   r   r   r3   r   ZNameEmail.validatem  s-    ??c!Le$N5)**r5   c                r   rX   r   r/   r2   r3   r4   r   t  s     - - -r5   c                s:    V P                    R V P                   R2# )z <Z>r   )r}   r   r3   __str__ZNameEmail.__str__t  s    ))Btzzl!,,r5   )r   r   Nr   )r8   r9   r:   r;   r   r|   r   r   r   r   r   r   r=   r>   r?   r@   r3   rM   rM   Y  sh     I e e @ @  
 + +- -r5   c                   x   a  ] tR tRt o Rt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tRt	V t
R	# )
rN   ix  c                r   r   r   r/   r2   r3   r4   IPvAnyAddress.__annotate__|  '     C CT#s(^ C Cr5   c                r   )r   Zipvanyaddressr   Nr   r   r   r3   r   ZIPvAnyAddress.__modify_schema__{      /Br5   c                r   r   r6   r/   r2   r3   r4   r     r   r5   c              #  r   r]   r   r   r   r3   r   Z IPvAnyAddress.__get_validators__  r   r   c                sV   < V ^8  d   QhRS[ S[S[S[3,          RS[ S[S[3,          /# r   )r   r.   bytesr   r   r   r/   r2   r3   r4   r     s0     	. 	.U3s?3 	.k;>V8W 	.r5   c                     \        V4      #   \         d     Mi ; i \        T4      #   \         d    \        P                  ! 4       hi ; ir]   )r   
ValueErrorr   r   ZIPvAnyAddressErrorr   r   r3   r   ZIPvAnyAddress.validate  sR    	u%% 			.u%% 	.++--	.   
 
* !Ar6   Nr8   r9   r:   r;   r   r   r   r   r   r=   r>   r?   r@   r3   rN   rN   x  sF     IC C   	. 	.r5   c                   r   )
rO   i  c                r   r   r   r/   r2   r3   r4   IPvAnyInterface.__annotate__  s'     E ET#s(^ E Er5   c                r   )r   Zipvanyinterfacer   Nr   r   r   r3   r   Z!IPvAnyInterface.__modify_schema__  s    2CDr5   c                r   r   r6   r/   r2   r3   r4   r     r   r5   c              #  r   r]   r   r   r   r3   r   Z"IPvAnyInterface.__get_validators__  r   r   c                <   < V ^8  d   QhRS[ RS[S[S[3,          /# r   )NetworkTyper   r   r   r/   r2   r3   r4   r     s%     	0 	0[ 	0U=-3O-P 	0r5   c                r   r]   )r   r   r   r   ZIPvAnyInterfaceErrorr   r   r3   r   ZIPvAnyInterface.validate  sR    	 '' 			0 '' 	0--//	0r   r6   Nr   r?   r@   r3   rO   rO     sF     IE E   	0 	0r5   c                   r   )
rP   i  c                r   r   r   r/   r2   r3   r4   IPvAnyNetwork.__annotate__  r   r5   c                r   )r   Zipvanynetworkr   Nr   r   r   r3   r   ZIPvAnyNetwork.__modify_schema__  r   r5   c                r   r   r6   r/   r2   r3   r4   r     r   r5   c              #  r   r]   r   r   r   r3   r   Z IPvAnyNetwork.__get_validators__  r   r   c                r   r   )r   r   r   r   r/   r2   r3   r4   r     s%     . .[ .U;3K-L .r5   c                r   r]   )r   r   r   r   ZIPvAnyNetworkErrorr   r   r3   r   ZIPvAnyNetwork.validate  sR    	u%% 			.u%% 	.++--	.r   r6   Nr   r?   r@   r3   rP   rP     sA     C C   . .r5   z([\w ]*?) *<(.*)> *i   c                sh    V ^8  d   QhR\         \        ,          R\        \        \        3,          /# r   )r   r.   r   r[   r\   r3   r4   r4     s&     $< $<%* $<sCx $<r5   c                sz   \         f   \        4        \        V 4      \        8  d   \        P
                  ! 4       h\        P                  V 4      pRpV'       d   VP                  4       w  r V P                  4       p \         P                  ! VRR7      p\        TR4      '       d,   TP                  pTf   Q hT;'       g    TP                  pY#3# TP                  R4      pTRT pY6R P!                  4       pT;'       g    TYx,           3#   \         P                   d   p\        P
                  ThRp?ii ; i)a0  
Email address validation using https://pypi.org/project/email-validator/
Notes:
* raw ip address (literal) domain parts are not allowed.
* "John Doe <local_part@domain.com>" style "pretty" email addresses are processed
* spaces are striped from the beginning and end of addresses but no error is raised
NF)Zcheck_deliverability
normalizedr   )r   r   r   MAX_EMAIL_LENGTHr   Z
EmailErrorpretty_email_regexr   Zgroupsr   r   ZEmailNotValidErrorZhasattrr   
local_partZindexr   )	r   r   r   r   r   r   Zat_indexr   Zglobal_parts	   &        r3   r   r     s     
5z$$!!$$U+A!DhhjKKME'..u5Q ul##     ''u''{ ;;s#9H%
I&,,.!!z:#;;; -- 'Q&'s   >D D:$D55D:)rH   rI   rJ   rK   r   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   r   r   )Zr_   Z	ipaddressr   r   r   r   r   r   r   r   Ztypingr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpydantic.v1r   Zpydantic.v1.utilsr   r   Zpydantic.v1.validatorsr   r   r   Ztyping_extensionsr   Zpydantic.v1.configr   Zpydantic.v1.fieldsr   Zpydantic.v1.typingr    r   r!   rB   r   r.   r   r   r   Z__all__r^   ri   rn   rq   rs   rc   ra   rb   rd   re   rf   rh   rj   rp   rr   rt   rH   rI   rK   rJ   r   rQ   rR   rS   rT   rU   rV   r   r   rL   rM   rN   rO   rP   r`   r   r   r   r6   r5   r3   <module>r      sU   		 	 	    $  = I+--.!+tT"9:
 	 
 IU  O  CU5eS+A5c?+R%SST(  "       :I %+0'$%#aKS aKH Fj Ff =6 =@, "6 f 

v 

v 

v 
2!2 2 	2
 2 2 262*h(s ($- ->.L .00l 00.L .0 ZZ 67  
$<r5   