
    hb                         S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
JrJrJrJr  S SKJr  SSKJrJr  SSKJr   " S	 S
\5      r " S S\5      rg)    N)Iterable)Path)AnyCallablecastOptionalUnion)Image   )iterable_to_strverify_str_arg)VisionDatasetc            	       x   ^  \ rS rSr SS\S\\   S\\   SS4U 4S jjjrS\S\	\
\
4   4S	 jrS\4S
 jrSrU =r$ )	LSUNClass   Nroot	transformtarget_transformreturnc           	        > SS K n[        TU ]	  XUS9  UR                  USSSSSS9U l        U R                  R                  SS9 nUR                  5       S   U l        S S S 5        S	S
R                  S U 5       5      -   n[        R                  R                  U5      (       a&  [        R                  " [        US5      5      U l        g U R                  R                  SS9 nUR                  5       R!                  SSS9 Vs/ s H  owPM     snU l        S S S 5        [        R"                  " U R                  [        US5      5        g ! , (       d  f       N= fs  snf ! , (       d  f       NP= f)Nr   r   r   r   TF)max_readersreadonlylock	readaheadmeminitwriteentries_cache_ c              3   P   #    U  H  o[         R                  ;   d  M  Uv   M     g 7fN)stringascii_letters).0cs     Q/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/datasets/lsun.py	<genexpr>%LSUNClass.__init__.<locals>.<genexpr>   s     (VDqAUAU<UDs   &	&rb)keysvalueswb)lmdbsuper__init__openenvbeginstatlengthjoinospathisfilepickleloadr,   cursoriternextdump)	selfr   r   r   r/   txn
cache_filekey	__class__s	           r(   r1   LSUNClass.__init__   s    	EUV99Tq4eW\fk9lXX^^%^(C((*Y/DK )(VD(V!VV
77>>*%%DT$:;DIe,,/JJL,A,AtTY,A,Z[,ZSS,Z[	 -KK		4
D#9: )( \ -,s*   E%!E#EE#
EE##
E1indexc                    Su  p#U R                   nUR                  SS9 nUR                  U R                  U   5      nS S S 5        [        R
                  " 5       nUR                  W5        UR                  S5        [        R                  " U5      R                  S5      nU R                  b  U R                  U5      nU R                  b  U R                  U5      nX#4$ ! , (       d  f       N= f)NNNFr   r   RGB)r3   r4   getr,   ioBytesIOr   seekr
   r2   convertr   r   )r@   rF   imgtargetr3   rA   imgbufbufs           r(   __getitem__LSUNClass.__getitem__"   s     hhYYUY#sWWTYYu-.F $ jjl		&jjo%%e,>>%..%C  ,**62F{ $#s   C""
C0c                     U R                   $ r#   r6   r@   s    r(   __len__LSUNClass.__len__5       {{    )r3   r,   r6   rH   )__name__
__module____qualname____firstlineno__strr   r   r1   inttupler   rS   rX   __static_attributes____classcell__rD   s   @r(   r   r      sg    fj;;$,X$6;QYZbQc;	; ;$ sCx &  r[   r   c                      ^  \ rS rSrSr   SS\\\4   S\\\\   4   S\	\
   S\	\
   SS4
U 4S	 jjjrS\\\\   4   S\\   4S
 jrS\S\\\4   4S jrS\4S jrS\4S jrSrU =r$ )LSUN9   a  `LSUN <https://paperswithcode.com/dataset/lsun>`_ dataset.

You will need to install the ``lmdb`` package to use this dataset: run
``pip install lmdb``

Args:
    root (str or ``pathlib.Path``): Root directory for the database files.
    classes (string or list): One of {'train', 'val', 'test'} or a list of
        categories to load. e,g. ['bedroom_train', 'church_outdoor_train'].
    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.
Nr   classesr   r   r   c           
        > [         TU ]  XUS9  U R                  U5      U l        / U l        U R                   HF  nU R                  R                  [        [        R                  R                  X S35      US95        MH     / U l
        SnU R                   H,  nU[        U5      -  nU R                  R                  U5        M.     X`l        g )Nr   _lmdb)r   r   r   )r0   r1   _verify_classesri   dbsappendr   r8   r9   r7   indiceslenr6   )	r@   r   ri   r   r   r'   countdbrD   s	           r(   r1   LSUN.__init__I   s     	EUV++G4 AHHOOI277<<5k+JV_`a  ((BSWELL&  r[   c           
         / SQn/ SQn [        [        U5      n[        USU5        US:X  a  U/nU$ U Vs/ s H
  oDS-   U-   PM     nn U$ s  snf ! [         a    [	        U[
        5      (       d%  Sn[        UR                  [        U5      5      5      e[        U5      nSnU H  n[        XFR                  [        U5      5      S9  UR                  S5      nSR                  US S	 5      US	   pS
n
U
R                  US[        U5      5      n[        XUS9  U
R                  U	S[        U5      5      n[        XUS9  M      U$ f = f)N)
bedroombridgechurch_outdoor	classroomconference_roomdining_roomkitchenliving_room
restauranttower)trainvaltestri   r   _zDExpected type str or Iterable for argument classes, but got type {}.zDExpected type str for elements in argument classes, but got type {}.)
custom_msgz3Unknown value '{}' for {}. Valid values are {{{}}}.z
LSUN class)valid_valuesr   postfix)r   r`   r   
ValueError
isinstancer   formattypelistsplitr7   r   )r@   ri   
categories	dset_optsr'   msgmsg_fmtstr_typec_shortcategorydset_opt
msg_fmtstrs              r(   rl   LSUN._verify_classes`   sU   

 -		Q3(G7Iy9& "), ) 7AAjs7W,jA( ) B 	Qgx00\ DM!:;;7mGdOq-C-CDG-LM''#,%(XXgcrl%;WR[(R
 '',PZ@[\xSQ '')_Y=WXxCP  '	Qs(   &A A AA A C2EErF   c                     SnSnU R                    H  nX:  a    OUS-  nUnM     U R                  U   nX-
  nU R                  b  U R                  U5      nXQ   u  pgXb4$ )z{
Args:
    index (int): Index

Returns:
    tuple: Tuple (image, target) where target is the index of the target category.
r   r   )ro   rm   r   )r@   rF   rP   subindrr   rO   r   s           r(   rS   LSUN.__getitem__   sv     <<C{aKFC	   XXf  ,**62F{r[   c                     U R                   $ r#   rV   rW   s    r(   rX   LSUN.__len__   rZ   r[   c                 :    SR                   " S0 U R                  D6$ )NzClasses: {classes} )r   __dict__rW   s    r(   
extra_reprLSUN.extra_repr   s    #**;T]];;r[   )ri   rm   ro   r6   )r   NN)r\   r]   r^   r_   __doc__r	   r`   r   r   r   r   r1   rl   ra   rb   r   rS   rX   r   rc   rd   re   s   @r(   rg   rg   9   s    $ *1(,/3CI sDI~& H%	
 #8, 
 .)uS$s)^'< )c )V sCx 2 <C < <r[   rg   )rK   os.pathr8   r;   r$   collections.abcr   pathlibr   typingr   r   r   r   r	   PILr
   utilsr   r   visionr   r   rg   r   r[   r(   <module>r      sA    	    $  7 7  2 !' 'To<= o<r[   