+
    #j                        R t ^ RIHt ^ RIt^ RIHtHtHt ]P                  P                  t
 ! R R4      t ! R R4      t ! R R	4      tR# )
u   Integration tests against the live Comfy Cloud API.

These tests are auto-skipped when COMFY_CLOUD_API_KEY is not set.
They never SUBMIT workflows (would need a paid subscription) — they only
verify the read-only endpoints we rely on.
)annotationsN)http_getparse_model_listresolve_urlc                  4    ] tR t^tR tR tR tR tR tRt	R# )TestCloudEndpointsLivec                	    \        R R4      p\        VRV/R7      pVP                  ^8X  g   Q hVP                  4       pRV9   g   Q hR# )https://cloud.comfy.orgz/system_stats	X-API-KeyheaderssystemN)r   r   statusjson)self	cloud_keyurlrdatas   &&   n/opt/hermes-venv/lib/python3.14/site-packages/../../../skills/creative/comfyui/tests/test_cloud_integration.pytest_system_stats_reachable2TestCloudEndpointsLive.test_system_stats_reachable   sI    3_ES;	":;xx3vvx4    c                	t    \        R R4      pRV9   g   Q h\        VRV/R7      pVP                  ^8X  g   Q hR# )r	   /models/checkpointsz"/api/experiment/models/checkpointsr
   r   N)r   r   r   r   r   r   r   s   &&  r   )test_models_endpoint_routed_to_experiment@TestCloudEndpointsLive.test_models_endpoint_routed_to_experiment   s?    35JK3s:::S;	":;xx3r   c                	J   \        R R4      p\        VRV/R7      pVP                  4       p\        V\        4      '       g   Q hV'       dX   \        V^ ,          \
        4      '       g   Q hRV^ ,          9   g   Q h\        V4      p\        V4      \        V4      8X  g   Q hR# R# )r	   r   r
   r   nameN)r   r   r   
isinstancelistdictr   len)r   r   r   r   r   
normalizeds   &&    r   "test_models_endpoint_returns_dicts9TestCloudEndpointsLive.test_models_endpoint_returns_dicts!   s    35JKS;	":;vvx$%%%%d1gt,,,,T!W$$$)$/Jz?c$i/// r   c                	0    \        R R4      pRV9   g   Q hR# )r	   z/history/some-fake-idz/api/history_v2/some-fake-idN)r   )r   r   r   s   && r   test_history_renamed_to_v21TestCloudEndpointsLive.test_history_renamed_to_v2.   s    35LM-444r   c                	   \        R R4      p\        VRV/R7      pVP                  R9   g   Q hVP                  R8X  dM   RVP                  4       P	                  4       9   g(   RVP                  4       P	                  4       9   g   Q hR# R# R# )	r	   z/object_infor
   r     z	free tiersubscriptionN>   r+      )r   r   r   textlowerr   s   &&  r   test_object_info_paid_tier1TestCloudEndpointsLive.test_object_info_paid_tier3   sw    3^DS;	":;xx:%%%88s?!&&(.."22nHX6XXX6X2 r    N)
__name__
__module____qualname____firstlineno__r   r   r%   r(   r0   __static_attributes__r2   r   r   r   r      s     05
Yr   r   c                  "    ] tR t^>tR tR tRtR# )TestCloudCheckDepsLivec                	f    ^ RI H p V! VRVR7      pRV9   g   Q hRV9   d   VR,          RJ g   Q hR# )    
check_depsr	   hostapi_keymissing_modelsis_cloudTNr<   )r   r   sd15_workflowr=   reports   &&&  r   test_check_deps_against_cloud4TestCloudCheckDepsLive.test_check_deps_against_cloud?   s@    )M0IS\]6)))V#z(:d(BBB(Br   c                    ^ RI H p V! VRVR7      pVR,           Uu0 uF  qUR,          kK  	  ppRV9  g   Q R4       hR# u upi )	zFlux uses unet/clip folders; cloud has them in diffusion_models/text_encoders.
With folder aliasing, the check should still find them.r<   r	   r>   rA   valuezae.safetensorsz.ae.safetensors should be on cloud's vae folderNr<   )r   r   flux_workflowr=   rD   mmissing_filenamess   &&&    r   .test_flux_workflow_models_resolved_via_aliasesETestCloudCheckDepsLive.test_flux_workflow_models_resolved_via_aliasesF   sY     	*M0IS\] 288H1IJ1IAwZZ1IJ'88 	=<	=8 Ks   A r2   N)r3   r4   r5   r6   rE   rL   r7   r2   r   r   r9   r9   >   s    C
=r   r9   c                      ] tR t^UtR tRtR# )TestHealthCheckLivec                	   ^ RI Hp V! RRRV.4      pVP                  4       p^ RIpVP	                  VP
                  4      pVR,          R,          RJ g   Q hVR	,          R
,          RJ g   Q hVR	,          R,          ^ 8  g   Q hR# )r;   )mainz--hostr	   z	--api-keyNserver	reachableTcheckpoints	queryablecount)health_checkrQ   
readouterrr   loadsout)r   r   capsyshealth_mainrccapturedr   rD   s   &&&     r   test_health_check_passes,TestHealthCheckLive.test_health_check_passesV   s    4($={IVW$$&HLL)h,444m$[1T999m$W-111r   r2   N)r3   r4   r5   r6   r_   r7   r2   r   r   rO   rO   U   s    	2r   rO   )__doc__
__future__r   pytest_commonr   r   r   markcloud
pytestmarkr   r9   rO   r2   r   r   <module>rh      sJ    #  ; ; [[
)Y )YX= =.
2 
2r   