U
    \Sh1
                     @  sx   d Z ddl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dlmZ G dd	 d	eZd
ddddZdS )z9The metadata collector components for sphinx.environment.    )annotations)AnyListcast)nodes)Sphinx)BuildEnvironment)EnvironmentCollectorc                   @  sL   e Zd ZdZdddddddZddd	ddd
ddZddddddZdS )MetadataCollectorz*metadata collector for sphinx.environment.r   r   strNone)appenvdocnamereturnc                 C  s   |j |d  d S N)metadatapop)selfr   r   r    r   Y/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/environment/collectors/metadata.py	clear_doc   s    zMetadataCollector.clear_doczset[str])r   r   docnamesotherr   c                 C  s   |D ]}|j | |j |< qd S r   )r   )r   r   r   r   r   r   r   r   r   merge_other   s    zMetadataCollector.merge_otherznodes.document)r   doctreer   c              	   C  s:  | tj}|dkrdS t|| tjr6|jj|jj }|| D ]}t|tjrvt	t
tj |}dd |D |d< qBt|tjrt|dkstt	tj|d }t	tj|d }| || < qBt|tjrB| ||jj< qB| D ]@\}	}
|	dkrzt|
}
W n tk
r    d}
Y nX |
||	< q|| dS )	zProcess the docinfo part of the doctree as metadata.

        Keep processing minimal -- just return what docutils says.
        Nc                 S  s   g | ]}|  qS r   )astext).0authorr   r   r   
<listcomp>'   s     z1MetadataCollector.process_doc.<locals>.<listcomp>authors   r      )Ztocdepth)Zfirst_child_not_matching_classr   ZPreBibliographic
isinstanceZdocinfor   r   r   r    r   r   r   fieldlenAssertionError
field_name
field_bodyr   ZTextElement	__class____name__itemsint
ValueErrorr   )r   r   r   indexmdnoder    r'   r(   namevaluer   r   r   process_doc   s0    

zMetadataCollector.process_docN)r*   
__module____qualname____doc__r   r   r3   r   r   r   r   r
      s   r
   r   zdict[str, Any])r   r   c                 C  s   |  t ddddS )NbuiltinT)versionZparallel_read_safeZparallel_write_safe)Zadd_env_collectorr
   )r   r   r   r   setup=   s
    
r9   N)r6   
__future__r   typingr   r   r   Zdocutilsr   Zsphinx.applicationr   Zsphinx.environmentr   Zsphinx.environment.collectorsr	   r
   r9   r   r   r   r   <module>   s   /