
    -Phg+                        d Z dZddlZddlZddlZddl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  G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d dej                  ZdZddZdS )z
Transforms for PEP processing.

- `Headers`: Used to transform a PEP's initial RFC-2822 header.  It remains a
  field list, but some entries get processed.
- `Contents`: Auto-inserts a table of contents.
- `PEPZero`: Special processing for PEP 0.
reStructuredText    N)nodesutils	languages)	DataError)	Transform)parts
referencesmiscc                   x    e Zd ZdZdZdZdZ ej        dej	                  df ej        d          dffZ
d Zd	S )
Headersz<
    Process fields in a PEP's initial RFC-2822 header.
    ih  zpep-%04dz3http://hg.python.org/peps/file/default/pep-%04d.txtz\$RCSfile: (.+),v \$$z\1z\$[a-zA-Z]+: (.+) \$$c                 $   t          | j                  st          d          | j        d         }t          |t          j                  r
d|d         vrt          d          d }|D ]S}|d                                                                         dk    r|d                                         }	 t          |          }| j	        |z  }n# t          $ r |}d }| j        j                            d|z  |	          }| j                            |          }t	          j        ||pd
|          }| j                            |          }	|                    |	           t          |d                   r|g|d         d         d d <   n$|dxx         t	          j        dd|          z  cc<   Y nw xY w nU|t          d          |dk    rNt	          j        t$                    }
| j                            d|
           | j                            |
           t          |          dk     s6|d         d                                                                         dk    rt          d          |D ]}|d                                                                         }|d         }t          |          dk    r&t          d|                    d          z            t          |          dk    rGt          |d         t          j                  s&t          d|                    d          z            n|dk    r	 t-          j        dt-          j        t3          j        | j        d                   d                             }n# t6          $ r d}Y nw xY w|r.|t	          j        ddt	          j        d||                    z  }na|d         }|dk    rC|D ]>}t          |t          j                  r"|                    t=          |                     ?|dk    rD|D ]?}t          |t          j                  r#|                    t=          ||                     @|dv rg }t	          j        d          }tA          j!        d|                                          D ]j}t          |          }|"                    t	          j        ||| j        j#        j$        | j%        |z  z                        |"                    |           k|d d         |d d <   |dk    rOtM          j'        || j(                   |r1|                                }t	          j        d||          g|d d <   |d k    rO|                                }| j        j#        j$        | j%        d!z  z   }t	          j        d||          g|d d <   c|d"k    r)t          |          rtM          j'        || j(                   d S )#NzDocument tree is empty.r   rfc2822classeszADocument does not begin with an RFC-2822 header; it is not a PEP.pep   z?"PEP" header must contain an integer; "%s" is an invalid value.)	base_nodez(none))refid z3Document does not contain an RFC-2822 "PEP" header.   titlez	No title!z4PEP header field body contains multiple elements:
%s)levelz=PEP header field body may only contain a single paragraph:
%szlast-modifiedz%d-%b-%Ysource   unknownrefuriauthorzdiscussions-to)replaceszreplaced-byrequires z,?\s+zcontent-type   version))lendocumentr   
isinstancer   
field_listastextlowerintpep_cvs_url
ValueErrorreporterwarningset_idproblematicadd_backref	paragraphpendingPEPZeroinsertnote_pendingpformattimestrftime	localtimeosstatOSError	referencereplace_self
mask_emailTextresplitappendsettingspep_base_urlpep_urlr   clean_rcs_keywordsrcs_keyword_substitutions)selfheaderr   fieldvaluecvs_urlmsgmsgidprbprbidr4   namebodydateparanodenewbodyspacerefpeppepnopep_typeuris                         X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/docutils/transforms/peps.pyapplyzHeaders.apply(   s   4=!! 	75666q!65#344 	8y 111 7 8 8 8 	 	EQx  &&((E11a))Ae**C".4GG! A A AC"G-088)+./:? 9 A AC !M0055E+E53DH279 9 9C M0055EOOE***58}} A*-aAAAaEOBC$@$@@A ) 2* ; & ' ' '!88mG,,GM  G,,,M&&w///v;;??fQil113399;;wFFK((( 6	O 6	OE8??$$**,,D8D4yy1}} !027--a-2H2H!I J J JTa!$q'5?;; ># %>&+mm!m&<&<%= > > >> ((%="rwt}X/F'G'G'JKKM MDD  % % %$DDD% KEOBD I I IK K KD 7Dx  < <D!$88 <))*T*:*:;;;< )))  A AD!$88 A))*T3*?*?@@@A @@@
3 hx?? * *FKKENN5? $ 6 C"&,"6!7$9 $9 $9 : : : NN5))))!#2#,QQQ(((t/MNNN J;;==D$r4HHHIDG'';;==m,9DL2<MM ?2xDDDEQQQ""s4yy"(t/MNNNm6	O 6	Os&   7CC"F65F6A
NN'&N'N)__name__
__module____qualname____doc__default_priorityrH   r,   rC   compile
IGNORECASErJ   r`        r_   r   r      s          G5K 2:2BMBBE
J2:.//
7!:`O `O `O `O `Ori   r   c                       e Zd ZdZdZd ZdS )Contentsz~
    Insert an empty table of contents topic and a transform placeholder into
    the document after the RFC 2822 header.
    i|  c                 L   t          j        | j        j        j        | j        j                  }|j        d         }t          j        d|          }t          j	        d|dg          }t          j
        |          }| j                            |          s|d                             |           | j                            |           t          j        t          j                  }||z  }| j                            d|           | j                            |           d S )Ncontentsr   )r   namesr   )r   get_languager&   rF   language_coder.   labelsr   r   topicfully_normalize_namehas_namerE   note_implicit_targetr4   r	   rk   r6   r7   )rK   languagerT   r   rr   r4   s         r_   r`   zContents.apply   s   )$-*@*N*.-*@B Bz*B%%B
|<<<)$//}%%d++ 	('N!!$'''**5111-//Q&&&""7+++++ri   Nra   rb   rc   rd   re   r`   rh   ri   r_   rk   rk      s5         
 , , , , ,ri   rk   c                   "    e Zd ZdZdZd Zd ZdS )TargetNotesz
    Locate the "References" section, insert a placeholder for an external
    target footnote insertion transform at the end, and schedule the
    transform to run immediately.
    i  c                    | j         }t          |          dz
  }d x}}|dk    rt          ||         t          j                  r||         d                                                                                                         }d|v r	||         }n1d|v r|}|dz  }|dk    r t          ||         t          j                  |snt          j                    }|t          j        dd          z  }|	                    |           |r|
                    ||           n|                    |           t          j        t          j                  }|                    |           | j                             |d           t          j        t           j        d| j        i          }|                    |           | j                             |d           d S )	Nr   r   r
   	copyrightr   
Referencescallback)details)r&   r%   r'   r   sectionr)   r*   rD   r   r0   r6   rE   r4   r
   ry   r7   r   CallBackcleanup_callback)rK   docirefsectr{   title_wordsr4   s          r_   r`   zTargetNotes.apply   s   mHHqL"")1ffCFEM::fa&)**,,2244::<<K{**a&++	FA 1ffCFEM::f  		$mooGu{2|444GJJw $

9g.... 

7###-
 677w""7A...-)3T5J(KM M Mw""7A.....ri   c                     t          |j                  dk    r&|j        j                            |j                   dS dS )z
        Remove an empty "References" section.

        Called after the `references.TargetNotes` transform is complete.
        r   N)r%   parentremove)rK   r4   s     r_   r   zTargetNotes.cleanup_callback   sB     w~!##N!((88888 $#ri   N)ra   rb   rc   rd   re   r`   r   rh   ri   r_   ry   ry      sD          / / /<9 9 9 9 9ri   ry   c                       e Zd ZdZdZd ZdS )r5   z'
    Special processing for PEP 0.
    i  c                     t          | j                  }| j                            |           | j        j                            | j                   d S N)PEPZeroSpecialr&   walk	startnoder   r   )rK   visitors     r_   r`   zPEPZero.apply   sH     //7###$$T^44444ri   Nrw   rh   ri   r_   r5   r5      s5          5 5 5 5 5ri   r5   c                   J    e Zd ZdZej        Zd Zd Zd Zd Z	d Z
d Zd Zd	S )
r   z
    Perform the special processing needed by PEP 0:

    - Mask email addresses.

    - Link PEP numbers in the second column of 4-column tables to the PEPs
      themselves.
    c                     d S r   rh   rK   rX   s     r_   unknown_visitzPEPZeroSpecial.unknown_visit   s    ri   c                 J    |                     t          |                     d S r   )r@   rA   r   s     r_   visit_referencezPEPZeroSpecial.visit_reference   s$    *T**+++++ri   c                 2    d|d         v rt           j        d S )Nr   r   )r   SkipNoder   s     r_   visit_field_listzPEPZeroSpecial.visit_field_list   s!    Y''.  ('ri   c                 6    |d         dk    | _         d| _        d S )Ncols   r   )	pep_tableentryr   s     r_   visit_tgroupzPEPZeroSpecial.visit_tgroup   s    f*


ri   c                     | xj         dz  c_         | j        r(| j         dk    r|d                             d           d S d S d S )Nr   r   r   num)r   r   rE   r   s     r_   visit_colspeczPEPZeroSpecial.visit_colspec   sQ    

a

> 	*djAooO""5)))))	* 	*oori   c                     d| _         d S )Nr   )r   r   s     r_   	visit_rowzPEPZeroSpecial.visit_row  s    


ri   c                    | xj         dz  c_         | j        r| j         dk    rt          |          dk    r|d                             d           |d         }t	          |t
          j                  rt          |          dk    ru|                                }	 t          |          }| j	        j
        j        | j        |z  z   }t          j        |||          |d<   d S # t          $ r Y d S w xY wd S d S d S d S d S )Nr   r   r   r   r   r   )r   r   r%   rE   r'   r   r3   r)   r+   r&   rF   rG   rH   r?   r-   )rK   rX   ptextr   refs         r_   visit_entryzPEPZeroSpecial.visit_entry  s   

a

> 	djAoo#d))q..O""5)))QA!U_-- #a&&A++xxzzd))C=1>!\C/0C ?4cBBBAaDDD!   DD	 	oo.. ++s   AC" "
C0/C0N)ra   rb   rc   rd   r   rH   r   r   r   r   r   r   r   rh   ri   r_   r   r      s          oG  , , ,! ! !  * * *
      ri   r   )zpeps@python.orgzpython-list@python.orgzpython-dev@python.orgc                 f   |                      d          r| d                             d          r| d         dd         t          v r	| d         }n?|                                                     dd          }t          j        d|d	
          }||S | dxx         d|z  z  cc<   |g| dd<   | S | S )a  
    Mask the email address in `ref` and return a replacement node.

    `ref` is returned unchanged if it contains no email address.

    For email addresses such as "user@host", mask the address as "user at
    host" (text) to thwart simple email address harvesters (except for those
    listed in `non_masked_addresses`).  If a PEP number (`pepno`) is given,
    return a reference including a default email subject.
    r   zmailto:r   Nr   @z&#32;&#97;t&#32;r   html)formatz?subject=PEP%%20%s)hasattr
startswithnon_masked_addressesr)   replacer   raw)r   r\   replacementreplacement_texts       r_   rA   rA     s     {{8 X!9!9)!D!D x= 444a&KK"zz||33C9KLL)B(8HHHK=MMM1E99MMM!]CFJ
ri   r   )rd   __docformat__r<   rC   r9   docutilsr   r   r   r   docutils.transformsr   r	   r
   r   r   rk   ry   r5   SparseNodeVisitorr   r   rA   rh   ri   r_   <module>r      s  
  # 				 				  , , , , , , , , , ,       ) ) ) ) ) ) 7 7 7 7 7 7 7 7 7 7oO oO oO oO oOi oO oO oOd, , , , ,y , , ,2/9 /9 /9 /9 /9) /9 /9 /9d5 5 5 5 5i 5 5 50 0 0 0 0U, 0 0 0f1 
     ri   