o
    Ni
                     @  s~   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 er0ddl
mZ ddlmZ ddlmZ G d	d
 d
e	ZdddZdS )z9The metadata collector components for sphinx.environment.    )annotations)TYPE_CHECKINGcast)nodes)EnvironmentCollector)Sphinx)BuildEnvironment)ExtensionMetadatac                   @  s.   e Zd ZdZdd
dZdddZdddZdS )MetadataCollectorz*metadata collector for sphinx.environment.appr   envr   docnamestrreturnNonec                 C  s   |j |d  d S N)metadatapop)selfr   r   r    r   Z/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/environment/collectors/metadata.py	clear_doc   s   zMetadataCollector.clear_docdocnamesset[str]otherc                 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_otherdoctreenodes.documentc              	   C  s8  | tj}|du rdS t|| tjr|jj|jj }|| D ]O}t|tjr:t	t
tj |}dd |D |d< q t|tjrat|dksHJ t	tj|d }t	tj|d }| || < q t|tjro| ||jj< q | D ]\}	}
|	dkrzt|
}
W n ty   d}
Y nw |
||	< qt|| dS 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      tocdepth)first_child_not_matching_classr   PreBibliographic
isinstancedocinfor   r   r   r"   r   listr    fieldlen
field_name
field_bodyr   TextElement	__class____name__itemsint
ValueErrorr   )r   r   r   indexmdnoder"   r-   r.   namevaluer   r   r   process_doc!   s8   zMetadataCollector.process_docN)r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r1   
__module____qualname____doc__r   r   r:   r   r   r   r   r
      s
    


r
   r   r   r   r	   c                 C  s   |  t ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorr
   )r   r   r   r   setupE   s
   
rC   N)r   r   r   r	   )r=   
__future__r   typingr   r   docutilsr   sphinx.environment.collectorsr   sphinx.applicationr   sphinx.environmentr   sphinx.util.typingr	   r
   rC   r   r   r   r   <module>   s    4