o $a @s~dZddlmZmZmZmZmZddlmZddl m Z ddl m Z ddl mZGdddeZd e d eeeffd d Zd S)a sphinx.environment.collectors.metadata ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The metadata collector components for sphinx.environment. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. )AnyDictListSetcast)nodes)Sphinx)BuildEnvironment)EnvironmentCollectorc @sdeZdZdZdedededdfddZdeded eed eddf d d Z ded e j ddfddZ dS)MetadataCollectorz*metadata collector for sphinx.environment.appenvdocnamereturnNcCs|j|ddSN)metadatapop)selfr r rrH/usr/lib/python3/dist-packages/sphinx/environment/collectors/metadata.py clear_docszMetadataCollector.clear_docdocnamesothercCs|D] }|j||j|<qdSr)r)rr r rrrrrr merge_otherszMetadataCollector.merge_otherdoctreec Cs8|tj}|dur dSt||tjr|jj|jj}||D]O}t|tjr:t t tj |}dd|D|d<q t|tj rat |dksHJt tj|d}t tj|d}|||<q t|tjro|||jj<q |D]\} } | dvrzt| } Wn tyd} Ynw| || <qt||dSdS) zProcess the docinfo part of the doctree as metadata. Keep processing minimal -- just return what docutils says. NcSsg|]}|qSr)astext).0authorrrr -sz1MetadataCollector.process_doc..authorsr)tocdepth)first_child_not_matching_classrPreBibliographic isinstancedocinfor rrrrrrfieldlen field_name field_bodyr TextElement __class____name__itemsint ValueErrorr) rr rindexmdnoderr)r*namevaluerrr process_docs8       zMetadataCollector.process_doc) r- __module__ __qualname____doc__rr strrrrrdocumentr6rrrrr s  r r rcCs|tddddS)NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorr )r rrrsetupCs rAN)r9typingrrrrrdocutilsrsphinx.applicationrsphinx.environmentr sphinx.environment.collectorsr r r:rArrrrs    /