
    Fec
                    z    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
 erddlmZ ddlmZ  G d d	e
      Zdd
Zy)z9The metadata collector components for sphinx.environment.    )annotations)TYPE_CHECKINGAnycast)nodes)EnvironmentCollector)Sphinx)BuildEnvironmentc                  4    e Zd ZdZddZ	 	 	 	 	 	 ddZddZy)	MetadataCollectorz*metadata collector for sphinx.environment.c                <    |j                   j                  |d        y N)metadatapop)selfappenvdocnames       H/usr/lib/python3/dist-packages/sphinx/environment/collectors/metadata.py	clear_doczMetadataCollector.clear_doc   s    $'    c                J    |D ]  }|j                   |   |j                   |<     y r   )r   )r   r   r   docnamesotherr   s         r   merge_otherzMetadataCollector.merge_other   s(     	<G$)NN7$;CLL!	<r   c                   |j                  t        j                        }|yt        ||   t        j                        r|j
                  j                  |j
                  j                     }||   D ])  }t        |t        j                        rCt        t        t        j                     |      }|D cg c]  }|j                          c}|d<   at        |t        j                        rlt        |      dk(  sJ t        t        j                  |d         }t        t        j                   |d         }	|	j                         ||j                         <   t        |t        j"                        s|j                         ||j$                  j&                  <   , |j)                         D ]  \  }
}|
dv s	 t+        |      }|||
<    |j/                  |       yyc c}w # t,        $ r d}Y ,w xY w)zProcess the docinfo part of the doctree as metadata.

        Keep processing minimal -- just return what docutils says.
        Nauthors   r      )tocdepth)first_child_not_matching_classr   PreBibliographic
isinstancedocinfor   r   r   r   r   listauthorastextfieldlen
field_name
field_bodyTextElement	__class____name__itemsint
ValueErrorr   )r   r   doctreeindexmdnoder   r&   r*   r+   namevalues               r   process_doczMetadataCollector.process_doc   s   
 66u7M7MN=6!!#''//2B @dEMM2"4#5t<GCJ$KV]]_$KByMekk2t9>)>!%e&6&6Q!@J!%e&6&6Q!@J.8.?.?.ABz((*+e&7&78 37++-Bt~~../@  "xxz %e=(" #E
  %BtH% KK3 7 %L & " !"s   6G!<G&&G43G4N)r   r	   r   r
   r   strreturnNone)
r   r	   r   r
   r   zset[str]r   r
   r:   r;   )r   r	   r2   znodes.documentr:   r;   )r.   
__module____qualname____doc__r   r   r8    r   r   r   r      s,    4(<&</?<DH<
!r   r   c                8    | j                  t               ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorr   )r   s    r   setuprF   ?   s&    +, "# r   N)r   r	   r:   zdict[str, Any])r>   
__future__r   typingr   r   r   docutilsr   sphinx.environment.collectorsr   sphinx.applicationr	   sphinx.environmentr
   r   rF   r?   r   r   <module>rM      s3    ? " + +  >)3,, ,^r   