
    g                       S r SSKJr  SSKJrJrJr  SSKJ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JrJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&J'r'J(r(J)r)  SSK*J+r+  SSK,J-r-J.r.J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9  \Rt                  \Rv                  /r<      SS jr=SS jr>SS jr?S S jr@g)!zHACS gives you a powerful UI to handle downloads of all your custom needs.

For more details about this integration, please refer to the documentation at
https://hacs.xyz/
    )annotations)AIOGitHubAPIExceptionGitHub	GitHubAPI)ACCEPT_HEADERS)AwesomeVersion)async_remove_panel)system_health_info)SOURCE_IMPORTConfigEntry)Platform__version__)HomeAssistant)async_get_clientsession)	async_get)async_call_later)async_at_start)async_get_integration   )HacsBase)DOMAINHACS_SYSTEM_IDMINIMUM_HA_VERSIONSTARTUP)HacsDataClient)HacsDisabledReason	HacsStageLovelaceMode)async_register_frontend)HacsData)QueueManager)'version_left_higher_or_equal_then_right)!async_register_websocket_commandsc                  ^ ^^^^	#    [        5       =T R                  [        '   m	T	R                  5         TR                  [
        :X  a5  T R                  T R                  R                  TR                  5      5        gT	R                  R                  ST0TR                  ETR                  E5        [        T [        5      I Sh  vN nT	R                  S5        T	R                  R!                  ["        UR$                  5        ['        T 5      nUT	l        UR$                  T	l        UR$                  S:H  T	R                  l        T T	l        [/        T S9T	l        [3        T	S9T	l        [5        USUR$                   3S9T	l        S	T	R8                  l        UT	l        [>        R@                  T	RB                  l"         [G        T	R,                  5      I Sh  vN n[?        URI                  S
S5      5      T	RB                  l"        T	R,                  RL                  RO                  5       T	RB                  l(        T	RB                  RR                  c  [U        [V        5      T	RB                  l)        [Y        T	R                  RZ                  UST	R$                   3[\        S   S.S9T	l/        [a        ST	R                  RZ                  US.SST	R$                   30D6T	l1        UU	U 4S jmSUUU	U 4S jjmT" 5       I Sh  vN   [e        T 5      nURg                  S[        [h        5      =n(       a  UR                  U5        g	 GNy GNl! [J         a     GNMf = f NZ7f)zInitialize the integrationFconfig_entryNz0.0.0)hass)hacszHACS/)sessionclient_nameTmodeyamlpreview)z
User-AgentAccept)headers)tokenr(   r)   c                 <  >#    TR                  5          SSKn TR                  R                  S5        TR	                  [
        R                  5        g! [         a     Of = f[        TR                  R                  R                  [        5      (       d@  TR                  R                  S[        5        TR	                  [
        R                  5        gTR                  R                  5       I Sh  vN  (       d   TR	                  [
        R                  5        gTR!                  5         [#        T5        [%        TT5      I Sh  vN    TR&                  R)                  T[*        5      I Sh  vN    TR-                  [.        R0                  5        TR2                  R4                  (       a  gTR-                  [.        R6                  5        TR                  R9                  S5        [;        TTR<                  S9  TR2                  R4                  (       + $ 7f)zHACS startup tasks.r   NzoHACS cannot be used with custom_updater. To use HACS you need to remove custom_updater from `custom_components`Fz8You need HA version %s or newer to use this integration.zFSetup complete, waiting for Home Assistant before startup tasks starts)r&   at_start_cb)enable_hacs custom_components.custom_updaterlogcriticaldisable_hacsr   
CONSTRAINSImportErrorr"   core
ha_versionstringr   datarestoreRESTOREset_active_categoriesr#   r   config_entriesasync_forward_entry_setups	PLATFORMS	set_stager   SETUPsystemdisabledWAITINGinfor   startup_tasks)custom_componentsr%   r'   r&   s    */config/custom_components/hacs/__init__.pyasync_startup4_async_initialize_integration.<locals>.async_startupk   s    	3 HHY
 0;;<  		 7II  ''
 
 HHJ" 0;;<YY&&(((0889""$)$/%dD111!!<<\9UUUy';;y(()^_ 	Dd.@.@A;;''''sN   HA ;H
A!H A!!BH4C75AH	E
(H2E53B)Hc                &  >#     T" 5       I Sh  vN nU(       dQ  TR                  R                  [        R                  :w  a(  TR
                  R                  S5        [        TST5        gTR                  5         g Nm! [          a    Sn Nyf = f7f)z Startup wrapper for yaml config.NFz,Could not setup HACS, trying again in 15 mini  )	r   rE   disabled_reasonr   INVALID_TOKENr4   rH   r   r2   )_startup_resultrL   async_try_startupr'   r&   s     rK   rS   8_async_initialize_integration.<locals>.async_try_startup   sx     	##0?2N {{**.@.N.NNLM s,=> 3$ 	#"N	#s8   B
A? A=A? A)B=A? ?BBBBsensor )N)5r   r<   r   r2   sourcer   async_create_taskr@   async_removeentry_idconfigurationupdate_from_dictoptionsr   rC   r4   rH   r   versionr   integrationdevr&   r!   queuer    r   data_clientrE   runningr(   r   YAMLr9   lovelace_moder
   getBaseExceptionconfigpathconfig_pathr:   r   	HAVERSIONr   r/   r   githubr   	githubapiasync_get_entity_registryasync_get_entity_idr   )
r&   r%   r_   clientsessionlovelace_infoer
old_sensorrL   rS   r'   s
   ``     @@@rK   _async_initialize_integrationrt   $   s    
  (z)DIIfm+t22??@U@UVW''L	
	
 ""	
 .dF;;KNN4HHMM';../+D1M"D&&DL(00G;DDI4(DJd#DI%K//01D DKK DL*//DII0;;".}/@/@/P"Q		 !II,,113DIIyy#-i8		   !$,,0$Y/
DK    && E$,,0
1DN1(f  
 
#4	(B++HfnMMzM

# u <. < r sW   B?ML?C6M>M M.M C6M;M<AMM 
MMMMc                   #    UR                  UR                  [        5      5        [        XS9I Sh  vN nU R                  [
           nU=(       a    UR                  R                  (       + $  N;7f)z!Set up this integration using UI.r&   r%   N)async_on_unloadadd_update_listenerasync_reload_entryrt   r<   r   rE   rF   )r&   r%   setup_resultr'   s       rK   async_setup_entryr{      sX       !A!ABT!UV6D\\LYYv&D4 4 444 ]s   1A1A/<A1c                  #    U R                   [           nUR                  R                  (       a  UR                  R                  S5        gUR                  R                  5         UR                   H
  nU" 5         M     UR                   R                  SS9I Sh  vN    U R                   R                  S0 5      R                  S5      (       a'  UR                  R                  S5        [        U S5        U R                  R                  U[        5      I Sh  vN nUR!                  S5        UR#                  [$        R&                  5        U R                   R)                  [        S5        U$  N! [         a     Nf = f Nh7f)	zHandle removal of an entry.z/Pending tasks, can not unload, try again later.FT)forceNfrontend_panelsr'   zRemoving sidepanel)r<   r   ra   has_pending_tasksr4   warningclearrecurring_tasksasync_writerf   rH   r	   AttributeErrorr@   async_unload_platformsrB   rC   r6   r   REMOVEDpop)r&   r%   r'   task	unload_oks        rK   async_unload_entryr      s0    YYv&Dzz##JK 	JJ$$ %
 ))

d

+++99==*B/33F;;HHMM./tV, ))@@yYYINN4(001IIMM&$! ,   ZsD   BFE4F#AE6 :#FFAF6
F FFFc                l   #    [        X5      I Sh  vN (       d  g[        X5      I Sh  vN   g N N7f)zReload the HACS config entry.N)r   r{   rv   s     rK   ry   ry      s,     #D777
D
/// 8/s   404244N)r&   r   r%   r   returnbool)r&   r   r%   r   r   None)A__doc__
__future__r   aiogithubapir   r   r   aiogithubapi.constr   awesomeversionr   !homeassistant.components.frontendr	   /homeassistant.components.lovelace.system_healthr
   homeassistant.config_entriesr   r   homeassistant.constr   r   rk   homeassistant.corer   $homeassistant.helpers.aiohttp_clientr   %homeassistant.helpers.entity_registryr   rn   homeassistant.helpers.eventr   homeassistant.helpers.startr   homeassistant.loaderr   baser   constr   r   r   r   rb   r   enumsr   r   r   frontendr   
utils.datar    utils.queue_managerr!   utils.versionr"   	websocketr#   SWITCHUPDATErB   rt   r{   r   ry   rV       rK   <module>r      s    # A A - ) @ N C B , H X 8 6 6  F F ' > > -   - B 8__hoo.	O
OO 
Od5 F0r   