Ë
    iKêjjm  ã                   ó˜  — d dl Z d dlmZ d dlm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mZ d d	lmZ d d
lmZmZ g d¢Zeedf   Zeez  dz  ez  Zeez  dz  Zeez  ez  Zeez  Zeeedf   z  Z  G d„ de«      Z!ed„ «       Z"ed„ «       Z#dZ$ed„ «       Z% e«       dddddœdededz  dededz  dejL                  e   f
d„«       Z' e«       d ddœdedededz  dejL                  eedf      fd„«       Z( e«       d ddddœd edededz  dededz  dejL                  e   fd!„«       Z)d"Z*d#e*› d$e*› d%�Z+e+› d$e+› d&�Z,d'e,› d(e+› d)�Z-d'e,› d(e,› d)�Z. G d*„ d+e«      Z/d,„ Z0 e«       eed-d dddd.œd/eez  d0ee1z  d1edededz  dededz  dejL                  e!   fd2„«       Z2 G d3„ d4ejL                  «      Z3 G d5„ d6ejL                  «      Z4y)7é    N)ÚEllipsisType)Ú
NamedTuple)ÚassumeÚ
strategies©ÚInvalidArgument)Ú_calc_p_continue)Úcheck_function)Ú
check_typeÚcheck_valid_interval)Údefines_strategy)ÚUniqueIdentifierÚnot_set)ÚNDIM_MAXÚ_BIEÚ
BasicIndexÚBasicIndexStrategyÚBroadcastableShapesÚ#MutuallyBroadcastableShapesStrategyÚShapeÚ_BIENoEllipsisÚ_BIENoEllipsisNoNewaxisÚ_BIENoNewaxisÚarray_shapesÚbroadcastable_shapesÚcheck_argumentÚcheck_valid_dimsÚmutually_broadcastable_shapesÚorder_checkÚvalid_tuple_axes.c                   ó,   — e Zd ZU eedf   ed<   eed<   y)r   .Úinput_shapesÚresult_shapeN©Ú__name__Ú
__module__Ú__qualname__Útupler   Ú__annotations__© ó    úd/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/extra/_array_helpers.pyr   r   8   ó   … Ø˜˜s˜
Ñ#Ó#ØÔr+   r   c                 ó>   — | st         |j                  |i |¤Ž«      ‚y ©N)r   Úformat)Ú	conditionÚfail_messageÚf_argsÚf_kwargss       r,   r   r   =   s(   € áÜÐ1˜l×1Ñ1°6ÐF¸XÑFÓGÐGð r+   c           
      ón   — ||kD  rt        d| › d|› d|› �«      ‚||kD  rt        d| › d|› d| › d|› �«      ‚y )NÚmin_z must be at least z	 but was ú=z is larger than max_r   )ÚnameÚfloorr6   Úmax_s       r,   r   r   C   sY   € àˆt‚|Ü  T FÐ*<¸U¸GÀ9ÈTÈFÐSÓTÐTØˆd‚{Ü  T F¨!¨D¨6Ð1EÀdÀVÈ1ÈTÈFÐSÓTÐTð r+   é    c                 óF   — | t         kD  rt        |› d| › dt         › d�«      ‚y )Nr7   z8, but Hypothesis does not support arrays with more than z dimensions)r   r   )Údimsr8   s     r,   r   r   S   s7   € àŒh‚ÜØˆf�A�d�Vð Ü!˜
 +ð/ó
ð 	
ð r+   é   ©Úmin_dimsÚmax_dimsÚmin_sideÚmax_sider@   rA   rB   rC   Úreturnc                 ó¨  — t        t        | d«       t        t        |d«       t        | d«       |€t        | dz   t        «      }t        t        |d«       t        |d«       |€|dz   }t        t        |d«       t        dd| |«       t        d	d||«       t        j                  t        j                  ||«      | |¬
«      j                  t        «      S )a´  Return a strategy for array shapes (tuples of int >= 1).

    * ``min_dims`` is the smallest length that the generated shape can possess.
    * ``max_dims`` is the largest length that the generated shape can possess,
      defaulting to ``min_dims + 2``.
    * ``min_side`` is the smallest size that a dimension can possess.
    * ``max_side`` is the largest size that a dimension can possess,
      defaulting to ``min_side + 5``.
    r@   rB   é   rA   é   rC   r=   r   Úside©Úmin_sizeÚmax_size)r   Úintr   Úminr   r   ÚstÚlistsÚintegersÚmapr(   r?   s       r,   r   r   \   sµ   € ô" Œs�H˜jÔ)ÜŒs�H˜jÔ)Ü�X˜zÔ*àÐÜ�x !‘|¤XÓ.ˆÜŒs�H˜jÔ)Ü�X˜zÔ*àÐØ˜a‘<ˆÜŒs�H˜jÔ)ä�˜˜8 XÔ.Ü�˜˜8 XÔ.ä�8‰8Ü
�‰�H˜hÓ'°(ÀXôç	�cŒ%ƒjðr+   rI   ÚndimrJ   rK   c                óx  ‡ — t        t        ‰ d«       t        t        |d«       |€‰ }t        t        |d«       t        dd||«       t        |‰ dd«       t	        j
                  dt        dd‰ z  dz
  «      «      j                  ˆ fd„«      }t	        j                  |||ˆ fd	„¬
«      j                  t        «      S )aÂ  
    All tuples will have a length >= ``min_size`` and <= ``max_size``. The default
    value for ``max_size`` is ``ndim``.

    Examples from this strategy shrink towards an empty tuple, which render most
    sequential functions as no-ops.

    The following are some examples drawn from this strategy.

    .. code-block:: pycon

      >>> [valid_tuple_axes(3).example() for i in range(4)]
      [(-3, 1), (0, 1, -1), (0, 2), (0, -2, 2)]

    ``valid_tuple_axes`` can be joined with other strategies to generate
    any type of valid axis object, i.e. integers, tuples, and ``None``:

    .. code-block:: python

      any_axis_strategy = none() | integers(-ndim, ndim - 1) | valid_tuple_axes(ndim)
    rR   rJ   rK   Úsizer   rF   r>   c                 ó"   •— | ‰k  r| S | d‰z  z
  S )NrF   r*   ©ÚxrR   s    €r,   ú<lambda>z"valid_tuple_axes.<locals>.<lambda>§   s   ø€ �q˜4’x�!€  Q¨¨T©¡\€ r+   c                 ó   •— | ‰z  S r/   r*   rV   s    €r,   rX   z"valid_tuple_axes.<locals>.<lambda>«   s   ø€ ÈÈDÉ€ r+   )rJ   rK   Ú	unique_by)
r   rL   r   r   rN   rP   ÚmaxrQ   rO   r(   )rR   rJ   rK   Úaxess   `   r,   r    r    ‚   s£   ø€ ô8 Œs�D˜&Ô!ÜŒs�H˜jÔ)ØÐØˆÜŒs�H˜jÔ)Ü�˜˜8 XÔ.Ü˜ 4¨°VÔ<ä�;‰;�qœ#˜a  T¡¨A¡Ó.Ó/×3Ñ3Û1ó€Dô �8‰8Ø�x¨(Ó>Pôç	�cŒ%ƒjðr+   Úshapec                óŒ  ‡‡— t        t        | d«       t        t        ‰d«       t        t        |d«       t        |d«       ‰du xs |du }|€&t	        t        t        | «      |«      dz   t        «      }t        t        |d«       t        |d«       ‰€t        | | d ‰fz   «      dz   Št        t        ‰d«       t        dd	||«       t        d
d	‰‰«       |r|}d}n|}d}t        ˆfd„| ddd…   d| D «       «      st        d| › d|› d|› d‰› �«      ‚‰dcxk  r‰k  s9n t        ˆfd„| ddd…   d| D «       «      st        d| › d|› d|› d‰› d‰› �
«      ‚|sJt        t        |«      | ddd…   d¬«      D ]*  \  }}	|	‰k  r	|	dk7  r|} n‰dcxk  r‰k  rŒ n |	‰k  rŒ(|} n t        d| ||‰‰¬«      j                  d„ «      S )aù  Return a strategy for shapes that are broadcast-compatible with the
    provided shape.

    Examples from this strategy shrink towards a shape with length ``min_dims``.
    The size of an aligned dimension shrinks towards size ``1``. The size of an
    unaligned dimension shrink towards ``min_side``.

    * ``shape`` is a tuple of integers.
    * ``min_dims`` is the smallest length that the generated shape can possess.
    * ``max_dims`` is the largest length that the generated shape can possess,
      defaulting to ``max(len(shape), min_dims) + 2``.
    * ``min_side`` is the smallest size that an unaligned dimension can possess.
    * ``max_side`` is the largest size that an unaligned dimension can possess,
      defaulting to 2 plus the size of the largest aligned dimension.

    The following are some examples drawn from this strategy.

    .. code-block:: pycon

        >>> [broadcastable_shapes(shape=(2, 3)).example() for i in range(5)]
        [(1, 3), (), (2, 3), (2, 1), (4, 1, 3), (3, )]

    r]   rB   r@   NrF   rA   rC   r=   r   rH   c              3   ó4   •K  — | ]  }|d k7  sŒ	‰|k  –— Œ y­w©r>   Nr*   ©Ú.0ÚsrB   s     €r,   ú	<genexpr>z'broadcastable_shapes.<locals>.<genexpr>ê   s   øè ø€ ÒC ¸AÀ»Fˆx˜1�}ÑCùó   ƒ
Ž
éÿÿÿÿzGiven shape=ú9, there are no broadcast-compatible shapes that satisfy: r7   ú and min_side=r>   c              3   ó(   •K  — | ]	  }|‰k  –— Œ y ­wr/   r*   ©rb   rc   rC   s     €r,   rd   z'broadcastable_shapes.<locals>.<genexpr>ò   s   øè ø€ Ò(S¸1¨¨h­Ñ(Sùó   ƒúGiven base_shape=ú?, there are no broadcast-compatible shapes that satisfy all of ú, min_side=ú, and max_side=F©Ústrict)Ú
num_shapesÚ
base_shaper@   rA   rB   rC   c                 ó    — | j                   d   S )Nr   )r"   )rW   s    r,   rX   z&broadcastable_shapes.<locals>.<lambda>  s   € �A—N‘N 1Ñ%€ r+   )r   r(   rL   r   rM   r[   Úlenr   r   Úallr   ÚzipÚranger   rQ   )
r]   r@   rA   rB   rC   Ústrict_checkr=   Ú
bound_nameÚnrc   s
      ``     r,   r   r   ¯   s"  ù€ ô@ Œu�e˜WÔ%ÜŒs�H˜jÔ)ÜŒs�H˜jÔ)Ü�X˜zÔ*à˜tÐ#Ò7 x°4Ð'7€LàÐÜ”sœ3˜u›: xÓ0°1Ñ4´hÓ?ˆÜŒs�H˜jÔ)Ü�X˜zÔ*àÐÜ�u˜h˜Y˜ZÐ(¨H¨;Ñ6Ó7¸!Ñ;ˆÜŒs�H˜jÔ)ä�˜˜8 XÔ.Ü�˜˜8 XÔ.áØˆØ‰
àˆØˆ
ô ÓC e©D¨b¨D¡k°%°4Ð&8ÔCÔCÜØ˜5˜'ð "$Ø$. <¨q°°°nÀXÀJðPó
ð 	
ð 	�AÔ!˜Ô!¤SÓ(SÀÁdÈÀdÁÈEÈTÐ@RÔ(SÔ%SäØ ˜wð '*Ø*4¨°Q°t°fð =Ø �z °°
ð<ó
ð 	
ñ äœ˜h›¨©t°¨t©¸UÔCò 	‰DˆAˆqØ�8Š|  Q¢Ø�ÙØ Ô- XÕ-°°h³Ø�Ùð	ô /ØØØØØØô÷ 
�cÑ
%Ó&ð'r+   z\w+\??z\((?:z(?:,z){0,31})?\)z)*ú^ú->ú$c                   ó,   — e Zd ZU eedf   ed<   eed<   y)Ú
_GUfuncSig.r"   r#   Nr$   r*   r+   r,   r€   r€   (  r-   r+   r€   c                 ó  — t        j                  t        | «      sct        j                  t        | «      rt	        d| ›d�«      ‚t        j                  d| «      rt	        d| ›dt
        › d�«      ‚t	        | ›d�«      ‚d„ | j                  d	«      D «       \  }}t        |«      d
k(  sJ ‚|d   }g |¢|‘­D ]:  }|D ]3  }	 t        |j                  d«      «       d|v rt	        d|›d| ›d�«      ‚Œ5 Œ< t        ||¬«      S # t        $ r~ |D ��ch c]  }|D ]  }|j                  d«      ’Œ Œ nc c}}w }}}|D �ch c]  }|j                  d«      ’Œ nc c}w }	}|j                  d«      |	|z
  v rt	        d|›d| ›d�«      d ‚Y ŒËw xY w)NzÇHypothesis does not yet support generalised ufunc signatures with multiple output arrays - mostly because we don't know of anyone who uses them!  Please get in touch with us to fix that.
 (signature=ú)zd^\((?:\w+(?:,\w+)*)?\)(?:,\((?:\w+(?:,\w+)*)?\))*->\((?:\w+(?:,\w+)*)?\)(?:,\((?:\w+(?:,\w+)*)?\))*$z
signature=zQ matches Numpy's regex for gufunc signatures, but contains shapes with more than z  dimensions and is thus invalid.z  is not a valid gufunc signaturec              3   óp   K  — | ].  }t        d „ t        j                  t        |«      D «       «      –— Œ0 y­w)c              3   ób   K  — | ]'  }t        t        j                  t        |«      «      –— Œ) y ­wr/   )r(   ÚreÚfindallÚ
_DIMENSION)rb   Úas     r,   rd   z?_hypothesis_parse_gufunc_signature.<locals>.<genexpr>.<genexpr>E  s    è ø€ ÒU°1Œe”B—J‘Jœz¨1Ó-×.ÑUùs   ‚-/N)r(   r…   r†   Ú_SHAPE)rb   Úarg_lists     r,   rd   z5_hypothesis_parse_gufunc_signature.<locals>.<genexpr>D  s.   è ø€ ò #àô 	ÑU¼¿
¹
Ä6È8Ó8TÔU×Uñ#ùs   ‚46r}   r>   r   ú?zGot dimension z�, but handling of frozen optional dimensions is ambiguous.  If you known how this should work, please contact us to get this fixed and documented (signature=z).zThe zi dimension only appears in the output shape, and is not frozen, so the size is not determined (signature=©r"   r#   )r…   ÚmatchÚ
_SIGNATUREÚ_SIGNATURE_MULTIPLE_OUTPUTr   r   Úsplitru   rL   ÚstripÚ
ValueErrorr€   )
Ú	signaturer"   Úoutput_shapesr#   r]   r8   Úshpr{   Únames_inÚ	names_outs
             r,   Ú"_hypothesis_parse_gufunc_signaturer˜   -  sô  € ä�8‰8”J 	Ô*Ü�8‰8Ô.°	Ô:Ü!ð"ð !�l !ð%óð ô �8‰8ðEð ô
ô "Ø�9�,ð 6Ü6>°ZÐ?_ðaóð ô   Ð-MÐNÓOÐOñ#à!Ÿ™¨Ó-ô#Ñ€L�-ô ˆ}Ó Ò"Ð"Ð"Ø  Ñ#€Lð /�<Ð. Ñ.ò  ˆØò 	 ˆDð Ü�D—J‘J˜s“OÔ$Ø˜$‘;Ü)Ø(¨¨ð 1SàHQÀ|ÐSUðWóð ð ñ	 ð ô$  <¸lÔKÐKøô ò  Ø4@×N¨SÈ#ÒNÀQ˜AŸG™G C�LÐN˜LÑNùÓN�ÑNØ3?Ö@¨a˜QŸW™W S�\Ñ@ùÒ@�	Ð@Ø—:‘:˜c“? y°8Ñ';Ñ<Ü)Ø˜t˜hð 'QØFOÀ\ÐQSðUóð  ð ñ =ð ús*   Â>0C?Ã?FÄD-Ä,FÄ:E
Å1FÆFr*   ©rr   r“   rs   r@   rA   rB   rC   rr   r“   rs   c                 ó^  ‡‡— d}| t         ur:t        |t         u |«       t        t        | d«       t	        | t        «      sJ ‚d}d}	n}t        |t         u|«       |€t        d«      ‚t        t        |d«       t        |«      }g |j                  ¢|j                  ‘­}
t        d„ |
D «       «      }	t        |j                  «      } | dk  rt        d	| › d
�«      ‚t        t        |d«       t        t        ‰d«       t        t        |d«       t        |d«       |du}|€)t        t        t        |«      |«      dz   t        |	z
  «      }t        t        |d«       t        |d«       ‰€t        || d ‰fz   «      dz   Št        t        ‰d«       t!        dd||«       t!        dd‰‰«       |�$|t        |	z
  kD  rt        d|›dt        › d|›�«      ‚|r|}d}n|}d}t#        ˆfd„|ddd…   d| D «       «      st        d|› d|› d|› d‰› �«      ‚‰dcxk  r‰k  s9n t#        ˆfd„|ddd…   d| D «       «      st        d|› d|› d|› d‰› d‰› �
«      ‚|sJt%        t'        |«      |ddd…   d ¬!«      D ]*  \  }}|‰k  r	|dk7  r|} n‰dcxk  r‰k  rŒ n |‰k  rŒ(|} n t)        | ||||‰‰¬"«      S )#a[  
    Return a strategy for a specified number of shapes N that are
    mutually-broadcastable with one another and with the provided base shape.

    * ``num_shapes`` is the number of mutually broadcast-compatible shapes to generate.
    * ``base_shape`` is the shape against which all generated shapes can broadcast.
      The default shape is empty, which corresponds to a scalar and thus does
      not constrain broadcasting at all.
    * ``min_dims`` is the smallest length that the generated shape can possess.
    * ``max_dims`` is the largest length that the generated shape can possess,
      defaulting to ``max(len(shape), min_dims) + 2``.
    * ``min_side`` is the smallest size that an unaligned dimension can possess.
    * ``max_side`` is the largest size that an unaligned dimension can possess,
      defaulting to 2 plus the size of the largest aligned dimension.

    The strategy will generate a :obj:`python:typing.NamedTuple` containing:

    * ``input_shapes`` as a tuple of the N generated shapes.
    * ``result_shape`` as the resulting shape produced by broadcasting the N shapes
      with the base shape.

    The following are some examples drawn from this strategy.

    .. code-block:: pycon

        >>> # Draw three shapes where each shape is broadcast-compatible with (2, 3)
        ... strat = mutually_broadcastable_shapes(num_shapes=3, base_shape=(2, 3))
        >>> for _ in range(5):
        ...     print(strat.example())
        BroadcastableShapes(input_shapes=((4, 1, 3), (4, 2, 3), ()), result_shape=(4, 2, 3))
        BroadcastableShapes(input_shapes=((3,), (1, 3), (2, 3)), result_shape=(2, 3))
        BroadcastableShapes(input_shapes=((), (), ()), result_shape=())
        BroadcastableShapes(input_shapes=((3,), (), (3,)), result_shape=(3,))
        BroadcastableShapes(input_shapes=((1, 2, 3), (3,), ()), result_shape=(1, 2, 3))
    zGPass either the `num_shapes` or the `signature` argument, but not both.rr   Nr   zjExpected a string, but got invalid signature=None.  (maybe .signature attribute of an element-wise ufunc?)r“   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr/   )ru   ©rb   rc   s     r,   rd   z0mutually_broadcastable_shapes.<locals>.<genexpr>£  s   è ø€ Ò2 !”s˜1—vÑ2ùó   ‚r>   znum_shapes=z must be at least 1rs   rB   r@   rF   rA   rC   r=   rH   z	max_dims=z would exceed the zD-dimensionlimit Hypothesis imposes on array shapes, given signature=c              3   ó4   •K  — | ]  }|d k7  sŒ	‰|k  –— Œ y­wr`   r*   ra   s     €r,   rd   z0mutually_broadcastable_shapes.<locals>.<genexpr>Ë  s   øè ø€ ÒH ÀÀaÃˆx˜1�}ÑHùre   rf   rl   rg   r7   rh   c              3   ó(   •K  — | ]	  }|‰k  –— Œ y ­wr/   r*   rj   s     €r,   rd   z0mutually_broadcastable_shapes.<locals>.<genexpr>Ó  s   øè ø€ Ò(X¸1¨¨h­Ñ(Xùrk   rm   rn   ro   Frp   r™   )r   r   r   rL   Ú
isinstancer   Ústrr˜   r"   r#   rM   ru   r(   r   r[   r   r   rv   rw   rx   r   )rr   r“   rs   r@   rA   rB   rC   Úarg_msgÚparsed_signatureÚsig_dimsÚ
all_shapesry   r=   rz   r{   rc   s        ``         r,   r   r   d  s7  ù€ ð\ X€GØœÑ Ü�y¤GÐ+¨WÔ5Ü”3˜
 LÔ1Ü˜*¤cÔ*Ð*Ð*ØÐØ‰ä�y¬Ð/°Ô9ØÐÜ!ðIóð ô 	”3˜	 ;Ô/Ü=¸iÓHÐØTÐ'×4Ñ4ÐTÐ6F×6SÑ6SÑTˆ
ÜÑ2 zÔ2Ó2ˆÜÐ)×6Ñ6Ó7ˆ
à�A‚~Ü ¨J¨<Ð7JÐKÓLÐLäŒu�j ,Ô/ÜŒs�H˜jÔ)ÜŒs�H˜jÔ)Ü�X˜zÔ*à 4Ð'€LàÐÜ”sœ3˜z›?¨HÓ5¸Ñ9¼8ÀhÑ;NÓOˆÜŒs�H˜jÔ)Ü�X˜zÔ*àÐÜ�z 8 ) *Ð-°°Ñ;Ó<¸qÑ@ˆÜŒs�H˜jÔ)ä�˜˜8 XÔ.Ü�˜˜8 XÔ.àÐ ¬H°xÑ,?Ò!?ÜØ˜	�}Ð$6´x°jð Aà/Ð2ð4ó
ð 	
ñ ØˆØ‰
àˆØˆ
ô ÓH j±°2°Ñ&6°u¸Ð&=ÔHÔHÜØ 
˜|ð ,$Ø$. <¨q°°°nÀXÀJðPó
ð 	
ð 	�AÔ!˜Ô!¤SÓ(XÀ
É4ÈRÈ4Ñ@PÐQVÐRVÐ@WÔ(XÔ%XäØ 
˜|ð ,*Ø*4¨°Q°t°fð =Ø �z °°
ð<ó
ð 	
ñ äœ˜h›¨±D°b°DÑ)9À%ÔHò 	‰DˆAˆqØ�8Š|  Q¢Ø�ÙØ Ô- XÕ-°°h³Ø�Ùð	ô /ØØ"ØØØØØôð r+   c                   ó@   ‡ — e Zd Z	 	 	 	 	 	 dˆ fd„	Zd„ Zd„ Zdd„Zˆ xZS )r   c                 ó  •— t         ‰| �  «        || _        t        j                  ||«      | _        || _        || _        || _        || _	        || _
        || _        | j                  dcxk  xr | j                  k  | _        y c | _        y )Nr>   )ÚsuperÚ__init__rs   rN   rP   Ú
side_stratrr   r“   r@   rA   rB   rC   Úsize_one_allowed)	Úselfrr   r“   rs   r@   rA   rB   rC   Ú	__class__s	           €r,   r©   z,MutuallyBroadcastableShapesStrategy.__init__ñ  su   ø€ ô 	‰ÑÔØ$ˆŒÜŸ+™+ h°Ó9ˆŒØ$ˆŒØ"ˆŒØ ˆŒØ ˆŒØ ˆŒØ ˆŒà $§¡°Ö C°d·m±mÑ CˆÕÑ CˆÕr+   c           
      ó(  ‡— | j                   €| j                  |«      S | j                  |«      \  }}|D �cg c]  }d |v‘Œ }}| j                  ||¬«      \  }}d„ Št        t	        ˆfd„t        ||d¬«      D «       «       ‰||«      ¬«      S c c}w )N)Úusec                 ó<   — t        d„ | |z   t         d  D «       «      S )Nc              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr/   r*   ©rb   rW   s     r,   rd   zQMutuallyBroadcastableShapesStrategy.do_draw.<locals>.add_shape.<locals>.<genexpr>  s   è ø€ ÒO˜qÀÁœÑOùs   ‚Š)r(   r   )ÚloopÚcores     r,   Ú	add_shapez>MutuallyBroadcastableShapesStrategy.do_draw.<locals>.add_shape  s    € ÜÑO T¨D¡[´8°)°*Ð$=ÔOÓOÐOr+   c              3   ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wr/   r*   )rb   Úl_inÚcrµ   s      €r,   rd   z>MutuallyBroadcastableShapesStrategy.do_draw.<locals>.<genexpr>  s!   øè ø€ ò Ù'. t¨Q‘	˜$ ×"ñùs   ƒTrp   rŒ   )r“   Ú_draw_loop_dimensionsÚ_draw_core_dimensionsr   r(   rw   )	r¬   ÚdataÚcore_inÚcore_resr•   r¯   Úloop_inÚloop_resrµ   s	           @r,   Údo_drawz+MutuallyBroadcastableShapesStrategy.do_draw  s¬   ø€ à�>‰>Ð!Ø×-Ñ-¨dÓ3Ð3ð !×6Ñ6°tÓ<Ñˆ�ð +2Ö2 3ˆt˜3ŠÐ2ˆÐ2Ø ×6Ñ6°tÀÐ6ÓEÑˆ�ò	Pô #Üó Ü25°g¸wÈtÔ2Tôó ñ # 8¨XÓ6ô	
ð 	
ùò 3s   ·Bc                 ó@  — i }g }g | j                   j                  ¢| j                   j                  ‘­D ]Æ  }|j                  g «       |D ]®  }|j	                  «       r|d   j                  t        |«      «       Œ1||vrc|j                  d«      }|j                  | j                  «      ||<   | j                  dk(  r|j                  d«      s	d ||dz   <   n||   ||dz   <   |d   j                  ||   «       Œ° ŒÈ t        d„ |d d D «       «      t        |d   «      fS )Nrf   r‹   r   g      ì?c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr/   )r(   rœ   s     r,   rd   zLMutuallyBroadcastableShapesStrategy._draw_core_dimensions.<locals>.<genexpr>6  s   è ø€ Ò3 !”U˜1—XÑ3ùr�   )r“   r"   r#   ÚappendÚisdigitrL   r‘   Údrawrª   r@   Údraw_booleanr(   )r¬   r»   r=   Úshapesr]   r8   Údims          r,   rº   z9MutuallyBroadcastableShapesStrategy._draw_core_dimensions"  s  € ð ˆØˆØP�t—~‘~×2Ñ2ÐP°D·N±N×4OÑ4OÑPò 	.ˆEØ�M‰M˜"ÔØò .�Ø—<‘<”>Ø˜2‘J×%Ñ%¤c¨$£iÔ0ØØ˜tÑ#ØŸ*™* S›/�CØ $§	¡	¨$¯/©/Ó :�D˜‘IØ—}‘}¨Ò)°$×2CÑ2CÀEÔ2JØ*.˜˜S 3™Yšà*.¨s©)˜˜S 3™Y™Ø�r‘
×!Ñ! $ t¡*Õ-ñ.ð	.ô Ñ3 v¨c¨r {Ô3Ó3´U¸6À"¹:Ó5FÐFÐFr+   c           	      ó˜  ‡ — ‰ j                   d d d…   }t        |«      }t        ‰ j                  «      D �cg c]  }g ‘Œ }}|€#t        ‰ j                  «      D �cg c]  }d‘Œ }}n.t	        |«      ‰ j                  k(  sJ ‚t        d„ |D «       «      sJ ‚‰ j                  ‰ j                  z
  }t        |dz  |¬«      }t        d‰ j                  dz   «      D �]J  }	|	dz
  }
t	        |«      |	k  s||
   dk(  r|j                  ‰ j                  «      }n||
   ‰ j                  k  r||
   }nd}t        d|g«      }t        |«      D ]Î  \  }}|
t	        |«      k  r1‰ j                  r%|j                  t        j                   |«      «      }n|}‰ j                  |	k  r||xx   |j#                  |«      z  cc<   ||   sŒx|j%                  |«       t	        |«      t	        |«      k  r|j%                  |d   «       Œµ|d   dk7  sŒ¾||
   dk(  sŒÇ|d   ||
<   ŒÐ t'        |«      r�ŒK n |d t)        t+        t        ‰ j                   g|¢«      «       }t	        |«      ‰ j                  k(  sJ ‚t        ˆ fd„|D «       «      sJ ‚t        ˆ fd„|D «       «      sJ ‚t-        t/        d	„ |D «       «      t/        t1        |«      «      ¬
«      S c c}w c c}w )Nrf   Tc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr/   )r    Úboolr²   s     r,   rd   zLMutuallyBroadcastableShapesStrategy._draw_loop_dimensions.<locals>.<genexpr>A  s   è ø€ Ò8¨q”z !¤T×*Ñ8ùó   ‚rF   )Údesired_avgrK   r>   c              3   óx   •K  — | ]1  }‰j                   t        |«      cxk  xr ‰j                  k  nc –— Œ3 y ­wr/   )r@   ru   rA   )rb   rc   r¬   s     €r,   rd   zLMutuallyBroadcastableShapesStrategy._draw_loop_dimensions.<locals>.<genexpr>v  s*   øè ø€ ÒLÀ�4—=‘=¤C¨£FÖ;¨d¯m©m×;Ð;ÑLùs   ƒ7:c              3   ót   •K  — | ]/  }|D ](  }‰j                   |cxk  xr ‰j                  k  nc –— Œ* Œ1 y ­wr/   )rB   rC   )rb   rH   rc   r¬   s      €r,   rd   zLMutuallyBroadcastableShapesStrategy._draw_loop_dimensions.<locals>.<genexpr>w  s4   øè ø€ ÒX¸4ÐSWÒXÈa�4—=‘= AÖ6¨¯©×6Ð6ÐXÐ6ÑXùs   ƒ58c              3   óD   K  — | ]  }t        t        |«      «      –— Œ y ­wr/   )r(   Úreversed)rb   r]   s     r,   rd   zLMutuallyBroadcastableShapesStrategy._draw_loop_dimensions.<locals>.<genexpr>z  s   è ø€ ÒJ¸%œu¤X¨e£_×5ÑJùs   ‚ rŒ   )rs   Úlistrx   rr   ru   rv   rA   r@   r	   rÅ   rª   rC   ÚsortedÚ	enumerater«   rN   Úsampled_fromrÆ   rÃ   Úanyr[   rQ   r   r(   rÑ   )r¬   r»   r¯   rs   r#   Ú_rÇ   Ú_gapÚp_keep_extending_shapeÚ	dim_countrÈ   Údim_sideÚallowed_sidesÚshape_idr]   rH   s   `               r,   r¹   z9MutuallyBroadcastableShapesStrategy._draw_loop_dimensions8  s�  ø€ à—_‘_¡T r TÑ*ˆ
Ü˜JÓ'ˆÜ# D§O¡OÓ4Ö5˜’"Ð5ˆÐ5Øˆ;Ü!& t§¡Ó!7Ö8˜A’4Ð8ˆCÑ8ä�s“8˜tŸ™Ò.Ð.Ð.ÜÑ8°CÔ8Ô8Ð8Ð8à�}‰}˜tŸ}™}Ñ,ˆÜ!1¸dÀQ¹hÐQUÔ!VÐä˜q $§-¡-°!Ñ"3Ó4ó +	ˆIØ˜a‘-ˆCô �:‹ Ò*¨j¸©oÀÒ.BàŸ9™9 T§_¡_Ó5‘Ø˜C‘ D§M¡MÒ1à% c™?‘ð �ä" A x =Ó1ˆMÜ#,¨VÓ#4ò 6‘�˜%ð œ#˜lÓ+Ò+°×0EÒ0EàŸ9™9¤R§_¡_°]Ó%CÓD‘Dà#�Dð —=‘= 9Ò,Ø˜“M T×%6Ñ%6Ð7MÓ%NÑN“Mà�x“=Ø—L‘L Ô&Ü˜<Ó(¬3¨u«:Ò5Ø$×+Ñ+¨E°"©IÕ6Ø˜r™ a›¨L¸Ñ,=ÀÓ,BØ,1°"©I˜ SÒ)ð/6ô0 �s–8ÙðW+	ðZ $Ð$O¤c¬#¬c°D·O±OÐ3MÀfÐ3MÓ*NÓ&OÐPˆä�6‹{˜dŸo™oÒ-Ð-Ð-ÜÓLÀVÔLÔLÐLÐLÜÓXÀ6ÔXÔXÐXÐXä"ÜÑJÀ6ÔJÓJÜœx¨Ó5Ó6ô
ð 	
ùò{ 6ùâ8s   ¶	KÁ	K)Nr*   r   Nr>   Nr/   )r%   r&   r'   r©   rÀ   rº   r¹   Ú__classcell__©r­   s   @r,   r   r   ð  s.   ø„ ð ØØØØØõDò,
ò6G÷,D
r+   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r   c                 óv   •— t         ‰| �  «        || _        || _        || _        || _        || _        || _        y r/   )r¨   r©   r]   r@   rA   Úallow_ellipsisÚallow_newaxisÚallow_fewer_indices_than_dims)r¬   r]   r@   rA   râ   rã   rä   r­   s          €r,   r©   zBasicIndexStrategy.__init__€  s@   ø€ ô 	‰ÑÔØˆŒ
Ø ˆŒØ ˆŒØ,ˆÔØ*ˆÔð .KˆÕ*r+   c                 ó°  — g }| j                   D ]r  }|dk(  r|j                  t        d «      «       Œ#t        j                  | |dz
  «      t        j
                  |«      z  }|j                  |j                  |«      «       Œt t        d„ |D «       «      }| j                  rÕ|| j                  k  rÆ|| j                  k  s#|j                  t        j                  «       «      r”|j                  t        j                  dt        |«      «      «      }|j                  |d «       |dz  }| j                  rC|| j                  k  r4|| j                  k  rŒp|j                  t        j                  «       «      rŒ”t        | j                  |cxk  xr | j                  k  nc «       | j                  rÚ|j                  t        j                  «       «      r·|j                  t        j                  dt        |«      «      «      x}}|dkD  r3||dz
     t        d «      k(  r|dz  }|dkD  r||dz
     t        d «      k(  rŒ|t        |«      k  r6||   t        d «      k(  r%|dz  }|t        |«      k  r||   t        d «      k(  rŒ%t         g||| n�| j"                  r�|dd  t        d d «      gk(  rn|j                  t        j                  dd«      «      rI|j%                  «        |dd  t        d d «      gk(  r&|j                  t        j                  dd«      «      rŒIt        |«      dk(  r(|j                  t        j                  «       «      r|d   S t'        |«      S )Nr   r>   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr/   )r    Úslice)rb   Úidxs     r,   rd   z-BasicIndexStrategy.do_draw.<locals>.<genexpr>Ÿ  s   è ø€ ÒC°Sœ* S¬%×0ÑCùrÌ   rf   é   )r]   rÃ   rç   rN   rP   ÚslicesrÅ   Úsumrã   rA   r@   Úbooleansru   Úinsertr   râ   ÚEllipsisrä   Úpopr(   )r¬   r»   ÚresultÚdim_sizeÚstrategyÚresult_dimsÚiÚjs           r,   rÀ   zBasicIndexStrategy.do_draw”  s¤  € ð ˆØŸ
™
ò 	/ˆHØ˜1Š}Ø—‘œe D›kÔ*ØÜ—{‘{ H 9¨h¸©lÓ;¼b¿i¹iÈÓ>QÑQˆHØ�M‰M˜$Ÿ)™) HÓ-Õ.ð	/ô ÑC¸FÔCÓCˆà×ÒØ˜dŸm™mÒ+Ø˜tŸ}™}Ò,°·	±	¼"¿+¹+»-Ô0Hà—	‘	œ"Ÿ+™+ a¬¨V«Ó5Ó6ˆAØ�M‰M˜!˜TÔ"Ø˜1ÑˆKð ×ÒØ˜dŸm™mÒ+Ø˜tŸ}™}Ó,°·	±	¼"¿+¹+»-Õ0Hô 	ˆt�}‰} Ö<¨t¯}©}Ô<Ô=ð ×Ò 4§9¡9¬R¯[©[«]Ô#;à—I‘IœbŸk™k¨!¬S°«[Ó9Ó:Ð:ˆA�Ø�a’%˜F 1 q¡5™M¬U°4«[Ò8Ø�Q‘�ð �a’%˜F 1 q¡5™M¬U°4«[Ó8à”c˜&“k’/ f¨Q¡i´5¸³;Ò&>Ø�Q‘�ð ”c˜&“k’/ f¨Q¡i´5¸³;Ó&>ä#˜*ˆF�1�Q‰KØ×/Ò/Ø˜˜�+¤%¨¨dÓ"3Ð!4Ò4¸¿¹Ä2Ç;Á;ÈqÐRSÓCTÔ9UØ—
‘
”ð ˜˜�+¤%¨¨dÓ"3Ð!4Ò4¸¿¹Ä2Ç;Á;ÈqÐRSÓCTÕ9Uäˆv‹;˜!Ò §	¡	¬"¯+©+«-Ô 8à˜!‘9ÐÜ�V‹}Ðr+   )r%   r&   r'   r©   rÀ   rÞ   rß   s   @r,   r   r     s   ø„ ôKö((r+   r   )5r…   Útypesr   Útypingr   Ú
hypothesisr   r   rN   Úhypothesis.errorsr   Ú$hypothesis.internal.conjecture.utilsr	   Úhypothesis.internal.coverager
   Úhypothesis.internal.validationr   r   Ú%hypothesis.strategies._internal.utilsr   Úhypothesis.utils.conventionsr   r   Ú__all__r(   rL   r   rç   r   r   r   r   r   r   r   r   r   r   ÚSearchStrategyr   r    r   r‡   r‰   Ú_ARGUMENT_LISTrŽ   r�   r€   r˜   r¡   r   r   r   r*   r+   r,   ú<module>r     sU  ðó 
Ý Ý ç /Ý -Ý AÝ 7ß KÝ Bß Bò€ð* 	ˆc�3ˆh‰€ð ˆU�{�TÑ˜LÑ(€Ø�u‘˜tÑ#€Ø�e‘˜lÑ*€Ø ™+Ð à�E˜$ ˜)Ñ$Ñ$€
ô˜*ô ð
 ñHó ðHð
 ñUó ðUð €ð ñ
ó ð
ñ Óð ØØØò"àð"ð �D‰jð"ð ð	"ð
 �D‰jð"ð ×Ñ�uÑò"ó ð"ñJ Óð Øò	)Ø
ð)ð ð)ð �D‰jð	)ð
 ×Ñ�u˜S #˜X‘Ñ'ò)ó ð)ñX Óð ØØØò['Øð['ð ð['ð �D‰jð	['ð
 ð['ð �D‰jð['ð ×Ñ�uÑò['ó ð['ðb €
Ø�*�˜T * ¨]Ð	;€Ø�8˜4 ˜x rÐ*€Ø�.Ð!  F 8¨1Ð-€
Ø ! .Ð!1°°NÐ3CÀ1ÐEÐ ô�ô ò
4Lñn Óð *1Ø(/ØØØØØòHà  3Ñ&ðHð   #Ñ%ðHð ð	Hð
 ðHð �D‰jðHð ðHð �D‰jðHð ×ÑÐ*Ñ+òHó ðHôVL
¨"×*;Ñ*;ô L
ô^=˜×*Ñ*õ =r+   