Ë
    †\;j  ã                   ó°  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZg Zej                  j                  d«      Z ej"                  eej$                  «      s	  e	j&                  «       Zej                  j)                  eddd«      Zd„ Z ee«       d„ Zdd„Zd	„ Zd
ej4                  fd„Zej8                  fd„Zdd„Zy)é    NÚ~z.cacheÚpaddleÚdatasetc                 ó    — 	 t        j                  t        «       y # t        $ r(}|j                  t        j
                  k7  r‚ Y d }~y d }~ww xY w©N)ÚosÚmakedirsÚ	DATA_HOMEÚOSErrorÚerrnoÚEEXIST)ÚpathÚexcs     ú^G:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/dataset/common.pyÚmust_mkdirsr   6   s;   € ðÜ
�‰”IÕøÜò Ø�9‰9œŸ™Ò$Øô %ûðús   ‚ œ	A¥AÁAc                 óÎ   ‡— t        j                  «       }t        | d«      Št        ˆfd„d«      D ]  }|j	                  |«       Œ ‰j                  «        |j                  «       S )NÚrbc                  ó&   •— ‰ j                  d«      S )Né   )Úread)Úfs   €r   Ú<lambda>zmd5file.<locals>.<lambda>D   s   ø€ ˜aŸf™f Tœló    r   )ÚhashlibÚmd5ÚopenÚiterÚupdateÚcloseÚ	hexdigest)ÚfnameÚhash_md5Úchunkr   s      @r   Úmd5filer$   A   sP   ø€ Ü�{‰{‹}€HÜˆU�DÓ€AÜÓ*¨CÖ0ˆØ�‰˜Õð 1à‡G�G„IØ×ÑÓÐr   c                 óª  — t        j                  d|«      j                  «       }t        |t        «      r$t        j                  d|«      j                  «       }t
        j                  j                  t        |«      }t
        j                  j                  |«      st        j                  |«       t
        j                  j                  ||€| j                  d«      d   n|«      }t
        j                  j                  |«      rt        |«      |k(  r|S d}d}t
        j                  j                  |«      rt        |«      |k(  �st
        j                  j                  |«      r/t        j                  j                  dt        |«      › d|› d	�«       ||k  r|d
z  }nt!        d| › d|› �«      ‚t        j                  j                  d|› d| › d�«       t        j                  j                  d«       	 t#        j$                  d| d d¬«      5 }|j&                  j)                  d«      }	|	€6t+        |d«      5 }
t-        j.                  |j0                  |
«       d d d «       n½t+        |d«      5 }
d}t3        |	«      }	|	|z  d
z   }|dkD  r|dz  nd
}d}t4        j6                  j8                  j;                  |d¬«      }|j=                  |¬«      D ]D  }|
j                  |«       |d
z  }|j?                  |i «       ||z  dk(  sŒ4|j?                  |«       ŒF 	 d d d «       d d d «       t
        j                  j                  |«      s�Œt        |«      |k(  s�Œt        j                  j                  d«       t        jB                  jE                  «        |S # 1 sw Y   Œ�xY w# 1 sw Y   Œ�xY w# 1 sw Y   Œ‘xY w# t@        $ r}Y d }~�Œ³d }~ww xY w)Nz^[a-zA-Z0-9_/\-]+$z^(?:(?!\.\.)[a-zA-Z0-9_/\.-])+$Ú/éÿÿÿÿr   é   zfile z  md5 Ú
é   zCannot download z within retry limit zCache file z not found, downloading z 
zBegin to download
ÚGETT)ÚtimeoutÚfollow_redirectszcontent-lengthÚwbr   é   Úitem)Úname)Ú
chunk_sizez
Download finished
)#ÚreÚmatchÚgroupÚ
isinstanceÚstrr   r   Újoinr
   Úexistsr	   Úsplitr$   ÚsysÚstderrÚwriteÚRuntimeErrorÚhttpxÚstreamÚheadersÚgetr   ÚshutilÚcopyfileobjÚrawÚintr   ÚhapiÚprogressbarÚProgressBarÚ
iter_bytesr   Ú	ExceptionÚstdoutÚflush)ÚurlÚmodule_nameÚmd5sumÚ	save_nameÚdirnameÚfilenameÚretryÚretry_limitÚrÚtotal_lengthr   r2   Ú
total_iterÚlog_intervalÚ	log_indexÚbarÚdataÚes                     r   Údownloadr^   J   s-  € Ü—(‘(Ð0°+Ó>×DÑDÓF€KÜ�)œSÔ!Ü—H‘HØ0°)ó
ç
‰%‹'ð 	ô �g‰g�l‰lœ9 kÓ2€GÜ�7‰7�>‰>˜'Ô"Ü
�‰�GÔä�w‰w�|‰|Ø yÐ'8�—‘˜3“ Ò#¸ió€Hô 
‡w�w‡~�~�hÔ¤G¨HÓ$5¸Ò$?Øˆà€EØ€KÜ�w‰w�~‰~˜hÔ'¬G°HÓ,=ÀÓ,GÜ�7‰7�>‰>˜(Ô#Ü�J‰J×Ñ˜u¤W¨XÓ%6Ð$7°v¸f¸XÀRÐHÔIØ�;ÒØ�Q‰J‰EäØ" 3 %Ð';¸K¸=ÐIóð ô 	�
‰
×ÑØ˜(˜Ð#;¸C¸5ÀÐDô	
ô 	�
‰
×ÑÐ.Ô/ð	ä—‘Ø�s D¸4õàØ Ÿy™yŸ}™}Ð-=Ó>�ØÐ'Ü˜h¨Ô-°Ü×*Ñ*¨1¯5©5°!Ô4÷ .Ð-ô ˜h¨Ô-°Ø%)˜
Ü'*¨<Ó'8˜Ø%1°JÑ%>ÀÑ%B˜
à0:¸R²˜J¨"Ò,ÀQð %ð %&˜	Ü$Ÿk™k×5Ñ5×AÑAØ&¨Vð Bó ˜ð %&§L¡L¸J LÖ$G˜DØŸG™G DœMØ%¨™N˜IØŸJ™J y°"Ô5Ø(¨<Ñ7¸1Ó<Ø #§
¡
¨9Õ 5ñ %H÷ .÷ô �w‰w�~‰~˜hÖ'¬G°HÓ,=ÀÔ,GôX ‡J�J×ÑÐ,Ô-Ü‡J�J×ÑÔØ€O÷5 .Ð-ú÷ .Ð-ú÷ð ûô4 ò 	åûð	úsa   Ç8N> È*N2È;!NÉN2É1BN&ÌN&ÌN2Ì"N> ÎN#	ÎN2Î&N/	Î+N2Î2N;Î7N> Î>	OÏOc                  ó  — t        t        j                  «      D � cg c]  } | j                  d«      rŒ| ‘Œ c} D ]L  }dt        t	        j
                  d|z  «      «      v sŒ't	        j
                  d|z  «      j                  «        ŒN y c c} w )NÚ__Úfetchzpaddle.dataset.%s)Údirr   r   Ú
startswithÚ	importlibÚimport_modulera   )ÚxrO   s     r   Ú	fetch_allrg   Ž   s~   € ä”v—~‘~Ô&óÙ&ˆa¨a¯l©l¸4Õ.@ŠÐ&ôˆð ”cÜ×#Ñ#Ð$7¸+Ñ$EÓFó
ò 
ô ×#Ñ#Ð$7¸+Ñ$EÓF×LÑLÕNñùò s
   œB
³B
z%05d.picklec                 óp  — t        |«      st        d«      ‚g }d}t         | «       «      D ]M  \  }}|j                  |«       ||k\  sŒ||z  dk(  sŒ&t	        ||z  d«      5 } |||«       g }|dz  }ddd«       ŒO |r"t	        ||z  d«      5 } |||«       ddd«       yy# 1 sw Y   Œ~xY w# 1 sw Y   yxY w)aç  
    you can call the function as:

    split(paddle.dataset.cifar.train10(), line_count=1000,
        suffix="imikolov-train-%05d.pickle")

    the output files as:

    |-imikolov-train-00000.pickle
    |-imikolov-train-00001.pickle
    |- ...
    |-imikolov-train-00480.pickle

    :param reader: is a reader creator
    :param line_count: line count for each file
    :param suffix: the suffix for the output files, should contain "%d"
                means the id for each file. Default is "%05d.pickle"
    :param dumper: is a callable function that dump object to file, this
                function will be called as dumper(obj, f) and obj is the object
                will be dumped, f is a file object. Default is cPickle.dump.
    zdumper should be callable.r   Úwr*   N)ÚcallableÚ	TypeErrorÚ	enumerateÚappendr   )	ÚreaderÚ
line_countÚsuffixÚdumperÚlinesÚindx_fÚiÚdr   s	            r   r:   r:   ˜   sÂ   € ô, �FÔÜÐ4Ó5Ð5Ø€EØ€FÜ™&›(Ö#‰ˆˆ1Ø�‰�QŒØ�
‹?˜q :™~°Ó2Ü�f˜v‘o sÔ+¨qÙ�u˜aÔ Ø�Ø˜!‘�÷ ,Ð+ð $ñ Ü�&˜6‘/ 3Ô'¨1Ù�5˜!Ô÷ (Ð'ð ÷	 ,Ð+ú÷
 (Ð'ús   Á B Â
B,Â B)	Â,B5c                 ó   ‡ ‡‡‡— ˆ ˆˆˆfd„}|S )aÜ  
    Create a reader that yield element from the given files, select
    a file set according trainer count and trainer_id

    :param files_pattern: the files which generating by split(...)
    :param trainer_count: total trainer count
    :param trainer_id: the trainer rank id
    :param loader: is a callable function that load object from file, this
                function will be called as loader(f) and f is a file object.
                Default is cPickle.load
    c               3   óv  •K  — t        ‰«      st        d«      ‚t        j                  ‰«      } | j                  «        g }t	        | «      D ]-  \  }}|‰z  ‰	k(  sŒt        d|z  «       |j                  |«       Œ/ |D ])  }t        |d«      5 } ‰|«      }|E d {  –—†  d d d «       Œ+ y 7 Œ# 1 sw Y   Œ8xY w­w)Nzloader should be callable.zappend file: %srV   )rj   rk   ÚglobÚsortrl   Úprintrm   r   )
Ú	file_listÚmy_file_listÚidxÚfnr   rr   Úfiles_patternÚloaderÚtrainer_countÚ
trainer_ids
         €€€€r   rn   z$cluster_files_reader.<locals>.readerÍ   s±   øè ø€ Ü˜ÔÜÐ8Ó9Ð9Ü—I‘I˜mÓ,ˆ	Ø�‰ÔØˆÜ  Ö+‰GˆC�Ø�]Ñ" jÓ0ÜÐ'¨"Ñ,Ô-Ø×#Ñ# BÕ'ð ,ó ˆBÜ�b˜#” !Ù˜q›	�Ø × Ð ÷ �ñ ð !ø÷ �üs6   ƒAB9Á2B9ÂB-ÂB+ÂB-Â B9Â+B-Â-B6	Â2B9© )r   r�   r‚   r€   rn   s   ```` r   Úcluster_files_readerr„   ¾   s   û€ ÷!ð €Mr   c                 ó¾   — | r!t         j                  j                  | «      r| S |r+t        j                  j
                  j                  |||«      S t        | › d�«      ‚)Nz& not exists and auto download disabled)r   r   r9   r   r   Úcommonr^   Ú
ValueError)r   rN   r   rO   r^   s        r   Ú_check_exists_and_downloadrˆ   ß   sN   € Ù”—‘—‘˜tÔ$ØˆáÜ�~‰~×$Ñ$×-Ñ-¨c°;ÀÓDÐDä˜D˜6Ð!GÐHÓIÐIr   r   )T)r   rx   r   rd   r   Úpickler3   rC   r;   Útempfiler?   r   Úpaddle.datasetÚ__all__r   Ú
expanduserÚHOMEÚaccessÚW_OKÚ
gettempdirr8   r
   r   r$   r^   rg   Údumpr:   Úloadr„   rˆ   rƒ   r   r   Ú<module>r”      sÓ   ðó Û Û Û Û 	Û Û 	Û Û 
Û ã ã Û à
€à	‡w�w×Ñ˜#Ó€ð €r‡y�y��r—w‘wÔðð ˆ8×ÑÓ €Dà�G‰G�L‰L˜˜x¨°9Ó=€	òñ ˆIÔ ò óAòHOð &3¸6¿;¹;ó #ðN 6<·[±[óôBJr   