
    7 fL                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlZddlmZ ddlmZ dd	lmZ e	rdd
lmZ ddlmZ  ej        e          Z G d de          Zd dZd!dZd"dZd#dZd$dZdS )%z#Measure document reading durations.    )annotationsN)islice)
itemgetter)TYPE_CHECKINGcast)Domain)__)logging)nodes)Sphinxc                  N    e Zd ZdZdZedd            ZddZdd	ZddZ	ddZ
dS )DurationDomainz,A domain for durations of Sphinx processing.durationreturndict[str, float]c                8    | j                             di           S )Nreading_durations)data
setdefaultselfs    I/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/ext/duration.pyr   z DurationDomain.reading_durations   s    y##$7<<<    floatNonec                .    || j         | j        j        <   d S N)r   envdocname)r   r   s     r   note_reading_durationz$DurationDomain.note_reading_duration   s    3;tx/000r   c                8    | j                                          d S r   )r   clearr   s    r   r"   zDurationDomain.clear"   s    $$&&&&&r   r   strc                <    | j                             |d            d S r   )r   pop)r   r   s     r   	clear_doczDurationDomain.clear_doc%   s!    ""7D11111r   docnames	list[str]	otherdatac                V    |                                 D ]\  }}||v r
|| j        |<   d S r   )itemsr   )r   r'   r)   r   r   s        r   merge_domaindatazDurationDomain.merge_domaindata(   sC    !*!2!2 	; 	;GX(""2:&w/	; 	;r   N)r   r   )r   r   r   r   )r   r   )r   r#   r   r   )r'   r(   r)   r   r   r   )__name__
__module____qualname____doc__namepropertyr   r    r"   r&   r,    r   r   r   r      s        66D= = = X=< < < <' ' ' '2 2 2 2; ; ; ; ; ;r   r   appr   r   r   c                    t          t          | j                            d                    }|                                 dS )z\Initialize DurationDomain on bootstrap.

    This clears the results of the last build.
    r   N)r   r   r   
get_domainr"   )r4   domains     r   on_builder_initedr8   .   s4    
 .#'"4"4Z"@"@AAF
LLNNNNNr   r   r#   contentr(   c                F    t          j                    | j        j        d<   dS )z"Start to measure reading duration.
started_atN)time	monotonicr   	temp_data)r4   r   r9   s      r   on_source_readr?   7   s    &*n&6&6CGl###r   doctreenodes.documentc                    | j         j        d         }t          j                    |z
  }t	          t
          | j                             d                    }|                    |           dS )zRecord a reading duration.r;   r   N)r   r>   r<   r=   r   r   r6   r    )r4   r@   r;   r   r7   s        r   on_doctree_readrC   <   s\    "<0J~*,H.#'"4"4Z"@"@AAF
  *****r   error	Exceptionc                   t          t          | j                            d                    }|j        sdS t          |j                                        t          d          d          }t          	                    d           t          	                    t          d                     t          |d          D ]%\  }}t          	                    |d	d
|            &dS )z.Display duration ranking on the current build.r   N   T)keyreverse zH====================== slowest reading durations =======================   z.3f )r   r   r   r6   r   sortedr+   r   loggerinfor	   r   )r4   rD   r7   	durationsr   ds         r   on_build_finishedrR   D   s    .#'"4"4Z"@"@AAF# v/5577Z]]TXYYYI
KKOOO
KK]^^___Y** * *
q(((w(())))* *r   dict[str, bool | str]c                .   |                      t                     |                     dt                     |                     dt                     |                     dt
                     |                     dt                     t          j        dddS )Nzbuilder-initedzsource-readzdoctree-readzbuild-finishedT)versionparallel_read_safeparallel_write_safe)	
add_domainr   connectr8   r?   rC   rR   sphinx__display_version__)r4   s    r   setupr\   Q   s    NN>"""KK "3444KK~...KK000KK "3444 -"#  r   )r4   r   r   r   )r4   r   r   r#   r9   r(   r   r   )r4   r   r@   rA   r   r   )r4   r   rD   rE   r   r   )r4   r   r   rS   )r0   
__future__r   r<   	itertoolsr   operatorr   typingr   r   rZ   sphinx.domainsr   sphinx.localer	   sphinx.utilr
   docutilsr   sphinx.applicationr   	getLoggerr-   rN   r   r8   r?   rC   rR   r\   r3   r   r   <module>rg      sw   ) ) " " " " " "              & & & & & & & &  ! ! ! ! ! !             *))))))		8	$	$; ; ; ; ;V ; ; ;.   7 7 7 7
+ + + +
* 
* 
* 
*     r   