+
    –°³jÔ
  ã                  óN   € ^ RI Ht ^ RIt^ RIHt R.t]! R4      R R l4       tR# )é    )ÚannotationsN)Ú
exposed_inÚ	rearrangez
torch.funcc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   Útensorz<torch.Tensor | list[torch.Tensor] | tuple[torch.Tensor, ...]ÚpatternÚstrÚaxes_lengthsÚintÚreturnztorch.Tensor© )Úformats   "ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_functorch/einops.pyÚ__annotate__r      s0   € ÷ ?&ñ ?&ØHð?&àð?&ð ð?&ð ñ	?&ó    c                ó²   € \        V \        P                  4      '       g   \        P                  ! V 4      p ^ RIHp V! V P                  V3/ VB pV! V 4      # )a[  A native implementation of `einops.rearrange`, a reader-friendly smart element reordering for multidimensional
tensors. This operation includes functionality of transpose (axes permutation), reshape (view), squeeze, unsqueeze,
stack, concatenate and other operations.

See: https://einops.rocks/api/rearrange/

Args:
    tensor (Tensor or sequence of Tensor): the tensor(s) to rearrange
    pattern (str): the rearrangement pattern
    axes_lengths (int): any additional length specifications for dimensions

Returns:
    Tensor: the rearranged tensor

Examples:
    >>> from torch.func import rearrange
    >>> # suppose we have a set of 32 images in "h w c" format (height-width-channel)
    >>> images = torch.randn((32, 30, 40, 3))

    >>> # stack along first (batch) axis, output is a single array
    >>> rearrange(images, "b h w c -> b h w c").shape
    torch.Size([32, 30, 40, 3])

    >>> # concatenate images along height (vertical axis), 960 = 32 * 30
    >>> rearrange(images, "b h w c -> (b h) w c").shape
    torch.Size([960, 40, 3])

    >>> # concatenated images along horizontal axis, 1280 = 32 * 40
    >>> rearrange(images, "b h w c -> h (b w) c").shape
    torch.Size([30, 1280, 3])

    >>> # reordered axes to "b c h w" format for deep learning
    >>> rearrange(images, "b h w c -> b c h w").shape
    torch.Size([32, 3, 30, 40])

    >>> # flattened each image into a vector, 3600 = 30 * 40 * 3
    >>> rearrange(images, "b h w c -> b (c h w)").shape
    torch.Size([32, 3600])

    >>> # split each image into 4 smaller (top-left, top-right, bottom-left, bottom-right), 128 = 32 * 2 * 2
    >>> rearrange(images, "b (h1 h) (w1 w) c -> (b h1 w1) h w c", h1=2, w1=2).shape
    torch.Size([128, 15, 20, 3])

    >>> # space-to-depth operation
    >>> rearrange(images, "b (h h1) (w w1) c -> b h w (c h1 w1)", h1=2, w1=2).shape
    torch.Size([32, 15, 20, 12])
)Ú_create_rearrange_callable)Ú
isinstanceÚtorchÚTensorÚstackÚfunctorch.einops.rearranger   Úndim)r   r	   r   r   Úrearrange_callables   &&,  r   r   r   
   sS   € ôj �fœeŸl™l×+Ò+Ü—’˜VÓ$ˆõ Fá3Ø�‰�WñØ ,ñÐñ ˜fÓ%Ð%r   )Ú
__future__r   r   Útorch._functorch.utilsr   Ú__all__r   r   r   r   Ú<module>r      s0   ðÝ "ã Ý -ð ˆ-€ñ ˆLÓô?&ó ò?&r   