ó
    Eñi+  ã                  ó(  • S r SSKJr  SSKrSSKJr  SSKJr  SSKrSSK	J
r
Jr  SSKJrJrJr  / S	QrS
 rS r\SS j5       r\SS j5       rS r\r\r\SS j5       r\S 5       r\SS j5       r\S 5       r\SS j5       r\\SSS jj5       5       rg)z§Wrapper to mimic (parts of) np.random API surface.

NumPy has strict guarantees on reproducibility etc; here we don't give any.

Q: default dtype is float64 in numpy

é    )ÚannotationsN)Úsqrt)ÚOptionalé   )Ú_dtypes_implÚ_util)Úarray_or_scalarÚ	ArrayLikeÚ
normalizer)ÚseedÚrandom_sampleÚsampleÚrandomÚrandÚrandnÚnormalÚchoiceÚrandintÚshuffleÚuniformc                 ó,   • SS K Js  Jn   U R                  $ )Nr   )Útorch._dynamo.configÚ_dynamoÚconfigÚuse_numpy_random_stream)r   s    ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_numpy/random.pyÚuse_numpy_randomr   &   s   € ç)Ð)à×)Ñ)Ð)ó    c                óF   ^ • [         R                  " T 5      U 4S j5       nU$ )Nc            	     óÞ  >^• [        5       (       d  T" U 0 UD6$ SS KnSSKJm  [	        UR
                  TR                  5      n[        U4S jU  5       5      n UR                  5        VVs0 s H3  u  pEU[        UT5      (       a  UR                  R                  5       OU_M5     nnnU" U 0 UD6n[        XbR                  5      (       a  T" [        R                  " U5      5      nU$ s  snnf )Nr   r   ©Úndarrayc              3  ó~   >#   • U  H2  n[        UT5      (       a  UR                  R                  5       OUv •  M4     g 7f©N)Ú
isinstanceÚtensorÚnumpy)Ú.0Úargr"   s     €r   Ú	<genexpr>Ú-deco_stream.<locals>.inner.<locals>.<genexpr>:   s3   øé € ð ÚSWÈC¤j°°g×&>Ñ&>�—
‘
× Ñ Ô"ÀCÔGÒSWùs   ƒ:=)r   r'   Ú_ndarrayr"   Úgetattrr   Ú__name__ÚtupleÚitemsr%   r&   ÚtorchÚ	as_tensor)	ÚargsÚkwdsr'   ÚfÚkeyÚvalÚvaluer"   Úfuncs	          @€r   ÚinnerÚdeco_stream.<locals>.inner.   sØ   ù€ ä×!Ñ!Ù˜Ð& Ñ&Ð&ãå)ä˜Ÿ™ d§m¡mÓ4ˆAô ô ÙSWóó ˆDð
 !%§
¡
¤ôâ ,‘H�Cð ¬:°c¸7×+CÑ+C�S—Z‘Z×%Ñ%Ô'ÈÒLÙ ,ð ñ ñ
 �tÐ$˜tÑ$ˆEô ˜%§¡×/Ñ/Ù¤§¢°Ó 6Ó7�àˆLùós   Á,:C))Ú	functoolsÚwraps)r9   r:   s   ` r   Údeco_streamr>   -   s%   ø€ Ü‡_‚_�TÓôó ðð6 €Lr   c                óJ   • U b   [         R                  R                  U 5        g g r$   )r1   r   Úmanual_seed)r   s    r   r   r   M   s   € àÑÜ�‰× Ñ  Õ&ð r   c                ó¦   • U c  Sn [         R                  " 5       R                  n[        R                  " XS9R                  5       n[        X S:H  S9$ ©N© ©Údtype©Úreturn_scalar©r   Údefault_dtypesÚfloat_dtyper1   ÚemptyÚuniform_r	   ©ÚsizerE   Úvaluess      r   r   r   S   sF   € à�|ØˆÜ×'Ò'Ó)×5Ñ5€EÜ�[Š[˜Ñ+×4Ñ4Ó6€FÜ˜6¸±Ñ<Ð<r   c                 ó(   • U S:X  a  S n [        U 5      $ )NrC   )r   ©rN   s    r   r   r   \   s   € ØˆrƒzØˆÜ˜ÓÐr   c                ó¨   • Uc  Sn[         R                  " 5       R                  n[        R                  " X#S9R                  X5      n[        XBS:H  S9$ rB   rH   )ÚlowÚhighrN   rE   rO   s        r   r   r   f   sH   € à�|ØˆÜ×'Ò'Ó)×5Ñ5€EÜ�[Š[˜Ñ+×4Ñ4°SÓ?€FÜ˜6¸±Ñ<Ð<r   c                 ó€   • [         R                  " 5       R                  n[        R                  " XS9n[        X S:H  S9$ )NrD   rC   rF   )r   rI   rJ   r1   r   r	   rM   s      r   r   r   o   s3   € ä×'Ò'Ó)×5Ñ5€EÜ�[Š[˜Ñ+€FÜ˜6¸±Ñ<Ð<r   c                ó¨   • Uc  Sn[         R                  " 5       R                  n[        R                  " X#S9R                  X5      n[        XBS:H  S9$ rB   )r   rI   rJ   r1   rK   Únormal_r	   )ÚlocÚscalerN   rE   rO   s        r   r   r   v   sH   € à�|ØˆÜ×'Ò'Ó)×5Ñ5€EÜ�[Š[˜Ñ+×3Ñ3°CÓ?€FÜ˜6¸±Ñ<Ð<r   c                ó  • SSK Jn  [        U [        R                  5      (       a  U nO([        X5      (       a  U R
                  nO[        S5      e[        R                  " UR                  S   5      nX#   nUR                  U5        g )Nr   r!   z'We do not random.shuffle lists in-placer   )
r,   r"   r%   r1   ÚTensorr&   ÚNotImplementedErrorÚrandpermÚshapeÚcopy_)Úxr"   r&   ÚpermÚxps        r   r   r      sf   € õ "ä�!”U—\‘\×"Ñ"Ø‰Ü	�A×	Ñ	Ø—‘‰ä!Ð"KÓLÐLä�>Š>˜&Ÿ,™, q™/Ó*€DØ	‰€BØ
‡L�L�Õr   c                ó¢   • Uc  Sn[        U[        [        45      (       d  U4nUc  SU p[        R                  " XUS9n[        U[        US:H  S9$ )NrC   r   rQ   rF   )r%   r/   Úlistr1   r   r	   Úint)rS   rT   rN   rO   s       r   r   r   �   sS   € à�|ØˆÜ�dœU¤D˜M×*Ñ*ØˆwˆØ�|Ø�sˆTÜ�]Š]˜3¨4Ñ0€FÜ˜6¤3°d¸b±jÑAÐAr   c                óX  • U R                  5       S:X  a  [        R                  " U 5      n Uc  SnO-[        R                  " U5      (       a  SnU H  nXE-  nM	     OUnUc&  [        R
                  " U 5      U R                  S   -  n[        [        R                  " UR                  5      R                  5      n[        UR                  5       S-
  5      U:”  a  [        S5      e[        R                  " X4US9n[        R                  " U5      (       a  UR                  U5      nX   nU$ )Nr   r   ç      ð?zprobabilities do not sum to 1.)Úreplacement)Únumelr1   Úaranger   Úis_sequenceÚ	ones_liker^   r   ÚfinforE   ÚepsÚabsÚsumÚ
ValueErrorÚmultinomialÚreshape)	ÚarN   ÚreplaceÚpÚnum_elÚelÚatolÚindicesÚsampless	            r   r   r   œ   sû   € ð 	‡w�wƒy�Aƒ~Ü�LŠL˜‹Oˆð
 �|Ø‰Ü	×	Ò	˜4×	 Ñ	 ØˆÛˆBØ‰LŠFò ð ˆð 	�yÜ�OŠO˜AÓ §¡¨¡Ñ+ˆô ”—’˜AŸG™GÓ$×(Ñ(Ó)€DÜ
ˆ1�5‰5‹7�S‰=Ó˜DÓ ÜÐ9Ó:Ð:ô ×Ò °wÑ?€Gä×Ò˜×ÑØ—/‘/ $Ó'ˆà‰j€Gà€Nr   r$   )g        rg   N)NN)NTN)rt   r
   rv   zOptional[ArrayLike])Ú__doc__Ú
__future__r   r<   Úmathr   Útypingr   r1   Ú r   r   Ú_normalizationsr	   r
   r   Ú__all__r   r>   r   r   r   r   r   r   r   r   r   r   r   rC   r   r   Ú<module>rƒ      sñ   ðñõ #ã Ý Ý ã ç !ß CÑ Cò€ò*òð@ ó'ó ð'ð
 ó=ó ð=òð 
€Ø	€ð ó=ó ð=ð ñ=ó ð=ð ó=ó ð=ð ñó ðð  óBó ðBð Øõ"ó ó ñ"r   