
    ^(j	                     &    d dl Z  G d d      Zd Zy)    Nc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zed        Zed        Zed        Zed        Zed        Zy)NestedTensorc                 2    t        |      | _        d| _        y )NT)listtensors	is_nested)selfr   s     =/Users/danicosta/Desktop/Flux2/ComfyUI/comfy/nested_tensor.py__init__zNestedTensor.__init__   s    G}    c                 ,    t        | j                        S N)r   r   r	   s    r
   _copyzNestedTensor._copy   s    DLL))r   c                 0   | j                         }t        |t              rBt        |j                        D ](  \  }} |||j                  |         |j                  |<   * |S t        |j                        D ]  \  }} |||      |j                  |<    |S r   )r   
isinstancer   	enumerater   )r	   other	operationoits         r
   apply_operationzNestedTensor.apply_operation   s    JJLe\*!!)),1(EMM!,<=		! -
  "!)),1(E2		! -r   c                 (    | j                  |d       S )Nc                     | |z   S r    xys     r
   <lambda>z&NestedTensor.__add__.<locals>.<lambda>       AEr   r   r	   bs     r
   __add__zNestedTensor.__add__       ##A'9::r   c                 (    | j                  |d       S )Nc                     | |z
  S r   r   r   s     r
   r    z&NestedTensor.__sub__.<locals>.<lambda>   r!   r   r"   r#   s     r
   __sub__zNestedTensor.__sub__   r&   r   c                 (    | j                  |d       S )Nc                     | |z  S r   r   r   s     r
   r    z&NestedTensor.__mul__.<locals>.<lambda>   r!   r   r"   r#   s     r
   __mul__zNestedTensor.__mul__   r&   r   c                 (    | j                  |d       S )Nc                     | |z  S r   r   r   s     r
   r    z*NestedTensor.__truediv__.<locals>.<lambda>"   r!   r   r"   r#   s     r
   __truediv__zNestedTensor.__truediv__!   r&   r   c                 2    | j                  d fd      S )Nc                 (     | j                   i S r   )__getitem__r   r   argskwargss     r
   r    z*NestedTensor.__getitem__.<locals>.<lambda>%   s    }q}}d7Uf7Ur   r"   r	   r4   r5   s    ``r
   r2   zNestedTensor.__getitem__$   s    ##D*UVVr   c                     | j                   S r   )r   r   s    r
   unbindzNestedTensor.unbind'   s    ||r   c                     | j                         }t        |j                        D ]$  \  }} |j                  |i ||j                  |<   & |S r   )r   r   r   to)r	   r4   r5   r   r   r   s         r
   r:   zNestedTensor.to*   sF    JJLaii(DAq14400AIIaL )r   c                 @     | j                   d   j                  |i |S Nr   )r   new_onesr6   s      r
   r=   zNestedTensor.new_ones0   s"    't||A''888r   c                 B    | j                  t        j                        S )N)dtype)r:   torchfloatr   s    r
   rA   zNestedTensor.float3   s    wwU[[w))r   c                 2    | j                  d fd      S )Nc                 (     | j                   i S r   )chunkr3   s     r
   r    z$NestedTensor.chunk.<locals>.<lambda>7   s    wqww7O7Or   r"   r6   s    ``r
   rD   zNestedTensor.chunk6   s    ##D*OPPr   c                 <    | j                   d   j                         S r<   )r   sizer   s    r
   rF   zNestedTensor.size9   s    ||A##%%r   c                 4    | j                   d   j                  S r<   )r   shaper   s    r
   rH   zNestedTensor.shape<       ||A$$$r   c                 X    d}| j                   D ]  }t        |j                  |      } |S r<   )r   maxndim)r	   dimsr   s      r
   rL   zNestedTensor.ndim@   s*    Aqvvt$D r   c                 4    | j                   d   j                  S r<   )r   devicer   s    r
   rO   zNestedTensor.deviceG       ||A%%%r   c                 4    | j                   d   j                  S r<   )r   r?   r   s    r
   r?   zNestedTensor.dtypeK   rI   r   c                 4    | j                   d   j                  S r<   )r   layoutr   s    r
   rS   zNestedTensor.layoutO   rP   r   N)__name__
__module____qualname__r   r   r   r%   r)   r,   r/   r2   r8   r:   r=   rA   rD   rF   propertyrH   rL   rO   r?   rS   r   r   r
   r   r      s    *;;;;W9*Q& % %   & & % % & &r   r   c                 0   g }t        t        | d   j                              D ]f  }g }t        t        |             D ]#  }|j                  | |   j                  |          % |j                  t	        j
                  |g|i |       h t        |      S r<   )rangelenr   appendr@   catr   )r   r4   r5   cated_tensorsr   tensjs          r
   
cat_nestedr`   T   s    M3wqz))*+s7|$AKK
**1-. %UYYt=d=f=>	 ,
 &&r   )r@   r   r`   r   r   r
   <module>ra      s    N& N&b'r   