fL i9ZUdZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z m Z mZddlmZddlZddlZddlZddlmZ ddlZdedefdZej6ej8ej:j=eej6ej>ej@d jBejDd d ej:j=eej6ejHejJe&e'eDcgc]*}|jQd re ejHd|,c}djSejTjVejTjXejTjZejTj\ejTj^ejTj`fjcejTjddjcejTjfdjcejTjhdZ5ej6ejTjlejnejJe&ejTjpejrejtddejtddejtddejvejxddzejxddj{djBzejDe5d dedefdZ>dZ?ej6ejejDdjSe?d j{e>ej6ejejdej6ejejdej6ejejdej6ejejdej6ejejj{ejej6ejejj{ejej6ejejej6ejejejejejzej6ejejejejejzej6ejejej6ejejej6ejejejjejdzej6ejejejjejdz iZ\e e]e e]gejffe_d!<ed"e ejjde ejjfd#Zbed"ejjdejjfd$Zbd"e e ejjejjfde e ejjejjffd%Zbd"e e]ejjfde e d&ejfge d&ejfffd'Zdedejd(Zfedejd)Zhedejd*Zjedejd+Zledejd,Znedejd-Zpedejd.ZresejjD] Zuebeu ebej_bej6ejefy#e#$rY-wxYwcc}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[]` 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)CallableDictTypeUnioncastoverload)lenient_issubclasssreturncf tj|dy#tj$rYywxYw)NF)check_deliverabilityT)email_validatorvalidate_emailEmailNotValidErrorr s d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pydantic/v1/_hypothesis_plugin.pyis_valid_emailr:s2   * *15 I11  s 00z{} <{}>z"[A-Za-z0-9_]+( [A-Za-z0-9_]+){0,5}T fullmatch_zmath.|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+)?))dz{}% card_numbercdD]M}tjt5tjj ||z||zcdddcSt d#1swYdxYw)N 0123456789 Unreachable) contextlibsuppress ExceptionpydanticPaymentCardNumbervalidate_luhn_check_digitAssertionError)rdigits radd_luhn_digitr(zsg'   + '  & & @ @uAT U& ' ''  '' ' 's 'AA' )z 4[0-9]{14}z5[12345][0-9]{13}z3[47][0-9]{12}z[0-26-9][0-9]{10,17})versiondays) min_value) max_value RESOLVERStypcyNr2s r _registeredr7cyr4r5r6s rr7r7r8r9ctjjj|tj D]1\}}t ||stj||||cStd|d)Nz Unknown type z has no resolver to register) r#types_DEFINED_TYPESaddr1items issubclassstregister_type_strategyNotImplementedError)r2 supertyperesolvers rr7r7sq  NN!!%%c*(0 8 c9 %  % %c8C= 9J  cW4PQ RRr9.cfd}|S)Nc.|tvsJ|t<|Sr4)r1)fr2s rinnerzresolves..inners !!! #r9r5)r2rIs` rresolvesrJs Lr9c " |jtjntj|j}t|dd}tjt|tjr|jj nt j"|tjtjtjddztjS#t$rtj dd}tj tjtjtjtj|tjd}YLwxYw) NF)allow_infinity allow_nanc~tj|tjtj|zSr4)rAlists dictionariestext)xs rzresolve_json..s$RXXa[2??2779a+HHr9)baseextend inner_typer) ensure_asciiindent sort_keys)rVrAnone from_typer"floats recursiveone_ofbooleansintegersrQgetattrbuildsr r# BaseModeljsondumps)clsrIfiniterVs r resolve_jsonris  ^^3 cnn9UlD1J 991*h>P>PQW[WaWa [[]wwy2;;q"--++-    %5A 2779bkkmR[[]FBGGIVH  s?C33BF Fch|jxsd}|j}|jstj||Sdj |dkDr|dz nd|xsddkDr|dz nd}|dk\rd|d}n|dk(rd |d }n |dk(sJd |d }tj |jd S)Nrmin_sizemax_size {{{},{}}}\W.\Wr\W(.\W)?(\W(.\W)?)?Tr) min_length max_lengthstrip_whitespacerAbinaryformat from_regexencode)rgrlrmrepeatspatterns rresolve_conbytesrs~~"H~~H   yy(X>>   1 1 !!Q!+1 G1} $ Q'$'1}}7)6* ==)T ::r9cj}j}j|Jdj}j|Jdj}t j ||dj }j|jfd}j|jfd}|S)NSet `gt` or `ge`, but not bothSet `lt` or `le`, but not bothF)rMplacesc"|jkSr4)ltdrgs rrSz$resolve_condecimal..sq366zr9c"j|kSr4)gtrs rrSz$resolve_condecimal..ssvvzr9)gelerrrAdecimalsdecimal_placesfilter)rgr/r0r s` rresolve_condecimalrsII vv B"BB FF  vv B"BB FF  IyE#BTBTUA vv HH) * vv HH) * Hr9c<j}j}d}d}j|Jdj}d}j|Jdj}d}jt j ||||dS|)tj|jz }|r|dz}|?|jk\sJdtj|jz }|r|dz }t j||jfdS) NFrTr) exclude_min exclude_maxrMrz:Cannot build model with max value smaller than multiple ofc"|jzSr4 multiple_ofrRrgs rrSz"resolve_confloat..61s;Nr9) rrrrrrAr]mathceilfloorramap)rgr/r0rrs` rresolve_confloatrsIIKK vv B"BB FF   vv B"BB FF   yyI;T_kpqqIIi#//9: !A ICOO+i-ii+JJy3??:; !A I ;;y) , 0 01N OOr9cNj}j}j|Jdjdz}j|Jdjdz }jjdk(rt j ||S|4tjt|tjz }|4tjt|tjz }t j ||jfdS)Nrrrc"|jzSr4rrs rrSz resolve_conint..Mrr9) rrrrrrArarrrrrrgr/r0s` rresolve_conintr9sII vv B"BB FFQJ  vv B"BB FFQJ  #//Q"6{{9i00IIhy1HS__4MMN JJx 2Xcoo5NNO ;;y) , 0 01N OOr9c|j |jJd|j}nJ|j$|jtjdz}ntjj }|j |jJd|j }nJ|j$|jtjdz }ntjj}tj||S)Nrrr-r) rrdatetime timedeltadateminrrmaxrAdatesrs rresolve_condaterPs vvvv~???~FF  FFX//Q77 MM%%  vvvv~???~FF  FFX//Q77 MM%% 88Iy ))r9c|jxsd|j|j#|jst j S|j>t j |j}|jr|jd}n|jrdjdkDrdz ndxsddkDrdz nd}dk\rt j d|d}n?d k(rt j d |d }n dk(sJt j d |d }dk(rSjfdSjfdS)Nrrkc(||jk(Sr4)striprs rrSz resolve_constr..nsaggir9rnrorprqrrrrsrtrurvc t|kSr4len)r rls rrSz resolve_constr..sSV);r9c6t|cxkxrkScSr4r)r rmrls rrSz resolve_constr..sXQ%C8%C%Cr9) rwrxregexryrArQr|rr{)rgstrategyr~rmrls @@rresolve_constrrcsE~~"H~~H yy!5!5ww8<< yy==+   '?@H  $$$qLHqLa%]a/HqLR  q=}}G9B%78H ]}}WIT%:;Hq= =}}gYf%=>H1})  ;<< ??C DDr9)w__doc__r r ipaddressrer fractionsrtypingrrrrrr hypothesis.strategies strategiesrAr#pydantic.colorpydantic.typespydantic.v1.utilsr rstrboolrrBEmailStremailsr NameEmailrcr{r| ImportErrorPyObject sampled_fromsortedvars startswithjoincolor r_hex_short r_hex_longr_rgbr_rgbar_hslr_hslareplace_r_sl_r_alpha_r_255_color_regexesColorr_COLORS_BY_NAMEtuplesrar[r]rr( card_patternsr$UUID1uuidsUUID3UUID4UUID5 SecretBytesrz SecretStrrQ IPvAnyAddress ip_addressesIPvAnyInterfacer\ IPv4Interface IPv6Interface IPvAnyNetwork IPv4Network IPv6Network StrictBoolr` StrictStr FutureDaterrtodayrPastDater1typeSearchStrategy__annotations__r<Tr7ConstrainedNumberMetarJ JsonWrapperriConstrainedBytesrConstrainedDecimalrConstrainedFloatrConstrainedIntrConstrainedDaterConstrainedStrrlistr=r2Json)names0rrs0 >>"0 #$Bh//1C1CN1STB    BMM>$ O BIIK  ~ .  BOO=CDJ=OlTW[WfWfgjWkh5 0lHH NN & & NN % % NN NN ! ! NN NN ! !    WX^^ ! !#IJ WX^^ $ $&TU WX^^ " "$ij  NN BIIx~~<<=> BKK3  BKK3  BKK3  BGGI  !Q ')"))As*;*?*? *M M   n5  $(((  BMM#((=)T:>>~N (..("((1*=>(..("((1*=>(..("((1*=>(..("((1*=>(..  @T@T0UV(,,gbggimmH@ 4hvr'8'8899 :?  T(..**+ X^^5E5E0F     X^^99 hnn>b>b    S tHNN$$%x~~'K'KK L S 4  !8>>#G#G GH S tX^^999 : xR.../0(3@Q@Q;Q2RRS (   & ( # #$;%;( ( % %& ' " ( # #$P%P> ( ! !"P#P, ( " "#*$*$ ( ! !"E#E@ -- .C((--6c   : msd*d(d(d%$d%