
    3jn                       % S r SSKJr  SSKrSSKJrJrJrJrJ	r	  SSK
r
SSK
JrJrJr  SSKJrJrJrJrJrJr  / SQrS S	 jr\" 5       qS\S
'   S S jrS!S jrS!S jrS"S#S jjrS"S$S jjrS%S jr\" S\S9r S"S&S jjr!S"S'S jjr"S(S)S jjr#S(S*S jjr$S"S+S jjr%S(S*S jjr&S"S,S jjr'S"S,S jjr(S"S,S jjr)S-S.S jjr*S(S/S jjr+S(S0S jjr,          S1S jr-g)2z8The testing package contains testing-specific utilities.    )annotationsN)AnyOptionalSequenceTypeVarcast)float16float32float64)	BaseErrorDeviceError
ImageError
ShapeErrorTypeCheckErrorValueCheckError)KORNIA_CHECKKORNIA_CHECK_DM_DESCKORNIA_CHECK_IS_COLORKORNIA_CHECK_IS_GRAYKORNIA_CHECK_IS_IMAGEKORNIA_CHECK_IS_LIST_OF_TENSORKORNIA_CHECK_IS_TENSORKORNIA_CHECK_LAFKORNIA_CHECK_SAME_DEVICEKORNIA_CHECK_SAME_DEVICESKORNIA_CHECK_SHAPEKORNIA_CHECK_TYPEKORNIA_UNWRAPr   r   r   r   r   r   are_checks_enableddisable_checksenable_checksboolc                 ^    [         R                  " SS5      n U b  U R                  5       S;   $ g)a$  Determine if checks should be enabled.

Returns:
    True if checks should be enabled, False otherwise.

Checks are enabled by default in debug mode (normal Python execution).
Checks are disabled when:
- Running with `python -O` (optimized mode)
- Environment variable KORNIA_CHECKS=0 is set
KORNIA_CHECKSN)1trueyesonT)osgetenvlower)env_vars    K/home/wildlama/miniconda3/lib/python3.13/site-packages/kornia/core/check.py_should_enable_checksr.   ?   s/     ii.G}}"<<<    _KORNIA_CHECKS_ENABLEDc                     [         $ )zCheck if validation is currently enabled.

Returns:
    True if checks are enabled, False otherwise.

Example:
    >>> are_checks_enabled()
    True
r0    r/   r-   r   r   V   s
     "!r/   c                     Sq g)aC  Disable all Kornia validation checks for production.

Note:
    This function has no effect if checks were disabled at import time
    (via `python -O` or KORNIA_CHECKS=0). The module-level flag is
    evaluated once at import time for performance.

Example:
    >>> disable_checks()
    >>> are_checks_enabled()
    False
FNr2   r3   r/   r-   r    r    c   s
     #r/   c                     Sq g)zmEnable all Kornia validation checks.

Example:
    >>> enable_checks()
    >>> are_checks_enabled()
    True
TNr2   r3   r/   r-   r!   r!   t   s
     "r/   c                V   [         R                  R                  5       (       d  [        (       d  gSUS   :X  a"  USS nU R                  [        U5      * S-   S nO8SUS   :X  a!  USS nU R                  S[        U5      S-
   nOUnU R                  n[        U5      [        U5      :w  ac  U(       a[  [        U5      n[        U5      nSU SU S	3nUS
U S3-  n[        U R                  5      n	USU	 3-  nUb  USU 3-  n[        UU	US9eg[        [        U5      5       H  n
XJ   nUR                  5       (       d  M  [        U5      nXZ   U:w  d  M3  U(       aJ  SU
 SU SXZ    S	3nUS
U S3-  n[        U R                  5      n	USU	 3-  nUb  USU 3-  n[        UU	US9e  g   g)a0  Check whether a tensor has a specified shape.

The shape can be specified with a implicit or explicit list of strings.
The guard also check whether the variable is a type `Tensor`.

Args:
    x: the tensor to evaluate.
    shape: a list with strings with the expected shape.
    msg: optional custom message to append to error.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    ShapeError: if the input tensor does not have the expected shape and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> x = torch.rand(2, 3, 4, 4)
    >>> KORNIA_CHECK_SHAPE(x, ["B", "C", "H", "W"])  # implicit
    True

    >>> x = torch.rand(2, 3, 4, 4)
    >>> KORNIA_CHECK_SHAPE(x, ["2", "3", "H", "W"])  # explicit
    True

T*r      Nz#Shape dimension mismatch: expected z dimensions, got z.
  Expected shape: 
  Actual shape: 
  actual_shapeexpected_shapeFzShape mismatch at dimension z: expected , got )torchjitis_scriptingr0   shapelenlistr   range	isnumericint)xrE   msgraisesshape_to_checkx_shape_to_checkexpected_dimsactual_dims	error_msgx_shape_listidim_dims                r-   r   r      s   > 99!!##%%
eAhqr77CJ;?#45	b		s77#3SZ!^477
N 33/M./K=m_L]^i]jjmnI-eWB77I=L+L>::ItC5\)	)$  3'() #%~~$i#%:1#[VTdTgShhkl	1%;;	#AGG}/~>>	?4u-I !-#(  + *, r/   c                    [         R                  R                  5       (       d  [        (       d  gU (       d  U(       a  Uc  SnOUn[	        U5      egg)a  Check any arbitrary boolean condition.

Args:
    condition: the condition to evaluate.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    BaseError: if the condition is not met and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> x = torch.rand(2, 3, 3)
    >>> KORNIA_CHECK(x.shape[-2:] == (3, 3), "Invalid homography")
    True

TzValidation condition failedF)rB   rC   rD   r0   r   )	conditionrL   rM   rR   s       r-   r   r      sF    . 99!!##%%{9		I&&r/   c                    [        X5      $ )zUnwrap an optional contained value that may or not be present.

Args:
    maybe_obj: the object to unwrap.
    typ: expected type after unwrap.

)r   )	maybe_objtyps     r-   r   r     s     r/   T)boundc                   [         R                  R                  5       (       d  [        (       d  g[	        X5      (       d  U(       a  [         R                  R                  5       (       a  SnUb  USU 3-  n[        U5      e[	        U[        5      (       d  UR                  OSR                  S U 5       5      n[        [        U 5      5      nSU SU S3nUb  USU 3-  n[        U[        U 5      US	9eg
g)a  Check the type of an aribratry variable.

Args:
    x: any input variable.
    typ: the expected type of the variable.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    TypeCheckError: if the input variable does not match with the expected and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> KORNIA_CHECK_TYPE("foo", str, "Invalid string")
    True

TzType mismatch.r=   z | c              3  8   #    U  H  oR                   v   M     g 7fN)__name__).0ts     r-   	<genexpr>$KORNIA_CHECK_TYPE.<locals>.<genexpr>5  s     ^wsvno_i_isvs   zType mismatch: expected rA   .actual_typeexpected_typeF)rB   rC   rD   r0   
isinstancer   tuplera   joinstrtype)rK   r[   rL   rM   rR   expected_type_str	type_names          r-   r   r     s    . 99!!##%%ayy%%'',	?4u-I$Y// 9C38N8NCLLTYT^T^^wsv^wTw!QL	67H6IPY{Z[\	?4u-I$ $Q"% 
 r/   c                   [         R                  R                  5       (       d  [        (       d  g[	        U [         R
                  5      (       d  U(       a  [         R                  R                  5       (       a  SnUb  USU 3-  n[        U5      e[        [        U 5      5      nSU S3nUb  USU 3-  n[        U[        U 5      [         R
                  S9egg)a  Check the input variable is a Tensor.

Args:
    x: any input variable.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    TypeCheckError: if the input variable does not match with the expected and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> x = torch.rand(2, 3, 3)
    >>> KORNIA_CHECK_IS_TENSOR(x, "Invalid tensor")
    True

TzType mismatch: expected Tensor.r=   z$Type mismatch: expected Tensor, got rf   rg   F)	rB   rC   rD   r0   rj   Tensorr   rm   rn   )rK   rL   rM   rR   rp   s        r-   r   r   C  s    . 99!!##%%a&&yy%%''=	?4u-I$Y//  QL	B9+QO	?4u-I$ $Q"',, 
 r/   c                V   [         R                  R                  5       (       d  [        (       d  g[	        U [
        5      =(       a    [        S U  5       5      nU(       dJ  U(       aB  S[        U 5      R                   S3n[        U[        U 5      [
        [         R                     S9egg)aN  Check the input variable is a List of Tensors.

Args:
    x: Any sequence of objects
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    TypeCheckError: if the input variable does not match with the expected and raises is True.

Return:
    True if the input is a list of Tensors, otherwise return False.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> x = torch.rand(2, 3, 3)
    >>> KORNIA_CHECK_IS_LIST_OF_TENSOR(x, raises=False)
    False
    >>> KORNIA_CHECK_IS_LIST_OF_TENSOR([x])
    True

Tc              3  V   #    U  H  n[        U[        R                  5      v   M!     g 7fr`   )rj   rB   rr   )rb   ds     r-   rd   1KORNIA_CHECK_IS_LIST_OF_TENSOR.<locals>.<genexpr>  s      -USTajELL.I.ISTs   ')z*Type mismatch: expected list[Tensor], got rf   rg   F)rB   rC   rD   r0   rj   rG   allrn   ra   r   rr   )rK   rM   are_tensorsrR   s       r-   r   r   u  s    6 99!!##%%Q%U#-UST-U*UKDT!WEUEUDVVWXI  G"5<<0 
 r/   c                J   [         R                  R                  5       (       d  [        (       d  gU R                  UR                  :w  aZ  U(       aR  SnUSU R                   S3-  nUSUR                   3-  n[        UU R                  UR                  /U R                  S9egg)a  Check whether two tensor in the same device.

Args:
    x: first tensor to evaluate.
    y: second tensor to evaluate.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    DeviceError: if the two tensors are not in the same device and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> x1 = torch.rand(2, 3, 3)
    >>> x2 = torch.rand(1, 3, 1)
    >>> KORNIA_CHECK_SAME_DEVICE(x1, x2)
    True

Tz5Device mismatch: tensors must be on the same device.
z  First tensor device: r;   z  Second tensor device: actual_devicesexpected_deviceF)rB   rC   rD   r0   devicer   )rK   yrM   rR   s       r-   r   r     s    0 99!!##%%xx188PI2188*B??I3AHH:>>I !!((3 ! 
 r/   c                  ^  [         R                  R                  5       (       d  [        (       d  g[	        [        T [        5      =(       a    [        T 5      S:  SU5        [        U 4S jT  5       5      (       df  U(       a^  T  Vs/ s H  o3R                  PM     nnSnUST S   R                   S3-  nUS	U 3-  nUb  US
U 3-  n[        UUT S   R                  S9eggs  snf )a3  Check whether a list provided tensors live in the same device.

Args:
    tensors: a list of tensors.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    DeviceError: if all the tensors are not in the same device and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> x1 = torch.rand(2, 3, 3)
    >>> x2 = torch.rand(1, 3, 1)
    >>> KORNIA_CHECK_SAME_DEVICES([x1, x2], "Tensors not in the same device")
    True

Tr8   z)Expected a list with at least one elementc              3  \   >#    U  H!  nTS    R                   UR                   :H  v   M#     g7f)r   N)r}   )rb   rK   tensorss     r-   rd   ,KORNIA_CHECK_SAME_DEVICES.<locals>.<genexpr>  s$     >gwqz  AHH,gs   ),z9Device mismatch: all tensors must be on the same device.
z  Expected device: r   r;   z  Actual devices: r=   rz   F)rB   rC   rD   r0   r   rj   rG   rF   rw   r}   r   )r   rL   rM   rK   devicesrR   s   `     r-   r   r     s    0 99!!##%%GT*@s7|q/@Bmouv>g>>>)01AxxG1TI.wqz/@/@.ADDI-gY77ItC5\)	& '
 1 1 
  2s   C"c                6   [         R                  R                  5       (       d  [        (       d  gU R                  UR                  :w  aP  U(       aH  Sn[        U R                  5      n[        UR                  5      nUSU S3-  nUSU 3-  n[        UUUS9egg)a  Check whether two tensor have the same shape.

Args:
    x: first tensor to evaluate.
    y: second tensor to evaluate.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    ShapeError: if the two tensors have not the same shape and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> x1 = torch.rand(2, 3, 3)
    >>> x2 = torch.rand(2, 3, 3)
    >>> KORNIA_CHECK_SAME_SHAPE(x1, x2)
    True

Tz2Shape mismatch: tensors must have the same shape.
z  First tensor shape: r;   z  Second tensor shape: r>   F)rB   rC   rD   r0   rE   rG   r   )rK   r~   rM   rR   rS   y_shape_lists         r-   KORNIA_CHECK_SAME_SHAPEr     s    0 99!!##%%ww!''MI=L=L1,rBBI2<.AAI)+ 
 r/   c                   [         R                  R                  5       (       d  [        (       d  g[	        U R
                  5      S:  d  U R
                  S   S:w  a-  U(       a%  S[        U 5       S3nUb  USU 3-  n[        U5      egg)a  Check whether an image tensor is a color images.

Args:
    x: image tensor to evaluate.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    ImageError: if the input tensor does not have a shape :math:`(3,H,W)` and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> img = torch.rand(2, 3, 4, 4)
    >>> KORNIA_CHECK_IS_COLOR(img, "Image is not color")
    True

T   zNot a color tensor. Got: rf   r;   FrB   rC   rD   r0   rF   rE   rn   r   rK   rL   rM   rR   s       r-   r   r   %  sz    . 99!!##%%
177|a1772;!+3DG9A>Ir#Z'	Y''r/   c                F   [         R                  R                  5       (       d  [        (       d  g[	        U R
                  5      S:  d,  [	        U R
                  5      S:  a@  U R
                  S   S:w  a-  U(       a%  S[        U 5       S3nUb  USU 3-  n[        U5      eg	g)
a  Check whether an image tensor is grayscale.

Args:
    x: image tensor to evaluate.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    ImageError: if the tensor does not have a shape :math:`(1,H,W)` or :math:`(H,W)` and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> img = torch.rand(2, 1, 4, 4)
    >>> KORNIA_CHECK_IS_GRAY(img, "Image is not grayscale")
    True

T   r   r   r8   zNot a gray tensor. Got: rf   r;   Fr   r   s       r-   r   r   J  s    . 99!!##%%
177|aCLA-!''"+2B247)1=Ir#Z'	Y''r/   c                   [         R                  R                  5       (       d  [        (       d  g[	        U R
                  5      S:  d  U R
                  S   S;  a-  U(       a%  S[        U 5       S3nUb  USU 3-  n[        U5      egg)	a%  Check whether an image tensor is grayscale or color.

Args:
    x: image tensor to evaluate.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    ImageError: if the tensor does not have a shape :math:`(1,H,W)` or :math:`(3,H,W)` and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> img = torch.rand(2, 3, 4, 4)
    >>> KORNIA_CHECK_IS_COLOR_OR_GRAY(img, "Image is not color or grayscale")
    True

Tr   r   )r8   r   z!Not a color or gray tensor. Got: rf   r;   Fr   r   s       r-   KORNIA_CHECK_IS_COLOR_OR_GRAYr   o  sz    . 99!!##%%
177|a1772;f4;DG9AFIr#Z'	Y''r/   c                   [         R                  R                  5       (       d  [        (       d  gU(       d  [	        XU5      (       d  g[         R
                  " U 5      u  pEU R                  [         R                  [        [        [        4;   a  US:  US:  -  nOSU-  S-
  nUS:  XW:  -  nUR                  5       (       a  [        XXE5      $ g)a  Check whether an image tensor is ranged properly [0, 1] for float or [0, 2 ** bits] for int.

Args:
    x: image tensor to evaluate.
    msg: message to show in the exception.
    raises: bool indicating whether an exception should be raised upon failure.
    bits: the image bits. The default checks if given integer input image is an
        8-bit image (0-255) or not.

Raises:
    ImageError: if the tensor shape is invalid and raises is True.
    ValueCheckError: if the tensor value range is invalid and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> img = torch.rand(2, 3, 4, 4)
    >>> KORNIA_CHECK_IS_IMAGE(img, "It is not an image")
    True

TFr   r8   )rB   rC   rD   r0   r   aminmaxdtypebfloat16r	   r
   r   item_handle_invalid_range)rK   rL   rM   bitsaminamaxinvalidmax_int_values           r-   r   r     s    4 99!!##%% 7GGq!JDww5>>7GW==!8q)da!8 45||~~$S$==r/   c                t   [         R                  R                  5       (       d  [        (       d  gUR	                  S5      U R	                  S5      :X  a$  UR	                  S5      UR	                  S5      :X  d  U(       a  U R	                  S5      UR	                  S5      4nU R	                  S5      nUR	                  S5      nSnUSU SU SU S3-  n[        UR                  5      n[        U R                  5      n	[        UR                  5      n
US	U S
3-  nUSU	 S
3-  nUSU
 3-  n[        UUUS9egg)a  Check whether the provided descriptors match with a distance matrix.

Args:
    desc1: first descriptor tensor to evaluate.
    desc2: second descriptor tensor to evaluate.
    dm: distance matrix tensor to evaluate.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    ShapeError: if the descriptors shape do not match with the distance matrix and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> desc1 = torch.rand(4)
    >>> desc2 = torch.rand(8)
    >>> dm = torch.rand(4, 8)
    >>> KORNIA_CHECK_DM_DESC(desc1, desc2, dm)
    True

Tr   r8   z Distance matrix shape mismatch.
r:   z (from desc1.shape[0]=z, desc2.shape[0]=z)
r<   r;   z  desc1 shape: z  desc2 shape: r>   F)rB   rC   rD   r0   sizerG   rE   r   )desc1desc2dmrM   r@   
desc1_size
desc2_sizerR   dm_shape_listdesc1_shape_listdesc2_shape_lists              r-   r   r     s:   4 99!!##%%WWQZ5::a=(rwwqzUZZ]/J#jjmUZZ];NAJAJ;I$^$44J:,VghrgssvwI !NM#EKK0#EKK0+M?"==I?+;*<B??I?+;*<==I*- 
 r/   c                    [        U / SQUS9$ )a  Check whether a Local Affine Frame (laf) has a valid shape.

Args:
    laf: local affine frame tensor to evaluate.
    raises: bool indicating whether an exception should be raised upon failure.

Raises:
    ShapeError: if the input laf does not have a shape :math:`(B,N,2,3)` and raises is True.

Note:
    Checks can be disabled in Python mode using `disable_checks()` or the KORNIA_CHECKS
    environment variable. In TorchScript-compiled code, checks always run (TorchScript
    cannot access module-level globals, but the validation logic is fast). When running
    with `python -O`, Python's optimizer may eliminate some checks.

Example:
    >>> lafs = torch.rand(2, 10, 2, 3)
    >>> KORNIA_CHECK_LAF(lafs)
    True

)BN23)rM   )r   )lafrM   s     r-   r   r     s    , c#7GGr/   c                   [        U[        R                  5      (       a  UR                  5       OUn[        U[        R                  5      (       a  UR                  5       OUnSU SU S3nU b  USU  3-  nU(       a  [	        UXE4SS9eg)zHandle invalid range cases.z,Value range mismatch: expected [0, 1], got [z, z].r=   )g        g      ?)actual_valueexpected_rangeF)rj   rB   rr   r   r   )rL   rM   min_valmax_val
min_scalar
max_scalarerr_msgs          r-   r   r     s    
 $.gu||#D#D'J#-gu||#D#D'J<ZL:,VXYG
T#<$1%
 	

 r/   )returnr"   )r   None)NT)
rK   torch.TensorrE   z	list[str]rL   Optional[str]rM   r"   r   r"   )rX   r"   rL   r   rM   r"   r   r"   )rZ   r   r[   r   r   r   )
rK   r   r[   zT | tuple[T, ...]rL   r   rM   r"   r   r"   )rK   r   rL   r   rM   r"   r   r"   )T)rK   zOptional[Sequence[Any]]rM   r"   r   r"   )rK   r   r~   r   rM   r"   r   r"   )r   zlist[torch.Tensor]rL   r   rM   r"   r   r"   )rK   r   rL   r   rM   r"   r   r"   )NT   )
rK   r   rL   r   rM   r"   r   rJ   r   r"   )
r   r   r   r   r   r   rM   r"   r   r"   )r   r   rM   r"   r   r"   )
rL   r   rM   r"   r   float | torch.Tensorr   r   r   r"   ).__doc__
__future__r   r)   typingr   r   r   r   r   rB   r	   r
   r   kornia.core.exceptionsr   r   r   r   r   r   __all__r.   r0   __annotations__r   r    r!   r   r   r   rn   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r/   r-   <module>r      s   $ ? " 	 9 9  + + 4(  56  6
"#"	"Up#L	  Ct0f/d)X'T+\)X"J"J"J-`3lH2	 $/CNb	r/   