Ë
    iKêj]  ã                   ó   — d dl Z d dlZd dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZmZ d dlmZ  e	d«      Z G d„ de«      Z G d„ dee   «      Z  G d„ de«      Z!y)é    N)ÚCallableÚ	Generator)Úcontextmanager)ÚAnyÚTypeVar)ÚHypothesisWarningÚInvalidArgument)ÚChoiceT)ÚConjectureData)Úget_pretty_function_descriptionÚ%is_first_param_referenced_in_functionÚis_identity_function)Ú
check_type)ÚOneOfStrategyÚSearchStrategyÚcheck_strategy)Únote_deprecationÚTc                   ó   — e Zd Zy)ÚLimitReachedN)Ú__name__Ú
__module__Ú__qualname__© ó    ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/strategies/_internal/recursive.pyr   r   $   s   „ Ør   r   c                   ó  ‡ — e Zd Zdee   fˆ fd„Zedefd„«       Zej                  deddfd„«       Zede
fd„«       Zej                  de
ddfd	„«       Zdefd
„Zdd„Zdedefd„Zdedeedf   fd„Zededed   fd„«       Zˆ xZS )ÚLimitedStrategyÚstrategyc                 ób   •— t         ‰| �  «        || _        t        j                  «       | _        y ©N)ÚsuperÚ__init__Úbase_strategyÚ	threadingÚlocalÚ_threadlocal)Úselfr   Ú	__class__s     €r   r#   zLimitedStrategy.__init__)   s%   ø€ Ü‰ÑÔØ%ˆÔÜ%ŸO™OÓ-ˆÕr   Úreturnc                 ó0   — t        | j                  dd«      S )NÚmarkerr   ©Úgetattrr'   ©r(   s    r   r,   zLimitedStrategy.marker.   s   € ä�t×(Ñ(¨(°AÓ6Ð6r   ÚvalueNc                 ó&   — || j                   _        y r!   )r'   r,   ©r(   r0   s     r   r,   zLimitedStrategy.marker2   s   € à#(ˆ×ÑÕ r   c                 ó0   — t        | j                  dd«      S )NÚcurrently_cappedFr-   r/   s    r   r4   z LimitedStrategy.currently_capped6   s   € ä�t×(Ñ(Ð*<¸eÓDÐDr   c                 ó&   — || j                   _        y r!   )r'   r4   r2   s     r   r4   z LimitedStrategy.currently_capped:   s   € à-2ˆ×ÑÕ*r   c                 ó"   — d| j                   ›d�S )NzLimitedStrategy(ú))r$   r/   s    r   Ú__repr__zLimitedStrategy.__repr__>   s   € Ø! $×"4Ñ"4Ð!7°qÐ9Ð9r   c                 ó8   — | j                   j                  «        y r!   )r$   Úvalidater/   s    r   Údo_validatezLimitedStrategy.do_validateA   s   € Ø×Ñ×#Ñ#Õ%r   Údatac                 ó¨   — | j                   sJ ‚| j                  dk  rt        ‚| xj                  dz  c_        |j                  | j                  «      S )Nr   é   )r4   r,   r   Údrawr$   )r(   r<   s     r   Údo_drawzLimitedStrategy.do_drawD   sF   € Ø×$Ò$Ð$Ð$Ø�;‰;˜!ÒÜÐØ�Š�qÑ�Ø�y‰y˜×+Ñ+Ó,Ð,r   .c                 ó8   — | j                   j                  |«      S r!   )r$   Ú_invertr2   s     r   rB   zLimitedStrategy._invertK   s   € ð ×!Ñ!×)Ñ)¨%Ó0Ð0r   Úmax_templates)NNNc              #   óp   K  — 	 | j                   }d| _         || _        d –— || _         y # | _         w xY w­w)NT)r4   r,   )r(   rC   Ú
was_cappeds      r   ÚcappedzLimitedStrategy.cappedS   s8   è ø€ ð	/Ø×.Ñ.ˆJØ$(ˆDÔ!Ø'ˆDŒKÛà$.ˆDÕ!ø JˆDÕ!üs   ‚6„* ¢6ª	3³6©r*   N)r   r   r   r   r   r#   ÚpropertyÚintr,   ÚsetterÚboolr4   Ústrr8   r;   r   r@   r   Útupler
   rB   r   r   rF   Ú__classcell__©r)   s   @r   r   r   (   s  ø„ ð. °Ñ!2õ .ð
 ð7˜ò 7ó ð7ð ‡]�]ð)˜Cð ) Dò )ó ð)ð ðE $ò Eó ðEð ×Ñð3 dð 3¨tò 3ó ð3ð:˜#ó :ó&ð-˜Nð -¨qó -ð1˜Sð 1 U¨7°C¨<Ñ%8ó 1ð ð/ Cð /¨IÐ6FÑ,Gò /ó ô/r   r   c                   ó€   ‡ — e Zd Zdedeegef   dedz  defˆ fd„Zdefd„Zdd	„Z	d
e
defd„Zdedeedf   fd„Zˆ xZS )ÚRecursiveStrategyÚbaseÚextendÚ
min_leavesNÚ
max_leavesc           	      ó¤  •— t         ‰| �  «        || _        || _        || _        t        |«      | _        || _        | j                  | j                  | j                  «      g}dt        |«      dz
  z  |k  r>|j                   |t        t        |«      «      «      «       dt        |«      dz
  z  |k  rŒ>|�
|dkD  r|dd  }t        |«      | _        y )Né   r>   )r"   r#   rT   rU   rR   r   Úlimited_baserS   ÚlenÚappendr   rM   r   )r(   rR   rS   rT   rU   Ú
strategiesr)   s         €r   r#   zRecursiveStrategy.__init___   sÈ   ø€ ô 	‰ÑÔØ$ˆŒØ$ˆŒØˆŒ	Ü+¨DÓ1ˆÔØˆŒà×'Ñ'¨¯©°T×5FÑ5FÓ)GÐHˆ
Ø”C˜
“O aÑ'Ñ(¨JÒ6Ø×Ñ™f¤]´5¸Ó3DÓ%EÓFÔGð ”C˜
“O aÑ'Ñ(¨JÓ6ð Ð! j°1¢nØ# A B˜ˆJÜ% jÓ1ˆ�r   r*   c           	      ó¼   — t        | d«      sEd| j                  ›dt        | j                  «      › d| j                  › d| j
                  › d�	| _        | j                  S )NÚ_cached_reprz
recursive(z, z, min_leaves=z, max_leaves=r7   )ÚhasattrrR   r   rS   rT   rU   r]   r/   s    r   r8   zRecursiveStrategy.__repr__u   sa   € Ü�t˜^Ô,à˜TŸY™Y˜M¨Ü2°4·;±;Ó?Ð@ð AØ"Ÿo™oÐ.¨m¸D¿O¹OÐ;LÈAðOð Ôð
 × Ñ Ð r   c                 óº  — t        | j                  d«       | j                  | j                  «      }t        |d| j                  ›d�«       | j                  j	                  «        |j	                  «        t        | j                  «      rt        j                  dt        d¬«       t        | j                  «      s@dt        | j                  «      › d�}| j                  €t        |d	d
d¬«       nt        |«      ‚| j                  �t        t        | j                  d«       t        t        | j                   d«       | j                  �(| j                  dk  rt        d| j                  ›d�«      ‚| j                   dk  rt        d| j                   ›d�«      ‚| j                  xs d| j                   kD  r%t        d| j                  ›d| j                   ›�«      ‚y )NrR   zextend(r7   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_codemodra   rT   rU   r   úmin_leaves=z must be greater than zerozmax_leaves=z* must be less than or equal to max_leaves=)r   rR   rS   rX   r:   r   ÚwarningsÚwarnr   r   r   rT   r   r	   r   rI   rU   )r(   ÚextendedÚmsgs      r   r;   zRecursiveStrategy.do_validate~   s³  € Ü�t—y‘y &Ô)Ø—;‘;˜t×0Ñ0Ó1ˆÜ�x 7¨4×+<Ñ+<Ð*?¸qÐ!AÔBØ×Ñ×"Ñ"Ô$Ø×ÑÔä §¡Ô,Ü�M‰MðUä!Øõ	ô 5°T·[±[ÔAàÔ9¸$¿+¹+ÓFÐGð HBð Bð ð �‰Ð&Ü ØØ&Ø %Ø ö	ô & cÓ*Ð*à�?‰?Ð&Ü”s˜DŸO™O¨\Ô:Ü”3˜Ÿ™¨Ô6Ø�?‰?Ð&¨4¯?©?¸aÒ+?Ü!Ø˜dŸo™oÐ0Ð0JÐKóð ð �?‰?˜aÒÜ!Ø˜dŸo™oÐ0Ð0JÐKóð ð �O‰OÒ ˜q D§O¡OÒ3Ü!Ø˜dŸo™oÐ0ð 1Ø"Ÿo™oÐ0ð2óð ð 4r   r<   c                 ó@  — d}	 	 | j                   j                  | j                  «      5  |j                  | j                  «      }| j                  | j                   j
                  z
  }| j                  rb|| j                  k  rSd|j                  d| ›d| j                  › d�<   |dz  }|dk  r
	 d d d «       Œµ|j                  d| j                  › d	�«       |cd d d «       S # 1 sw Y   nxY wn/# t        $ r# d|j                  d| ›d
| j                  › d�<   Y nw xY w�Œ)Nr   Ú z	Draw for z had fewer than min_leaves=z and had to be retriedr>   r`   rd   z unsatisfiedz exceeded max_leaves=)
rX   rF   rU   r?   r   r,   rT   ÚeventsÚmark_invalidr   )r(   r<   Úmin_leaves_retriesÚresultÚleaves_drawns        r   r@   zRecursiveStrategy.do_draw­   s=  € ØÐØðØ×&Ñ&×-Ñ-¨d¯o©oÓ>ñ "Ø!ŸY™Y t§}¡}Ó5�FØ#'§?¡?°T×5FÑ5F×5MÑ5MÑ#M�LØ—’¨<¸$¿/¹/Ò+Ið ð Ÿ™Ø'¨ xð 0*Ø*.¯/©/Ð):Ð:PðRñð +¨aÑ/Ð*Ø-°Ò1Ø$÷"ð "ð ×)Ñ)¨K¸¿¹Ð7HÈÐ*UÔVØ!÷"÷ "ò "úð "øô  ò ð ð —‘Ø ˜xð ("Ø"&§/¡/Ð!2Ð2HðJóðúñ s5   …%C/ ªBC"Â/C/ Â8 C"Ã	C/ Ã"C+Ã'C/ Ã/)DÄDr0   .c                 ó8   — | j                   j                  |«      S r!   )r   rB   r2   s     r   rB   zRecursiveStrategy._invertÄ   s   € ð �}‰}×$Ñ$ UÓ+Ð+r   rG   )r   r   r   r   r   rI   r#   rL   r8   r;   r   r   r@   rM   r
   rB   rN   rO   s   @r   rQ   rQ   ^   s€   ø„ ð2àð2ð ˜.Ð)¨>Ð9Ñ:ð2ð ˜$‘Jð	2ð
 õ2ð,!˜#ó !ó-ð^˜Nð ¨só ð.,˜Sð , U¨7°C¨<Ñ%8÷ ,r   rQ   )"r%   re   Úcollections.abcr   r   Ú
contextlibr   Útypingr   r   Úhypothesis.errorsr   r	   Ú%hypothesis.internal.conjecture.choicer
   Ú#hypothesis.internal.conjecture.datar   Úhypothesis.internal.reflectionr   r   r   Úhypothesis.internal.validationr   Ú*hypothesis.strategies._internal.strategiesr   r   r   Úhypothesis.utils.deprecationr   r   ÚBaseExceptionr   r   rQ   r   r   r   ú<module>r|      sr   ðó Û ß /Ý %ß ç @Ý 9Ý >÷ñ õ
 6÷ñ õ
 :áˆCƒL€ô	�=ô 	ô3/�n QÑ'ô 3/ôlj,˜õ j,r   