+
    "i                        R t ^ RIHt ^ RIt^ RIHt ^ RIHtHt ^ RI	t
^RIHtHt ^RIHt ^RIHtHtHt R]R	]/t ! R
 R4      tR# )HACS Data client.)annotationsN)Any)ClientSessionClientTimeout)HacsExceptionHacsNotModifiedException)LOGGER)(VALIDATE_FETCHED_V2_CRITICAL_REPO_SCHEMA'VALIDATE_FETCHED_V2_REMOVED_REPO_SCHEMAVALIDATE_FETCHED_V2_REPO_DATAcriticalremovedc                  N    ] tR t^tRtR R ltRR R lltR R ltR	 R
 ltRt	R# )HacsDataClientr   c               $    V ^8  d   QhRRRRRR/# )   sessionr   client_namestrreturnNone )formats   "-/config/custom_components/hacs/data_client.py__annotate__HacsDataClient.__annotate__   s!          C  D      c                ,    W n         / V n        Wn        R# )zInitialize.N_client_name_etags_session)selfr   r   s   &&&r   __init__HacsDataClient.__init__   s    'r   Nc               $    V ^8  d   QhRRRRRR/# )r   filenamer   section
str | Noner   z%dict[str, dict[str, Any]] | list[str]r   )r   s   "r   r   r   "   s(     % %% % 
/	%r   c                  "   RP                  W!3 Uu. uF
  q3f   K  VNK  	  up4      p V P                  P                  RV 2\        ^<R7      RV P                  RV P
                  P                  VR4      /R7      G Rj  xL
 pVP                  R	8X  d   \        4       RhVP                  4        TP                  P                  R4      T P
                  T&   TP                  4       G Rj  xL
 # u upi  Lu  \         d    h \         d    \        R
4      Rh\         d   p\        RT 24      ThRp?ii ; i LN5i)zDo request./Nzhttps://data-v2.hacs.xyz/)totalz
User-AgentzIf-None-Match )timeoutheadersi0  zTimeout of 60s reachedzError fetching data from HACS: etag)joinr"   getr   r    r!   statusr   raise_for_statusTimeoutErrorr   	Exceptionr/   json)r#   r'   r(   vendpointresponse	exceptions   &&&    r   _do_requestHacsDataClient._do_request"   s6     88(;M(;1QQ(;MN	^!]]..+H:6%B/ $"3"3#T[[__Xr%B /  H #%.0d:%%' !) 0 0 4 4V <H]]_$$- N ( 	 	D 89tC 	^"A) MNT]]	^
 %sb   D>C2C2D>AC9 C70C9 2;D>-D<.	D>7C9 9D9D9$D9%D44D99D>c               $    V ^8  d   QhRRRRRR/# )r   r(   r)   validateboolr   zdict[str, dict[str, Any]]r   )r   s   "r   r   r   @   s"      j t Ha r   c          	     ~  "   V P                  RVR7      G Rj  xL
 pV'       g   V# V\        9   d4   / pVP                  4        F  w  rV \        V,          ! V4      WE&   K  	  V# \        P                  V4      ;p'       g   \        RV 24      h. pV F  p VP                  V! V4      4       K  	  V#  L  \        P                   d4   p\
        P                  ! RTP                  RT4      T4        Rp?K  Rp?ii ; i  \        P                   d#   p\
        P                  ! RY4        Rp?K  Rp?ii ; i5i)z	Get data.z	data.jsonr'   r(   NzGot invalid data for %s (%s)	full_namezDo not know how to validate )r<   r   itemsvolInvalidr	   infor2   CRITICAL_REMOVED_VALIDATORS
ValueErrorappend)	r#   r(   r?   data	validatedkey	repo_datar;   	validators	   &&$      r   get_dataHacsDataClient.get_data@   s"    %%{G%LLK33I"&**,%B7%KI%VIN #/ 8<<WEE	E;G9EFF	I  9!56  9 M {{ KK6	kSV8WYb 	 ;; :GOsn   D=B6D=$D=B8 "D=D=D0D=8D (C;5D=;D  D=D:D5/D=5D::D=c                    V ^8  d   QhRRRR/# )r   r(   r   r   z	list[str]r   )r   s   "r   r   r   `   s     U Uc Ui Ur   c                D   "   V P                  RVR7      G Rj  xL
 #  L5i)zGet repositories.zrepositories.jsonrB   N)r<   )r#   r(   s   &&r   get_repositoriesHacsDataClient.get_repositories`   s"     %%/BG%TTTTs     r   )N)
__name__
__module____qualname____firstlineno____doc__r$   r<   rP   rT   __static_attributes__r   r   r   r   r      s!     %<@U Ur   r   )rZ   
__future__r   asynciotypingr   aiohttpr   r   
voluptuousrE   
exceptionsr   r   utils.loggerr	   utils.validater
   r   r   rH   r   r   r   r   <module>rd      sK     "   0  ?    86 IU IUr   