ó
    �®žj  ã                   óÈ   • S SK r S SKJrJr  S SKJr  S SKJrJr  S SKr	S SK
Jr  S SKJr  \(       a  S SKJr   " S S	\\5      r " S
 S\5      r " S S5      r " S S5      rg)é    N)ÚdatetimeÚtimezone)ÚEnum)ÚTYPE_CHECKINGÚList)Ú	BaseModel)Úsettings)ÚConversionResultc                   ó   • \ rS rSrSrSrSrg)ÚProfilingScopeé   ÚpageÚdocument© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚPAGEÚDOCUMENTÚ__static_attributes__r   ó    ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/utils/profiling.pyr   r      s   † Ø€DØƒHr   r   c                   ó    • \ rS rSr% \\S'   Sr\\S'   / r\	\
   \S'   / r\	\   \S'   S\
4S jrS\
4S	 jrS\
4S
 jrS\
4S jrS\
S\
4S jrSrg)ÚProfilingItemé   Úscoper   ÚcountÚtimesÚstart_timestampsÚreturnc                 óB   • [         R                  " U R                  5      $ ©N)ÚnpÚsumr   ©Úselfs    r   ÚtotalÚProfilingItem.total   ó   € Ü�vŠv�d—j‘jÓ!Ð!r   c                 óB   • [         R                  " U R                  5      $ r#   )r$   Úaverager   r&   s    r   ÚavgÚProfilingItem.avg    s   € Ü�zŠz˜$Ÿ*™*Ó%Ð%r   c                 óB   • [         R                  " U R                  5      $ r#   )r$   Ústdr   r&   s    r   r0   ÚProfilingItem.std#   r*   r   c                 óB   • [         R                  " U R                  5      $ r#   )r$   Úmeanr   r&   s    r   r3   ÚProfilingItem.mean&   s   € Ü�wŠw�t—z‘zÓ"Ð"r   Úpercc                 óD   • [         R                  " U R                  U5      $ r#   )r$   Ú
percentiler   )r'   r5   s     r   r7   ÚProfilingItem.percentile)   s   € Ü�}Š}˜TŸZ™Z¨Ó.Ð.r   r   N)r   r   r   r   r   Ú__annotations__r   Úintr   r   Úfloatr    r   r(   r-   r0   r3   r7   r   r   r   r   r   r      sq   ‡ ØÓØ€Eˆ3ƒNØ€Eˆ4�‰;ÓØ')Ð�d˜8‘nÓ)ð"�uô "ð&�Uô &ð"�Uô "ð#�eô #ð/˜uð /¨÷ /r   r   c                   óP   • \ rS rSr\R
                  4SSS\S\4S jjrS rS r	S	r
g
)ÚTimeRecorderé-   Úconv_resr
   Úkeyr   c                 ó¦   • [         R                  R                  (       a2  X!R                  ;  a  [	        US9UR                  U'   Xl        X l        g g )N©r   )r	   ÚdebugÚprofile_pipeline_timingsÚtimingsr   r?   r@   ©r'   r?   r@   r   s       r   Ú__init__ÚTimeRecorder.__init__.   sA   € ô �>‰>×2×2Ø×*Ñ*Ó*Ü(5¸EÑ(B�× Ñ  Ñ%Ø$ŒMØ�Hð	 3r   c                 ó4  • [         R                  R                  (       ax  [        R                  " 5       U l        U R                  R                  U R                     R                  R                  [        R                  " [        R                  5      5        U $ r#   )r	   rC   rD   ÚtimeÚ	monotonicÚstartr?   rE   r@   r    Úappendr   Únowr   Úutcr&   s    r   Ú	__enter__ÚTimeRecorder.__enter__:   s[   € Ü�>‰>×2×2ÜŸšÓ)ˆDŒJØ�M‰M×!Ñ! $§(¡(Ñ+×<Ñ<×CÑCÜ—’œXŸ\™\Ó*ôð ˆr   c                 ól  • [         R                  R                  (       a•  [        R                  " 5       U R
                  -
  nU R                  R                  U R                     R                  R                  U5        U R                  R                  U R                     =R                  S-  sl        g g )Né   )r	   rC   rD   rJ   rK   rL   r?   rE   r@   r   rM   r   )r'   ÚargsÚelapseds      r   Ú__exit__ÚTimeRecorder.__exit__B   st   € Ü�>‰>×2×2Ü—n’nÓ&¨¯©Ñ3ˆGØ�M‰M×!Ñ! $§(¡(Ñ+×1Ñ1×8Ñ8¸ÔAØ�M‰M×!Ñ! $§(¡(Ñ+×1Ò1°QÑ6Ö1ð 3r   )r?   r@   rL   N)r   r   r   r   r   r   ÚstrrG   rP   rV   r   r   r   r   r=   r=   -   s8   † ð
 !/× 3Ñ 3ñ	
à$ð
ð ð
ð õ	
òõ7r   r=   c                   óx   • \ rS rSrSr\R                  4SSS\S\4S jjrSS
 jr	SS jr
S\SS	4S jrSS jrSrg	)ÚTimeIntervalRecorderéI   zGAccumulates several disjoint time intervals into a single timing sampler?   r
   r@   r   c                 ó   • [         R                  R                  U l        U R                  (       aN  X!R                  ;  a  [        US9UR                  U'   Xl        X l        SU l        S U l	        S U l
        SU l        g g )NrB   g        F)r	   rC   rD   Ú_enabledrE   r   r?   r@   Ú_totalÚ_running_sinceÚ	_start_tsÚ_closedrF   s       r   rG   ÚTimeIntervalRecorder.__init__L   si   € ô !Ÿ™×?Ñ?ˆŒØ�=�=Ø×*Ñ*Ó*Ü(5¸EÑ(B�× Ñ  Ñ%Ø$ŒMØŒHØ!$ˆDŒKØ04ˆDÔØ.2ˆDŒNØ ˆD�Lð r   r!   Nc                 ó0  • U R                   (       d  gU R                  (       a  [        S5      eU R                  b  [        S5      eU R                  c)  [
        R                  " [        R                  5      U l        [        R                  " 5       U l        g)z3Start (or restart) the clock for the next interval.Nz0resume() called on a closed TimeIntervalRecorderz5resume() called while the recorder is already running)r]   ra   ÚRuntimeErrorr_   r`   r   rN   r   rO   rJ   rK   r&   s    r   ÚresumeÚTimeIntervalRecorder.resume]   sd   € à�}�}ØØ�<�<ÜÐQÓRÐRØ×ÑÑ*ÜÐVÓWÐWØ�>‰>Ñ!Ü%Ÿ\š\¬(¯,©,Ó7ˆDŒNÜ"ŸnšnÓ.ˆÕr   c                 ó  • U R                   (       d  gU R                  (       a  [        S5      eU R                  c  [        S5      eU =R                  [
        R                  " 5       U R                  -
  -  sl        SU l        g)z@Stop the clock and bank the elapsed span into the running total.Nz/pause() called on a closed TimeIntervalRecorderz*pause() called without a matching resume())r]   ra   rd   r_   r^   rJ   rK   r&   s    r   ÚpauseÚTimeIntervalRecorder.pausei   s_   € à�}�}ØØ�<�<ÜÐPÓQÐQØ×ÑÑ&ÜÐKÓLÐLØ�Š”t—~’~Ó'¨$×*=Ñ*=Ñ=Ñ=�Ø"ˆÕr   Úsecsc                 óŠ   • U R                   (       d  gU R                  (       a  [        S5      eU =R                  U-  sl        g)zABank a precomputed, non-negative duration into the running total.Nz-add() called on a closed TimeIntervalRecorder)r]   ra   rd   r^   )r'   rj   s     r   ÚaddÚTimeIntervalRecorder.addt   s-   € à�}�}ØØ�<�<ÜÐNÓOÐOØ�Š�tÑŽr   c                 óø  • U R                   (       d  gU R                  (       a  [        S5      eU R                  b  [        S5      eU R                  R
                  U R                     nUR                  R                  U R                  =(       d$    [        R                  " [        R                  5      5        UR                  R                  U R                  5        U=R                   S-  sl        SU l        g)zFFlush the accumulated total as one sample and invalidate the recorder.Nz8close() called on an already closed TimeIntervalRecorderz2close() called while the recorder is still runningrS   T)r]   ra   rd   r_   r?   rE   r@   r    rM   r`   r   rN   r   rO   r   r^   r   )r'   Úitems     r   ÚcloseÚTimeIntervalRecorder.close|   s©   € à�}�}ØØ�<�<ÜØJóð ð ×ÑÑ*ÜÐSÓTÐTØ�}‰}×$Ñ$ T§X¡XÑ.ˆØ×Ñ×$Ñ$ T§^¡^×%Q´x·|²|ÄHÇLÁLÓ7QÔRØ�
‰
×Ñ˜$Ÿ+™+Ô&Ø�
Š
�a‰�
Øˆ�r   )ra   r]   r_   r`   r^   r?   r@   )r!   N)r   r   r   r   Ú__doc__r   r   rX   rG   re   rh   r;   rl   rp   r   r   r   r   rZ   rZ   I   sS   † ÙRð !/× 3Ñ 3ñ	!à$ð!ð ð!ð õ	!ô"
/ô	#ð˜ð  $ô ÷r   rZ   )rJ   r   r   Úenumr   Útypingr   r   Únumpyr$   Úpydanticr   Údocling.datamodel.settingsr	   Údocling.datamodel.documentr
   rX   r   r   r=   rZ   r   r   r   Ú<module>ry      sR   ðó ß 'Ý ß &ã Ý å /æÝ;ô�S˜$ô ô
/�Iô /÷,7ñ 7÷8Aò Ar   