
    ,h9                     Z   U d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZ ddlZddlZddlZddlmZ 	 ddlZdedefdZ ej6                  ej8                   ej:                         j=                  e              ej6                  ej>                   ej@                  d	jB                   ejD                  d
d       ej:                         j=                  e                    ej6                  ejH                   ejJ                   e& e'e            D  cg c]*  } | jQ                  d      r eejH                  d|        , c}              djS                  ejT                  jV                  ejT                  jX                  ejT                  jZ                  ejT                  j\                  ejT                  j^                  ejT                  j`                  f      jc                  ejT                  jd                  d      jc                  ejT                  jf                  d      jc                  ejT                  jh                  d      Z5 ej6                  ejT                  jl                   ejn                   ejJ                   e&ejT                  jp                               ejr                   ejt                  dd       ejt                  dd       ejt                  dd       ejv                          ejx                  dd      z   ejx                  dd      j{                  djB                        z         ejD                  e5d                   dedefdZ>dZ? ej6                  ej                   ejD                  djS                  e?      d      j{                  e>              ej6                  ej                   ej                  d              ej6                  ej                   ej                  d              ej6                  ej                   ej                  d              ej6                  ej                   ej                  d              ej6                  ej                   ej                         j{                  ej                                ej6                  ej                   ej                         j{                  ej                                ej6                  ej                   ej                                 ej6                  ej                   ej                  ej                         ej                  ej                        z          ej6                  ej                   ej                  ej                         ej                  ej                        z          ej6                  ej                   ej                                 ej6                  ej                   ej                                 ej6                  ej                   ej                  ej                  j                          ej                  d      z                 ej6                  ej                   ej                  ej                  j                          ej                  d      z
                i Z\e
e]e	e]gej                  f   f   e_d!<   ed"eej                  j                     deej                  j                     fd#       Zbed"ej                  j                  dej                  j                  fd$       Zbd"eeej                  j                     ej                  j                  f   deeej                  j                     ej                  j                  f   fd%Zbd"ee]ej                  j                  f   de	e	d&ej                  f   ge	d&ej                  f   f   fd'Zd edej                        d(        Zf edej                        d)        Zh edej                        d*        Zj edej                        d+        Zl edej                        d,        Zn edej                        d-        Zp edej                        d.        Zr esej                  j                        D ]
  Zu ebeu        ebej                  _b         ej6                  ej                  ef       y# e#$ r Y -w xY wc c} w )/a  
Register Hypothesis strategies for Pydantic custom types.

This enables fully-automatic generation of test data for most Pydantic classes.

Note that this module has *no* runtime impact on Pydantic itself; instead it
is registered as a setuptools entry point and Hypothesis will import it if
Pydantic is installed.  See also:

https://hypothesis.readthedocs.io/en/latest/strategies.html#registering-strategies-via-setuptools-entry-points
https://hypothesis.readthedocs.io/en/latest/data.html#hypothesis.strategies.register_type_strategy
https://hypothesis.readthedocs.io/en/latest/strategies.html#interaction-with-pytest-cov
https://docs.pydantic.dev/usage/types/#pydantic-types

Note that because our motivation is to *improve user experience*, the strategies
are always sound (never generate invalid data) but sacrifice completeness for
maintainability (ie may be unable to generate some tricky but valid data).

Finally, this module makes liberal use of `# type: ignore[<code>]` pragmas.
This is because Hypothesis annotates `register_type_strategy()` with
`(T, SearchStrategy[T])`, but in most cases we register e.g. `ConstrainedInt`
to generate instances of the builtin `int` type which match the constraints.
    N)Fraction)CallableDictTypeUnioncastoverload)lenient_issubclasssreturnc                 f    	 t        j                  | d       y# t         j                  $ r Y yw xY w)NF)check_deliverabilityT)email_validatorvalidate_emailEmailNotValidErrorr   s    `/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pydantic/v1/_hypothesis_plugin.pyis_valid_emailr   :   s2    	**15I11 		s    00z{} <{}>z"[A-Za-z0-9_]+( [A-Za-z0-9_]+){0,5}T	fullmatch_zmath.|z#(?:(\d\d?(?:\.\d+)?|100(?:\.0+)?)%)z+(?:(0(?:\.\d+)?|1(?:\.0+)?|\.\d+|\d{1,2}%))zB(?:((?:\d|\d\d|[01]\d\d|2[0-4]\d|25[0-4])(?:\.\d+)?|255(?:\.0+)?))      d   z{}%card_numberc                     dD ]M  }t        j                  t              5  t        j                  j                  | |z          | |z   cd d d        c S  t        d      # 1 sw Y   dxY w)N
0123456789Unreachable)
contextlibsuppress	ExceptionpydanticPaymentCardNumbervalidate_luhn_check_digitAssertionError)r   digits     r   add_luhn_digitr(   z   sg     '  + 	'&&@@uATU&	' 	'' 
''	' 	's   'AA'	)z
4[0-9]{14}z5[12345][0-9]{13}z3[47][0-9]{12}z[0-26-9][0-9]{10,17})version         days)	min_value)	max_value	RESOLVERStypc                      y N r2   s    r   _registeredr7              c                      y r4   r5   r6   s    r   r7   r7      r8   r9   c                    t         j                  j                  j                  |        t        j                         D ]1  \  }}t        | |      st        j                  |  ||              | c S  t        d| d      )NzUnknown type z has no resolver to register)
r#   types_DEFINED_TYPESaddr1   items
issubclassstregister_type_strategyNotImplementedError)r2   	supertyperesolvers      r   r7   r7      sq     NN!!%%c*(0 	8c9%%%c8C=9J cW4PQ
RRr9   .c                       fd}|S )Nc                 .    | t         vsJ | t         <   | S r4   )r1   )fr2   s    r   innerzresolves.<locals>.inner   s    	!!	#r9   r5   )r2   rI   s   ` r   resolvesrJ      s    
 Lr9   c                 "   	 | j                   t        j                         nt        j                  | j                         }t        | dd       }t        j                  t        |t        j                        r| j                   j                   nt         j"                  |t        j                         t        j                         t        j                  dd      z  t        j                               S # t        $ r t        j
                  dd      }t        j                  t        j                  t        j                         t        j                         t        j                         |t        j                               d       }Y Lw xY w)	NF)allow_infinity	allow_nanc                 ~    t        j                  |       t        j                  t        j                         |       z  S r4   )rA   listsdictionariestext)xs    r   <lambda>zresolve_json.<locals>.<lambda>   s$    RXXa[2??2779a+HH r9   )baseextend
inner_typer      )ensure_asciiindent	sort_keys)rV   rA   none	from_typer"   floats	recursiveone_ofbooleansintegersrQ   getattrbuildsr
   r#   	BaseModeljsondumps)clsrI   finiterV   s       r   resolve_jsonri      s    
 ^^3	cnn9U lD1J991*h>P>PQW[WaWa[[]wwy2;;q"--++-   
%5A2779bkkmR[[]FBGGIVH

s   ?C3 3BFFc                 h   | j                   xs d}| j                  }| j                  st        j                  ||      S dj                  |dkD  r|dz
  nd|xs ddkD  r|dz
  nd      }|dk\  rd| d}n|dk(  rd	| d
}n|dk(  sJ d| d}t        j                  |j                         d      S )Nr   min_sizemax_size	{{{},{}}}    \W.\Wr   \W(.\W)?(\W(.\W)?)?Tr   )
min_length
max_lengthstrip_whitespacerA   binaryformat
from_regexencode)rg   rl   rm   repeatspatterns        r   resolve_conbytesr      s    ~~"H~~Hyy(X>>   11!!Q!+1G 1}	$	Q'$'1}7)6*==)T::r9   c                      j                   } j                  } j                  |J d        j                  } j                  |J d        j                  }t	        j
                  ||d j                        } j                  |j                   fd      } j                  |j                   fd      }|S )NSet `gt` or `ge`, but not bothSet `lt` or `le`, but not bothF)rM   placesc                 "    | j                   k  S r4   )ltdrg   s    r   rS   z$resolve_condecimal.<locals>.<lambda>  s    q366z r9   c                 "    j                   | k  S r4   )gtr   s    r   rS   z$resolve_condecimal.<locals>.<lambda>  s    svvz r9   )geler   r   rA   decimalsdecimal_placesfilter)rg   r/   r0   r   s   `   r   resolve_condecimalr     s    II
vv B"BBFF	
vv B"BBFF	
IyE#BTBTUA
vvHH)*
vvHH)*Hr9   c                 <     j                   } j                  }d}d} j                  |J d        j                  }d} j                  |J d        j                  }d} j                  t        j                  ||||d      S |)t        j                  | j                  z        }|r|dz   }|?| j                  k\  sJ d       t        j                  | j                  z        }|r|dz
  }t        j                  ||      j                   fd      S )	NFr   Tr   )exclude_minexclude_maxrM   r   z:Cannot build model with max value smaller than multiple ofc                 "    | j                   z  S r4   multiple_ofrR   rg   s    r   rS   z"resolve_confloat.<locals>.<lambda>6      1s;N r9   )r   r   r   r   r   rA   r]   mathceilfloorra   map)rg   r/   r0   r   r   s   `    r   resolve_confloatr     s   IIKK
vv B"BBFF	
vv B"BBFF	
yyI;T_kpqqIIi#//9:	!AICOO+i-iiJJy3??:;	!AI;;y),001NOOr9   c                 N     j                   } j                  } j                  |J d        j                  dz   } j                  |J d        j                  dz
  } j                   j                  dk(  rt        j                  ||      S |4t        j                  t        |      t         j                        z        }|4t        j                  t        |      t         j                        z        }t        j                  ||      j                   fd      S )Nr   r   r   c                 "    | j                   z  S r4   r   r   s    r   rS   z resolve_conint.<locals>.<lambda>M  r   r9   )r   r   r   r   r   rA   ra   r   r   r   r   r   rg   r/   r0   s   `  r   resolve_conintr   9  s    II
vv B"BBFFQJ	
vv B"BBFFQJ	
#//Q"6{{9i00 IIhy1HS__4MMN	JJx	2Xcoo5NNO	;;y),001NOOr9   c                    | j                    | j                  J d       | j                   }nJ| j                  $| j                  t        j                  d      z   }nt        j                  j
                  }| j                   | j                  J d       | j                  }nJ| j                  $| j                  t        j                  d      z
  }nt        j                  j                  }t        j                  ||      S )Nr   r   r-   r   )r   r   datetime	timedeltadateminr   r   maxrA   datesr   s      r   resolve_condater   P  s    
vvvv~???FF			FFX//Q77	MM%%	
vvvv~???FF			FFX//Q77	MM%%	88Iy))r9   c                    | j                   xs d| j                  | j                  #| j                  st	        j
                        S | j                  >t	        j                  | j                        }| j                  r|j                  d       }n| j                  rdj                  dkD  rdz
  ndxs ddkD  rdz
  nd      }dk\  rt	        j                  d| d      }n?d	k(  rt	        j                  d
| d      }n dk(  sJ t	        j                  d| d      }dk(  rS j                  fd      S j                  fd      S )Nr   rk   c                 (    | | j                         k(  S r4   )stripr   s    r   rS   z resolve_constr.<locals>.<lambda>n  s    aggi r9   rn   ro   rp   rq   rr   r   rs   rt   ru   rv   c                      t        |       k  S r4   len)r   rl   s    r   rS   z resolve_constr.<locals>.<lambda>  s    SV); r9   c                 6    t        |       cxk  xr k  S c S r4   r   )r   rm   rl   s    r   rS   z resolve_constr.<locals>.<lambda>  s    XQ%C8%C %C r9   )	rw   rx   regexry   rA   rQ   r|   r   r{   )rg   strategyr~   rm   rl   s      @@r   resolve_constrr   c  sC   ~~"H~~H
yy!5!5ww8<<
yy==+'?@H			$$$qLHqLa%]a/HqLR
 q=}}G9B%78H]}}WIT%:;Hq= }}gYf%=>H1})		;<<??CDDr9   )w__doc__r    r   	ipaddressre   r   	fractionsr   typingr   r   r   r   r   r	   hypothesis.strategies
strategiesrA   r#   pydantic.colorpydantic.typespydantic.v1.utilsr
   r   strboolr   rB   EmailStremailsr   	NameEmailrc   r{   r|   ImportErrorPyObjectsampled_fromsortedvars
startswithjoincolorr_hex_short
r_hex_longr_rgbr_rgbar_hslr_hslareplace_r_sl_r_alpha_r_255_color_regexesColorr_   COLORS_BY_NAMEtuplesra   r[   r]   r   r(   card_patternsr$   UUID1uuidsUUID3UUID4UUID5SecretBytesrz   	SecretStrrQ   IPvAnyAddressip_addressesIPvAnyInterfacer\   IPv4InterfaceIPv6InterfaceIPvAnyNetworkIPv4NetworkIPv6Network
StrictBoolr`   	StrictStr
FutureDater   r   todayr   PastDater1   typeSearchStrategy__annotations__r<   Tr7   ConstrainedNumberMetarJ   JsonWrapperri   ConstrainedBytesr   ConstrainedDecimalr   ConstrainedFloatr   ConstrainedIntr   ConstrainedDater   ConstrainedStrr   listr=   r2   Json)names   0r   <module>r      s  0       > > "    0
# $  Bh//1C1CN1STB		BMM>$OBIIK~.	
   BOO=CDJ=OlTW[WfWfgjWkh5	0l HHNN&&NN%%NN  NN!!NN  NN!!	
	 WX^^!!#IJWX^^$$&TUWX^^""$ij     NNBIIx~~<<=>		BKK3BKK3BKK3BGGI			!Q')"))As*;*?*?*MM		
 	n5	$( ( (   BMM#((=)T:>>~N   (..("((1*= >   (..("((1*= >   (..("((1*= >   (..("((1*= >   (..			@T@T0U V   (,,gbggimmH<N<N.O P   (00/"//2C D   BLL(()LBLL9P9P,QQ   BLL&&',",,y7L7L*MM   (--{r{{} =   (,,gbggi 8   (--xrxx(--BUBUBWZlZbZlZlrsZtBt/u v   (++XRXX@S@S@UXjX`XjXjpqXr@r-s t >@	4hvr'8'8899: ? 
	T(..**+ 	X^^5E5E0F 	 
	 
	X^^99 	hnn>b>b 	 
	S	tHNN$$%x~~'K'KK	LS
4  !8>>#G#GGHS	tX^^999	:xR.../0(3@Q@Q;Q2RRS 
(

  & 
(
#
#$; %;( 
(
%
%& '" 
(
#
#$P %P> 
(
!
!"P #P, 
(
"
"#* $*$ 
(
!
!"E #E@ --. C(    (-- 6c
  		: 	ms   d *d(d(d%$d%