+
    "i2                    2   R t ^ RIHt ^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^RIHt ^RIHt ^R	IHtHt ^R
IHtHtHt ^RIHt ^RIHt ^RIHtHt Rt]R. 3RRRRRRRRRR. 33,           t]RRRR R!R"R#R$R%R&R'R. 3R(R)R*3,           t  ! R R4      t!R# )+zData handler for HACS.)annotationsN)UTCdatetime)Any)callback)HomeAssistantError)HacsBase)HACS_REPOSITORY_ID)HacsDisabledReasonHacsDispatchEvent)TOPIC_FILTERHacsManifestHacsRepository)LOGGER)is_safe)async_load_from_storeasync_save_to_storeauthorstopicspublished_tagsc                      ] tR t^:tRtR R ltRR ltRR R lltRR ltRR	 lt	]
R
 R l4       t]
R R l4       tR tRR R llt]
R R l4       tRtR# )HacsDatazHacsData class.c                   V ^8  d   QhRR/# )   hacsr    )formats   ",/config/custom_components/hacs/utils/data.py__annotate__HacsData.__annotate__=   s      X     c                6    \         V n        Wn        / V n        R# )zInitialize.N)r   loggerr   content)selfr   s   &&r   __init__HacsData.__init__=   s    	r    Nc                F   "   V P                  RR7      G Rj  xL
  R#  L5i)zForce write.T)forceN)async_write)r$   _s   &&r   async_force_writeHacsData.async_force_writeC   s     T***s   !!c                    V ^8  d   QhRRRR/# )r   r(   boolreturnNoner   )r   s   "r   r   r   G   s     4 4t 4 4r    c           
     "  "   V'       g)   V P                   P                  P                  '       d   R# V P                  P	                  R4       \        V P                   P                  RRV P                   P                  P                  RV P                   P                  P                  RV P                   P                  P                  /4      G Rj  xL
  V P                  4       G Rj  xL
  V P                  4       G Rj  xL
  R#  L6 L  L
5i)z!Write content to the store files.Nz"<HacsData async_write> Saving datar   archived_repositoriesrenamed_repositoriesignored_repositories)r   systemdisabledr"   debugr   hasscommonr2   r3   r4   +_async_store_experimental_content_and_repos_async_store_content_and_repos)r$   r(   s   &&r   r)   HacsData.async_writeG   s     ))222>? "IINN')9)9)O)O&		(8(8(M(M&		(8(8(M(M
 	
 	
 >>@@@11333	
 	A3s;   .DB!DD	D*D+DDDDDc                  "   / V n         V P                  P                  P                   FO  pVP                  P
                  V P                  P                  P                  9   g   K>  V P                  V4       KQ  	  \        V P                  P                  RV P                   4      G Rj  xL
  \        P                  \        P                  3 F  pV P                  P                  V/ 4       K!  	  R#  LI5i)<Store the main repos file and each repo that is out of date.repositoriesN)r#   r   r?   list_alldatacategoryr9   
categoriesasync_store_repository_datar   r8   r   
REPOSITORYCONFIGasync_dispatch)r$   r*   
repositoryevents   &&  r   r;   'HacsData._async_store_content_and_repos[   s      ))0099J''499+;+;+F+FF00< : "$))...$,,OOO'224E4L4LMEII$$UB/ N 	Ps   A!C7(AC7+C5,A
C7c                p  "   / V n         V P                  P                  P                   FO  pVP                  P
                  V P                  P                  P                  9   g   K>  V P                  V4       KQ  	  \        V P                  P                  RRV P                   /4      G Rj  xL
  R#  L5i)r>   rA   r?   N)r#   r   r?   r@   rA   rB   r9   rC   (async_store_experimental_repository_datar   r8   )r$   r*   rH   s   && r   r:   4HacsData._async_store_experimental_content_and_reposg   s}      ))0099J''499+;+;+F+FF==jI : "$))..&>4<<:XYYYs   A!B6(AB6-B4.B6c                    V ^8  d   QhRRRR/# )r   rH   r   r/   dictr   )r   s   "r   r   r   r   s     5 5n 5 5r    c                "   RVP                   P                  /pVP                  P                  '       d   \        M\
         F'  w  r4\        VP                  W44      ;qT8w  g   K#  WRV&   K)  	  VP                  P                  '       d   VP                  P                  VR&   VP                  P                  '       d(   VP                  P                  P                  4       VR&   W P                  \        VP                  P                  4      &   R# )zStore the repository data.repository_manifestversion_installedlast_fetchedN)rQ   manifestrA   	installed#EXPORTED_DOWNLOADED_REPOSITORY_DATAEXPORTED_REPOSITORY_DATAgetattrinstalled_versionrS   	timestampr#   stridr$   rH   rA   keydefaultvalues   &&    r   rD   $HacsData.async_store_repository_dataq   s     &z'E'E'N'NO ((( 0)* C
 !#??K!S	* ??,,,(2(I(ID$%??'''#-??#?#?#I#I#KD 04S++,-r    c                    V ^8  d   QhRRRR/# )r   rH   r   r/   r0   r   )r   s   "r   r   r      s     _ _> _VZ _r    c                8   / pV P                   P                  VP                  P                  . 4       VP                  P                  '       d   VP
                  P                  VR&   \         F'  w  r4\        VP                  W44      ;qT8w  g   K#  WRV&   K)  	  VP                  P                  '       d   VP                  P                  VR&   VP                  P                  '       d(   VP                  P                  P                  4       VR&   M1\         F'  w  r4\        VP                  W44      ;qT8w  g   K#  WRV&   K)  	  V P                   VP                  P                  ,          P                  R\        VP                  P                  4      /VC4       R# )zGStore the experimental repository data for non downloaded repositories.rQ   rR   rS   r\   N)r#   
setdefaultrA   rB   rU   rQ   rT   rV   rX   rY   rS   rZ   EXPORTED_BASE_DATAappendr[   r\   r]   s   &&    r   rL   1HacsData.async_store_experimental_repository_data   s3    
 8 8"=??$$$*4*H*H*Q*QD&' C$Z__cCCEO %I !D 000,6OO,M,M()+++'1'C'C'M'M'O^$ 2$Z__cCCEO %I !3 	Z__--.55tSASAS=T6]X\6]^r    c                  "   RV P                   P                  n        / p/ p \        V P                   P                  R4      G Rj  xL
 ;'       g    / p \        V P                   P                  R4      G Rj  xL
 pV'       gr   \        V P                   P                  R4      G Rj  xL
 ;p'       dB   VP                  R/ 4      P                  4        F  w  rEV F  pRV/VCWR,          &   K  	  K  	  T'       g&   T'       g   R
T P                   P                  n        R
# T P                  P!                  R4       \#        4       T P                   P$                  n        \#        4       T P                   P$                  n        / T P                   P$                  n        TP                  R/ 4      pT F>  p	TP                  T	4      p
Y9  g   K  YP                   P$                  P*                  T	&   K@  	  TP                  R\#        4       4       FX  p	YP                   P$                  P&                  9  g   K)  T P                   P$                  P&                  P-                  T	4       KZ  	  TP                  R\#        4       4       FX  p	YP                   P$                  P(                  9  g   K)  T P                   P$                  P(                  P-                  T	4       KZ  	   T P/                  T4      G Rj  xL
  TP                  4        F;  w  rT	R8X  d   T P                  P1                  RY4       K*  T P3                  Y4       K=  	  T P                  P!                  R4       R
#  EL"  \
         d     EL$i ; i EL EL  \
         d   pT P                   P                  P                  RT P                   P                  P                  P                  R	4      T4       T P                   P                  \        P                  4        Rp?R# Rp?ii ; i EL"  \4         d)   pT P                  P7                  RYwR7        Rp?R# Rp?ii ; i5i)zRestore saved data.Fr   Nr?   rA   rB   r\   z6Could not read %s, restore the file from a backup - %sz.storage/hacs.dataTz"<HacsData restore> Restore startedr3   r2   r4   0z3<HacsData restore> Found repository with ID %s - %sz<HacsData restore> Restore donez'<HacsData restore> [%s] Restore Failed!)exc_info)r   statusnewr   r8   r   getitemslogerrorconfigpathdisable_hacsr
   RESTOREr"   infosetr9   r2   r4   r3   addregister_unknown_repositoriesr7   async_restore_repositoryBaseExceptioncritical)r$   r?   r   rA   rB   entriesrH   	exceptionrenamedentryr`   	repo_datas   &           r   restoreHacsData.restore   sV    $			.tyy~~vFFLL"D	!6tyy~~~!VVL3HY_3`-`%`T%`)-.")E)K)K)M%H&-
:Dh9]R\9]%56 '. *N L#'DII => 25		.03		-02		- ((126EKK&E#?D		  55e<  XX5su=EII,,BBB		  66::5A >
 XX4ce<EII,,AAA		  5599%@ =	44\BBB$0$6$6$8 C<KK%%Mu --e? %9 KK>? M G! 		 W-`
 " 	IIMMH		%%**+?@
 II""#5#=#=>	N C 	 KK  99 !  	s    Q#M+ M(
M+ M+ #N 9M=:N #N )N *N 6AN 7Q?QCQA$Q9A1Q/3Q#P 7P8A.P &Q(M+ +M:6Q9M::Q=N  N PA=PQPQP Q'Q
Q
QQc                    V ^8  d   QhRRRR/# )r   r?   zdict[str, dict[str, Any]]rB   z
str | Noner   )r   s   "r   r   r      s     ' '5'AK'r    c                  "   \        VP                  4       4       F  w  pw  rEVR8X  gA   VP                  RV4      e-   V P                  P                  P                  VR7      '       d   KQ  V P                  P                  VR,          VP                  RV4      RVR7      G Rj  xL
  V^d,          ^ 8X  g   K  \        P                  ! ^ 4      G Rj  xL
  K  	  R#  L8 L5i)z"Registry any unknown repositories.ri   rB   N)repository_id	full_nameF)repository_full_namerB   checkr   )		enumeratern   rm   r   r?   is_registeredasync_register_repositoryasynciosleep)r$   r?   rB   repo_idxr   r   s   &&&   r   rx   &HacsData.register_unknown_repositories   s      -6l6H6H6J,K(H(u ==X6>99))77e7LL))55%.{%;"z8<#	 6    #~"mmA&&&# -L 's0   A(C#+;C#&C'C#;C#C!C#!C#c                    V ^8  d   QhRRRR/# )r   r   r[   repository_datazdict[str, Any]r   )r   s   "r   r   r     s     @- @-c @-N @-r    c                2   RpVP                  R4      ;p'       d&   V P                  P                  P                  V4      pV'       g&   V P                  P                  P	                  V4      pV'       g   R#  V P                  P                  P                  W14       TP                  R. 4      TP                  n
        TP                  RR4      TP                  n        TP                  R^ 4      TP                  n        TP                  R^ 4      TP                  n        T P                  P                  P                  '       dB   TP                  R	4      TP                  n        TP                  R
^ 4      TP                  n        TP                  R4      TP                  n        TP                  R. 4       Uu. uF  qf\&        9  g   K  TNK  	  upTP                  n        TP                  R4      TP                  n        TP                  R4      ;'       g    TP                  R^ 4      TP                  n        TP                  R4      TP.                  n        TP                  RR4      TP                  n        TP                  RR4      TP                  n        TP                  RR4      TP                  n        TP                  R4      TP                  n        TP                  RR4      TP                  n        TP                  R4      TP                  n        TP                  R4      TP                  n        TP                  R4      TP                  n        TP                  R4      TP                  n         TP                  R4      TP                  n!        TP                  R4      TP                  n"        TP                  R4      ;p'       d+   \F        PH                  ! T\J        4      TP                  n&        \N        PP                  ! TP                  R4      ;'       g    TP                  R4      ;'       g    / 4      Tn)        TP                  P<                  TP                  P:                  8X  d   RTP                  n        TPT                  eL   \W        T P                  TPT                  4      '       d&   TPT                  TPX                  PZ                  n.        TP                  P2                  '       d   RTP                  n/        T\`        8X  d9   T P                  Pb                  TP                  n         R TP                  n        R# R#   \         d(   pT P                  P                  RT4        Rp?R# Rp?ii ; iu upi )!zRestore repository.Nr   z4<HacsData async_restore_repository> duplicate IDs %sr   description 	downloadslast_updatedetag_releasesopen_issuesetag_repositoryr   domainstargazers_countstarslast_release_tagreleasesFrU   rl   selected_tag	show_betalast_version
prereleaselast_commitrR   installed_commitmanifest_namerS   rT   rQ   T)2rm   r   r?   get_by_full_name	get_by_idset_repository_id
ValueErrorr"   warningrA   r   r   r   r   r5   	generatorr   r   r   r   r   r   r   r   last_releaserU   rl   r   r   r   r   r   rY   r   r   r   fromtimestampr   rS   r   	from_dictrQ   	localpathr   r#   rr   localfirst_installr	   version)r$   r   r   rH   r   r}   topicrS   s   &&&     r   ry   !HacsData.async_restore_repository  s6    -1
'++K8898//@@KJ//99%@J	II""44ZG #2"5"5i"D
&5&9&9-&L
#$3$7$7Q$G
!'6':':>1'M
$99%%%,;,?,?,PJOO)*9*=*=mQ*OJOO'*9*=*=>O*P
'.228R@"
@eQ]D]EE@"

 "1!4!4X!>
+:+>+>,
 ,- ,-  !, 	( ,;+>+>?Q+R
(#2#6#6z5#I
 $3$7$7U$K
!-11%?
'6':':>'J
$$3$7$7U$K
!'6':':>'J
$%4%8%8%F
"&5&9&9-&H
#,;,?,?@S,T
)+:+>+>?Q+R
((7(;(;O(L
%*..~>><>+3+A+A,PS+TJOO()5)?)?
+__/B/BCX/Y__]_*

& ??%%)E)EE)-JOO&+		:CWCW0X0X,6,@,@J##)??$$$,1JOO)&&04		0A0AJOO-(,JOO% 'e  	KK VXab	"
s$   9%U =VVV*VV)r#   r   r"   )N)F)__name__
__module____qualname____firstlineno____doc__r%   r+   r)   r;   r:   r   rD   rL   r   rx   ry   __static_attributes__r   r    r   r   r   :   sk    +4(
0Z 5 5& _ _,M^'. @- @-r    r   rl   F)r   )r   r   )rB   r   )r   r   )r   N)r       )r   N)hideF)r   r   )r   r   )archivedF)config_flowF)default_branchN)r   F)r   N)rU   F)r   N)r   N)r   N)r   r   )r   N)r   F)r   N)r   F)"r   
__future__r   r   r   r   typingr   homeassistant.corer   homeassistant.exceptionsr   baser   constr	   enumsr
   r   repositories.baser   r   r   r"   r   rr   r   storer   r   re   rW   rV   r   r   r    r   <module>r      s     "  "  ' 7  & 9 J J   = 
 .OrN1   '?rB ' #&I- I-r    