
    "|h                    T    d dl mZ d dlZ G d d      Z G d d      Z G d d      Zy)	    )annotationsNc                  &    e Zd ZdddZddZddZy)		Telemetryc                     g | _         || _        y N)_metrics_buffer_size)selfbuffer_sizes     M/var/www/html/test/engine/venv/lib/python3.12/site-packages/pyht/telemetry.py__init__zTelemetry.__init__   s    '    c                    t               }|j                  |       t        | j                        | j                  k\  r| j                  j                  d       | j                  j                  |       |S Nr   )Metricsstartlenr   r	   popappend)r
   	operationmetricss      r   r   zTelemetry.start   sU    )i t}}!2!22MMa W%r   c                    | j                   S r   )r   r
   s    r   r   zTelemetry.metrics   s    }}r   N)i  )r   intr   strreturnr   )r   zlist[Metrics])__name__
__module____qualname__r   r   r    r   r   r   r      s    (r   r   c                  d    e Zd ZdZd ZddZdddZddZddZddZ	ddZ
d	 Zdd
ZddZd Zy)r   a  
      {
        "operation": "tts-request",
        "status": "ok",
        "startTime": 1712937515393,
        "endTime": 1712937515442,
        "duration": 0.679,
        "counters": {
          "chunk": 10,
          "ok": 1,
          "error": 0
        },
        "attributes": {
          "endpoint": [
            "test-0000000000000001.on-prem.play.ht:11045"
          ],
          "text": "This is a test.  This is the second sentence."
        },
        "timers": {
          "time-to-first-audio": {
            "duration": 0.149
          },
          "tts-request": {
            "duration": 0.679
          }
        }
      }
    c                t    d | _         d | _        d | _        d | _        d | _        i | _        i | _        i | _        y r   )r   status
start_timeend_timedurationcounters
attributestimersr   s    r   r   zMetrics.__init__5   s:    r   c                h    || _         t        j                         | _        | j                  |       | S r   )r   timer%   start_timer)r
   r   s     r   r   zMetrics.start?   s)    "))+#r   c                ^    | j                   j                  |d      |z   | j                   |<   | S r   )r(   get)r
   countercounts      r   inczMetrics.incE   s+    !%!2!27A!>!Fgr   c                p    | j                   j                  |t        |            }|j                          | S r   )r*   
setdefaultTimerr   r
   nametimers      r   r-   zMetrics.start_timerI   s*    &&tU4[9r   c                ~    | j                   j                  |      }|t        d| d      |j                          | S )NzTimer not started: .)r*   r/   
ValueErrorfinishr6   s      r   finish_timerzMetrics.finish_timerN   s<    %=24&:;;r   c                8    t        ||      | j                  |<   | S r   )r5   r*   r
   r7   r'   s      r   	set_timerzMetrics.set_timerU   s    !$1Dr   c                \    | j                   j                  |g       j                  |       | S r   )r)   r4   r   )r
   keyvalues      r   r   zMetrics.appendY   s&    ""3+2259r   c                H    | j                  d       | j                  d       y )Nok)r2   r<   r   s    r   	finish_okzMetrics.finish_ok]   s    Dr   c                l    | j                  d       | j                  d|       | j                  d       y )Nerrorzerror.reason)r2   r   r<   )r
   reasons     r   finish_errorzMetrics.finish_errora   s(    NF+Gr   c                    t        j                          }|| _        | j                  || _        || _        || j                  z
  | _        | j
                  j                         D ]  }|j                           y r   )r,   r$   r%   r&   r'   r*   valuesr<   )r
   r$   nowr8   s       r   r<   zMetrics.finishf   sc    iik??"!DOdoo- [['') 	ELLN	r   c                ,    t        | j                        S r   )repr__dict__r   s    r   __repr__zMetrics.__repr__r   s    DMM""r   Nr   )   )r0   r   r1   r   r   r   )r7   r   r   r   )r7   r   r'   floatr   r   )rB   r   rC   r   r   r   )rI   r   )r$   r   )r   r   r    __doc__r   r   r2   r-   r=   r@   r   rF   rJ   r<   rQ   r!   r   r   r   r      s>    :


#r   r   c                  B    e Zd Zd	d
dZd ZddZd ZddZddZddZ	y)r5   c                .    || _         d | _        || _        y r   )r7   
last_startr'   r?   s      r   r   zTimer.__init__w   s    	 r   c                6    t        j                         | _        y r   )r,   perf_counterrW   r   s    r   r   zTimer.start|   s    ++-r   c                .    | xj                   |z  c_         y r   )r'   )r
   r'   s     r   addz	Timer.add   s    !r   c                    | j                   y | xj                  t        j                         | j                   z
  z  c_        d | _         y r   )rW   r'   r,   rY   r   s    r   r<   zTimer.finish   s6    ??"$++-?@r   c                8    | j                    d| j                   S )N:)r7   r'   r   s    r   formatzTimer.format   s    ))Admm_--r   c                "    | j                         S r   )r_   r   s    r   __str__zTimer.__str__   s    {{}r   c                0    t        d| j                  i      S )Nr'   )rO   r'   r   s    r   rQ   zTimer.__repr__   s    Z/00r   N)r   )r7   r   r'   rS   )r'   rS   )r   r   )
r   r   r    r   r   r[   r<   r_   ra   rQ   r!   r   r   r5   r5   v   s%    !
.".1r   r5   )
__future__r   r,   r   r   r5   r!   r   r   <module>rd      s,    "  "\# \#~1 1r   