U
    \a	                     @   s   d dl Zd dlZd dlZG dd deZdd Zdd Zdd	 Z	d
d Z
dd Zdd Zdd Zdd Zdd Zdd ZG dd dejjZdS )    Nc                   @   s   e Zd ZdS )GetErrorN)__name__
__module____qualname__ r   r   6/home/runner/work/pygame/pygame/docs/reST/ext/utils.pyr      s   r   c                 C   s@   t | tjjrt| S t | tjjr,t| S t	d| j
f d S )NUnrecognized node type '%s')
isinstancedocutilsnodessectionget_sectionnamesphinxaddnodesdescget_descname	TypeError	__class__noder   r   r   get_fullname   s
    r   c                 C   s   z| d }W n t k
r(   tdY nX z|d }W n tk
rR   tdY nX z
|d W S  t k
rz   tdY nX d S )Nr   z%No fullname: missing children in descidsz2No fullname: missing ids attribute in desc's childz.No fullname: desc's child has empty names list)
IndexErrorr   KeyError)r   signamesr   r   r   r      s    
r   c                 C   sV   z| d }W n t k
r(   tdY nX z
|d W S  tk
rP   tdY nX d S )Nr   z/No fullname: missing names attribute in sectionr   z)No fullname: section has empty names list)r   r   r   )r   r   r   r   r   r   "   s    
r   c                 C   s   t t| S N)	as_refuri	get_refidr   r   r   r   
get_refuri-   s    r   c                 C   s0   zt | d W S  tk
r*   tdY nX d S )Nr   zNode has emtpy ids list)get_idsr   r   r   r   r   r   r   1   s    r   c                 C   s   | dd  S )N   r   )refurir   r   r   as_refid8   s    r#   c                 C   s   d|  S )N#r   )refidr   r   r   r   <   s    r   c                 C   s   t | tjjr6z
| d W S  tk
r4   tdY nX t | tjjrz| d }W n t	k
rl   tdY nX z
|d W S  tk
r   tdY nX t
d| jf d S )Nr   z%No ids: section missing ids attributer   zNo ids: missing desc childrenz*No ids: desc's child missing ids attributer   )r	   r
   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r    @   s    

r    c                 c   s"   | D ]}t |tjjr|V  qd S r   )r	   r
   r   r   )doctreer   r   r   r   	isectionsR   s    r'   c                 C   s   |  dd S )N.)split)fullnamer   r   r   get_nameX   s    r,   c                   @   s8   e Zd Zej Zej Zdd Z	dd Z
dd ZdS )Visitorc                 C   s$   t jj| | || _|jj| _d S r   )r
   r   SparseNodeVisitor__init__appbuilderenv)selfr0   Zdocument_noder   r   r   r/   `   s    zVisitor.__init__c                 C   s   d S r   r   r3   r   r   r   r   unknown_visite   s    zVisitor.unknown_visitc                 C   s   d S r   r   r4   r   r   r   unknown_departureh   s    zVisitor.unknown_departureN)r   r   r   r
   r   SkipNodeZ	skip_nodeSkipDepartureZskip_departurer/   r5   r6   r   r   r   r   r-   \   s
   

r-   )Zdocutils.nodesr
   Zsphinx.addnodesr   sysLookupErrorr   r   r   r   r   r   r#   r   r    r'   r,   r   r.   r-   r   r   r   r   <module>   s   