
    -Phb                    "   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	 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 ddlmZ ddlmZ  G d de          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)Domain)__)logging)Set)	TypedDict)nodes)Sphinxc                      e Zd ZU ded<   dS )_DurationDomainDatadict[str, float]reading_durationsN)__name__
__module____qualname____annotations__     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/ext/duration.pyr   r      s         ++++++r   r   c                  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returnr   c                8    | j                             di           S Nr   )data
setdefaultselfs    r   r   z DurationDomain.reading_durations#   s    y##$7<<<r   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Set[str]	otherdatar   c                    |                     di           }t          |          }|                                D ]\  }}||v r
|| j        |<   d S r   )get	frozensetitemsr   )r"   r0   r2   other_reading_durationsdocnames_setr(   r   s          r   merge_domaindatazDurationDomain.merge_domaindata0   si     #,--0CR"H"H **!8!>!>!@!@ 	; 	;GX,&&2:&w/	; 	;r   N)r   r   )r   r#   r   r$   )r   r$   )r(   r,   r   r$   )r0   r1   r2   r   r   r$   )r   r   r   __doc__namepropertyr   r)   r+   r/   r9   r   r   r   r   r      s        66D= = = X=< < < <' ' ' '2 2 2 2; ; ; ; ; ;r   r   appr   r   r$   c                R    | j         j        d         }|                                 dS )z\Initialize DurationDomain on bootstrap.

    This clears the results of the last build.
    r   N)r'   domainsr+   )r=   domains     r   on_builder_initedrA   :   s#    
 W_Z(F
LLNNNNNr   r(   r,   content	list[str]c                J    t          j                    | j        j        _        dS )z"Start to measure reading duration.N)time	monotonicr'   current_documentreading_started_at)r=   r(   rB   s      r   on_source_readrI   C   s    26.2B2BCG///r   doctreenodes.documentc                    t          j                    | j        j        j        z
  }| j        j        d         }|                    |           dS )zRecord a reading duration.r   N)rE   rF   r'   rG   rH   r?   r)   )r=   rJ   r   r@   s       r   on_doctree_readrM   H   sD    ~#'":"MMHW_Z(F
  *****r   error	Exceptionc                   | j         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   sortedr6   r   loggerinfor   r   )r=   rN   r@   	durationsr(   ds         r   on_build_finishedr\   O   s    W_Z(F#  &&((jmmT  I KKOOO
KK
UVV   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   connectrA   rI   rM   r\   sphinx__display_version__)r=   s    r   setuprf   `   s    NN>"""KK "3444KK~...KK000KK "3444 -"#  r   )r=   r   r   r$   )r=   r   r(   r,   rB   rC   r   r$   )r=   r   rJ   rK   r   r$   )r=   r   rN   rO   r   r$   )r=   r   r   r]   )"r:   
__future__r   rE   	itertoolsr   operatorr   typingr   rd   sphinx.domainsr   sphinx.localer   sphinx.utilr	   collections.abcr
   r   docutilsr   sphinx.applicationr   r   	getLoggerr   rX   r   rA   rI   rM   r\   rf   r   r   r   <module>rr      s   ) ) " " " " " "                           ! ! ! ! ! !             	,######      )))))), , , , ,i , , , 
	8	$	$; ; ; ; ;V ; ; ;8   C C C C
+ + + +* * * *"     r   