o
    "i                     @  s   d Z ddlmZ ddlZddlmZ ddlmZ ddlZddl	m
Z
mZ ddlmZmZmZ g d	Zd
Zdd Zed'ddZed'ddZedd ZeZeZed(ddZedd Zed(ddZeed)ddZed*dd Zeed+d,d%d&ZdS )-zWrapper 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uniformUSE_NUMPY_RANDOMFc                   s   t   fdd}|S )Nc                    sT   t du r | i |S t du r"ddlm} t| j}|| i |S tdt  d)NFTr   )r   zUSE_NUMPY_RANDOM=z not understood.)r   numpyr   getattr__name__
ValueError)argskwdsnrffunc b/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torch/_numpy/random.pyinner(   s   zdeco_stream.<locals>.inner)	functoolswraps)r    r#   r!   r   r"   deco_stream'   s   r&   c                 C  s   | d urt j|  d S d S N)torchr   Zmanual_seed)r   r!   r!   r"   r   7   s   r   c                 C  s8   | d u rd} t  j}tj| |d }t|| d u dS Nr!   dtypeZreturn_scalarr   default_dtypesfloat_dtyper(   emptyZuniform_r   sizer+   valuesr!   r!   r"   r   =   s
   
r   c                  G  s   t | S r'   )r   r2   r!   r!   r"   r   F   s   r                 ?c                 C  <   |d u rd}t  j}tj||d| |}t||d u dS r)   r-   )lowhighr2   r+   r3   r!   r!   r"   r   O   
   
r   c                  G  s(   t  j}tj| |d}t|| d u dS )Nr*   r,   )r   r.   r/   r(   r   r   r1   r!   r!   r"   r   X   s   
r   c                 C  r7   r)   )r   r.   r/   r(   r0   Znormal_r   )locscaler2   r+   r3   r!   r!   r"   r   _   r:   r   xr	   c                 C  s&   t | jd }| | }| | d S )Nr   )r(   ZrandpermshapeZcopy_)r=   permZxpr!   r!   r"   r   h   s   r   c                 C  sT   |d u rd}t |ttfs|f}|d u rd| } }tj| ||d}t|t|d u dS )Nr!   r   r4   r,   )
isinstancetuplelistr(   r   r   int)r8   r9   r2   r3   r!   r!   r"   r   p   s   
r   TapOptional[ArrayLike]c           	      C  s   |   dkrt| } |d u rd}nt|r#d}|D ]}||9 }qn|}|d u r3t| | jd  }tt|j	j
}t| d |krJtdtj|||d}t|r\||}| | }|S )Nr   r   r6   zprobabilities do not sum to 1.)replacement)Znumelr(   Zaranger   Zis_sequenceZ	ones_liker>   r   Zfinfor+   Zepsabssumr   ZmultinomialZreshape)	rD   r2   replacerE   Znum_elelZatolindicesZsamplesr!   r!   r"   r   |   s(   




r   r'   )r5   r6   N)r=   r	   )NN)NTN)rD   r	   rE   rF   )__doc__
__future__r   r$   mathr   typingr   r(    r   r   Z_normalizationsr   r	   r
   __all__r   r&   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   sB    

