
    O&i/                     P   d Z ddlmZmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
m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 ddlmZ  ej        e          Z G d de          ZdeddfdZdedede
e         ddfdZdedej        ddfdZdede ddfdZ!dede	eef         fdZ"dS )z'Measure durations of Sphinx processing.    )datetime	timedelta)islice)
itemgetter)AnyDictListcast)nodesN)Sphinx)Domain)__)loggingc                       e Zd ZdZdZedeeef         fd            Z	deddfdZ
ddZdeddfd	Zd
ee         deeef         ddfdZdS )DurationDomainz,A domain for durations of Sphinx processing.durationreturnc                 8    | j                             di           S )Nreading_durations)data
setdefaultselfs    `/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/ext/duration.pyr   z DurationDomain.reading_durations   s    y##$7<<<    Nc                 .    || 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   c                 <    | j                             |d            d S r   )r   pop)r   r   s     r   	clear_doczDurationDomain.clear_doc!   s!    ""7D11111r   docnames	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   )r   N)__name__
__module____qualname____doc__namepropertyr   strr   r   r    r"   r%   r	   r*    r   r   r   r      s        66D=4Y#7 = = = X=<i <D < < < <' ' ' '2 2 2 2 2 2;c ;tCN?S ;X\ ; ; ; ; ; ;r   r   appr   c                     t          t          | j                            d                    }|                                 dS )zTInitialize DurationDomain on bootstrap.

    This clears results of last build.
    r   N)r
   r   r   
get_domainr"   )r3   domains     r   on_builder_initedr7   *   s4    
 .#'"4"4Z"@"@AAF
LLNNNNNr   r   contentc                 F    t          j                    | j        j        d<   dS )z"Start to measure reading duration.
started_atN)r   nowr   	temp_data)r3   r   r8   s      r   on_source_readr=   3   s    &.lnnCGl###r   doctreec                     | j         j                            d          }t          j                    |z
  }t          t          | j                             d                    }|                    |           dS )zRecord a reading duration.r:   r   N)	r   r<   getr   r;   r
   r   r5   r    )r3   r>   r:   r   r6   s        r   on_doctree_readrA   8   sc    "&&|44J|~~
*H.#'"4"4Z"@"@AAF
  *****r   errorc                    t          t          | j                            d                    }t	          |j                                        t          d          d          }|sdS t          	                    d           t          	                    t          d                     t          |d          D ]/\  }}t          	                    d	|j        |j        d
z  |           0dS )z*Display duration ranking on current build.r      T)keyreverseN zH====================== slowest reading durations =======================   z
%d.%03d %si  )r
   r   r   r5   sortedr   r)   r   loggerinfor   r   secondsmicroseconds)r3   rB   r6   	durationsr   ds         r   on_build_finishedrP   @   s    .#'"4"4Z"@"@AAFv/5577Z]]TXYYYI 
KKOOO
KK]^^___Y** M M
L!)Q^d-BGLLLLM Mr   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   connectr7   r=   rA   rP   sphinx__display_version__)r3   s    r   setuprY   M   s    NN>"""KK "3444KK~...KK000KK "3444 -"#  r   )#r.   r   r   	itertoolsr   operatorr   typingr   r   r	   r
   docutilsr   rW   sphinx.applicationr   sphinx.domainsr   sphinx.localer   sphinx.utilr   	getLoggerr+   rJ   r   r7   r1   r=   documentrA   	ExceptionrP   rY   r2   r   r   <module>re      s   - - ( ( ( ( ( ( ( (             ( ( ( ( ( ( ( ( ( ( ( (        % % % % % % ! ! ! ! ! !            		8	$	$; ; ; ; ;V ; ; ;.6 d    5 5 5tCy 5T 5 5 5 5
+ +%. +T + + + +
M6 
M) 
M 
M 
M 
M 
Mv $sCx.      r   