
    i                         S SK r S SKrS SKJr  S SKJr  S SKJrJr  S SK	J
r
JrJr  S SKJr  S SKJrJrJr  S SKJr   " S	 S
\5      r " S S\5      r " S S\5      rg)    N)Callable)contextmanager)HypothesisWarningInvalidArgument)get_pretty_function_description%is_first_param_referenced_in_functionis_identity_function)
check_type)OneOfStrategySearchStrategycheck_strategy)note_deprecationc                       \ rS rSrSrg)LimitReached    N)__name__
__module____qualname____firstlineno____static_attributes__r       h/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/hypothesis/strategies/_internal/recursive.pyr   r      s    r   r   c                      ^  \ rS rSrU 4S jr\S 5       r\R                  S 5       r\S 5       r\R                  S 5       rS\	4S jr
SS	 jrS
 r\S 5       rSrU =r$ )LimitedStrategy#   c                 b   > [         TU ]  5         Xl        [        R                  " 5       U l        g N)super__init__base_strategy	threadinglocal_threadlocal)selfstrategy	__class__s     r   r    LimitedStrategy.__init__$   s#    %%OO-r   c                 0    [        U R                  SS5      $ )Nmarkerr   getattrr$   r%   s    r   r*   LimitedStrategy.marker)   s    t(((A66r   c                 $    XR                   l        g r   )r$   r*   r%   values     r   r*   r.   -   s    #( r   c                 0    [        U R                  SS5      $ )Ncurrently_cappedFr+   r-   s    r   r3    LimitedStrategy.currently_capped1   s    t((*<eDDr   c                 $    XR                   l        g r   )r$   r3   r0   s     r   r3   r4   5   s    -2*r   returnc                 $    SU R                   < S3$ )NzLimitedStrategy())r!   r-   s    r   __repr__LimitedStrategy.__repr__9   s    !$"4"4!7q99r   c                 8    U R                   R                  5         g r   )r!   validater-   s    r   do_validateLimitedStrategy.do_validate<   s    ##%r   c                     U R                   (       d   eU R                  S::  a  [        eU =R                  S-  sl        UR                  U R                  5      $ )Nr      )r3   r*   r   drawr!   )r%   datas     r   do_drawLimitedStrategy.do_draw?   sF    $$$$;;!qyy++,,r   c              #   l   #     U R                   nSU l         Xl        S v   X l         g ! WU l         f = f7f)NT)r3   r*   )r%   max_templates
was_cappeds      r   cappedLimitedStrategy.cappedF   s3     	/..J$(D!'K$.!JD!s   4( 4	14)r$   r!   r3   r*   r6   N)r   r   r   r   r    propertyr*   setterr3   strr9   r=   rC   r   rH   r   __classcell__r'   s   @r   r   r   #   s    .
 7 7 ]]) ) E E 3 3:# :&- / /r   r   c                   l   ^  \ rS rSrS\S\\/\4   S\S-  S\4U 4S jjrS\4S	 jr	SS
 jr
S rSrU =r$ )RecursiveStrategyQ   baseextend
min_leavesN
max_leavesc           	        > [         TU ]  5         X0l        X@l        Xl        [        U5      U l        X l        U R                  U R                  U R                  5      /nS[        U5      S-
  -  U::  a@  UR                  U" [        [        U5      5      5      5        S[        U5      S-
  -  U::  a  M@  Ub  US:  a  USS  n[        U5      U l        g )N   r@   )r   r    rU   rV   rS   r   limited_baserT   lenappendr   tupler&   )r%   rS   rT   rU   rV   
strategiesr'   s         r   r    RecursiveStrategy.__init__R   s     	$$	+D1''T5F5F)GH
C
Oa'(J6f]53D%EFG C
Oa'(J6 !j1n#ABJ%j1r   r6   c           	          [        U S5      (       dF  SU R                  < S[        U R                  5       SU R                   SU R
                   S3	U l        U R                  $ )N_cached_reprz
recursive(z, z, min_leaves=z, max_leaves=r8   )hasattrrS   r   rT   rU   rV   r`   r-   s    r   r9   RecursiveStrategy.__repr__h   sd    t^,,TYYM24;;?@ A"oo.mDOO;LAO 
    r   c                    [        U R                  S5        U R                  U R                  5      n[        USU R                  < S35        U R                  R	                  5         UR	                  5         [        U R                  5      (       a  [        R                  " S[        SS9  [        U R                  5      (       d>  S[        U R                  5       S3nU R                  c  [        US	S
SS9  O[        U5      eU R                  b  [        [        U R                  S5        [        [        U R                   S5        U R                  b*  U R                  S::  a  [        SU R                  < S35      eU R                   S::  a  [        SU R                   < S35      eU R                  =(       d    SU R                   :  a'  [        SU R                  < SU R                   < 35      eg )NrS   zextend(r8   z|extend=lambda x: x is a no-op; you probably want to use a different extend function, or just use the base strategy directly.   )
stacklevelzextend=z< doesn't use it's argument, and thus can't actually recurse!z
2026-01-12Fr@   )sincehas_codemodre   rU   rV   r   min_leaves=z must be greater than zerozmax_leaves=z* must be less than or equal to max_leaves=)r   rS   rT   rY   r<   r	   warningswarnr   r   r   rU   r   r   r
   intrV   )r%   extendedmsgs      r   r=   RecursiveStrategy.do_validateq   s   tyy&);;t001x74+<+<*?q!AB""$,,MMU!	 5T[[AA9$++FG HB B  & & % 	 &c**??&sDOO\:36??&4??a+?!doo00JK  ??a!doo00JK  OO qDOO3!doo0 1"oo02  4r   c                 ^   Sn  U R                   R                  U R                  5         UR                  U R                  5      nU R                  U R                   R
                  -
  nU R                  (       ae  X@R                  :  aV  SUR                  SU < SU R                   S3'   US-  nUS:  a   S S S 5        M  UR                  SU R                   S	35        UsS S S 5        $ ! , (       d  f       O4= f! [         a$    SUR                  SU < S
U R                   S3'    Of = fGM+  )Nr    z	Draw for z had fewer than min_leaves=z and had to be retriedr@   rd   rh   z unsatisfiedz exceeded max_leaves=)
rY   rH   rV   rA   r&   r*   rU   eventsmark_invalidr   )r%   rB   min_leaves_retriesresultleaves_drawns        r   rC   RecursiveStrategy.do_draw   s*   &&--doo>!YYt}}5F#'??T5F5F5M5M#ML<//+I  'x 0**.//)::PR +a/*-1$ ?> ))K7H*UV! ?>>     x (""&//!22HJ s;   %C; BC*6C;   C* 	C; *
C84C; 8C; ;+D)(D))r`   rS   rT   rY   rV   rU   r&   rJ   )r   r   r   r   r   r   rk   r    rM   r9   r=   rC   r   rN   rO   s   @r   rQ   rQ   Q   s[    22 .)>9:2 $J	2
 2,!# !-^ r   rQ   )r"   ri   collections.abcr   
contextlibr   hypothesis.errorsr   r   hypothesis.internal.reflectionr   r   r	   hypothesis.internal.validationr
   *hypothesis.strategies._internal.strategiesr   r   r   hypothesis.utils.deprecationr   BaseExceptionr   r   rQ   r   r   r   <module>r      s[      $ % @ 
 6 
 :	= 	+/n +/\d dr   