
    3j                      P   S SK JrJrJrJrJr  S SKrSS\S\\   SS4S jjr	SS \
" S5      4S	SS4S
\\R                  \
\\
\
4   \\
   4   S\S\\
   S\\\
\
4      S\\   S\\R                     S\\R                     S\R                  4S jjrSS\R                  S\S\\\
\
4      SS4S jjr   SS\R                  S\S\\\
\
4      S\S\SS4S jjr  SS\\R                  \
\\S4   4   S\S\\R                     S\\R                     S\R                  4
S jjrg)    )AnyListOptionalTupleUnionN
batch_sizesame_on_batchreturnc                     [        U [        5      (       a  U S:  d  [        SU  S35      eUb%  [        U[        5      (       d  [        SU S35      egg)z0Check valid batch_size and same_on_batch params.r   z.`batch_size` shall be a positive integer. Got .Nz&`same_on_batch` shall be boolean. Got )
isinstanceintAssertionErrorbool)r   r	   s     d/home/wildlama/miniconda3/lib/python3.13/site-packages/kornia/augmentation/utils/param_validation.py_common_param_checkr      s\    z3''J!OMj\YZ[\\ M4)H)HEm_TUVWW *I     g        infjointfactornamecenterboundscheckdevicedtypec                    Uc  [         R                  " S5      nUc  [         R                  " 5       n[        U [         R                  5      (       d  [         R
                  " XUS9n U R                  5       S:X  a  U S:  a  [        SU SU  S35      eUb  Uc  [        SU SU S35      eU R                  S	5      [         R
                  " S
S/U R                  U R                  S9-  U-   nUR                  US   US   5      R                  XVS9nO[         R                  " XUS9nUb7  US:X  a  [        XqU5        U$ US:X  a  [        XqU5        U$ [        SU S35      eU$ )z9Check inputs and compute the corresponding factor bounds.cpur   r   r   zIf z2 is a single number, it must be non negative. Got r   z<`center` and `bounds` cannot be None for single number. Got z,    g      g      ?   r   singularz	methods 'z' not implemented.)torchr   get_default_dtyper   Tensortensordim
ValueErrorrepeatr   clampto	as_tensor_joint_range_check_singular_range_checkNotImplementedError)r   r   r   r   r   r   r   factor_bounds           r   _range_boundr1      sr    ~e$}'')fu||--f5A zz|qA:s4&(Z[aZbbcdee>V^[\b[cceflemmnopp }}Q'%,,c{6==`f`l`l*mmpvv#))&)VAY?BB&B^vEJG|6:  j !,f=  &	%8J&KLLr   ranged_factorc                 f   Uc  [        S5      [        S5      4nU R                  5       S:X  aq  [        U 5      S:X  ab  US   U S   ::  a  US   U S   :  d  [        U SU SU  S	35      eUS   U S   s=::  a  U S   s=::  a	  US   ::  d  O  [        U S
U SU  35      eg[	        U SU SU  S	35      e)zHCheck if bounds[0] <= ranged_factor[0] <= ranged_factor[1] <= bounds[1].N-infr   r!   r    r     out of bounds. Expected inside , got r   z[0] should be smaller than z[1] got z= should be a torch.Tensor with length 2 whose values between z. Got )floatr'   lenr(   	TypeError)r2   r   r   s      r   r-   r-   I   s    ~-u.aC$6!$;ayM!,,F1IqAQ4Qv%EfXVTaSbbcdeeayM!,Ma0@MF1IMv%@h}o^__ N fQRXQYY_`m_nnop
 	
r   	skip_nonemodec           	      b   US:X  a  SnOUS:X  a  SnO[        SU 35      eU(       a  U c  gUc  [        S5      [        S5      4nU R                  5       S	:X  aB  [        U 5      U:X  a3  U  H,  nUS
   Us=::  a  US	   ::  a  M  O  [        U SU SU  S35      e   g[	        U SU SU SU  35      e)zcCheck if bounds[0] <= ranged_factor[0] <= bounds[1] and bounds[0] <= ranged_factor[1] <= bounds[1].2dr    3d   z%'mode' shall be either 2d or 3d. Got Nr4   r   r!   r   r5   r6   r   z1 should be a float number or a tuple with length z whose values between z.Got )r(   r7   r'   r8   r9   )r2   r   r   r:   r;   dim_sizefs          r   r.   r.   Y   s     t|	@GHH]*~-u.aC$6($BA!9.VAY. D6)I&QWXeWffg!hii  fEhZOeflem n /#
 	
r   input_range.target_sizec           	      H   [         R                  " US/5      n[        U [         R                  5      (       Ga  [	        U R
                  5      S:X  d(  [	        U R
                  5      S:X  ap  [	        U 5      S:X  aa  U S:  a  [        SU  35      eU R                  S5      R                  X#S9[         R                  " SS/X#S9-  nUR                  US   S5      nU$ [	        U R
                  5      S:X  a3  [	        U 5      S:X  a$  U R                  US   S5      R                  X#S9nU$ [	        U R
                  5      S:X  aZ  [	        U 5      US   :X  aH  U R                  S5      R                  SS5      R                  X#S9[         R                  " SS/X#S9-  nU$ U R
                  U:X  a  U R                  X#S9nU$ [        S[        U5       SU  35      e[        U [        [        45      (       aA  U S:  a  [        SU  35      e[         R                  " U * U /X#S9R                  US   S5      nU$ [        U [        [        45      (       au  [	        U 5      S:X  af  [        U S   [        [        45      (       aH  [        U S   [        [        45      (       a*  [         R                  " XUS9R                  US   S5      nU$ [        U [        [        45      (       aS  [	        U 5      US   :X  aA  [        S	 U  5       5      (       a*  [         R                  " U  Vs/ s H  of* U4PM	     snX#S9nU$ [        U [        [        45      (       a@  [	        U 5      US   :X  a.  [        S
 U  5       5      (       a  [         R                  " XUS9nU$ [!        SU SU SU  S35      es  snf )aH  Given target_size, it will generate the corresponding (target_size, 2) range torch.Tensor.

This is for element-wise params.

Example:
>>> degree = torch.tensor([0.2, 0.3])
>>> _tuple_range_reader(degree, 3)  # read degree for yaw, pitch and roll.
tensor([[0.2000, 0.3000],
        [0.2000, 0.3000],
        [0.2000, 0.3000]])

r    r   r!   zCIf input_range is only one number it must be a positive number. Gotr   zDegrees must be a zA torch.tensor for the degree range for independent operation.Got c              3   N   #    U  H  n[        U[        [        45      v   M     g 7fN)r   r7   r   .0xs     r   	<genexpr>&_tuple_range_reader.<locals>.<genexpr>   s     A[
1ucl++[   #%c              3   N   #    U  H  n[        U[        [        45      v   M     g 7frG   )r   tuplelistrH   s     r   rK   rL      s     Bk
1udm,,krM   zcIf not pass a torch.tensor, it must be float, (float, float) for isotropic operation or a tuple of z floats or z/ (float, float) for independent operation. Got r   )r#   Sizer   r%   r8   shaper(   r)   r+   r&   	unsqueezerP   r7   r   rO   allr9   )rB   rC   r   r   target_shapeinput_range_tmpss          r   _tuple_range_readerrX   w   s   $ ::{A./L+u||,,!!"a'S1B1B-Cq-HSQ\M]abMbQ #fgrfs!tuu)00366f6RUZUaUaQV O .44\!_aHOj g ""#q(S-=-B)00a!DGGvGcOd a ""#q(S-=a-P)33A6==aCFFfFbejeqeqQf O^ W ,.)nnFnHOT O $T,%7$8 9"m%  
K%	.	.?bcnbopqq,,k'B6_ffOQ
@ 7 	;..!{1~s|44{1~s|44,,{OVVWcdeWfhij, ' 	;..Q/A[AAA,,'EAQ'Efb  	;..Q/BkBBB,,{O  qm;{m3bcnboopr
 	
 (Fs   NrG   )NFr=   )NN)typingr   r   r   r   r   r#   r   r   r   r7   r%   strr   r   r1   r-   r.   rX    r   r   <module>r\      s  $ 5 4 XC X XRV X "-.e,="%)#''%,,uUE\':DKGH'
' UO' U5%<()	'
 C=' U\\"' EKK ' \\'T
ell 
# 
xPUV[]bVbPcGd 
pt 
& -1
<<


 U5%<()
 	

 
 

B &*#'	Pu||UE#s(O;<PP U\\"P EKK 	P
 \\Pr   