§
    €ÛgB'  ã                  óv  — d dl mZ d dlmZmZmZmZmZ erddlm	Z	m
Z
mZmZmZ d dlmZ ddlmZ d dlZd„ Zdddd	œdAd„Z	 	 dBdddœdCd„ZdddœdDd„ZdddœdEd „Z	 dFd ddd!œdGd'„ZdHd)„ZdddœdId+„ZdddœdJd,„Zddd-d.œdKd2„Zd3d4œdLd9„ZdddœdDd:„ZdddœdEd;„Z d d<œdMd=„Z!d d<œdMd>„Z"dddœdDd?„Z#dddœdEd@„Z$dS )Né    )Úannotations)ÚTYPE_CHECKINGÚListÚOptionalÚTupleÚUnioné   )ÚArrayÚDeviceÚDtypeÚNestedSequenceÚSupportsBufferProtocol)ÚSequence)Ú_all_dtypesNc                óH   — dt           z   D ]	}| |u r d S Œ
t          d¦  «        ‚)N©Nz)dtype must be one of the supported dtypes)r   Ú
ValueError)ÚdtypeÚds     úY/granary/edev/quantum/lib/python3.11/site-packages/numpy/array_api/_creation_functions.pyÚ_check_valid_dtyper      s<   € ð
 •{Ñ"ð ð ˆØ�Aˆ:ˆ:ØˆFˆFð å
Ð@Ñ
AÔ
AÐAó    )r   ÚdeviceÚcopyÚobjúZUnion[Array, bool, int, float, NestedSequence[bool | int | float], SupportsBufferProtocol]r   úOptional[Dtype]r   úOptional[Device]r   ú#Optional[Union[bool, np._CopyMode]]Úreturnr
   c              ó  — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚|dt          j        j        fv rt          d¦  «        ‚t          | |¦  «        rP|�| j	        |k    rd}|dt          j        j
        fv r* |j        t	          j        | j        d|¬	¦  «        ¦  «        S | S |€0t          | t          ¦  «        r| d
k    s| dk     rt          d¦  «        ‚t	          j        | |¬¦  «        } |j        |¦  «        S )z~
    Array API compatible wrapper for :py:func:`np.asarray <numpy.asarray>`.

    See its docstring for more information.
    r	   ©r
   ©ÚcpuNúUnsupported device Fz!copy=False is not yet implementedNT)r   r   l            lûÿÿÿ         z&Integer out of bounds for array dtypes©r   )Ú_array_objectr
   r   r   ÚnpÚ	_CopyModeÚ	IF_NEEDEDÚNotImplementedErrorÚ
isinstancer   ÚALWAYSÚ_newÚarrayÚ_arrayÚintÚOverflowErrorÚasarray)r   r   r   r   r
   Úress         r   r3   r3      s,  € ð, %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Ø�•r”|Ô-Ð.Ð.Ð.å!Ð"EÑFÔFÐFÝ�#�uÑÔð ØÐ ¤¨eÒ!3Ð!3ØˆDØ�D�"œ,Ô-Ð.Ð.Ð.Ø�5”:�bœh s¤z¸ÀEÐJÑJÔJÑKÔKÐKØˆ
Ø€}� C­Ñ-Ô-€}°3¸²=°=ÀCÈ*ÒDTÐDTõ ÐDÑEÔEÐEÝ
Œ*�S Ð
&Ñ
&Ô
&€CØˆ5Œ:�c‰?Œ?Ðr   )r   r   ÚstopúOptional[Union[int, float]]ÚstepúUnion[int, float]Ústartc              ó¤   — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | |||¬¦  «        ¦  «        S )z|
    Array API compatible wrapper for :py:func:`np.arange <numpy.arange>`.

    See its docstring for more information.
    r	   r"   r#   r%   )r5   r7   r   )r'   r
   r   r   r.   r(   Úarange)r9   r5   r7   r   r   r
   s         r   r;   r;   K   sk   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Øˆ5Œ:•b”i ¨D°tÀ5ÐIÑIÔIÑJÔJÐJr   ÚshapeúUnion[int, Tuple[int, ...]]c               ó    — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | |¬¦  «        ¦  «        S )zz
    Array API compatible wrapper for :py:func:`np.empty <numpy.empty>`.

    See its docstring for more information.
    r	   r"   r#   r%   r&   )r'   r
   r   r   r.   r(   Úempty©r<   r   r   r
   s       r   r?   r?   a   óg   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Øˆ5Œ:•b”h˜u¨EÐ2Ñ2Ô2Ñ3Ô3Ð3r   Úxc              óª   — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | j        |¬¦  «        ¦  «        S )z„
    Array API compatible wrapper for :py:func:`np.empty_like <numpy.empty_like>`.

    See its docstring for more information.
    r	   r"   r#   r%   r&   )r'   r
   r   r   r.   r(   Ú
empty_liker0   ©rB   r   r   r
   s       r   rD   rD   t   ói   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Øˆ5Œ:•b”m A¤H°EÐ:Ñ:Ô:Ñ;Ô;Ð;r   )Úkr   r   Ún_rowsr1   Ún_colsúOptional[int]rG   c              ó¤   — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | |||¬¦  «        ¦  «        S )zv
    Array API compatible wrapper for :py:func:`np.eye <numpy.eye>`.

    See its docstring for more information.
    r	   r"   r#   r%   )ÚMrG   r   )r'   r
   r   r   r.   r(   Úeye)rH   rI   rG   r   r   r
   s         r   rM   rM   „   sk   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Øˆ5Œ:•b”f˜V v°¸%Ð@Ñ@Ô@ÑAÔAÐAr   Úobjectc               óR   — ddl m}  |j        t          j        | ¦  «        ¦  «        S )Nr	   r"   )r'   r
   r.   r(   Úfrom_dlpack)rB   r
   s     r   rP   rP   š   s0   € Ø$Ð$Ð$Ð$Ð$Ð$àˆ5Œ:•b”n QÑ'Ô'Ñ(Ô(Ð(r   Ú
fill_valuec               ó$  — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚t	          ||¦  «        r|j        dk    r|j        }t          j        | ||¬¦  «        }|j	        t          vrt          d¦  «        ‚ |j        |¦  «        S )zx
    Array API compatible wrapper for :py:func:`np.full <numpy.full>`.

    See its docstring for more information.
    r	   r"   r#   r%   r   r&   zInvalid input to full)r'   r
   r   r   r,   Úndimr0   r(   Úfullr   r   Ú	TypeErrorr.   )r<   rQ   r   r   r
   r4   s         r   rT   rT       s°   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Ý�*˜eÑ$Ô$ð '¨¬¸AÒ)=Ð)=ØÔ&ˆ
Ý
Œ'�%˜¨5Ð
1Ñ
1Ô
1€CØ
„y�Ð#Ð#õ Ð/Ñ0Ô0Ð0Øˆ5Œ:�c‰?Œ?Ðr   c              óê   — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚t	          j        | j        ||¬¦  «        }|j        t          vrt          d¦  «        ‚ |j
        |¦  «        S )z‚
    Array API compatible wrapper for :py:func:`np.full_like <numpy.full_like>`.

    See its docstring for more information.
    r	   r"   r#   r%   r&   zInvalid input to full_like)r'   r
   r   r   r(   Ú	full_liker0   r   r   rU   r.   )rB   rQ   r   r   r
   r4   s         r   rW   rW   »   sŒ   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Ý
Œ,�q”x °5Ð
9Ñ
9Ô
9€CØ
„y�Ð#Ð#õ Ð4Ñ5Ô5Ð5Øˆ5Œ:�c‰?Œ?Ðr   T)r   r   ÚendpointÚnumrX   Úboolc         	     ó¦   — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | ||||¬¦  «        ¦  «        S )z€
    Array API compatible wrapper for :py:func:`np.linspace <numpy.linspace>`.

    See its docstring for more information.
    r	   r"   r#   r%   )r   rX   )r'   r
   r   r   r.   r(   Úlinspace)r9   r5   rY   r   r   rX   r
   s          r   r\   r\   Õ   sm   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Øˆ5Œ:•b”k %¨¨s¸%È(ÐSÑSÔSÑTÔTÐTr   Úxy)ÚindexingÚarraysr^   ÚstrúList[Array]c                ó¶   ‡— ddl mŠ t          d„ |D ¦   «         ¦  «        dk    rt          d¦  «        ‚ˆfd„t	          j        d„ |D ¦   «         d| iŽD ¦   «         S )z€
    Array API compatible wrapper for :py:func:`np.meshgrid <numpy.meshgrid>`.

    See its docstring for more information.
    r	   r"   c                ó   — h | ]	}|j         ’Œ
S © r&   ©Ú.0Úas     r   ú	<setcomp>zmeshgrid.<locals>.<setcomp>÷   s   € Ð$Ð$Ð$˜ˆAŒGÐ$Ð$Ð$r   z,meshgrid inputs must all have the same dtypec                ó0   •— g | ]} ‰j         |¦  «        ‘ŒS rd   )r.   )rf   r/   r
   s     €r   ú
<listcomp>zmeshgrid.<locals>.<listcomp>ú   s5   ø€ ð ð ð àð 	ˆŒ
�5ÑÔðð ð r   c                ó   — g | ]	}|j         ‘Œ
S rd   )r0   re   s     r   rj   zmeshgrid.<locals>.<listcomp>ü   s   € Ð"<Ð"<Ð"<° 1¤8Ð"<Ð"<Ð"<r   r^   )r'   r
   Úlenr   r(   Úmeshgrid)r^   r_   r
   s     @r   rm   rm   ì   s“   ø€ ð %Ð$Ð$Ð$Ð$Ð$õ
 Ð$Ð$˜VÐ$Ñ$Ô$Ñ%Ô%¨Ò)Ð)ÝÐGÑHÔHÐHðð ð ð å”[Ð"<Ð"<°VÐ"<Ñ"<Ô"<ÐPÀxÐPÐPðñ ô ð r   c               ó    — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | |¬¦  «        ¦  «        S )zx
    Array API compatible wrapper for :py:func:`np.ones <numpy.ones>`.

    See its docstring for more information.
    r	   r"   r#   r%   r&   )r'   r
   r   r   r.   r(   Úonesr@   s       r   ro   ro      sg   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Øˆ5Œ:•b”g˜e¨5Ð1Ñ1Ô1Ñ2Ô2Ð2r   c              óª   — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | j        |¬¦  «        ¦  «        S )z‚
    Array API compatible wrapper for :py:func:`np.ones_like <numpy.ones_like>`.

    See its docstring for more information.
    r	   r"   r#   r%   r&   )r'   r
   r   r   r.   r(   Ú	ones_liker0   rE   s       r   rq   rq     si   € ð %Ð$Ð$Ð$Ð$Ð$å�uÑÔÐØ�]Ð"Ð"ÝÐ9¨vÐ9Ð9Ñ:Ô:Ð:Øˆ5Œ:•b”l 1¤8°5Ð9Ñ9Ô9Ñ:Ô:Ð:r   ©rG   c              ó”   — ddl m} | j        dk     rt          d¦  «        ‚ |j        t          j        | j        |¬¦  «        ¦  «        S )zx
    Array API compatible wrapper for :py:func:`np.tril <numpy.tril>`.

    See its docstring for more information.
    r	   r"   é   z)x must be at least 2-dimensional for trilrr   )r'   r
   rS   r   r.   r(   Útrilr0   ©rB   rG   r
   s      r   ru   ru   #  óS   € ð %Ð$Ð$Ð$Ð$Ð$à„v�‚z€zåÐDÑEÔEÐEØˆ5Œ:•b”g˜aœh¨!Ð,Ñ,Ô,Ñ-Ô-Ð-r   c              ó”   — ddl m} | j        dk     rt          d¦  «        ‚ |j        t          j        | j        |¬¦  «        ¦  «        S )zx
    Array API compatible wrapper for :py:func:`np.triu <numpy.triu>`.

    See its docstring for more information.
    r	   r"   rt   z)x must be at least 2-dimensional for triurr   )r'   r
   rS   r   r.   r(   Útriur0   rv   s      r   ry   ry   1  rw   r   c               ó    — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | |¬¦  «        ¦  «        S )zz
    Array API compatible wrapper for :py:func:`np.zeros <numpy.zeros>`.

    See its docstring for more information.
    r	   r"   r#   r%   r&   )r'   r
   r   r   r.   r(   Úzerosr@   s       r   r{   r{   ?  rA   r   c              óª   — ddl m} t          |¦  «         |dvrt          d|›�¦  «        ‚ |j        t          j        | j        |¬¦  «        ¦  «        S )z„
    Array API compatible wrapper for :py:func:`np.zeros_like <numpy.zeros_like>`.

    See its docstring for more information.
    r	   r"   r#   r%   r&   )r'   r
   r   r   r.   r(   Ú
zeros_liker0   rE   s       r   r}   r}   R  rF   r   )
r   r   r   r   r   r   r   r   r    r
   )Nr	   )r5   r6   r7   r8   r9   r8   r   r   r   r   r    r
   )r<   r=   r   r   r   r   r    r
   )rB   r
   r   r   r   r   r    r
   r   )rH   r1   rI   rJ   rG   r1   r   r   r   r   r    r
   )rB   rN   r    r
   )
r<   r=   rQ   r8   r   r   r   r   r    r
   )
rQ   r8   rB   r
   r   r   r   r   r    r
   )rY   r1   r9   r8   r5   r8   r   r   r   r   rX   rZ   r    r
   )r_   r
   r^   r`   r    ra   )rB   r
   rG   r1   r    r
   )%Ú
__future__r   Útypingr   r   r   r   r   Ú_typingr
   r   r   r   r   Úcollections.abcr   Ú_dtypesr   Únumpyr(   r   r3   r;   r?   rD   rM   rP   rT   rW   r\   rm   ro   rq   ru   ry   r{   r}   rd   r   r   ú<module>r„      sX  ðØ "Ð "Ð "Ð "Ð "Ð "ð ?Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >àð )ðð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð(Ð(Ð(Ð(Ð(Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð ðBð Bð Bð, "Ø#Ø04ð)ð )ð )ð )ð )ð )ð^ )-Øð	Kð "Ø#ðKð Kð Kð Kð Kð Kð2 "Ø#ð	4ð 4ð 4ð 4ð 4ð 4ð( .2Èdð<ð <ð <ð <ð <ð <ð$ !ðBð
 Ø!Ø#ðBð Bð Bð Bð Bð Bð,)ð )ð )ð )ð "Ø#ðð ð ð ð ð ð@ "Ø#ðð ð ð ð ð ð@ "Ø#ØðUð Uð Uð Uð Uð Uð. .2ð ð ð ð ð ð ð. "Ø#ð	3ð 3ð 3ð 3ð 3ð 3ð( .2Èdð;ð ;ð ;ð ;ð ;ð ;ð  #$ð .ð .ð .ð .ð .ð .ð #$ð .ð .ð .ð .ð .ð .ð" "Ø#ð	4ð 4ð 4ð 4ð 4ð 4ð( .2Èdð<ð <ð <ð <ð <ð <ð <ð <r   