
    3jW+                        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  S SK	J
r
Jr  S SKrS SKrS SKJrJr  S SKJr  S SKJrJ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#J$r$  S	SK%J&r&  1 Skr'SSSSSS.S\(S\\\)   -  \(-  \-  S-  S\*S-  S\+S\*S\*S\,\RZ                     SS4S jjr.SSS.S\(S\*S\,\RZ                     S\R^                  4S jjr0SSSS.S \(S\*S\+S\,\RZ                     S\Rb                  4
S! jjr2SSS.S\(S\*S\,\RZ                     S\4S" jjr3S#\(S\(S$\+S\(4S% jr4SSSSS&.S\(S'\(S(\(S-  S\*S-  S\+S\,\RZ                     S\Rj                  4S) jjr6g)*    N)BytesIO)Path)IO)urljoinurlparse)ClientErrorContentTypeError)	InputImplTypes)get_output_directory   )request_logger)default_base_urlget_comfy_api_headersis_processing_interruptedsleep_with_interruptto_aiohttp_url)_diagnose_connectivity)ApiServerErrorLocalNetworkErrorProcessingInterrupted)bytesio_to_image_tensor>                        ?g       @)timeoutmax_retriesretry_delayretry_backoffclsurldestr!   r"   r#   r$   r%   returnc                `  ^#    [        U[        [        45      (       d  [        US5      (       d  [	        S5      eSnUn0 n	[        U 5      n
U
R                  (       d_  U
R                  (       dN  Uc  [	        S5      e[        [        5       R                  S5      S-   U R                  S5      5      n [        U5      n	 US-  n[        S	X5      n[        R                  " US
9n[        U[        [        45      nSnSnSmSnSn [         R"                  " [$        5         [&        R(                  " US	U S9  SSS5        [        R*                  " US9n[,        R.                  " 5       mU4S jn[,        R0                  " U" 5       5      n[,        R0                  " UR3                  [5        U 5      U	S95      n[,        R6                  " UU1[,        R8                  S9I Sh  vN u  nnUU;   aN  UU;   aH  UR;                  5         [         R"                  " [$        5         UI Sh  vN   SSS5        [=        S5      e UI Sh  vN nU ISh  vN   UR@                  S:  Ga!  [         R"                  " [$        5          URC                  5       I Sh  vN n[&        R(                  " US	U UR@                  [K        URL                  5      USUR@                   3S9  SSS5        UR@                  [N        ;   Gas  Xs::  Gam  [Q        XSSS5      I Sh  vN   X-  n SSS5      ISh  vN   Tb  TRS                  5         U(       a=  UR;                  5         [         R"                  " [$        5         UI Sh  vN   SSS5        U(       aR  URU                  5       (       d=  UR;                  5         [         R"                  " [$        5         UI Sh  vN   SSS5        U(       a;  [         R"                  " [$        5         URW                  5       I Sh  vN   SSS5        U(       d  GMd  [         R"                  " [$        5         URY                  5         URW                  5         SSS5        GM  [%        SUR@                   S35      eU(       a`  [        [        U5      5      n[         R"                  " [$        5         URZ                  R]                  SSS9  SSS5        [_        US5      nUnOUnSn  [,        R`                  " URb                  Re                  S5      SS9I Sh  vN n[i        5       (       a  [=        S5      eU(       d"  URb                  Rk                  5       (       a  O#M{  URm                  U5        U[I        U5      -  nM  [        U[n        5      (       a4  [         R"                  " [$        5         URq                  S5        SSS5        [&        R(                  " US	U UR@                  [K        URL                  5      SU S3S 9   SSS5      ISh  vN   Tb  TRS                  5         U(       a=  UR;                  5         [         R"                  " [$        5         UI Sh  vN   SSS5        U(       aR  URU                  5       (       d=  UR;                  5         [         R"                  " [$        5         UI Sh  vN   SSS5        U(       a;  [         R"                  " [$        5         URW                  5       I Sh  vN   SSS5        U(       aD  [         R"                  " [$        5         URY                  5         URW                  5         SSS5        gg! , (       d  f       GN+= f GN GNN! , (       d  f       GNS= f GNE! [,        R>                   a    [=        S5      Sef = f GNa GN! [D        [        4 a=    URG                  5       I Sh  vN  n[I        U5      S::  a  UOS[I        U5       S3n GNif = f! , (       d  f       GN0= f GN GN GN! , (       d  f       GN= f GNe! , (       d  f       GNj= f GN8! , (       d  f       GN== f! , (       d  f       GM  = f! , (       d  f       GN= f GN^! [,        Rf                   a    Sn GNu[,        R>                   a    [=        S5      Sef = f! , (       d  f       GN= f GN GNk! , (       d  f       GNp= f GN'! , (       d  f       GN,= f GN! , (       d  f       GN= f! , (       d  f       g= f! , ISh  vN  (       d  f       GO\= f! [,        R>                   a    [=        S5      Se[r        [t        4 Ga&  nXs::  Ga  [&        R(                  " US	U [w        U5      Rx                   S![        U5       S"3S#9  [Q        XSSS5      I Sh  vN    X-  n SnATb  TRS                  5         U(       aP  UR;                  5         [         R"                  " [$        5         UI Sh  vN    SSS5        O! , (       d  f       O= fU(       ae  URU                  5       (       dP  UR;                  5         [         R"                  " [$        5         UI Sh  vN    SSS5        O! , (       d  f       O= fU(       aN  [         R"                  " [$        5         URW                  5       I Sh  vN    SSS5        O! , (       d  f       O= fU(       d  G
MA  [         R"                  " [$        5         URY                  5         URW                  5         SSS5        G
M  ! , (       d  f       G
M  = f[{        5       I Sh  vN  nUS$   (       d  [}        S%5      Ue[        S&5      UeSnAff = f Tb  TRS                  5         U(       aP  UR;                  5         [         R"                  " [$        5         UI Sh  vN    SSS5        O! , (       d  f       O= fU(       ae  URU                  5       (       dP  UR;                  5         [         R"                  " [$        5         UI Sh  vN    SSS5        O! , (       d  f       O= fU(       aN  [         R"                  " [$        5         URW                  5       I Sh  vN    SSS5        O! , (       d  f       O= fU(       aW  [         R"                  " [$        5         URY                  5         URW                  5         SSS5        GO! , (       d  f       GO= fGO! Tb  TRS                  5         U(       aP  UR;                  5         [         R"                  " [$        5         UI Sh  vN    SSS5        O! , (       d  f       O= fU(       ae  URU                  5       (       dP  UR;                  5         [         R"                  " [$        5         UI Sh  vN    SSS5        O! , (       d  f       O= fU(       aN  [         R"                  " [$        5         URW                  5       I Sh  vN    SSS5        O! , (       d  f       O= fU(       aU  [         R"                  " [$        5         URY                  5         URW                  5         SSS5        f ! , (       d  f       f = ff = fGM  7f)'a  Stream-download a URL to `dest`.

`dest` must be one of:
  - a BytesIO (rewound to 0 after write),
  - a file-like object opened in binary write mode (must implement .write()),
  - a filesystem path (str | pathlib.Path), which will be opened with 'wb'.

If `url` starts with `/proxy/`, `cls` must be provided so the URL can be expanded
to an absolute URL and authentication headers can be applied.

Raises:
    ProcessingInterrupted, LocalNetworkError, ApiServerError, Exception (HTTP and other errors)
writezNdest must be a path (str|Path) or a binary-writable object providing .write().r   Nz<For relative 'cloud' paths, the `cls` parameter is required./Tr   GET)total)operation_idrequest_methodrequest_url)r!   c                     >#     T R                  5       (       dF  [        5       (       a  g [        R                  " S5      I S h  vN   T R                  5       (       d  ME  g g  N! [        R                   a     g f = f7f)Nr    )is_setr   asynciosleepCancelledError)stop_evts   E/home/wildlama/comfy/ComfyUI/comfy_api_nodes/util/download_helpers.py_monitor)download_url_to_bytesio.<locals>._monitorX   sa     &oo//466"%mmC000 'oo// 1-- sD   A=$A# A=A# A!A# A=!A# #A:7A=9A::A=)headers)return_whenzTask cancelledi  i   z[text z bytes]zHTTP )r.   r/   r0   response_status_coderesponse_headersresponse_contenterror_messagezFailed to download (HTTP z).)parentsexist_okwbi   r        z
[streamed z bytes to dest])r.   r/   r0   r<   r=   r>   z: z (will retry))r.   r/   r0   r?   internet_accessiblezVUnable to connect to the network. Please check your internet connection and try again.z4The remote service appears unreachable at this time.)@
isinstancestrr   hasattr
ValueErrorr   schemenetlocr   r   rstriplstripr   _generate_operation_idaiohttpClientTimeout
contextlibsuppress	Exceptionr   log_request_responseClientSessionr3   Eventcreate_taskgetr   waitFIRST_COMPLETEDcancelr   r5   statusjsonr	   textlendictr:   _RETRY_STATUSr   setdonecloseflushparentmkdiropenwait_forcontentreadTimeoutErrorr   at_eofr*   r   seekr   OSErrortype__name__r   r   r   )r&   r'   r!   r"   r#   r$   r%   attemptdelayr:   
parsed_urlop_idtimeout_cfgis_path_sinkfhandlesessionmonitor_taskreq_taskr8   rb   pendingrespbodyr]   psinkwrittenchunkediagr6   s                                 @r7   download_url_to_bytesior       s_
    . dS$K((w1G1GijjGE G#JZ%6%6;[\\&(//4s:CJJsOL',
1&uc;++':!$d404)-,0(,G	$$$Y/33W\jmn 0 ++K@G}}H #..xz:L**7;;~c7JT[;+\]H"),,,/GU\UlUl"mmMD't#G(;!((3"NN 4+,<==H%~ t;;#%#,,Y7^)-#4D ';;).+0(+15-1$,,-?-1,1$++*? 8  {{m38N25tT4PPP. + tn ###%((3&&& 4!((3"NN 4((3!--/)) 4w((3MMOMMO 43_ $&?}B$OPPSYA#,,Y7tdC 8"1dmG"DDP&-&6&6t||7H7H7U_b&c c 12234DEE <<..00! JJu%s5z)G# & dG,,#,,Y7		! 8 33!&#( #)-%)$,,%7'1'/%J C tn ###%((3&&& 4!((3"NN 4((3!--/)) 4((3MMOMMO 43 G 0/$ n
 # 43
 &)) H+,<=4GH  $5 0*= ^)-#4#4D+.t9+<4F3t9+U\B]D^ 87" Q' x ' 43
 # 43 * 43 43W 87 !d"// $ #"11 P34DE4OP 87m x ' 43
 # 43 * 43 43K ttD %% 	D'(89tCW% 	`%33!&#( #%)!W%5%5$6bQ"N	 +5tT4HHH& ###%((3&&& 433!((3"NN 433((3!--/)) 433w((3MMOMMO 4333+ 0111D-.'l !!WX^__#	`I n ###%((3&&& 433!((3"NN 433((3!--/)) 433((3MMOMMO 4333  ###%((3&&& 433!((3"NN 433((3!--/)) 433((3MMOMMO 433 a s  C?z.d: ]4B'd: ]*=d: ]0]- ]0$d: 8^ =^>^ d: ^)	d: ,d8_?:^/^,^/A_?4d
`	dd: ` d: $Az.(`.`/`3Az.`/`,`/)z.5a	a
az. z.:!az.&Ad4a)d,1a>a;a>"Bd5b:Ad
d: cd: Az.c$c%c)Az.7c'=c$>c')z.+c<?c9 c<)z.-!d
z.
]'"	d: -]00
]?:d: ^ !^&&d: ,^//#_<_
%_<8_?;_<<_??
`			dd: `
`)$z.,`//
`>9z.a
az.
a& 	z.)
a8	3d;a>>b7d b77d:
c		dd: c
c!z.$c''
c61z.9c<<
dz.
dz.d7%d(&d72d: 5t 7d: :0n*An:f=;	nt Az.h!hh!	z.!
h/+Az.8j>j?j	z.
j(z.?k"kk"	z."
k0,z.=z.!m8z.
m	z.n#m&$'nnt Az.o-o!o-$	z.-
o;7Az.q
qq	z.
q'#(z.r.r" r.%	z..
r<8(z. !t
z.
t
z.Az($u9*u-
+u90	z(9
vAz(w%w
w%	z(%
w3/(z(x:+x.
,x:1	z(:
y(z(,!z	z(
z$ z((z.r!   r%   c                \   #    [        5       n[        XXS9I Sh  vN   [        U5      $  N7f)z@Downloads an image from a URL and returns a [B, H, W, C] tensor.r   N)r   r   r   r&   r!   r%   results       r7   download_url_to_image_tensorr      s/      YF
!#w
HHH"6** Is   ,*,r!   r"   r%   	video_urlc                t   #    [        5       n[        XXUS9I Sh  vN   [        R                  " U5      $  N7f)z:Downloads a video from a URL and returns a `VIDEO` output.r   N)r   r   r
   VideoFromFile)r   r!   r"   r%   r   s        r7   download_url_to_video_outputr      s8      YF
!)Wcf
ggg""6** hs   868c                J   #    [        5       n[        XXS9I Sh  vN   U$  N7f)zFDownloads content from a URL and returns a new BytesIO (rewound to 0).r   N)r   r   r   s       r7   download_url_as_bytesior      s)      YF
!#w
HHHM Is   #!#methodrq   c           	      L    [        U5      nUR                  R                  SS5      S   =(       d    UR                  =(       d    SR	                  S5      R                  SS5      nU  SU SU S[        R                  " 5       R                  S S  3$ ! [         a    Sn N;f = f)Nr+   r   download__try   )
r   pathrsplitrJ   stripreplacerR   uuiduuid4hex)r   r&   rq   parsedslugs        r7   rM   rM      s    #""3*2.M&--M:TTUXYaabegjk XQtfD	4::<+;+;BQ+?*@AA  s   A%B B#"B#)task_idr!   r"   r%   file_formatr   c                P  #    UR                  S5      R                  5       n[        5       n[        U UUUUS9I Sh  vN   UbL  [	        [        5       5      nXr SU 3-  nUR                  UR                  5       5        UR                  S5        [        R                  " XaS9$  Ng7f)zDownloads a 3D model file from a URL into memory as BytesIO.

If task_id is provided, also writes the file to disk in the output directory
for backward compatibility with the old save-to-disk behavior.
.r   Nr   )sourcer   )rL   lowerr   r   r   r   write_bytesgetvaluerm   r   File3D)	r&   r   r   r!   r"   r%   data
output_diroutput_paths	            r7   download_url_to_file_3dr   	  s      $$S)//1K9D
!    .01
 Ya}#==0		!<<t==!s   :B&B$A(B&)7r3   rP   r   ior   pathlibr   typingr   urllib.parser   r   rN   torchaiohttp.client_exceptionsr   r	   comfy_api.latestCOMFY_IOr
   r   folder_pathsr    r   _helpersr   r   r   r   r   clientr   common_exceptionsr   r   r   conversionsr   r`   rF   bytesfloatintro   	ComfyNoder   Tensorr   r   r   r   rM   r   r    rC   r7   <module>r      sB         *   C + - -   + W W 0. !$(x$	x$
BuI

#d
*T
1x$ T\	x$
 x$ x$ x$ 
h  	!x$ 
x$| $(		+		+ 	+ 
h  	!		+
 \\	+ $(
+
+ 
+ 	
+
 
h  	!
+ 
+  $(				 	 
h  	!		
 	B3 BS B3 B3 B  $( >	 > > 4Z	 >
 T\ >  > 
h  	! > \\ >rC   