Ë
    iKêj¦  ã                   óL  — U d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZ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mZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z(m)Z)m*Z+ d dl,m-Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z; d dl<m=Z= dgZ>dZ?g e?¢d‘­Z@ eAe@«       eBe@«      k(  sJ ‚ed   ZC eeC«      e@k(  sJ ‚dZDdZEeDeEz   ZFdZGeFeGz   ZHdZIeHeIz   ZJdgeJ¢­ZK ed«      ZLe0dedeBeM   ddfd„«       ZNdedeeM   deOeBe   eBeM   f   fd „ZPded!eBeM   ddfd"„ZQded#eCd$eLdeReSeTz  eUz  eVz     fd%„ZWe0ded&eMdefd'„«       ZXdddddddd(œded#eCd$eLeMz  d)eTeUz  dz  d*eTeUz  dz  d+eSdz  d,eSdz  d-eSdz  d.eSdz  d/eSdz  dej²                  eSeTz  eUz  eVz     fd0„ZZ G d1„ d2ej²                  «      Z[ddd3d4œded#eCd$eLeMz  ej²                  eL   z  ej²                  eM   z  d5eTe"z  ej²                  e"   z  d6eeMef   ej²                  z  dz  d7ej²                  e   dz  d8eSdej²                  fd9„Z\e0ded:eBeL   d!eBeM   ddfd;„«       Z]ded#eCdej²                  eL   fd<„Z^dedej²                  eL   fd=„Z_dedej²                  eL   fd>„Z`ded#eCdej²                  eL   fd?„Zae0d@eMdAeeT   dBeeT   ddfdC„«       ZbdDeMdAeeT   deeM   fdE„ZcedF   ZdeeedG<   edH   ZfeeedI<   edJ   ZgeeedK<   dFdLœdedAedeed   z  dej²                  eL   fdM„ZhdFdLœdedAedeed   z  dej²                  eL   fdN„ZidHdLœdedAefeef   z  dej²                  eL   fdO„ZjdJdLœdedAegeeg   z  dej²                  eL   fdP„Zk e4e+«      dQ„ «       Z*dRe+jØ                  › dS�e*_l         e=«       dTd ddUddVœdWeTdXe"dYeTdZeTdz  d[eTd\eTdz  dej²                  e!   fd]„«       Z'e(jØ                  e'_l         e=«       d dd3d^d_œd5e"dYeTdZeTdz  d`eSdaeSdej²                  e   fdb„«       Zm e«       Zneeedc<   dddœded#eCdz  de
fde„Zo	 d dlpZqeq��Ñ G dh„ die«      Zvd$eLdevfdj„Zw e
dTi dkdl“dmdn“doeqjð                  “dpeqjò                  “dqeqjô                  “dreqjö                  “dseqjø                  “dteqjú                  “dueqjü                  “dveqjþ                  “dweq�j                   “dxeq�j                  “dyeq�j                  “dzeq�j                  “deq�j                  “d{eq�j
                  “d|d}„ “d~eq�j                  “dew“d€eq�j                  “d�eq�j                  “d‚eq�j                  “dƒeq�j                  “d„eq�j                  “d…eq�j                  “d†eq�j                  “d‡eq�j                  “dˆeq�j                  “d‰eq�j                   “dŠeq�j"                  “d‹eq�j$                  “dŒeq�j&                  “d�eq�j(                  “dŽeq�j*                  “d�eq�j,                  “ŽZ—yy# er$ r" dfejæ                  v rd dgltmuZu  eu«       ZqndZqY �Œûw xY w)�é    N)ÚIterableÚIteratorÚMappingÚSequence)ÚReal)ÚSimpleNamespace)ÚAnyÚLiteralÚ
NamedTupleÚ	TypeAliasÚTypeVarÚcastÚget_args)Úwarn)ÚWeakValueDictionary)Ú
strategies)ÚHypothesisWarningÚInvalidArgument)ÚNDIM_MAXÚ
BasicIndexÚBasicIndexStrategyÚBroadcastableShapesÚShapeÚarray_shapesÚbroadcastable_shapesÚcheck_argumentÚcheck_valid_dimsÚmutually_broadcastable_shapesÚorder_checkÚvalid_tuple_axes)Úutils)Úcheck_function)Ú	next_down)Úproxies)Ú
check_typeÚcheck_valid_boundÚcheck_valid_integerÚcheck_valid_interval)Úcheck_strategy)Údefines_strategyÚmake_strategies_namespace)ú2021.12ú2022.12ú2023.12ú2024.12ú2025.12Údraft)r,   r-   r.   r/   r0   r1   )Úint8Úint16Úint32Úint64)Úuint8Úuint16Úuint32Úuint64)Úfloat32Úfloat64)Ú	complex64Ú
complex128ÚboolÚDataTypeÚxpÚ
attributesÚreturnc                 óº   — |D �cg c]  }t        | |«      rŒ|‘Œ }}t        |«      dkD  r,dj                  |«      }t        d| j                  › d|› �«      ‚y c c}w )Nr   ú, úArray module z$ does not have required attributes: )ÚhasattrÚlenÚjoinr   Ú__name__)r@   rA   ÚattrÚmissing_attrsÚf_attrss        ú_/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/extra/array_api.pyÚcheck_xp_attributesrN   Q   sf   € à&0ÖJ˜d¼ÀÀDÕ8I’TÐJ€MÐJÜ
ˆ=Ó˜AÒØ—)‘)˜MÓ*ˆÜØ˜BŸK™K˜=Ð(LÈWÈIÐVó
ð 	
ð ùò Ks
   …A—Ac                 ó˜   — g }g }|D ]  }	 |j                  t        | |«      «       Œ  ||fS # t        $ r |j                  |«       Y ŒAw xY w©N)ÚappendÚgetattrÚAttributeError)r@   rA   Ú	non_stubsÚstubsrJ   s        rM   Úpartition_attributes_and_stubsrV   [   sa   € ð €IØ€EØò ˆð	Ø×ÑœW R¨Ó.Õ/ðð �eÐÐøô ò 	Ø�L‰L˜Öð	ús   ‹,¬A	ÁA	rU   c                 ój   — dj                  |«      }t        d| j                  › d|› �t        d¬«       y )NrD   rE   z6 does not have the following dtypes in its namespace: é   ©Ú
stacklevel)rH   r   rI   r   )r@   rU   Úf_stubss      rM   Úwarn_on_missing_dtypesr\   i   s8   € Ø�i‰i˜Ó€GÜØ
˜Ÿ™�}ð %$Ø$+ 9ð	.äØö	ó    Úapi_versionÚdtypec                 ó  — g }	 | j                   }||k(  rt         S 	 t        | t        «      \  }}||v rt
        S t        | t        «      \  }}|�
||v rt        S |j                  |«       |j                  |«       |dkD  r.t        | t        «      \  }	}
||	v rt        S |j                  |
«       t        |«      dkD  rt        | |«       t        d|› d| j                  › �«      ‚# t        $ r |j                  d«       Y Œâw xY w)z÷Returns builtin type which can have values that are castable to the given
    dtype, according to :xp-ref:`type promotion rules <type_promotion.html>`.

    For floating dtypes we always return ``float``, even though ``int`` is also castable.
    r>   r,   r   údtype=z not recognised in )r>   rS   rQ   rV   ÚALL_INT_NAMESÚintÚFLOAT_NAMESÚfloatÚextendÚCOMPLEX_NAMESÚcomplexrG   r\   r   rI   )r@   r^   r_   rU   Ú
bool_dtypeÚ
int_dtypesÚ	int_stubsÚfloat_dtypesÚfloat_stubsÚcomplex_dtypesÚcomplex_stubss              rM   Úfind_castable_builtin_for_dtyperp   s   s  € ð €EðØ—W‘Wˆ
Ø�JÒÜˆKð ô
 ;¸2¼}ÓMÑ€J�	Ø�
ÑÜˆ
ä >¸rÄ;Ó OÑ€L�+ð
 Ð˜U lÑ2Üˆà	‡L�L�ÔØ	‡L�L�Ôà�YÒÜ(FØ”ó)
Ñ%ˆ˜ð �NÑ"ÜˆNØ�‰�]Ô#ä
ˆ5ƒz�A‚~Ü˜r 5Ô)Ü
˜F 5 'Ð)<¸R¿[¹[¸MÐJÓ
KÐKøô9 ò Ø�‰�VÖðús   „C" Ã"C?Ã>C?Únamec                 óÔ   — |t         v r	 t        | |«      S dj                  t         «      }t        |› d|› d�«      ‚# t        $ r"}t        d| j                  › d|› d�«      |‚d }~ww xY w)NrE   z does not have dtype z in its namespacerD   z0 is not a valid Array API data type (pick from: ú))ÚDTYPE_NAMESrR   rS   r   rI   rH   )r@   rq   ÚeÚf_valid_dtypess       rM   Údtype_from_namerw       s†   € àŒ{Ñð	Ü˜2˜tÓ$Ð$ð Ÿ™¤;Ó/ˆÜØˆfÐDÀ^ÐDTÐTUÐVó
ð 	
øô ò 	Ü!Ø §¡˜}Ð,AÀ$ÀÐGXÐYóàðûð	ús   Š< ¼	A'ÁA"Á"A'©Ú	min_valueÚ	max_valueÚ	allow_nanÚallow_infinityÚallow_subnormalÚexclude_minÚexclude_maxry   rz   r{   r|   r}   r~   r   c                óœ  ‡— t        | ddg«       t        ‰t        «      rt        | ‰«      Št	        | |‰«      }
ˆfd„}|
t
        u rt        j                  «       S |
t        u r¢| j                  ‰«      }|€|j                  }|€|j                  }t        |d«       t        |d«       t        |t        «      sJ ‚t        |t        «      sJ ‚ |d||«        |d||«       t        ||dd«       t        j                  ||¬«      S |
t        u �r| j!                  ‰«      }i }|�-t#        |d«       t        |t$        «      sJ ‚ |d||«       ||d<   |�=t#        |d«       t        |t$        «      sJ ‚ |d||«       |�t        ||dd«       ||d<   |�||d	<   nPt'        t        |j(                  «      |j*                  ¬
«      }t        | j-                  |‰¬«      dk(  «      }|rd|d	<   |�||d<   |�||d<   |�||d<   |	�|	|d<   t        j.                  dd|j*                  i|¤ŽS | j!                  ‰«      }|€rt'        t        |j(                  «      |j*                  ¬
«      }| j-                  t1        ||«      ‰¬«      }t1        |«      }|j2                  dk7  xr |j4                  dk7  }t        j6                  ||||j*                  dz  ¬«      S )a³  Return a strategy for any value of the given dtype.

    Values generated are of the Python scalar which is
    :xp-ref:`promotable <type_promotion.html>` to ``dtype``, where the values do
    not exceed its bounds.

    * ``dtype`` may be a dtype object or the string name of a
      :xp-ref:`valid dtype <data_types.html>`.

    Compatible ``**kwargs`` are passed to the inferred strategy function for
    integers and floats.  This allows you to customise the min and max values,
    and exclude non-finite numbers. This is particularly useful when kwargs are
    passed through from :func:`arrays()`, as it seamlessly handles the ``width``
    or other representable bounds for you.
    ÚiinfoÚfinfoc                 óä   •— | › d�}t        ||«       t        ||j                  k\  d‰› d|› d|› d|j                  › �«       t        ||j                  k  d‰› d|› d|› d|j                  › �«       y )NÚ_valuera   z
 requires ú=z to be at least z to be at most )r&   r   ÚminÚmax)ÚprefixÚvalÚinfo_objrq   r_   s       €rM   Úcheck_valid_minmaxz'_from_dtype.<locals>.check_valid_minmaxÓ   s„   ø€ Ø�˜Ð ˆÜ˜#˜tÔ$ÜØ�8—<‘<ÑØ�U�G˜: d V¨1¨S¨EÐ1AÀ(Ç,Á,ÀÐPô	
ô 	Ø�8—<‘<ÑØ�U�G˜: d V¨1¨S¨E°ÀÇÁÀÐOõ	
r]   ry   rz   r†   r‡   )ry   rz   r}   )Úwidth©r_   r   Fr{   r|   r~   r   rŒ   é   )r{   r|   r}   rŒ   © )rN   Ú
isinstanceÚstrrw   rp   r>   ÚstÚbooleansrc   r�   r†   r‡   r'   r(   Úintegersre   r‚   r&   r   r#   Úsmallest_normalÚbitsÚasarrayÚfloatsrh   ÚrealÚimagÚcomplex_numbers)r@   r^   r_   ry   rz   r{   r|   r}   r~   r   Úbuiltinr‹   r�   r‚   ÚkwÚ	subnormalÚftzÚxÚ	builtin_xs     `                rM   Ú_from_dtyper¢   °   sÑ  ø€ ô: ˜˜W gÐ.Ô/ä�%œÔÜ  EÓ*ˆÜ-¨b°+¸uÓE€Gô

ð ”$�Ü�{‰{‹}ÐØ	”C‰Ø—‘˜“ˆØÐØŸ	™	ˆIØÐØŸ	™	ˆIÜ˜I {Ô3Ü˜I {Ô3Ü˜)¤SÔ)Ð)Ð)Ü˜)¤SÔ)Ð)Ð)Ù˜5 )¨UÔ3Ù˜5 )¨UÔ3Ü˜Y¨	°;ÀÔLÜ�{‰{ Y¸)ÔDÐDØ	”EÒ	Ø—‘˜“ˆØˆð Ð Ü˜i¨Ô5Ü˜i¬Ô.Ð.Ð.Ù˜u i°Ô7Ø'ˆBˆ{‰OØÐ Ü˜i¨Ô5Ü˜i¬Ô.Ð.Ð.Ù˜u i°Ô7ØÐ$Ü$ Y°	¸;ÈÔTØ'ˆBˆ{‰Oð Ð&Ø$3ˆBÐ Ò!ä!¤%¨×(=Ñ(=Ó">ÀeÇjÁjÔQˆIÜ�r—z‘z )°5�zÓ9¸QÑ>Ó?ˆCÙØ(-�Ð$Ñ%àÐ Ø'ˆBˆ{‰OØÐ%Ø#1ˆBÐÑ ØÐ"Ø +ˆBˆ}ÑØÐ"Ø +ˆBˆ}Ñä�y‰yÑ0˜uŸz™zÐ0¨RÑ0Ð0à—‘˜“ˆð Ð"Ü!¤%¨×(=Ñ(=Ó">ÀeÇjÁjÔQˆIØ—
‘
œ7 9¨iÓ8À�
ÓFˆAÜ ›
ˆIØ'Ÿn™n°Ñ1ÒI°i·n±nÈÑ6IˆOÜ×!Ñ!ØØ)Ø+Ø—*‘*˜q‘.ô	
ð 	
r]   c                   ó*   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚArrayStrategyc                óB  •— t         ‰| �  «        || _        || _        || _        || _        || _        || _        t        j                  |«      | _
        t        |||«      | _        | j                  t        urd | _        y |j                  | j                  «      | _        y rP   )ÚsuperÚ__init__r@   Úelements_strategyr_   ÚshapeÚfillÚuniqueÚmathÚprodÚ
array_sizerp   rœ   re   r‚   )	Úselfr@   r^   r¨   r_   r©   rª   r«   Ú	__class__s	           €rM   r§   zArrayStrategy.__init__5  s€   ø€ ô 	‰ÑÔØˆŒØ!2ˆÔØˆŒ
ØˆŒ
ØˆŒ	ØˆŒÜŸ)™) EÓ*ˆŒÜ6°r¸;ÈÓNˆŒØ!Ÿ\™\´Ñ6�Tˆ�
¸B¿H¹HÀTÇZÁZÓ<Pˆ�
r]   c                 óÄ  — ||k(  rÊ| j                  |«      |k7  rµ| j                   t        u rj| j                  €J ‚	 dt        |«      cxk  xr | j                  j                  k  nc }|r,t        d|› d|› d|›d| j                  j                  › d�	«      ‚t        d|›d|› d	| j                  › d
| j                  j                  › d|› d�«      ‚y y # t
        $ r d}Y Œvw xY w)Nr   FzGenerated subnormal float ú from strategy z resulted in z', probably as a result of array module zY being built with flush-to-zero compiler options. Consider passing allow_subnormal=False.zGenerated array element z" cannot be represented with dtype z. Array module z# instead represents the element as zf. Consider using a more precise elements strategy, for example passing the width argument to floats().)
rœ   re   r‚   Úabsr•   Ú	Exceptionr   r@   rI   r_   )r¯   r‰   Úval_0dÚstrategyÚis_subnormals        rM   Úcheck_set_valuezArrayStrategy.check_set_valueC  s  € Ø�#Š:˜$Ÿ,™, vÓ.°#Ò5Ø�|‰|œuÑ$Ø—z‘zÐ-Ð-Ð-ð)Ø#$¤s¨3£xÖ#L°$·*±*×2LÑ2LÔ#L�Lñ
  Ü)Ø4°S°E¸Ø#˜* M°&°ð <7Ø7;·w±w×7GÑ7GÐ6Hð IBðBóð ô "Ø*¨3¨'°ÀÀ
ð K4Ø48·J±J°<ð @ Ø $§¡× 0Ñ 0Ð1ð 2-Ø-3¨Hð 5FðFóð ð# 6ˆ:øô
 !ò )ð $)’Lð)ús   »-C ÃCÃCc                 ó	  — d| j                   v r1| j                  j                  | j                   | j                  ¬«      S | j                  j
                  r·|j                  t        j                  | j                  | j                  | j                  | j                  ¬«      «      }	 | j                  j                  || j                  ¬«      }t)        | j                  «      D ]%  }| j+                  ||   ||   | j                  «       Œ' �n6|j                  | j                  «      }	t)        | j                  «      D �
cg c]  }
|	‘Œ }}
t)        | j                  «      D �
cg c]  }
d‘Œ }}
t-        «       }t-        «       }t/        j0                  |d| j                  t3        d| j                  z  t5        dt7        j8                  | j                  «      «      «      ¬«      5 }|D ]   }
|j;                  d| j                  dz
  «      }||v r|j=                  d«       Œ8|j                  | j                  «      }| j                  r'||v r|j=                  d«       Œu|j?                  |«       |||<   |j?                  |«       d||<   Œ¢ 	 d d d «       	 | j                  j                  || j                  ¬«      }tA        |«      D ]}  \  }}||   }||   rQ| j                  rE| j                  jC                  |«      rŒ8t'        d!| j                  jD                  › d"|	›d#|›d$�«      ‚| j+                  ||| j                  «       Œ | j                  jG                  || j                   «      S # t        $ rÃ}t        |«      dk  rt        |«      }nd|d   › d|d   › d|d	   › d|d
   › d�	}t!        t#        |D �ch c]  }t%        |«      ’Œ nc c}w c}d„ ¬«      «      }t        |«      dk(  rd|d   › �nd|› �}t'        d|› d| j                  › d| j                  › d|› d| j                  › d�«      ‚d }~ww xY wc c}
w c c}
w # 1 sw Y   �Œ¼xY w# t        $ r'}d|› d| j                  › d�}t'        d |› �«      |‚d }~ww xY w)%Nr   r�   )Úmin_sizeÚmax_sizer«   é   ú[rD   é   z, ..., éþÿÿÿéÿÿÿÿú]c                 ó   — | j                   S rP   )rI   )Úts    rM   ú<lambda>z'ArrayStrategy.do_draw.<locals>.<lambda>x  s
   € À1Ç:Á:€ r]   )Úkeyztype ztypes zGenerated elements r²   z* could not be converted to array of dtype z. Consider if elements of z are compatible with ú.TgÍÌÌÌÌÌì?é
   )rº   r»   Úaverage_sizez'chose an array index we've already usedz#chose an element we've already usedFzxp.asarray(z, dtype=rs   zCould not create array via rE   z did not recognise fill value z as NaN - instead got z/. Cannot fill unique array with non-NaN values.)$r©   r@   Úzerosr_   rª   Úis_emptyÚdrawr’   Úlistsr¨   r®   r«   r—   r´   rG   r‘   ÚtupleÚsortedÚtyper   Úranger¸   ÚsetÚcuÚmanyr†   r‡   r¬   ÚsqrtÚdraw_integerÚrejectÚaddÚ	enumerateÚisnanrI   Úreshape)r¯   ÚdataÚelemsÚresultru   Úf_elemsÚtypesÚf_typesÚiÚfill_valÚ_Ú
result_objÚ	fill_maskÚassignedÚseenÚelementsr‰   Úf_exprrµ   s                      rM   Údo_drawzArrayStrategy.do_draw^  s9  € Ø�—
‘
‰?Ø—7‘7—=‘= §¡°4·:±:�=Ó>Ð>à�9‰9×Òð —I‘IÜ—‘Ø×*Ñ*Ø!Ÿ_™_Ø!Ÿ_™_ØŸ;™;ô	óˆEðØŸ™Ÿ™¨°d·j±j˜ÓA�ô" ˜4Ÿ?™?Ó+ò R�Ø×$Ñ$ U¨1¡X¨v°a©y¸$×:PÑ:PÕQòRð —y‘y §¡Ó+ˆHÜ,1°$·/±/Ó,BÖC qš(ÐCˆJÐCÜ',¨T¯_©_Ó'=Ö> !šÐ>ˆIÐ>Ü“uˆHÜ“5ˆDä—‘ØØØŸ™ô !Ø˜$Ÿ/™/Ñ)Ü˜œDŸI™I d§o¡oÓ6Ó7óôð )ð Ø!ò )�AØ×)Ñ)¨!¨T¯_©_¸qÑ-@ÓA�AØ˜H‘}Ø Ÿ™Ð(QÔRØ ØŸ)™) D×$:Ñ$:Ó;�CØ—{’{Ø $™;Ø$ŸO™OÐ,QÔRØ$ØŸ™ œà$'�J˜q‘MØ—L‘L ”OØ#(�I˜a’Lñ)÷)ð8UØŸ™Ÿ™¨¸4¿:¹:˜ÓF�ô
 $ JÓ/ò 
N‘��3Ø ™�Ø˜Q’< D§K¢KØŸ7™7Ÿ=™=¨Õ0Ü-Ø+¨D¯G©G×,<Ñ,<Ð+=ð >%Ø%- LÐ0FÀvÀjð QLðLóð ð ×(Ñ(¨¨f°d×6LÑ6LÕMð
Nð �w‰w�‰˜v t§z¡zÓ2Ð2øô[ ò Ü�u“: ’?Ü! %›j‘Gà ! %¨¡( ¨2¨e°A©h¨Z°w¸uÀR¹y¸kÈÈEÐRTÉIÈ;ÐVWÐX�GÜÜ¨UÖ3¨œD �GÑ3ùÔ3Ñ9MÔNó�ô 14°E³
¸a²˜E %¨¡( Ñ,ÀvÈeÈWÐEU�Ü%Ø)¨'¨°/Ø×-Ñ-Ð.ð /)Ø)-¯©¨ð 5/Ø/6¨ið 8+Ø+/¯:©:¨,°að	9óð ðûðüò4 DùÚ>÷)ñ )ûô< ò UØ& z l°(¸4¿:¹:¸,ÀaÐH�Ü%Ð(CÀFÀ8Ð&LÓMÐSTÐTûðUúsW   Â''M) Ä?	P8Å!	P=Ç!B&QÊ'Q Í)	P5Í2AP0Î5OÏA)P0Ð0P5ÑQÑ	Q?Ñ"Q:Ñ:Q?)rI   Ú
__module__Ú__qualname__r§   r¸   rê   Ú__classcell__)r°   s   @rM   r¤   r¤   4  s   ø„ ôQòö6a3r]   r¤   F©rè   rª   r«   r©   rè   rª   r«   c          	      ó  ‡ ‡‡‡‡‡‡— t        ‰ g d¢«       t        ‰t        j                  «      r‰j	                  ˆˆˆˆˆˆ fd„«      S t        ‰t
        «      rt        ‰ ‰«      Št        ‰t        j                  «      r‰j	                  ˆˆˆˆˆˆ fd„«      S t        ‰t        «      r‰fŠnt        ‰t        «      st        d‰› d�«      ‚t        t        d„ ‰D «       «      d‰›d�«       ‰€t        ‰ ‰‰«      Šnt        ‰t        «      rt        ‰ ‰‰fi ‰¤ŽŠt        ‰d«       ‰€At        ‰t        j                  «      sJ ‚‰s‰j                  st        j                   «       Šn‰Št        ‰d	«       t#        ‰ ‰‰‰‰‰‰¬
«      S )a�  Returns a strategy for :xp-ref:`arrays <array_object.html>`.

    * ``dtype`` may be a :xp-ref:`valid dtype <data_types.html>` object or name,
      or a strategy that generates such values.
    * ``shape`` may be an integer >= 0, a tuple of such integers, or a strategy
      that generates such values.
    * ``elements`` is a strategy for values to put in the array. If ``None``
      then a suitable value will be inferred based on the dtype, which may give
      any legal value (including e.g. NaN for floats). If a mapping, it will be
      passed as ``**kwargs`` to :func:`from_dtype()` when inferring based on the dtype.
    * ``fill`` is a strategy that may be used to generate a single background
      value for the array. If ``None``, a suitable default will be inferred
      based on the other arguments. If set to
      :func:`~hypothesis.strategies.nothing` then filling behaviour will be
      disabled entirely and every element will be generated independently.
    * ``unique`` specifies if the elements of the array should all be distinct
      from one another; if fill is also set, the only valid values for fill to
      return are NaN values.

    Arrays of specified ``dtype`` and ``shape`` are generated for example
    like this:

    .. code-block:: pycon

      >>> from numpy import array_api as xp
      >>> xps.arrays(xp, xp.int8, (2, 3)).example()
      Array([[-8,  6,  3],
             [-6,  4,  6]], dtype=int8)

    Specifying element boundaries by a :obj:`python:dict` of the kwargs to pass
    to :func:`from_dtype` will ensure ``dtype`` bounds will be respected.

    .. code-block:: pycon

      >>> xps.arrays(xp, xp.int8, 3, elements={"min_value": 10}).example()
      Array([125, 13, 79], dtype=int8)

    .. code-block:: pycon

      >>> xps.arrays(xp, xp.float32, 3, elements=floats(0, 1, width=32)).example()
      Array([ 0.88974794,  0.77387938,  0.1977879 ], dtype=float32)

    Array values are generated in two parts:

    1. A single value is drawn from the fill strategy and is used to create a
       filled array.
    2. Some subset of the coordinates of the array are populated with a value
       drawn from the elements strategy (or its inferred form).

    You can set ``fill`` to :func:`~hypothesis.strategies.nothing` if you want
    to disable this behaviour and draw a value for every element.

    By default ``arrays`` will attempt to infer the correct fill behaviour: if
    ``unique`` is also ``True``, no filling will occur. Otherwise, if it looks
    safe to reuse the values of elements across multiple coordinates (this will
    be the case for any inferred strategy, and for most of the builtins, but is
    not the case for mutable values or strategies built with flatmap, map,
    composite, etc.) then it will use the elements strategy as the fill, else it
    will default to having no fill.

    Having a fill helps Hypothesis craft high quality examples, but its
    main importance is when the array generated is large: Hypothesis is
    primarily designed around testing small examples. If you have arrays with
    hundreds or more elements, having a fill value is essential if you want
    your tests to run in reasonable time.
    )r‚   r—   rÉ   ÚallrÙ   ÚisfiniterÚ   c           	      ó(   •— t        ‰‰| ‰‰‰‰¬«      S ©Nrî   ©Ú_arrays)Údr^   rè   rª   r©   r«   r@   s    €€€€€€rM   rÄ   z_arrays.<locals>.<lambda>  s   ø€ ”gØ�K  E°HÀ4ÐPVô€ r]   c           	      ó(   •— t        ‰‰‰| ‰‰‰¬«      S ró   rô   )Úsr^   r_   rè   rª   r«   r@   s    €€€€€€rM   rÄ   z_arrays.<locals>.<lambda>  s   ø€ ”gØ�K ¨°HÀ4ÐPVô€ r]   úshape=z! is not a valid shape or strategyc              3   óJ   K  — | ]  }t        |t        «      xr |d k\  –— Œ y­w©r   N©r�   rc   ©Ú.0r    s     rM   ú	<genexpr>z_arrays.<locals>.<genexpr>&  ó#   è ø€ Ò9¨aŒJ�qœ#ÓÒ) 1¨¡6Ó)Ñ9ùó   ‚!#ú3, but all dimensions must be non-negative integers.rè   rª   )r@   r^   r¨   r_   r©   rª   r«   )rN   r�   r’   ÚSearchStrategyÚflatmapr‘   rw   rc   rÍ   r   r   rð   r¢   r   r)   Úhas_reusable_valuesÚnothingr¤   )r@   r^   r_   r©   rè   rª   r«   s   ```````rM   rõ   rõ   Â  sx  þ€ ôX Ø
ÒPôô �%œ×*Ñ*Ô+Ø�}‰}÷ð ó
ð 	
ô
 
�Eœ3Ô	Ü  EÓ*ˆä�%œ×*Ñ*Ô+Ø�}‰}÷ð ó
ð 	
ô
 
�Eœ3Ô	Ø�‰Ü˜œuÔ%Ü  u gÐ-NÐOÓPÐPÜÜÑ9°5Ô9Ó9Øˆ5ˆ(ÐEÐFôð
 ÐÜ˜r ;°Ó6‰Ü	�HœgÔ	&Ü˜r ;°ÑB¸ÑBˆÜ�8˜ZÔ(à€|Ü˜(¤B×$5Ñ$5Ô6Ð6Ð6Ù˜×5Ò5Ü—:‘:“<‰DàˆDÜ�4˜Ô äØØØ"ØØØØôð r]   Údtypesc                 óØ   — t        |«      dk(  rAt        |«      dkD  sJ d«       ‚dj                  |«      }t        d| j                  › d|› �«      ‚t        |«      dkD  rt	        | |«       y y )Nr   z#No dtypes passed but stubs is emptyrD   rE   z? does not have the following required dtypes in its namespace: )rG   rH   r   rI   r\   )r@   r  rU   r[   s       rM   Úcheck_dtypesr	  C  su   € ä
ˆ6ƒ{�aÒÜ�5‹z˜AŠ~ÐDÐDÓDˆ~Ø—)‘)˜EÓ"ˆÜØ˜BŸK™K˜=ð )1Ø18°	ð;ó
ð 	
ô 
ˆU‹�aŠÜ˜r 5Õ)ð 
r]   c                 óT   — t        j                  t        | «      t        | |«      «      S )zJReturn a strategy for all :xp-ref:`valid dtype <data_types.html>` objects.)r’   Úone_ofÚ_boolean_dtypesÚ_numeric_dtypes)r@   r^   s     rM   Ú_scalar_dtypesr  P  s   € ä�9‰9”_ RÓ(¬/¸"¸kÓ*JÓKÐKr]   c                 ó�   — 	 t        j                  | j                  «      S # t        $ r t	        d| j
                  › d�«      d‚w xY w)z4Return a strategy for just the boolean dtype object.rE   z, does not have a bool dtype in its namespaceN)r’   Újustr>   rS   r   rI   ©r@   s    rM   r  r  U  sJ   € ðÜ�w‰w�r—w‘wÓÐøÜò ÜØ˜BŸK™K˜=Ð(TÐUó
àð	ðús	   ‚! ¡$Ac                 óf   — t        j                  t        | «      t        | «      t	        | «      «      S )z4Return a strategy for all real-valued dtype objects.)r’   r  Ú_integer_dtypesÚ_unsigned_integer_dtypesÚ_floating_dtypesr  s    rM   Ú_real_dtypesr  _  s+   € ä�9‰9Ü˜ÓÜ  Ó$Ü˜Óóð r]   c                 óB   — t        | «      }|dkD  r|t        | «      z  }|S )z0Return a strategy for all numeric dtype objects.r,   )r  Ú_complex_dtypes)r@   r^   Ústrats      rM   r  r  h  s*   € ô *6°bÓ)9€EØ�YÒØ” Ó$Ñ$ˆØ€Lr]   ÚcategoryÚsizesÚvalid_sizesc           
      ó
  — t        t        |«      dkD  d«       |D �cg c]	  }||vsŒ|‘Œ }}dj                  d„ |D «       «      }dj                  d„ |D «       «      }t        t        |«      dk(  d| › d|› d|› d	�«       y c c}w )
Nr   zNo sizes passedrD   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrP   ©r‘   ©rþ   rø   s     rM   rÿ   z$check_valid_sizes.<locals>.<genexpr>y  s   è ø€ Ò:¨œc !ŸfÑ:ùó   ‚c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrP   r  r   s     rM   rÿ   z$check_valid_sizes.<locals>.<genexpr>z  s   è ø€ Ò>¨1¤ A§Ñ>ùr!  z&The following sizes are not valid for z	 dtypes: z (valid sizes: rs   )r   rG   rH   )r  r  r  rø   Úinvalid_sizesÚf_valid_sizesÚf_invalid_sizess          rM   Úcheck_valid_sizesr&  r  s�   € ô ”3�u“: ‘>Ð#4Ô5à %Ö>˜1¨°+Ò)=’QÐ>€MÐ>Ø—I‘IÑ:¨kÔ:Ó:€MØ—i‘iÑ>°Ô>Ó>€OÜÜˆMÓ˜aÑØ
0°°
¸)ØÐ
˜?¨=¨/¸ð	<õùò ?s
   �	B §B Ú	base_namec              #   ó*   K  — |D ]
  }| › |› �–— Œ y ­wrP   r�   )r'  r  Úsizes      rM   Únumeric_dtype_namesr*  ‚  s$   è ø€ Øò #ˆØ�˜D˜6Ð"Ó"ñ#ùs   ‚©é   é   é    é@   ÚIntSize©r.  r/  ÚFltSize©r/  é€   ÚCpxSize©r  c                ó¸   — t        |t        «      r|f}t        d|d«       t        | t	        d|«      «      \  }}t        | ||«       t        j                  |«      S )z¶Return a strategy for signed integer dtype objects.

    ``sizes`` contains the signed integer sizes in bits, defaulting to
    ``(8, 16, 32, 64)`` which covers all valid sizes.
    rc   r+  ©r�   rc   r&  rV   r*  r	  r’   Úsampled_from©r@   r  r  rU   s       rM   r  r  Œ  sY   € ô �%œÔØ�ˆÜ�e˜U OÔ4Ü2Ø
Ô  uÓ-ó�M€FˆEô ��V˜UÔ#Ü�?‰?˜6Ó"Ð"r]   c                ó¸   — t        |t        «      r|f}t        d|d«       t        | t	        d|«      «      \  }}t        | ||«       t        j                  |«      S )zºReturn a strategy for unsigned integer dtype objects.

    ``sizes`` contains the unsigned integer sizes in bits, defaulting to
    ``(8, 16, 32, 64)`` which covers all valid sizes.
    rc   r+  Úuintr8  r:  s       rM   r  r  ž  sY   € ô �%œÔØ�ˆÜ�e˜U OÔ4ä2Ø
Ô ¨Ó.ó�M€FˆEô ��V˜UÔ#ä�?‰?˜6Ó"Ð"r]   c                ó¸   — t        |t        «      r|f}t        d|d«       t        | t	        d|«      «      \  }}t        | ||«       t        j                  |«      S )z»Return a strategy for real-valued floating-point dtype objects.

    ``sizes`` contains the floating-point sizes in bits, defaulting to
    ``(32, 64)`` which covers all valid sizes.
    rc   r1  re   r8  r:  s       rM   r  r  ²  sY   € ô �%œÔØ�ˆÜ�e˜U HÔ-Ü2Ø
Ô ¨Ó/ó�M€FˆEô ��V˜UÔ#Ü�?‰?˜6Ó"Ð"r]   c                ó¸   — t        |t        «      r|f}t        d|d«       t        | t	        d|«      «      \  }}t        | ||«       t        j                  |«      S )z¢Return a strategy for complex dtype objects.

    ``sizes`` contains the complex sizes in bits, defaulting to ``(64, 128)``
    which covers all valid sizes.
    rh   r3  r8  r:  s       rM   r  r  Ä  sY   € ô �%œÔØ�ˆÜ�i ¨	Ô2Ü2Ø
Ô 	¨5Ó1ó�M€FˆEô ��V˜UÔ#Ü�?‰?˜6Ó"Ð"r]   c                  ó   — t        | i |¤ŽS rP   )Ú_valid_tuple_axes)ÚargsÚkwargss     rM   r    r    Ö  s   € ä˜dÐ- fÑ-Ð-r]   z­
    Return a strategy for permissible tuple-values for the ``axis``
    argument in Array API sequential methods e.g. ``sum``, given the specified
    dimensionality.

    z
    r�   r¾   )Ú
base_shapeÚmin_dimsÚmax_dimsÚmin_sideÚmax_sideÚ
num_shapesrC  rD  rE  rF  rG  c                ó$   — t        | |||||¬«      S )N©rH  rC  rD  rE  rF  rG  )Ú_mutually_broadcastable_shapesrJ  s         rM   r   r   ä  s#   € ô *ØØØØØØôð r]   T)rD  rE  Úallow_newaxisÚallow_ellipsisrL  rM  c          	      ó²  — t        t        | d«       t        t        d„ | D «       «      d| ›d�«       t        t        |d«       t        t        |d«       t        t
        |d«       |s)t        |t        | «      k  d|› d	t        | «      › d
�d«       t        |d«       |€B|r't        t        t        | «      |«      dz   t        «      }nt        t        | «      t        «      }t        t
        |d«       t        |t
        «      sJ ‚|s)t        |t        | «      k  d|› d	t        | «      › d
�d«       t        |d«       t        dd||«       t        | ||||d¬«      S )at  Return a strategy for :xp-ref:`valid indices <indexing.html>` of
    arrays with the specified shape, which may include dimensions of size zero.

    It generates tuples containing some mix of integers, :obj:`python:slice`
    objects, ``...`` (an ``Ellipsis``), and ``None``. When a length-one tuple
    would be generated, this strategy may instead return the element which will
    index the first axis, e.g. ``5`` instead of ``(5,)``.

    * ``shape`` is the shape of the array that will be indexed, as a tuple of
      integers >= 0. This must be at least two-dimensional for a tuple to be a
      valid index;  for one-dimensional arrays use
      :func:`~hypothesis.strategies.slices` instead.
    * ``min_dims`` is the minimum dimensionality of the resulting array from use
      of the generated index.
    * ``max_dims`` is the maximum dimensionality of the resulting array,
      defaulting to ``len(shape) if not allow_newaxis else
      max(len(shape), min_dims) + 2``.
    * ``allow_ellipsis`` specifies whether ``None`` is allowed in the index.
    * ``allow_ellipsis`` specifies whether ``...`` is allowed in the index.
    r©   c              3   óJ   K  — | ]  }t        |t        «      xr |d k\  –— Œ y­wrû   rü   rý   s     rM   rÿ   zindices.<locals>.<genexpr>  r   r  rù   r  rL  rM  rD  z	min_dims=z is larger than len(shape)=zC, but it is impossible for an indexing operation to add dimensions zwhen allow_newaxis=False.rŽ   rE  z	max_dims=Údimsr   F)rD  rE  rM  rL  Úallow_fewer_indices_than_dims)r%   rÍ   r   rð   r>   rc   rG   r   r†   r‡   r   r�   r   r   )r©   rD  rE  rL  rM  s        rM   ÚindicesrR  û  sb  € ô: Œu�e˜WÔ%ÜÜÑ9°5Ô9Ó9Øˆ5ˆ(ÐEÐFôô Œt�] OÔ4ÜŒt�^Ð%5Ô6ÜŒs�H˜jÔ)ÙÜØœ˜E›
Ñ"Ø˜�zÐ!<¼SÀ»Z¸Lð IPð Pà'ô		
ô �X˜zÔ*àÐÙÜœ3œs 5›z¨8Ó4°qÑ8¼(ÓC‰Häœ3˜u›:¤xÓ0ˆHÜŒs�H˜jÔ)Ü�h¤Ô$Ð$Ð$ÙÜØœ˜E›
Ñ"Ø˜�zÐ!<¼SÀ»Z¸Lð IPð Pà'ô		
ô �X˜zÔ*ä�˜˜8 XÔ.äØØØØ%Ø#Ø&+ôð r]   Ú_args_to_xps)r^   c                ó¬  ‡ ‡‡— d}‰€�t        t        ‰ d«      d‰ j                  › d‰ j                  › d�«       t        t        ‰ j                  t
        «      xr ‰ j                  t        v d‰ j                  ›dt        › d	|› �«       t        t        ‰ j                  «      Šd
Šn3t        t        ‰t
        «      xr ‰t        v d‰›dt        › d	|› �«       dŠ	 ‰ j                  d«      }|j                  «        	 t        ‰ ‰f   }|S # t        $ r# t        d‰ j                  › d�t        d¬«       Y Œ9w xY w# t         t"        f$ r Y nw xY wt%        d
¬«      ddddddddœdt&        t
        z  dt(        t*        z  dz  dt(        t*        z  dz  dt,        dz  dt,        dz  dt,        dz  dt,        dz  dt,        dz  dt.        j0                  t,        t(        z  t*        z  t2        z     fˆˆ fd„«       }t%        d
¬«      ddddœdt&        t
        z  t.        j0                  t&           z  t.        j0                  t
           z  d t(        t4        z  t.        j0                  t4           z  d!t6        t
        t8        f   t.        j0                  z  dz  d"t.        j0                  t8           dz  d#t,        dt.        j0                  fˆˆ fd$„«       }t%        «       dt.        j0                  t&           fˆˆ fd%„«       }t%        «       dt.        j0                  t&           fˆ fd&„«       }t%        «       dt.        j0                  t&           fˆ fd'„«       }	t%        «       dt.        j0                  t&           fˆˆ fd(„«       }
t%        «       d)d*œd+t:        t<        t:           z  dt.        j0                  t&           fˆ fd,„«       }t%        «       d)d*œd+t:        t<        t:           z  dt.        j0                  t&           fˆ fd-„«       }t%        «       d.d*œd+t>        t<        t>           z  dt.        j0                  t&           fˆ fd/„«       }t@        jB                  |_!        tD        jB                  |_!        tF        jB                  |_!        tH        jB                  |_!        tJ        jB                  |	_!        tL        jB                  |
_!        tN        jB                  |_!        tP        jB                  |_!        tR        jB                  |_!         G ˆfd0„d1tT        «      }i d2‰ j                  “d3‰“d4|“d5|“d6tV        “d7|“d8|“d9|	“d:|
“d;|“d<|“d=|“d>tX        “d?tZ        “d@t\        “dAt^        “}‰dBkD  r[t%        «       dCd*œd+t`        t<        t`           z  dt.        j0                  t&           fˆ fdD„«       }tb        jB                  |_!        ||dE<    |dFi |¤Ž}	 |t        ‰ ‰f<   |S # t"        $ r Y |S w xY w)Ga‹  Creates a strategies namespace for the given array module.

    * ``xp`` is the Array API library to automatically pass to the namespaced methods.
    * ``api_version`` is the version of the Array API which the returned
      strategies namespace should conform to. If ``None``, the latest API
      version which ``xp`` supports will be inferred from ``xp.__array_api_version__``.
      If a version string in the ``YYYY.MM`` format, the strategies namespace
      will conform to that version if supported.

    A :obj:`python:types.SimpleNamespace` is returned which contains all the
    strategy methods in this module but without requiring the ``xp`` argument.
    Creating and using a strategies namespace for NumPy's Array API
    implementation would go like this:

    .. code-block:: pycon

      >>> xp.__array_api_version__  # xp is your desired array library
      '2021.12'
      >>> xps = make_strategies_namespace(xp)
      >>> xps.api_version
      '2021.12'
      >>> x = xps.arrays(xp.int8, (2, 3)).example()
      >>> x
      Array([[-8,  6,  3],
             [-6,  4,  6]], dtype=int8)
      >>> x.__array_namespace__() is xp
      True

    z If the standard version you want is not available, please ensure you're using the latest version of Hypothesis, then open an issue if one doesn't already exist.NÚ__array_api_version__rE   zf has no attribute __array_api_version__, which is required when inferring api_version. If you believe zF is indeed an Array API module, try explicitly passing an api_version.zxp.__array_api_version__=z(, but it must be a valid version string z. Tzapi_version=z4, but it must be None, or a valid version string in Fr¾   z#Could not determine whether module z is an Array API libraryrŽ   rY   )Úforce_reusable_valuesrx   r_   ry   rz   r{   r|   r}   r~   r   rB   c                ó.   •— t        ‰	‰| |||||||¬«
      S )Nrx   )r¢   )
r_   ry   rz   r{   r|   r}   r~   r   r^   r@   s
           €€rM   Ú
from_dtypez-make_strategies_namespace.<locals>.from_dtype–  s0   ø€ ô ØØØØØØØ)Ø+Ø#Ø#ô
ð 	
r]   rî   r©   rè   rª   r«   c          	      ó(   •— t        ‰‰| ||||¬«      S ró   rô   )r_   r©   rè   rª   r«   r^   r@   s        €€rM   Úarraysz)make_strategies_namespace.<locals>.arrays¯  s'   ø€ ô ØØØØØØØô
ð 	
r]   c                  ó   •— t        ‰‰ «      S rP   )r  ©r^   r@   s   €€rM   Úscalar_dtypesz0make_strategies_namespace.<locals>.scalar_dtypesÂ  s   ø€ ä˜b +Ó.Ð.r]   c                  ó   •— t        ‰ «      S rP   )r  r  s   €rM   Úboolean_dtypesz1make_strategies_namespace.<locals>.boolean_dtypesÆ  s   ø€ ä˜rÓ"Ð"r]   c                  ó   •— t        ‰ «      S rP   )r  r  s   €rM   Úreal_dtypesz.make_strategies_namespace.<locals>.real_dtypesÊ  s   ø€ ä˜BÓÐr]   c                  ó   •— t        ‰‰ «      S rP   )r  r\  s   €€rM   Únumeric_dtypesz1make_strategies_namespace.<locals>.numeric_dtypesÎ  s   ø€ ä˜r ;Ó/Ð/r]   r+  r6  r  c                 ó   •— t        ‰| ¬«      S ©Nr6  )r  ©r  r@   s    €rM   Úinteger_dtypesz1make_strategies_namespace.<locals>.integer_dtypesÒ  s   ø€ ô ˜r¨Ô/Ð/r]   c                 ó   •— t        ‰| ¬«      S re  )r  rf  s    €rM   Úunsigned_integer_dtypesz:make_strategies_namespace.<locals>.unsigned_integer_dtypesØ  s   ø€ ô (¨°%Ô8Ð8r]   r1  c                 ó   •— t        ‰| ¬«      S re  )r  rf  s    €rM   Úfloating_dtypesz2make_strategies_namespace.<locals>.floating_dtypesÞ  s   ø€ ô   ¨%Ô0Ð0r]   c                   ó:   •‡ — e Zd Zˆ fd„Zed„ «       Zˆfd„Zˆ xZS )ú6make_strategies_namespace.<locals>.StrategiesNamespacec                 óX   •— dD ]  }||vsŒt        d|› d�«      ‚ t        ‰| �  di |¤Ž y )N©rq   r^   ú'z' kwarg requiredr�   )Ú
ValueErrorr¦   r§   )r¯   rB  rJ   r°   s      €rM   r§   z?make_strategies_namespace.<locals>.StrategiesNamespace.__init__ï  sC   ø€ Ø/ò A�Ø˜vÒ%Ü$ q¨¨Ð.>Ð%?Ó@Ð@ðAô ‰GÑÑ&˜vÓ&r]   c                 ó’   — 	 | j                   d   S # t        $ r,}t        d| j                  › d| j                  › d�«      |‚d }~ww xY w)Nrn   zSYou attempted to access 'complex_dtypes', but it is not available for api_version='z' of xp=rÆ   )Ú__dict__ÚKeyErrorrS   r^   rq   )r¯   ru   s     rM   rn   zEmake_strategies_namespace.<locals>.StrategiesNamespace.complex_dtypesõ  s`   € ðØ—}‘}Ð%5Ñ6Ð6øÜò Ü$ð2Ø26×2BÑ2BÐ1Cð DØŸ)™)˜ Að'óð ð	ûðús   ‚ ‘	Aš'AÁAc                 óR   •— | j                   }‰s|d| j                  › d�z  }d|› d�S )Nz, api_version='rp  zmake_strategies_namespace(rs   ro  )r¯   Úf_argsÚinferred_versions     €rM   Ú__repr__z?make_strategies_namespace.<locals>.StrategiesNamespace.__repr__   s8   ø€ Ø—Y‘YˆFÙ#Ø˜O¨D×,<Ñ,<Ð+=¸QÐ?Ñ?�Ø/°¨x°qÐ9Ð9r]   )rI   rë   rì   r§   Úpropertyrn   rx  rí   )r°   rw  s   @€rM   ÚStrategiesNamespacerm  î  s&   ù„ ô	'ð 
ñ	ó 
ð	÷	:ð 	:r]   rz  rq   r^   rX  rZ  r   r]  r_  ra  rc  rg  ri  rk  r    r   r   rR  r,   r3  c                 ó   •— t        ‰| ¬«      S re  )r  rf  s    €rM   rn   z1make_strategies_namespace.<locals>.complex_dtypes  s   ø€ ô # 2¨UÔ3Ð3r]   rn   r�   )2r   rF   rI   r�   rU  r‘   ÚRELEASED_VERSIONSr   ÚNominalVersionÚNOMINAL_VERSIONSrÉ   Ú__array_namespace__r´   r   r   rS  rt  Ú	TypeErrorr*   r?   rc   re   r>   r’   r  rh   r   r   r	   r0  r   r2  r¢   Ú__doc__rõ   r  r  r  r  r  r  r  r   r   r    r   r   rR  r5  r  )r@   r^   Únot_available_msgÚarrayÚ	namespacerX  rZ  r]  r_  ra  rc  rg  ri  rk  rz  rB  rn   rw  s   ``               @rM   r+   r+   I  so  ú€ ðB	%ð ð
 ÐÜÜ�BÐ/Ó0Ø˜BŸK™K˜=ð )Là�{‰{ˆmð &ð&ô	
ô 	Ü�r×/Ñ/´Ó5ò >Ø×(Ñ(Ô,=Ð=Ø(ˆr×'Ñ'Ð)ð *)Ü):Ð(;¸2Ð>OÐ=PðRô	
ô œ>¨2×+CÑ+CÓDˆØÑäÜ�{¤CÓ(ÒL¨[Ô<LÐ-LØˆ{ˆnð Ü*Ð+¨2Ð.?Ð-@ðBô	
ð
 !Ðð
Ø—‘˜“ˆØ×!Ñ!Ô#ðÜ  " kÐ!2Ñ3ˆ	ð Ðøô ò 
ÜØ1°"·+±+°Ð>VÐWÜØ÷	
ð
ûô ”iÐ ò Ùðúô
 ¨DÔ1ð )-Ø(,Ø!%Ø&*Ø'+Ø#'Ø#'ò
Üœ#‰~ð
ô œ‘; Ñ%ð
ô œ‘; Ñ%ð	
ô
 ˜$‘;ð
ô ˜t™ð
ô  ™ð
ô ˜D‘[ð
ô ˜D‘[ð
ô 
×	Ñ	œ4¤#™:¬Ñ-´Ñ7Ñ	8õ
ó 2ð
ô0 ¨DÔ1ð
 BFØ.2Øò
Üœ#‰~¤× 1Ñ 1´(Ñ ;Ñ;¼b×>OÑ>OÔPSÑ>TÑTð
ä”U‰{œR×.Ñ.¬uÑ5Ñ5ð
ô œ#œs˜(Ñ#¤b×&7Ñ&7Ñ7¸$Ñ>ð	
ô
 ×Ñ¤Ñ$ tÑ+ð
ô ð
ô 
×	Ñ	õ
ó 2ð
ô$ Óð/œ2×,Ñ,¬XÑ6õ /ó ð/ô Óð#œB×-Ñ-¬hÑ7ô #ó ð#ô Óð œ×*Ñ*¬8Ñ4ô  ó ð ô Óð0œB×-Ñ-¬hÑ7õ 0ó ð0ô Óà0?ò0ÜœH¤WÑ-Ñ-ð0ä	×	Ñ	œ8Ñ	$ô0ó ð0ô
 Óà0?ò9ÜœH¤WÑ-Ñ-ð9ä	×	Ñ	œ8Ñ	$ô9ó ð9ô
 Óà08ò1ÜœH¤WÑ-Ñ-ð1ä	×	Ñ	œ8Ñ	$ô1ó ð1ô
 %×,Ñ,€JÔÜ—_‘_€F„NÜ*×2Ñ2€MÔÜ,×4Ñ4€NÔÜ&×.Ñ.€KÔÜ,×4Ñ4€NÔÜ,×4Ñ4€NÔÜ&>×&FÑ&FÐÔ#Ü.×6Ñ6€OÔö:œoô :ð0Ø�—‘ðà�{ðð 	�jðð 	�&ð	ð
 	œðð 	˜ðð 	˜.ðð 	�{ðð 	˜.ðð 	˜.ðð 	"Ð#:ðð 	˜?ðð 	Ô,ðð 	Ô 4ðð 	(Ô)Fðð  	”7ð!€Fð& �YÒä	Ó	à4=ò	4Ü¤¬Ñ 1Ñ1ð	4ä×ÑœxÑ(ô	4ó 
ð	4ô
 "1×!8Ñ!8ˆÔØ#1ˆÐÑ á#Ñ- fÑ-€IðØ*3Œ�b˜+Ð&Ñ'ð Ðøô ò ØàÐðús6   Ã!D Ã;D7 Ä)D4Ä3D4Ä7E	ÅE	Ö9W ×	W×WÚsphinx)ÚMockc                   ó@   — e Zd ZU eed<   eed<   eed<   eed<   eed<   y)Ú	FloatInfor–   Úepsr‡   r†   r•   N)rI   rë   rì   rc   Ú__annotations__re   r�   r]   rM   rˆ  rˆ  9  s   … Ø‹	Ø‹
Ø‹
Ø‹
ØÔr]   rˆ  c           	      ó  — t        j                  | «      }t        t        |j                  «      t        |j                  «      t        |j                  «      t        |j                  «      t        |j                  «      «      S )aá  Returns a finfo object compliant with the Array API

        Ensures all attributes are Python scalars and not NumPy scalars. This
        lets us ignore corner cases with how NumPy scalars operate, such as
        NumPy floats breaking our next_down() util.

        Also ensures the finfo obj has the smallest_normal attribute. NumPy only
        introduced it in v1.21.1, so we just use the equivalent tiny attribute
        to keep mocking with older versions working.
        )
Únpr‚   rˆ  rc   r–   re   r‰  r‡   r†   Útiny)r_   Ú_finfos     rM   Ú
mock_finfor�  @  sZ   € ô —‘˜%“ˆÜÜ�—‘ÓÜ�&—*‘*ÓÜ�&—*‘*ÓÜ�&—*‘*ÓÜ�&—+‘+Óó
ð 	
r]   rI   ÚmockrU  r-   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   ÚnanÚastypec                 ó$   — | j                  |«      S rP   )r’  )r    rö   s     rM   rÄ   rÄ   h  s   € ˜AŸH™H Q›K€ r]   r�   r‚   Úbroadcast_arraysÚaranger—   ÚemptyrÉ   ÚonesrÚ   rÙ   rñ   Ú
logical_orÚsumÚnonzeroÚsortÚunique_valuesÚanyrð   )˜r¬   ÚsysÚcollections.abcr   r   r   r   Únumbersr   rß   r   Útypingr	   r
   r   r   r   r   r   Úwarningsr   Úweakrefr   Ú
hypothesisr   r’   Úhypothesis.errorsr   r   Úhypothesis.extra._array_helpersr   r   r   r   r   r   r   r   r   r   rK  r   r    r@  Úhypothesis.internal.conjecturer!   rÒ   Úhypothesis.internal.coverager"   Úhypothesis.internal.floatsr#   Úhypothesis.internal.reflectionr$   Úhypothesis.internal.validationr%   r&   r'   r(   Ú*hypothesis.strategies._internal.strategiesr)   Ú%hypothesis.strategies._internal.utilsr*   Ú__all__r|  r~  rÎ   Úlistr}  Ú	INT_NAMESÚ
UINT_NAMESrb   rd   Ú
REAL_NAMESrg   ÚNUMERIC_NAMESrt   r?   r‘   rN   rÍ   rV   r\   rÏ   r>   rc   re   rh   rp   rw   r  r¢   r¤   rõ   r	  r  r  r  r  r&  r*  r0  rŠ  r2  r5  r  r  r  r  r�  rR  rS  r+   ÚnumpyrŒ  ÚImportErrorÚmodulesÚunittest.mockr†  rˆ  r�  r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   Úbool_r‘  r�   r”  r•  r—   r–  rÉ   r—  rÚ   rÙ   rñ   r˜  r™  rš  r›  r«   r�  rð   Úmock_xpr�   r]   rM   ú<module>rº     sº	  ðô Û 
ß AÓ AÝ Ý !÷÷ ñ õ Ý 'å 'ß @÷÷ ÷ ó õ 7Ý 7Ý 0Ý 2÷ó õ FÝ Bð  ð€ð
 LÐ Ø0Ð&Ð0¨Ñ0Ð ÙÐÓ¡4Ð(8Ó#9Ò9Ð 9Ð9ØÐWÑX€Ù�ÓÐ#3Ò3Ð 3Ð3ð 0€	Ø4€
Ø˜JÑ&€Ø$€Ø˜[Ñ(€
Ø+€Ø˜]Ñ*€ØÐ&˜Ñ&€á�:Ó€ð ð
˜Cð 
¨T°#©Yð 
¸4ò 
ó ð
ðØðØ! #™ðà
ˆ4�‰9�d˜3‘iÐÑ óð˜sð ¨4°©9ð ¸ó ð*LØð*LØ(ð*LØ19ð*Là	ˆ$�‰*�uÑ
˜wÑ
&Ñ'ó*LðZ ð
˜ð 
 3ð 
¨3ò 
ó ð
ð( %)Ø$(Ø!Ø"&Ø#'Ø#Ø#òA
ØðA
àðA
ð �c‰>ðA
ð
 �U‰{˜TÑ!ðA
ð �U‰{˜TÑ!ðA
ð �d‰{ðA
ð ˜4‘KðA
ð ˜D‘[ðA
ð ˜‘ðA
ð ˜‘ðA
ð ×Ñ�t˜c‘z EÑ)¨GÑ3Ñ4óA
ôHK3�B×%Ñ%ô K3ðh >BØ*.Øò~Øð~àð~ð �c‰>˜B×-Ñ-¨hÑ7Ñ7¸"×:KÑ:KÈCÑ:PÑPð~ð �‰;˜×*Ñ*¨5Ñ1Ñ1ð	~ð �c˜3�hÑ "×"3Ñ"3Ñ3°dÑ:ð~ð ×
Ñ
˜CÑ
  4Ñ
'ð~ð ð~ð ×Ñó~ðB ð	*�Sð 	* $ x¡.ð 	*¸¸c¹ð 	*Àtò 	*ó ð	*ðL�sð L¨ð L¸B×<MÑ<MÈhÑ<Wó Lð
˜ð  × 1Ñ 1°(Ñ ;ó ð�Sð ˜R×.Ñ.¨xÑ8ó ðØðØ(ðà×Ñ�xÑ óð ðØðØ" 3™-ðØ6>¸s±mðà	òó ðð# 3ð #¨x¸©}ð #ÀÈ#Áó #ð
 ˜]Ñ+€ˆÓ +Ø˜V‘_€ˆÓ $Ø˜WÑ%€ˆÓ %ð 6Eò#Øð#Ø ¨'Ñ!2Ñ2ð#à×Ñ�xÑ ó#ð& 6Eò#Øð#Ø ¨'Ñ!2Ñ2ð#à×Ñ�xÑ ó#ð* 6>ò#Øð#Ø ¨'Ñ!2Ñ2ð#à×Ñ�xÑ ó#ð& 6?ò#Øð#Ø ¨'Ñ!2Ñ2ð#à×Ñ�xÑ ó#ñ$ 	Ð	Óñ.ó ð.ð ð
 ×ÑÐð  ðÐ Ô ñ Óð ØØØØòØðð ðð ð	ð
 �D‰jðð ðð �D‰jðð ×ÑÐ*Ñ+òó ðð& )G×(NÑ(NÐ Ô %ñ Óð ØØØòFØðFð ðFð �D‰jð	Fð
 ðFð ðFð ×Ñ�zÑ"òFó ðFñT %8Ó$9€Ð!Ó 9ð 6:òaØðaØ+¨dÑ2ðaàóaðH	Ûð �>ô�Jô ð
˜(ð 
 yó 
ñ( ò /Ùð/á'ð/ð �WŠWð	/ð
 �hŠhð/ð �hŠhð/ð �hŠhð/ð �hŠhð/ð �yŠyð/ð �yŠyð/ð �yŠyð/ð —
“
ð/ð —
“
ð/ð —,“,ð/ð —=“=ð/ð  �X‹Xð!/ð$ �F‹Fð%/ò( (ð)/ð* �h‹hð+/ñ, ð-/ð. ×,Ó,ð//ð2 �y‹yð3/ð4 —
“
ð5/ð6 �h‹hð7/ð8 �h‹hð9/ð: �W‹Wð;/ð> —
“
ð?/ðB �h‹hðC/ðD —“ðE/ðF —=“=ðG/ðJ �F‹FðK/ðN —
“
ðO/ðR �W‹WðS/ðV —i“iðW/ðZ �F‹Fð[/ð\ �F‹Fð]/�Gð; øð ò Ø�3—;‘;Ñå&á‹V‰àˆúðús   Ð#W< ×<#X#Ø"X#