o
    Df9(                     @   s  d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(Z(ddl)Z)dd	l*m+Z+ G d
d deZ,dd Z-G dd deZ.dd Z/dd Z0dd Z1G dd deZ2dd Z3dd Z4dd Z5e0Z6G dd deZ7e5Z8dZ9d d! Z:d"d# Z;d$d% Z<G d&d' d'eZ=d(d) Z>d:d*d+Z?d,d- Z@d;d.d/ZAd0d1 ZBd2d3 ZCd4d5 ZDd6d7 ZEd8d9 ZFdS )<zFAdd the generic fixed and derived content to a Classic Pygame document    )Visitorget_nameGetError	get_refidas_refid	as_refuri)get_descinfoget_descinfo_refid)descdesc_contentdesc_classname	desc_namedesc_signature)index)PyClasslike)sectionliteral	reference	paragraphtitledocumentTextTextElementinlinetabletgroupcolspectbodyrowentrywhitespace_normalize_nameSkipNodelineN)dequec                   @   s   e Zd ZdZdd ZdS )PyGameClasslikez*
    No signature prefix for classes.
    c                 C   s   | j dkrdS t| |S )Nclass )objtyper   )selfsig r*   </home/runner/work/pygame/pygame/docs/reST/ext/boilerplate.pyget_signature_prefix(   s   z$PyGameClasslike.get_signature_prefixN)__name__
__module____qualname____doc__r,   r*   r*   r*   r+   r$   #   s    r$   c                 C   s   |  d | dg d | ddt | dt | dt | jtt	t
fttfttfd | jtttftd ftd fd | jtttfttfd	 d S )
Nzext.indexerboilerplate_skip_transformr&   pyr%   zdoctree-resolvedzhtml-page-context)htmllatextext)r3   r4   )setup_extensionadd_config_valueadd_directive_to_domainr$   connecttransform_documentinject_template_globalsadd_nodeTocRefvisit_toc_ref_htmldepart_toc_ref_htmlvisit_toc_refdepart_toc_refTocTablevisit_toc_table_htmldepart_toc_table_html
visit_skipDocTitlevisit_doc_title_htmldepart_doc_title_htmlvisit_doc_titledepart_doc_title)appr*   r*   r+   setup,   s,   

rL   c                   @      e Zd ZdS )r=   Nr-   r.   r/   r*   r*   r*   r+   r=   N       r=   c                 C      |  | d S N)visit_referencer(   noder*   r*   r+   r@   R      r@   c                 C   rP   rQ   )depart_referencerS   r*   r*   r+   rA   V   rU   rA   c                 C   sT   |d }t |}t|| jjd }| jj}tj| | | |d< t	| | d S )Nrefuridocname)
r   r	   settingsenvbuilderlink_suffixospathbasenamer@   )r(   rT   rW   refidrX   r\   r*   r*   r+   r>   Z   s   r>   c                   @   rM   )rB   NrN   r*   r*   r*   r+   rB   c   rO   rB   c                 C   rP   rQ   )visit_tablerS   r*   r*   r+   rC   g   rU   rC   c                 C   rP   rQ   )depart_tablerS   r*   r*   r+   rD   k   rU   rD   c                 C   s   t  rQ   )r!   rS   r*   r*   r+   rE   o   s   rE   c                   @   rM   )rF   NrN   r*   r*   r*   r+   rF   v   rO   rF   c                 C   rP   rQ   )visit_titlerS   r*   r*   r+   rI   ~   rU   rI   c                 C   rP   rQ   )depart_titlerS   r*   r*   r+   rJ      rU   rJ   c                 C   s&   || j d v r	d S |t| | d S )Nr1   )config	walkaboutDocumentTransformer)rK   doctreerX   r*   r*   r+   r:      s   r:   c                       sZ   e Zd ZdZeeZ fddZdd Zdd Z	dd	 Z
d
d Zdd Zdd Z  ZS )rg   z:(?P<key>[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)*)c                    s"   t  || t | _t | _d S rQ   )super__init__r#   Zmodule_stacktitle_stack)r(   rK   document_node	__class__r*   r+   rj      s   zDocumentTransformer.__init__c                 C   s   | j d  d S rQ   )rk   appendrS   r*   r*   r+   visit_section      z!DocumentTransformer.visit_sectionc                 C   s2   | j  }|d d drt||| j d S d S )Nidsr   zmodule-)rk   pop
startswithtransform_module_sectionrZ   )r(   rT   
title_noder*   r*   r+   depart_section   s   
z"DocumentTransformer.depart_sectionc                 C   s   |d dkr	| j d S )Ndomainr2   )	skip_noderS   r*   r*   r+   
visit_desc   s   zDocumentTransformer.visit_descc                 C   s>   |d  d |d d  d |jd st|| j d S d S )Nclasses
definitionr   r   noindex)ro   
attributesadd_tocrZ   rS   r*   r*   r+   depart_desc   s
   
zDocumentTransformer.depart_descc                 C   s   t |jjtrt|_d S d S rQ   )
isinstanceparentr   rF   rn   rS   r*   r*   r+   rc      s   
zDocumentTransformer.visit_titlec                 C   s   d|d v rd S z|d }W n
 t y   Y d S w t|ts d S | }| j|}|d u r0d S |d}z
t|| jd }W n
 t	yI   Y d S w |rfd|d< |d 
d td|d	gd
}|
| d S d S )Ntocr{   r   keysummaryr&   reftitleZtooltipztooltip-contentr{   )
IndexErrorr   r   astextkey_patmatchgroupr	   rZ   r   ro   r   )r(   rT   childnamemr   r   Zinline_noder*   r*   r+   rR      s2   

z#DocumentTransformer.visit_reference)r-   r.   r/   Z_key_rerecompiler   rj   rp   rw   rz   r   rc   rR   __classcell__r*   r*   rm   r+   rg      s    
rg   c           
      C   s   | d d }|  t}tt| |d }|d u rtd|g}ntt|}tddg|R ddg|gd}tdg|R  }td||dddgd	}	| |	 t	|	||  d S )
Nnamesr      r&   r   module)r{   r   r|   )desctyper'   r{   )
first_child_matching_classsection_prelude_end_classlist
ipop_childr   r   r   r
   ro   r   )
section_noderv   rZ   Zfullmodnamewherecontent_childrenZsignature_childrenZsignature_nodecontent_node	desc_noder*   r*   r+   ru      s0   


ru   c                 c   s.    t | |kr| |V  t | |ksd S d S rQ   )lenrs   )rT   startr*   r*   r+   r      s   r   c                 C   s,   z
t | d |d W S  ty   tdw )Nr`   r   zreference has no refid)r	   KeyErrorr   )reference_noderZ   r*   r*   r+   get_target_summary   s
   r   c                 C   sf   |dur	t |}nt | }t||}t||}|du rdS | d }d}|d r+|d7 }||| dS )z&Add a table of contents to a desc nodeNr   r   r   )r   r	   	build_tocinsert)r   rZ   r   r`   descinfor   r   Z	insert_atr*   r*   r+   r      s   


r   c                 C   s  d}| d }|s
dS d}d}g }t ||D ]=\}}}	t|t|}t|t|	}t||}
tdtdd|
}tdt|d}tdt|	d}td|||}|| q|d }t|}|d }t	dg|R  }t
|d}t
|d}t
|d}td||||d	d
}td|dgdS )z)Return a desc table of contents node treeu   —childrenNr   r&      
   )colwidth   )colsr   r   )
ichild_idsmaxr   toc_refr   r"   r   r   ro   r   r   r   rB   )r   rZ   	separator	child_idsZmax_fullname_lenZmax_summary_lenrowsfullnamer`   r   r   Zref_entry_nodeZsep_entry_nodeZsum_entry_noderow_nodeZcol0_lenZcol1_lenZcol2_lenZ
tbody_nodeZcol0_colspec_nodeZcol1_colspec_nodeZcol2_colspec_nodeZtgroup_noder*   r*   r+   r      s6   



r   c                 c   s2    | D ]}|j | }|d |d |d fV  qd S )Nr   r`   r   )pyg_descinfo_tbl)r   rZ   r`   r   r*   r*   r+   r      s
   
r   c                 C   s"   t | f}td| |t|dgdS )Nr&   r   )r   rW   r{   )r    r=   r   )r   r`   r   r*   r*   r+   r   &  s   
r   c                 C   sF   |d }| j D ]}t|tr t|d tr td|}|d| qd S )N.r   r&   )r   r   r   r   r   r   )r
   	classnameprefixr   Znew_desc_classnamer*   r*   r+   decorate_signatures+  s   

r   c                    s   dd }| j j}z|j}W n ty   g }Y nw t||d}g d}dd |D }dd }	d	d
 |D  dd |D }
|	|
|} fdd|D }||d< d S )Nc                 S   s   t | d  S )Nr   )r   lower)dr*   r*   r+   lowercase_name4  rq   z/inject_template_globals.<locals>.lowercase_name)r   )ZColorZcursorsdisplayZdraweventfontimageZjoystickr   localsmaskZmixerZmouseZmusicpygameZRectZSurfaceZspritetime	transformZBufferProxyZfreetypeZgfxdrawmidiZOverlayZ
PixelArrayZ	pixelcopyZsndarrayZ	surfarrayc                 S   s   g | ]}d | qS )zpygame.r*   .0xr*   r*   r+   
<listcomp>_      z+inject_template_globals.<locals>.<listcomp>c                    s     fdd| D  S )Nc                    s   g | ]}| vr|qS r*   r*   r   existing_orderr*   r+   r   b  s    zBinject_template_globals.<locals>.sort_by_order.<locals>.<listcomp>r*   )sequencer   r*   r   r+   sort_by_ordera  s   z.inject_template_globals.<locals>.sort_by_orderc                 S   s   i | ]}|d  |qS r   r*   r   r*   r*   r+   
<dictcomp>d  s    z+inject_template_globals.<locals>.<dictcomp>c                 S   s   g | ]}|d  qS r   r*   r   r*   r*   r+   r   e  r   c                    s   g | ]
}| v r | qS r*   r*   )r   r   Zfull_name_sectionr*   r+   r   h  s    pyg_sections)r[   rZ   r   AttributeErrorsorted)rK   pagenametemplatenamecontextrh   r   rZ   sectionsr   r   Z
full_namesZsorted_namesr*   r   r+   r;   3  s$   


r;   )r   rQ   )Gr0   	ext.utilsr   r   r   r   r   r   ext.indexerr   r	   Zsphinx.addnodesr
   r   r   r   r   r   r   sphinx.domains.pythonr   Zdocutils.nodesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r]   r   collectionsr#   r$   rL   r=   r@   rA   r>   rB   rC   rD   rE   r?   rF   rG   rH   rI   rJ   r:   rg   ru   r   r   r   r   r   r   r   r;   r*   r*   r*   r+   <module>   sJ     P	"	<

 