yg0;" UddlmZddlZddlZddlZddlZddlmZddlm Z hdZ de d<ia de d <ejjejjeZejj%ed Zejj%ed ge ftd <ejj%ed gd gftd <ejj%edge ftd<ejj%edge ftd<ejj%edejj%edge ftd<ejj%edejj%edge ftd<ejj%edge ftd<ejj%edge ftd<ejj%edge ftd<ejj%edgdgftd<ejj%edge ftd<ejj%edejj%edge ftd<ejj%edge ftd<ejj%edge ftd<ejj%edgeftd<ejj%edge ftd<ejj%ed ge ftd <ejj%ed!gd"hftd!<ejj%ejjejjed#aejj%ejjejjed$aejj%ejjejjed%aejj%ejjejjed&aiad'e d(<Gd)d*ZeZd+d,iadFd-Zejj=t.s ej>t.dGd/Z!dHd0Z"dId1Z#dJd2Z$dJd3Z%dJd4Z&dJd5Z'dKd6Z(dLd7Z)dMd8Z*dNd9Z+dOdPd:Z,dQd;Z-dRdSd<Z.dTd=Z/dOdUd>Z0dVd?Z1dWd@Z2dXdAZ3dYdBZ4dZdCZ5dTdDZ6d[d\dEZ7y#ej@d.YwxYw)]) annotationsN)Literal) Collection>.pt.bin.pkl.pth.sft.ckpt .safetensorszset[str]supported_pt_extensionsz%dict[str, tuple[list[str], set[str]]]folder_names_and_pathsmodels checkpointsconfigsz.yamllorasvae text_encodersclipunetdiffusion_models clip_vision style_models embeddings diffusersfolder vae_approx controlnet t2i_adaptergligenupscale_models custom_nodes hypernetworks photomaker classifiersoutputtempinputuserz4dict[str, tuple[list[str], dict[str, float], float]]filename_list_cachec:eZdZdZdZd d dZd dZdZdZdZ y) CacheHelperz9 Helper class for managing file list cache data. c i|_d|_yNF)cacheactiveselfs _D:\pinokio\api\comfy.git\app\gradio_apps\Redux\ComfyUI_windows_portable\ComfyUI\folder_paths.py__init__zCacheHelper.__init__5sKM  NcV|js|S|jj||SN)r1r0get)r3keydefaults r4r9zCacheHelper.get9s#{{Nzz~~c7++r6c<|jr||j|<yyr8)r1r0)r3r:values r4setzCacheHelper.set>s ;;#DJJsO r6c8|jjyr8)r0clearr2s r4r@zCacheHelper.clearBs r6cd|_|S)NT)r1r2s r4 __enter__zCacheHelper.__enter__Es  r6c2d|_|jyr/)r1r@)r3exc_type exc_value tracebacks r4__exit__zCacheHelper.__exit__Is  r6r8)r:strreturn)tuple[list[str], dict[str, float], float])r:rHr=rJrINone) __name__ __module__ __qualname____doc__r5r9r>r@rBrGr6r4r-r-1s%, $r6r-webpimagec0ddd}|j||S)Nrr)rr)r9) folder_namelegacys r4 map_legacyrVSs (%'F ::k; //r6z Failed to create input directoryc|ayr8output_directory) output_dirs r4set_output_directoryr[^s!r6c|ayr8temp_directory)temp_dirs r4set_temp_directoryr`bNr6c|ayr8input_directory) input_dirs r4set_input_directoryrffsOr6ctSr8rXrPr6r4get_output_directoryrhjs r6ctSr8r]rPr6r4get_temp_directoryrjns r6ctSr8rcrPr6r4get_input_directoryrlrs r6ctSr8user_directoryrPr6r4get_user_directoryrpvs r6c|ayr8rn)user_dirs r4set_user_directoryrsyrar6c^|dk(r tS|dk(r tS|dk(r tSy)Nr'r(r))rhrjrl) type_names r4get_directory_by_typervs8H#%%F!##G"$$ r6cg}|D]x}|jdd}|tvr;tj|d\}}|s<|jdd}|t|<n t|}||vsh|j |z|S)z Example: files = os.listdir(folder_paths.get_input_directory()) filter_files_content_types(files, ["image", "audio", "video"]) .F)strict/r)splitextension_mimetypes_cache mimetypes guess_typeappend)files content_typesresultfile extension mime_type_ content_types r4filter_files_content_typesrsFJJsOB' 5 5$//UCLIq$??3/2L3? %i 04Y?L = ( MM$  Mr6c|jdrt}|dd}||fS|jdrt}|dd}||fS|jdrt}|dd}||fS|dfS)Nz[output]iz[input]iz[temp]i)endswithrhrlrj)namebase_dirs r4annotated_filepathrs }}Z ')CRy > y !&(CRy > x %'CRy >Tzr6ct|\}}|||}n t}tjj ||Sr8)rrlospathjoin)r default_dirrs r4get_annotated_filepathrs>'-ND(  ""H*,H 77<<$ ''r6ct|\}}| t}tjj ||}tjj |Sr8)rrlrrrexists)rrfilepaths r4exists_annotated_filepathrsE'-ND(&(ww||Hd+H 77>>( ##r6c t|}|tvrgt|\}}||vr.|rT|d|k7rK|j||jd|y|r|jd|y|j |yyy|gt ft|<yNr)rVrremoveinsertrr>)rTfull_folder_path is_defaultpaths_extss r4add_model_folder_pathrs[)K,,-k: u u $eAh*:: -. Q 01 Q 01 -.;z1A/A35.I{+r6c6t|}t|dddSr)rVr)rTs r4get_folder_pathsrs![)K !+ .q 1! 44r6ctjj|sgifS|g}g}i} tjj|||<t jdj|tj|ddD]\}}}|Dcgc] }||vs| c}|dd|D]R} tjjtjj|||} |j| T|D]E}tjj||} tjj| || <Gt jdjt|||fS#t$rt j d|dYTwxYwcc}w#t j d|dYxYw#t$rt j d| dYwxYw)NzWarning: Unable to access z. Skipping this path.z#recursive file list on directory {}T) followlinkstopdownz. Skipping this file.zfound {} files)rrisdirgetmtimeFileNotFoundErrorloggingwarningdebugformatwalkrelpathrrlen) directoryexcluded_dir_namesrdirsdirpathsubdirs filenamesd file_name relative_pathrs r4recursive_searchrs 77== #2v ! F DW''**95Y MM7>>yIJ (*wwydTX'Y#)!(HAA5G,GaH "I  " Wi0PR[ \  m,#A Wa0D WW--d3T (Z" MM"))#f+67 4<5 W4YK?TUVWI  " F' F'0AF,'"G >"F$#F$,G  "G21G2cFtttfd|S)Nctjj|djvxst dk(S)Nryr)rrsplitextlowerr)a extensionss r4z)filter_files_extensions..s<(8(8(;B(?(E(E(G:(U(mY\]gYhlmYm(mr6)sortedlistfilter)rrs `r4filter_files_extensionsrs $vmotuv wwr6ct|}|tvryt|}tjj tjj d|d}|dD]}tjj ||}tjj |r|cStjj|sftjdj|y)Nr{rz;WARNING path {} exists but doesn't link anywhere, skipping.) rVrrrrrisfileislinkrrr)rTfilenamefoldersx full_paths r4 get_full_pathr s[)K00$[1Gwwrww||C:C@H QZGGLLH- 77>>) $  WW^^I & OOY``ajk l  r6cFt||}|td|d|d|S)NzModel in folder 'z' with filename 'z ' not found.)rr)rTrrs r4get_full_path_or_raisers9k84I"3K=@QRZQ[[g hii r6ct|}t}t|}i}|dD]7}t|dg\}}|j t ||di||}9t t||tjfS)Nrz.git)r) rVr>rrupdaterrrtime perf_counter)rT output_listroutput_foldersrr folders_alls r4get_filename_list_r#s[)K%K$[1GN QZ-aVHM{25'!*EF:N:k: ${# $nd6G6G6I IIr6cZtj|}||St|}|tvryt|}|dD]0}|d|}|}tj j ||k7s0yt|}|dD]+}tj j|s#||dvs+y|S)Nrr) cache_helperr9rVr+rrrrr)rT strong_cacheoutr time_modifiedrrs r4cached_filename_list_r0s##K0L[)K-- k *C VAq  77  F #} 4  %[1G QZ 77== A Jr6ct|}t|}|t|}|t|<tj ||t |dSr)rVrrr+rr>r)rTrs r4get_filename_listrJsN[)K  ,C { -+.K([#& A<r6c  d fd }d d}dvr |||tjjtjj}tjj tjj tjj ||}tjj |tjj|f|k7rdtjj|zdz|zdztjj |tjj|fz}tj|t| tt fdt|tj|dd z} | | |fS#t$rd } Yt $rtj"|d d } Y7wxYw)Ncttjj}|d|dz} t ||dzdj dd}||fS#d}Y||fSxYw)Nrrr)rrrbasenameintr|)r prefix_lenprefixdigitsfilename_prefixs r4 map_filenamez)get_save_image_path..map_filenameUsx))/:; /:>* *q./288=a@AFv~ Fv~s #AA#c|jdt|}|jdt|}tj}|jdt|j}|jdt|j j d}|jdt|jj d}|jdt|jj d}|jdt|jj d}|jd t|jj d}|S) Nz%width%z%height%z%year%z%month%z%day%z%hour%z%minute%z%second%) replacerHr localtimetm_yeartm_monzfilltm_mdaytm_hourtm_mintm_sec)r) image_width image_heightnows r4 compute_varsz)get_save_image_path..compute_vars^s i[)9: j#l*;<nn hCKK(89 iSZZ)>)>q)AB gs3;;'7'='=a'@A hCKK(8(>(>q(AB j#cjj/*?*?*BC j#cjj/*?*?*BC r6%zX**** ERROR: Saving image outside the output folder is not allowed. full_output_folder: z output_dir: z commonpath: ctjj|dddtjjk(xr |dddk(S)Nrryr)rrnormcase)rrs r4rz%get_save_image_path..{sNrww'7'7!Sb 'BbggFVFVW_F`'`'tefgheijlemqtet'tr6rrT)exist_ok)rrHrIztuple[int, str])r)rHrrrrrIrH)rrdirnamenormpathrr commonpathabspathrerror Exceptionmaxrmaplistdir ValueErrorrmakedirs) rrZrrrr subfolderfull_output_foldererrcounterrs ` @r4get_save_image_pathr Ts  o& \R 0 0 ABIww 0 0 ABHj)< ww:rww7I'JKLPZZ(*,''//:L*MN'(*45((+-''*<*rYr^rdror+r-rr}rVrrrr[r`rfrhrjrlrprsrvrrrrrrrrrrrrrr rPr6r4rs" &$dd@B=B GGOOBGG,,X6 7 WW\\)X . *,'',,z=*Q)RTk(l}%&(ggll:y&I%JWI$Vy!$&GGLLW$E#FH_"`w"$'',,z5"A!BD[ \u,.GGLL_,UWYW^W^WcWcdnpvWw+x{R+S'/1ww||J/OQSQXQXQ]Q]^hj|Q}.~AX.Y)**,'',,z=*Q)RTk(l}%+-77<< N+S*TVm)n~&)+j,)O(PRi'j|$(* Z(M'NQYPZ&[{#)+j,)O(PRi'j|$)+j,)OQSQXQXQ]Q]^hjwQx(y|S(T|$%'WW\\*h%G$HJa#bx -/WW\\*FV-W,XZq+r'(+-77<< >+R*SUXUZ)[~&,.GGLL_,U+VXo*p')+j,)O(PRi'j|$*,'',,z=*Q)RUWTX(Y}%77<<0@0@0J KXVbggoobgg.>.>x.HI6R'',,rwwrww/?/?/IJGTbggoobgg.>.>x.HI6RLNIN8}  W0  ww~~o&: O$"  2  ($J$5'Rx " J4-Ms: 89s U88V