ó
    ƒñ:iÿ"  ã                   óP   • S r SSKJrJrJrJrJrJr  SSKJrJ	r	J
r
   " S S5      rg)z>Public facing layer for slicer.
The little slicer that could.
é   )ÚAtomicSlicerÚAliasÚObjÚAliasLookupÚTrackedÚUnifiedDataHandler)Ú	reduced_oÚresolve_dimÚunify_slicec                   óŒ   ^ • \ rS rSrSrS r\S 5       r\S 5       rS r	U 4S jr
U 4S jrU 4S	 jrS
 rS rSS jrS rSrU =r$ )ÚSliceré
   z1Provides unified slicing to tensor-like objects. c                 óD   • U R                   R                  " U /UQ70 UD6  g)a{  Wraps objects in args and provides unified numpy-like slicing.

Currently supports (with arbitrary nesting):

- lists and tuples
- dictionaries
- numpy arrays
- pandas dataframes and series
- pytorch tensors

Args:
    *args: Unnamed tensor-like objects.
    **kwargs: Named tensor-like objects.

Examples:

    Basic anonymous slicing:

    >>> from slicer import Slicer as S
    >>> li = [[1, 2, 3], [4, 5, 6]]
    >>> S(li)[:, 0:2].o
    [[1, 2], [4, 5]]
    >>> di = {'x': [1, 2, 3], 'y': [4, 5, 6]}
    >>> S(di)[:, 0:2].o
    {'x': [1, 2], 'y': [4, 5]}

    Basic named slicing:

    >>> import pandas as pd
    >>> import numpy as np
    >>> df = pd.DataFrame({'A': [1, 3], 'B': [2, 4]})
    >>> ar = np.array([[5, 6], [7, 8]])
    >>> sliced = S(first=df, second=ar)[0, :]
    >>> sliced.first
    A    1
    B    2
    Name: 0, dtype: int64
    >>> sliced.second
    array([5, 6])

N)Ú	__class__Ú_init_slicer)ÚselfÚargsÚkwargss      ÚP/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/slicer/slicer.pyÚ__init__ÚSlicer.__init__   s!   € ðT 	�‰×#Ò# DÐ:¨4Ò:°6Ó:ó    c                 óT   • U R                  U 5      nU R                  " U/UQ70 UD6  U$ )zEAlternative to SUPER SLICE
Args:
    *args:
    **kwargs:

Returns:

)Ú__new__r   )Úclsr   r   Úslicer_instances       r   Úfrom_slicerÚSlicer.from_slicer9   s0   € ð Ÿ+™+ cÓ*ˆØ×Ò˜Ð:¨4Ò:°6Ò:ØÐr   c                 ó4  • SUl         / Ul        0 Ul        0 Ul        S Ul        UR                  SU5        UR                  5        H  u  pEUR                  XE5        M     [        UR                  5      n[        UR                  5      n[        UR                  5      nUS:H  US:H  -  (       aj  US:X  ac  S n	UR                  5        H  u  p«Un	M	     [        R                  " U	R                  5      nU H  nUR                  UR                  U5        M!     g g g )Né    Úor   )Ú_max_dimÚ_anonÚ_objectsÚ_aliasesÚ_alias_lookupÚ__setattr__ÚitemsÚlenÚ_iter_trackedr   Údefault_aliasr!   Ú_name)r   r   r   r   ÚkeyÚvalueÚobjects_lenÚanon_lenÚaliases_lenÚobjÚ_ÚtÚgenerated_aliasesÚgenerated_aliass                 r   r   ÚSlicer._init_slicerG   s  € ð $%ˆÔ ð !#ˆÔØ#%ˆÔ Ø#%ˆÔ Ø(,ˆÔ%ð 	×#Ñ# C¨Ô.ð !Ÿ,™,ž.‰JˆCØ×'Ñ'¨Ö3ñ )ô ˜/×2Ñ2Ó3ˆÜ�×,Ñ,Ó-ˆÜ˜/×2Ñ2Ó3ˆØ˜AÑ (¨a¡-×0°kÀQÓ6FØˆCØ'×5Ñ5Ö7‘�Ø’ñ 8ô !3× @Ò @ÀÇÁÓ GÐÛ#4�Ø×+Ñ+¨O×,AÑ,AÀ?ÖSò $5ð 7GÐ0r   c                 óÊ  • [        XR                  U R                  5      n/ n0 nU R                  SS9 H‘  u  pV[	        UR
                  5      S:X  a  UnOS[        USS9nX†R
                     n	Xi   n
[        X&R
                  5      nUR                  X«5      nUR                  Ul	        US:X  a  UR                  U5        M�  XtU'   M“     U R                  R                  " U0 UD6$ )NT)Úinclude_aliasesr    r   )Úmax_dimr!   )r   r"   r&   r*   r)   Údimr   r
   r   r,   Úappendr   )r   ÚitemÚ	index_tupÚnew_argsÚ
new_kwargsÚnameÚtrackedÚnew_trackedÚindex_slicerÚslicer_indexÚsliced_oÚ
sliced_dims               r   Ú__getitem__ÚSlicer.__getitem__f   sÔ   € Ü §m¡m°T×5GÑ5GÓHˆ	ØˆØˆ
Ø!×/Ñ/ÀÐ/ÓE‰MˆDÜ�7—;‘;Ó 1Ó$Ø%‘ä+¨I¸qÑA�Ø+¯K©KÑ8�Ø"Ñ0�Ü(¨·K±KÓ@�
à%×/Ñ/°ÓE�Ø$+§M¡M�Ô!à�s‹{Ø—‘ Ö,à#.˜4Ó ñ Fð" �~‰~×)Ò)¨8ÐB°zÑBÐBr   c                 ó>  >• UR                  S5      (       a  [        [        U ]  U5      $ US:X  a  [	        U R
                  5      $ U R                  R                  US5      nUc  U R                  R                  US5      nUc  [        SU S35      eUR                  $ )z…Override default getattr to return tracked attribute.

Args:
    item: Name of tracked attribute.
Returns:
    Corresponding object.
r3   r!   NzAttribute 'z' does not exist.)Ú
startswithÚsuperr   Ú__getattr__r	   r#   r$   Úgetr%   ÚAttributeErrorr!   )r   r=   rB   r   s      €r   rM   ÚSlicer.__getattr__}   s‘   ø€ ð �?‰?˜3×ÑÜœ Ñ2°4Ó8Ð8à�3‹;Ü˜TŸZ™ZÓ(Ð(à—m‘m×'Ñ'¨¨dÓ3ˆGØ‰ØŸ-™-×+Ñ+¨D°$Ó7�à‰Ü$ {°4°&Ð8IÐ%JÓKÐKà—9‘9Ðr   c                 óú  >• UR                  S5      (       a  [        [        U ]  X5      $ U R                  R                  US5      nU R                  R                  US5      n[        XS5      bP  US:w  aJ  [        U[        5      (       d5  U(       a  [        X#R                  S9nOU(       a  [        X$R                  S9n[        U[        5      (       aŽ  Xl        X R                  U'   U(       a  U R                  U	 U R                  c  [        U R                  5      U l        gU(       a  U R                  R!                  U5        U R                  R#                  U5        gUS:X  a{  U Vs/ s H%  n[        U[        5      (       d  [        U5      OUPM'     nnX`l        U H  nU R'                  U5        M     [)        U R$                  5      n[        [        U ]  X5        gU(       a(  U R                  R!                  U5        U R                  U	 [        U[        5      (       d  [        U5      OUnXl        X R                  U'   U R'                  U5        [        [        U ]  XR*                  5        gs  snf )z’Override default setattr to sync tracking of slicer.

Args:
    key: Name of tracked attribute.
    value: Either an Obj, Alias or Python Object.
r3   Nr!   )r;   )rK   rL   r   r'   r$   rN   r%   ÚgetattrÚ
isinstancer   r   r;   r   r,   r&   r   ÚdeleteÚupdater#   Ú_update_max_dimr	   r!   )
r   r-   r.   Úold_objÚ	old_aliasÚxrB   r4   Úosr   s
            €r   r'   ÚSlicer.__setattr__”   sí  ø€ ð �>‰>˜#×ÑÜœ Ñ2°3Ó>Ð>ð —-‘-×#Ñ# C¨Ó.ˆØ—M‘M×%Ñ% c¨4Ó0ˆ	ô �4˜dÓ#Ñ/°C¸3³JÜ˜e¤W×-Ñ-ÞÜ ¯;©;Ñ7‘EÞÜ! %¯]©]Ñ;�Eä�eœU×#Ñ#ØŒKØ!&�M‰M˜#ÑæØ—M‘M #Ð&ð ×!Ñ!Ñ)Ü%0°·±Ó%?�Õ"æØ×&Ñ&×-Ñ-¨iÔ8Ø×"Ñ"×)Ñ)¨%Õ0à�c‹zÙLQÓRÊEÀq¬°A´s×);Ñ);œ3˜qœ6ÀÒBÉE�ÐRØ$”
Û �AØ×(Ñ(¨Ö+ñ !ô ˜tŸz™zÓ*�Ü”f˜dÑ/°Õ8æØ×&Ñ&×-Ñ-¨iÔ8ØŸ™ cÐ*ä*4°U¼C×*@Ñ*@œ˜Eœ
Àe�Ø!”Ø%*—‘˜cÑ"Ø×$Ñ$ UÔ+Ü”f˜dÑ/°·W±WÕ=ùò! Ss   Å-,I8c                 ó‚  >• UR                  S5      (       a  [        [        U ]  U5      $ U R                  R                  US5        U R                  R                  US5        US:X  a  U R                  R                  5         U R                  5         [        U R                  5      U l        [        [        U ]  U5        g)zlOverride default delattr to remove tracked attribute.

Args:
    item: Name of tracked attribute to delete.
r3   Nr!   )rK   rL   r   Ú__delattr__r$   Úpopr%   r#   ÚclearÚ_recompute_max_dimr   r&   )r   r=   r   s     €r   r]   ÚSlicer.__delattr__Ì   s™   ø€ ð �?‰?˜3×ÑÜœ Ñ2°4Ó8Ð8ð 	�‰×Ñ˜$ Ô%Ø�‰×Ñ˜$ Ô%Ø�3‹;Ø�J‰J×ÑÔð 	×ÑÔ!ô )¨¯©Ó7ˆÔô 	Œf�dÑ'¨Õ-r   c                 óÒ   • U R                   n0 nUR                  5        H!  u  p4UR                  S5      (       a  M  XBU'   M#     U R                  R                   S[        U5       S3$ )zNOverride default repr for human readability.

Returns:
    String to display.
r3   Ú(Ú))Ú__dict__r(   rK   r   Ú__name__Ústr)r   ÚorigÚdir-   r.   s        r   Ú__repr__ÚSlicer.__repr__å   s^   € ð �}‰}ˆØˆØŸ*™*ž,‰JˆCØ—>‘> #×&Ó&Ø�3“ñ 'ð —.‘.×)Ñ)Ð*¨!¬C°«G¨9°AÐ6Ð6r   c                 ód   • [        U R                  [        UR                  SS9S-   5      U l        g )Néÿÿÿÿ©Údefaultr   )Úmaxr"   r;   )r   rB   s     r   rV   ÚSlicer._update_max_dimò   s$   € Ü˜DŸM™M¬3¨w¯{©{ÀBÑ+GÈ!Ñ+KÓLˆ�r   c              #   óî   #   • U R                    H	  nSU4v •  M     U R                  R                  5        H
  u  p2X24v •  M     U(       a)  U R                  R                  5        H
  u  p2X24v •  M     g g 7f)Nr!   )r#   r$   r(   r%   )r   r9   rB   rA   s       r   r*   ÚSlicer._iter_trackedõ   sg   é € Ø—z”zˆGØ�w�,Ôñ "à!Ÿ]™]×0Ñ0Ö2‰MˆDØ�-Ôñ 3æØ!%§¡×!4Ñ!4Ö!6‘�Ø�mÔ#ò "7ð ùs   ‚A3A5c                 óž   • [        U R                  5        VVs/ s H  u  p[        UR                  SS9S-   PM     snnSS9U l        g s  snnf )Nrm   rn   r   r    )rp   r*   r;   r"   )r   r3   r!   s      r   r`   ÚSlicer._recompute_max_dimþ   sC   € ÜØ48×4FÑ4FÔ4HÔIÒ4H©D¨AŒS�—‘ Ñ# aÔ'Ñ4HÒIÐSTñ
ˆ�ùÛIs   ™#A	
)r&   r#   r"   )F)rf   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úclassmethodr   r   rH   rM   r'   r]   rj   rV   r*   r`   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   
   sf   ø† Ù<ò*;ðX ñó ðð ñTó ðTò<Cõ.õ.6>õp.ò27òMô$÷
ð 
r   r   N)ry   Úslicer_internalr   r   r   r   r   r   r	   r
   r   r   © r   r   Ú<module>r      s%   ðñ÷
 `× _ß @Ñ @÷w
ò w
r   