
    Oj#                        d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
mZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZ dZdZ ej0                         ZddZ ed       G d d             Z G d d      Zy)    )annotationsN)Callable)fields	dataclass)Literal	TypeGuard   )GroupingUpdateTranscriptFragmentTranscriptGrouperOptions   )ServerEvent)OpenAIError)TranscriptGroupingil    c                   t        |       D ]}  }|j                  dk(  rt        | |j                        }t        |t              s(t        |t
        t        f      rd|cxk  r
t        k  r_n t        |j                   dt                | S )Nadditional_acknowledgmentsr   z' must be a finite number between 0 and )	r   namegetattr
isinstanceboolintfloatMAX_TIMEOUT_MSr   )optionsfieldvalues      x/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/openai/lib/live/_transcript_state.pyvalidated_optionsr      s     f::55,eT"*US%L*IQRV[Qm_mQm,STbScdeef N    T)frozenc                  "    e Zd ZU ded<   ded<   y)_ReceivedFragmentr   fragmentr   received_atN)__name__
__module____qualname____annotations__ r   r   r"   r"      s      r   r"   c                  b    e Zd ZdZddZddZedd       ZddZddZ	ddZ
ddZdd	Zdd
Zy)TranscriptStatezSClock-driven state shared by the sync and async adapters; callers serialize access.c                    || _         t        t        |      dt        t                     | _        t               | _        g | _        d | _	        d | _
        d| _        y )Nsegment_F)_nowr   r   next_GROUPER_IDS	_groupingset	_seen_ids_pending_anchor_last_start_msclosed)selfr   nows      r   __init__zTranscriptState.__init__&   sR    	+,=g,F(SWXdSeRfHgh#&51315*.r   c                  
 | j                   rt        d      |j                  dk(  r| j                  d      S |j                  dvry t	        |dd       }t	        |dd       }t	        |dd       }t	        |dd       }|j                  d	k(  rd
nd
t        |t              r9|r7t        |t              r'| j                  |      r| j                  |      r||k  rt        d      || j                  v ry | j                  j                  |       |sy t        
|t        |      t        |            }t        || j                               }g }| j                  r| j                  d   j                  nd }	|	x|	j                   |k(  ri|	j"                  |k(  rZ| j                  j%                  |       t'        
fd| j                  D              r|j)                  | j+                                |S |j)                  | j+                                | j,                  j.                  
k(  r#|j)                  | j1                  |g             |S | j                  j%                  |       |S )Nz7Cannot push events after closing the transcript grouperzsession.closedsession_closed)session.input_transcript.deltazsession.output_transcript.deltaevent_iddeltastart_msend_msr=   user	assistantz\Invalid public Live transcript delta: expected an ID, text, and a nonnegative timed intervalr   c              3  P   K   | ]  }|j                   j                  k7    y wN)r#   speaker).0partrF   s     r   	<genexpr>z'TranscriptState.push.<locals>.<genexpr>U   s      N4==((G3Ns   #&)r7   r   typefinishr   r   str_valid_timestampr3   addr   r   r"   r.   r4   r#   r@   rA   appendanyextend_flush_pendingr1   rF   _commit)r8   eventr>   textr@   rA   r#   receivedupdatespendingrF   s             @r   pushzTranscriptState.push/   s   ;;WXX::));;/00::bb 5*d3ugt,5*d3$/jj$DDF+ 	 8S)dC(((2((0 n  t~~%8$%gtS]CKP$Xtyy{;(*/3}}$--"++$7#3#3x#?GNNV\D\MM  *NNNt2245  NN4..01~~%%0t||XJ78  $$X.r   c                    t        | t               xr< t        | t        t        f      xr$ d| cxk  xr	 t        k  nc xr t        |       | k(  S Nr   )r   r   r   r   _MAX_SAFE_INTEGER)r   s    r   rM   z TranscriptState._valid_timestamp_   sO    
 5$'' $53,/$U///$ E
e#		
r   c                   | j                   rg S |dv sJ d| _         | j                         }|j                  | j                  j	                  | j                         |             | j                  j                          |S )N)manualr<   T)r7   rR   rQ   r1   close_source_nowr3   clear)r8   reasonrW   s      r   rK   zTranscriptState.finishj   sm    ;;I5555%%'t~~++D,<,<,>GHr   c                    | j                         }|j                  | j                  j                  | j	                                      |S rE   )rR   rQ   r1   advancer`   )r8   rW   s     r   tickzTranscriptState.tickt   s9    %%'t~~--d.>.>.@ABr   c           	     L   | j                   ry | j                  j                         }| j                  r.| j                  d   j                  dz   | j                         z
  }n||| j                         z
  }ny t        t        t        dt        j                  |                  S )Nr   2   )r7   r1   deadliner4   r$   r.   r`   minr   maxmathceil)r8   rh   delays      r   rm   zTranscriptState.delayy   s    ;;>>**,==MM!$0025		CE!t//11E>3q$))E*:#;<<r   c                z    | j                   y| j                   \  }}|t        d| j                         |z
        z   S r[   )r5   rj   r.   )r8   	source_msr$   s      r   r`   zTranscriptState._source_now   s:    <<!%	;3q$))+";<<<r   c                L    | j                   g c}| _         | j                  |      S rE   )r4   rS   )r8   rX   s     r   rR   zTranscriptState._flush_pending   s#    !%||G$$r   c                4   |sg S |d   j                   }g }| j                  Y|j                  | j                  k  r@|j                  | j                  j                  | j                         d             d | _        |j                  | _        t        | j                  | j                  d   ndgd |D         t        d |D              f| _        |j                  | j                  j                  |D cg c]  }|j                    c}             |S c c}w )Nr   timestamp_resetc              3  H   K   | ]  }|j                   j                    y wrE   )r#   rA   rG   rH   s     r   rI   z*TranscriptState._commit.<locals>.<genexpr>   s     Eq_cdmmFZFZEqs    "c              3  4   K   | ]  }|j                     y wrE   )r$   rt   s     r   rI   z*TranscriptState._commit.<locals>.<genexpr>   s     7T  7s   )
r#   r6   r@   rQ   r1   r_   r`   r5   rj   process)r8   	fragmentsfirstrW   rH   s        r   rS   zTranscriptState._commit   s    I!%%(**u~~@S@S/SNN4>>//0@0@0BDUVWDL#nn4<<#;QrEqgpEqr7Y77
 	t~~--.St}}.STU /Ts   5DN)r   r   r9   zCallable[[], float]returnNone)rT   r   ry   zlist[GroupingUpdate] | None)r   objectry   zTypeGuard[int | float])rb   z#Literal['manual', 'session_closed']ry   list[GroupingUpdate])ry   r|   )ry   z
int | None)ry   r   )rw   zlist[_ReceivedFragment]ry   r|   )r%   r&   r'   __doc__r:   rY   staticmethodrM   rK   re   rm   r`   rR   rS   r)   r   r   r+   r+   #   sB    ].` 
 


==%r   r+   )r   r   ry   r   )
__future__r   rk   	itertoolstypingr   dataclassesr   r   typing_extensionsr   r   _typesr
   r   r   
types.liver   _exceptionsr   _transcript_groupingr   r   r\   countr0   r   r"   r+   r)   r   r   <module>r      sn    "    ) 0 P P % & 4) y  $  
z zr   