+
    iB  c                   s    ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
HtHtHtHtHt ^RIHtHt ^RIHtHtHt ^RIHtHtHtHt ]P8                  ! ]4      t ! R R]
4      t ! R	 R
]4      t R# )i    N)defaultdict)DictList
NamedTupleOptionalSetTupleTypeUnion)AsyncChannelChannelError)JsonList
JsonObjectget_int)SAMPLERSSampleDescriptionSamplerSamplesc                   s,   a  ] tR t^t o V 3R ltRtV tR# )
MetricInfoc                sB   < V ^8  d   Qh/ S[ S[,          ;R&   S[;R&   # )   derivedesc)r   strr   Zformat__classdict__   "=/usr/lib/python3.14/site-packages/cockpit/channels/metrics.py__annotate__ZMetricInfo.__annotate__   s     SM 
      N)__name__
__module____qualname____firstlineno____annotate_func____static_attributes____classdictcell__r      @r   r   r      s      r   r   c                   s   a  ] tR t^t o RtR.tRtRtRt^ t	^ t
]V 3R lR l4       tV 3R lR ltV 3R	 lR
 ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R ltRtV tR# )InternalMetricsChannelZmetrics1N  Tc                s   < V ^8  d   QhRR/# )r   returnNr   r   r   r   r   #InternalMetricsChannel.__annotate__(   s     w w wr   c                s    V P                   f=   \         UUu/ uF"  qP                   F  q"P                  W3bK  	  K$  	  uppV n         R # R # u uppi N)samplers_cacher   Zdescriptionsname)clssamplerr      &  r   ensure_samplersZ&InternalMetricsChannel.ensure_samplers'   sD    %LT!vHauauY]))g_"<au)H!vC &!vs   (Ac                $   < V ^8  d   QhRS[ RR/# r   optionsr)   Nr   r   r   r   r   r*   ,   s     "; ";Z ";D ";r   c           	     s   \         P                  R WP                  4       \        VRV P                  4      pV^ 8:  g   V\
        P                  8  d   \        RRV 2R7      hW n        VP                  R4      p\        V\        4      '       d   \        V4      ^ 8X  d$   \         P                  RV4       \        RRR7      h\        4       pV F  pVP                  R4      pVP                  R	4      pVP                  R
4      p V P                  V,          w  rT'       d0   YzP                   8w  d    \        RT RT
P                    RT 2R7      hTP#                  T	4       T P$                  P'                  \)        YR7      4       K  	  V Uu0 uF	  q! 4       kK  	  upV n        R#   \         d-   p\         P                  RT4       \        RRT 2R7      ThRp?ii ; iu upi )z&metrics internal open: %s, channel: %sintervalzprotocol-errorzinvalid "interval" value: )Zmessagemetricszinvalid "metrics" value: %sz5invalid "metrics" option was specified (not an array)r-   unitsr   zunsupported metric: %sznot-supportedzunsupported metric: Nz has units z, not )r   r   )loggerZdebugchannelr   r6   sysZmaxsizer
   getZ
isinstancelistZlenZerrorsetr,   ZKeyErrorr8   Zaddr7   appendr   samplers)selfr4   r6   r7   Zsampler_classesZmetricr-   r8   r   r/   r   Zexcr.   s   &&           r   parse_optionsZ$InternalMetricsChannel.parse_options,   s   =wU7J>q=Hs{{2/;UV^U_9`aa ++i('4((CLA,=LL6@/9pqq %F::f%DJJw'EZZ)Fd $ 3 3D 9
 **,"?tfKPTPZPZ|[abgah<ijj(LL
& DE! $ +::/3/:  d5t<"?>RSWRX<YZ`ccd ;s   F*G$*G!5'GG!c                s*   < V ^8  d   QhRS[ RS[RR/# )r   samples	timestampr)   N)r   floatr   r   r   r   r*   P   s"       U t r   c                s   . pV P                    EF  pVP                  P                  '       d   VP                  R VP                  P                  RVP                  P
                  R\        WP                  P                  ,          P                  4       4      RVP                  P                  /4       K  VP                  R VP                  P                  RVP                  RVP                  P
                  RVP                  P                  /4       EK
  	  \        \        P                  ! 4       4      R,          pV P                  RV P                  VR,          WSR7       RV n        R	# )
r-   r8   	instances	semanticsr   r(   internal)sourcer6   rD   nowr7   FN)r7   r   	instancedr?   r-   r8   r=   keysrG   r   inttimeZ	send_jsonr6   	need_meta)rA   rC   rD   r7   
metricinforJ   s   &&&   r   	send_metaZ InternalMetricsChannel.send_metaP   s   ,,J(((JOO00Z__22goo.B.B&C&H&H&J!K!:!:	   JOO00j//Z__22!:!:	   '  $))+%j4==IX\L\ 	 	1r   c                s    < V ^8  d   QhRS[ /# )r   r)   r   r   r   r   r   r*   g   s       r   c                sl    \        \        4      pV P                   F  pVP                  V4       K  	  V# r+   )r    dictr@   sample)rA   rC   r/   r0   r   rT   ZInternalMetricsChannel.sampleg   s+    &t,}}GNN7# %r   c                sR   < V ^8  d   QhRS[ RS[S[ ,          RS[S[ S[3,          /# )r   value	old_valuer)   )rE   r   r   boolr   r   r   r   r*   m   s3      5 Xe_ QVW\^bWbQc r   c                sb    Ve+   W,
          V P                   V P                  ,
          ,          # R# )NF)next_timestamplast_timestamp)rA   rU   rV   s   &&&r   calculate_sample_rateZ,InternalMetricsChannel.calculate_sample_ratem   s*     %$*=*=@S@S*STTr   c                s*   < V ^8  d   QhRS[ RS[ RR/# )r   rC   last_samplesr)   NrR   r   r   r   r   r*   s   s"     '+ '+G '+7 '+t '+r   c           
     s    . p\         P                   ! 4       pW@n        V P                   EF  pWP                  P                  ,          pVP                  P
                  '       d   W%P                  P                  ,          pVP                  4       VP                  4       8w  d   R V n        VP                  R8X  d^   . pVP                  4        F4  w  rVP                  V P                  WP                  V	4      4      4       K6  	  VP                  V4       K  VP                  \        VP                  4       4      4       EK  VP                  VP                  P                  4      pVP                  R8X  d$   VP                  V P                  Wg4      4       EKt  VP                  V4       EK  	  V P                  '       d   V P                  W4       V P                  V n        V P#                  \$        P&                  ! V.4      4       R# )TZrateN)rN   rX   r7   r   r-   rK   rL   rO   r   Zitemsr?   rZ   r<   r=   ZvaluesrQ   rY   Z	send_textjsonZdumps)rA   rC   r[   ZdatarD   rP   rU   rV   rF   ZkeyZvals   &&&        r   send_updatesZ#InternalMetricsChannel.send_updatess   sn   GIIIK	',,JOO001E(((()=)=>	
 ::<9>>#33%)DN$$.DFI$)KKM!(()C)CCWZI[)\] %2 KK	*KKU\\^ 45(,,Z__-A-AB	 $$.KK : :5 LMKK&9 '< >>>NN7."11tzz4&)*r   c                r2   r3   r5   r   r   r   r   r*      s     6 6 6 6r   c                sl  "   . V n         \        4       V n        \        P	                  4        V P                  V4       V P                  4        \        \        4      p V P                  4       pV P                  W24       Tp\        P                  ! V P                  R,          4      G Rj  xL
  KU   L5i)Tr(   N)r7   r>   r@   r'   r1   rB   Zreadyr    rS   rT   r]   asyncioZsleepr6   )rA   r4   r[   rC   s   &&  r   runZInternalMetricsChannel.run   s~     ..07#

 +D 1kkmGg4"L-- 4555s   B)B4+B2,B4c                s   < V ^8  d   Qh/ S[ S[,          ;R&   S[S[,          ;R&   S[S[S[S[S[S[,          S[	3,          3,          ,          ;R&   S[
;R&   S[;R&   S[;R&   S[;R&   # )r   r7   r@   r,   r6   rO   rY   rX   )r   r   r   r   r   r   r   r   r   r   rM   rW   rE   r   r   r   r   r*      s      *	 
 'l  T#uT']<M-M'N"NOPW         r   )r6   rY   r7   rO   rX   r@   )rI   rH   )r   r   r    r!   ZpayloadZrestrictionsr,   r6   rO   rY   rX   Zclassmethodr1   rB   rQ   rT   rZ   r]   r_   r"   r#   r$   r%   r&   r   r'   r'      s     G*+L TXNHINNw w"; ";H .  '+ '+R6 6E  r   r'   )!r^   r\   Zloggingr;   rN   Zcollectionsr    Ztypingr   r   r   r   r   r   r   r   r:   r	   r
   Zjsonutilr   r   r   rC   r   r   r   r   Z	getLoggerr   r9   r   r'   r   r   r   <module>r`      s[       
  # L L L 0 4 4 C C			8	$ 
P6\ P6r   