Ë
    iKêj#  ã                   ó˜   — d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZmZmZmZ  G d
„ dee   «      Zy)é    N)ÚCallableÚSequence)ÚAny)Ú&check_sideeffect_during_initialization)ÚInvalidArgument)ÚChoiceT)ÚConjectureData)Úget_pretty_function_description)ÚExÚRecurTÚSearchStrategyÚcheck_strategyc                   óØ   ‡ — e Zd ZdZdeg ee   f   fˆ fd„Zedee   fd„«       Z	ede
ee      fd„«       Zdefd„Zdedefd	„Zdedefd
„Zdefd„Zdedefd„Zdedeedf   fd„Zˆ xZS )ÚDeferredStrategyz8A strategy which may be used before it is fully defined.Ú
definitionc                 óL   •— t         ‰| �  «        d | _        d| _        || _        y )NF)ÚsuperÚ__init__Ú#_DeferredStrategy__wrapped_strategyÚ_DeferredStrategy__in_reprÚ_DeferredStrategy__definition)Úselfr   Ú	__class__s     €úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/strategies/_internal/deferred.pyr   zDeferredStrategy.__init__   s%   ø€ Ü‰ÑÔØ=AˆÔØ$ˆŒØEOˆÕó    Úreturnc                 ó6  — | j                   }| j                  €vt        d| «       t        j                  |«      s%t        d|›dt        |«      j                  › d�«      ‚ |«       }|| u rt        d«      ‚t        |d«       || _        d | _         | j                  S )Nzdeferred evaluation of {!r}z-Expected definition to be a function but got z	 of type z	 instead.z.Cannot define a deferred strategy to be itselfzdefinition())	r   r   r   ÚinspectÚ
isfunctionr   ÚtypeÚ__name__r   )r   r   Úresults      r   Úwrapped_strategyz!DeferredStrategy.wrapped_strategy%   sª   € ð ×&Ñ&ˆ
Ø×"Ñ"Ð*Ü2Ð3PÐRVÔWä×%Ñ% jÔ1Ü%ØCÀJÀ>ð RÜ# JÓ/×8Ñ8Ð9¸ðDóð ñ  “\ˆFØ˜‰~Ü%Ð&VÓWÐWÜ˜6 >Ô2Ø&,ˆDÔ#Ø $ˆDÔØ×&Ñ&Ð&r   c                 ó.   — | j                   j                  S ©N)r#   Úbranches©r   s    r   r&   zDeferredStrategy.branches:   s   € à×$Ñ$×-Ñ-Ð-r   c                 ó   — | j                   S )aH  Deferred strategies don't have a calculated label, because we would
        end up having to calculate the fixed point of some hash function in
        order to calculate it when they recursively refer to themself!

        The label for the wrapped strategy will still appear because it
        will be passed to draw.
        )Úclass_labelr'   s    r   Ú
calc_labelzDeferredStrategy.calc_label>   s   € ð ×ÑÐr   Úrecurc                 ó&   —  || j                   «      S r%   ©r#   ©r   r+   s     r   Úcalc_is_emptyzDeferredStrategy.calc_is_emptyK   ó   € Ù�T×*Ñ*Ó+Ð+r   c                 ó&   —  || j                   «      S r%   r-   r.   s     r   Úcalc_has_reusable_valuesz)DeferredStrategy.calc_has_reusable_valuesN   r0   r   c                 óæ   — | j                   �?| j                  rdt        | «      ›d�S 	 d| _        t        | j                   «      d| _        S t	        | j
                  «      }d|› d�S # d| _        w xY w)Nz
(deferred@ú)TFz	deferred()r   r   ÚidÚreprr
   r   )r   Údescriptions     r   Ú__repr__zDeferredStrategy.__repr__Q   ss   € Ø×"Ñ"Ð.Ø�~Š~Ø#¤B t£H <¨qÐ1Ð1ð'Ø!%�”Ü˜D×3Ñ3Ó4à!&�•ä9¸$×:KÑ:KÓLˆKØ˜{˜m¨1Ð-Ð-øð "'�•ús   ©A' Á'	A0Údatac                 ó8   — |j                  | j                  «      S r%   )Údrawr#   )r   r9   s     r   Údo_drawzDeferredStrategy.do_draw^   s   € Ø�y‰y˜×.Ñ.Ó/Ð/r   Úvalue.c                 ó8   — | j                   j                  |«      S r%   )r#   Ú_invert)r   r=   s     r   r?   zDeferredStrategy._inverta   s   € Ø×$Ñ$×,Ñ,¨UÓ3Ð3r   )r!   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Úpropertyr#   r   r&   Úintr*   r   Úboolr/   r2   Ústrr8   r	   r<   r   Útupler   r?   Ú__classcell__)r   s   @r   r   r      sÕ   ø„ ÙBðP 8¨B°¸rÑ0BÐ,BÑ#Cõ Pð ð' .°Ñ"4ò 'ó ð'ð( ð.˜( >°"Ñ#5Ñ6ò .ó ð.ð ˜Có  ð, 6ð ,¨dó ,ð,¨fð ,¸ó ,ð.˜#ó .ð0˜Nð 0¨ró 0ð4˜Sð 4 U¨7°C¨<Ñ%8÷ 4r   r   )r   Úcollections.abcr   r   Útypingr   Úhypothesis.configurationr   Úhypothesis.errorsr   Ú%hypothesis.internal.conjecture.choicer   Ú#hypothesis.internal.conjecture.datar	   Úhypothesis.internal.reflectionr
   Ú*hypothesis.strategies._internal.strategiesr   r   r   r   r   © r   r   ú<module>rR      s<   ðó ß .Ý å KÝ -Ý 9Ý >Ý J÷ó ôF4�~ bÑ)õ F4r   