
    3j                         S SK r S SKJr  S SKJrJrJrJrJr  S SK	J
s  Jr  SSK
Jr  \" SSS9r " S	 S
\R                  \   5      r " S S5      rg)    N)Path)AnyCallableOptionalTypeVarUnion   )_log_api_usage_onceT_coT)	covariantc                       \ rS rSrSrSr    SS\\\4   S\	\
   S\	\
   S\	\
   S	S4
S
 jjrS\S	\4S jrS	\4S jrS	\4S jrS\
S\S	\\   4S jrS	\4S jrSrg)VisionDataset   a  
Base Class For making datasets which are compatible with torchvision.
It is necessary to override the ``__getitem__`` and ``__len__`` method.

Args:
    root (string, optional): Root directory of dataset. Only used for `__repr__`.
    transforms (callable, optional): A function/transforms that takes in
        an image and a label and returns the transformed versions of both.
    transform (callable, optional): A function/transform that takes in a PIL image
        and returns a transformed version. E.g, ``transforms.RandomCrop``
    target_transform (callable, optional): A function/transform that takes in the
        target and transforms it.

.. note::

    :attr:`transforms` and the combination of :attr:`transform` and :attr:`target_transform` are mutually exclusive.
   Nroot
transforms	transformtarget_transformreturnc                 .   [        U 5        [        U[        5      (       a  [        R                  R                  U5      nXl        US LnUS L=(       d    US LnU(       a  U(       a  [        S5      eX0l        X@l	        U(       a  [        X45      nX l        g )NzGOnly transforms or transform/target_transform can be passed as argument)r
   
isinstancestrospath
expanduserr   
ValueErrorr   r   StandardTransformr   )selfr   r   r   r   has_transformshas_separate_transforms          U/home/wildlama/miniconda3/lib/python3.13/site-packages/torchvision/datasets/vision.py__init__VisionDataset.__init__!   s     	D!dC  77%%d+D	#4/!*$!6!V:JRV:V4fgg # 0!*9GJ$    indexc                     [         e)z~
Args:
    index (int): Index

Returns:
    (Any): Sample and meta data, optionally transformed by the respective transforms.
NotImplementedError)r   r%   s     r!   __getitem__VisionDataset.__getitem__:   s
     "!r$   c                     [         eNr'   r   s    r!   __len__VisionDataset.__len__D   s    !!r$   c                    SU R                   R                  -   nSU R                  5        3/nU R                  b  UR	                  SU R                   35        X R                  5       R                  5       -  n[        U S5      (       a&  U R                  b  U[        U R                  5      /-  nU/U Vs/ s H  nSU R                  -  U-   PM     sn-   nSR                  U5      $ s  snf )NzDataset zNumber of datapoints: zRoot location: r    
)	__class____name__r.   r   append
extra_repr
splitlineshasattrr   repr_repr_indentjoin)r   headbodylineliness        r!   __repr__VisionDataset.__repr__G   s    DNN333((89:99 KK/$))56!,,..4&&4??+FT$//*++DTJTT# 1 11D8TJJyy Ks   6C(r<   c           
          UR                  5       R                  5       nU US    3/USS   Vs/ s H!  nSR                  S[        U5      -  U5      PM#     sn-   $ s  snf Nr      z{}{}r1   r@   r7   formatlenr   r   r<   r?   r>   s        r!   _format_transform_repr$VisionDataset._format_transform_reprR   f    ""$//1&q
#$Y^_`_aYb'cYbQUcCIot(LYb'ccc'c   (Ac                     g)N  r-   s    r!   r6   VisionDataset.extra_reprV   s    r$   )r   r   r   r   )NNNN)r4   
__module____qualname____firstlineno____doc__r:   r   r   r   r   r   r"   intr   r)   r.   r@   listrI   r6   __static_attributes__rO   r$   r!   r   r      s    $ L "&)-(,/3%CI% X&% H%	%
 #8,% 
%2" " "" "	 # 	 d d dS	 dC r$   r   c                       \ rS rSrSS\\   S\\   SS4S jjrS\S\S\\\4   4S	 jr	S\S
\
S\\
   4S jrS\
4S jrSrg)r   Z   Nr   r   r   c                     Xl         X l        g r,   r   r   )r   r   r   s      r!   r"   StandardTransform.__init__[   s    " 0r$   inputtargetc                     U R                   b  U R                  U5      nU R                  b  U R                  U5      nX4$ r,   r[   )r   r]   r^   s      r!   __call__StandardTransform.__call___   s>    >>%NN5)E  ,**62F}r$   r<   c           
          UR                  5       R                  5       nU US    3/USS   Vs/ s H!  nSR                  S[        U5      -  U5      PM#     sn-   $ s  snf rC   rE   rH   s        r!   rI   (StandardTransform._format_transform_reprf   rK   rL   c                     U R                   R                  /nU R                  b  XR                  U R                  S5      -  nU R                  b  XR                  U R                  S5      -  nSR                  U5      $ )NzTransform: zTarget transform: r2   )r3   r4   r   rI   r   r;   )r   r=   s     r!   r@   StandardTransform.__repr__j   sm    ''(>>%//NND  ,//0E0EG[\\Dyyr$   )r   r   )NN)r4   rQ   rR   rS   r   r   r"   r   tupler`   r   rV   rI   r@   rW   rO   r$   r!   r   r   Z   sx    1(8"4 1xX`Oa 1mq 1c 3 5c? d d dS	 d# r$   r   )r   pathlibr   typingr   r   r   r   r   torch.utils.datautilsdatar
   r   Datasetr   r   rO   r$   r!   <module>rm      sH    	  : :   'v&KDLL& K\ r$   