
    N&i+                        d Z dZddl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
mZ ddlmZ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)ApplicationError	DataError)	TransformTransformError)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prbidr6   namebodydateparanodenewbodyspacerefpeppepnopep_typeuris                         e/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/docutils/transforms/peps.pyapplyzHeaders.apply)   s   4=!! 	75666q!&%"233 	8vi000 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_priorityrJ   r.   rE   compile
IGNORECASErL   rb        ra   r   r      s          G5K 2:2BMBBE
J2:.//
7!:`O `O `O `O `Ork   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(   rH   language_coder0   labelsr   r   topicfully_normalize_namehas_namerG   note_implicit_targetr6   r   rm   r8   r9   )rM   languagerV   r   rt   r6   s         ra   rb   zContents.apply   s   )$-*@*N*.-*@B Bz*B%%B
|<<<)$//}%%d++ 	('N!!$'''**5111-//Q&&&""7+++++rk   Nrc   rd   re   rf   rg   rb   rj   rk   ra   rm   rm      s5         
 , , , , ,rk   rm   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,   rF   r   r2   r8   rG   r6   r   r{   r9   r   CallBackcleanup_callback)rM   docirefsectr}   title_wordsr6   s          ra   rb   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.....rk   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)rM   r6   s     ra   r   zTargetNotes.cleanup_callback   sB     w~!##N!((88888 $#rk   N)rc   rd   re   rf   rg   rb   r   rj   rk   ra   r{   r{      sD          / / /<9 9 9 9 9rk   r{   c                       e Zd ZdZdZd ZdS )r7   z'
    Special processing for PEP 0.
    i  c                     t          | j                  }| j                            |           | j        j                            | j                   d S N)PEPZeroSpecialr(   walk	startnoder   r   )rM   visitors     ra   rb   zPEPZero.apply   sH     //7###$$T^44444rk   Nry   rj   rk   ra   r7   r7      s5          5 5 5 5 5rk   r7   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   rj   rM   rZ   s     ra   unknown_visitzPEPZeroSpecial.unknown_visit   s    rk   c                 J    |                     t          |                     d S r   )rB   rC   r   s     ra   visit_referencezPEPZeroSpecial.visit_reference   s$    *T**+++++rk   c                 2    d|d         v rt           j        d S )Nr   r   )r   SkipNoder   s     ra   visit_field_listzPEPZeroSpecial.visit_field_list   s!    Y''.  ('rk   c                 6    |d         dk    | _         d| _        d S )Ncols   r   )	pep_tableentryr   s     ra   visit_tgroupzPEPZeroSpecial.visit_tgroup   s    f*


rk   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   rG   r   s     ra   visit_colspeczPEPZeroSpecial.visit_colspec   sQ    

a

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


rk   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'   rG   r)   r   r5   r+   r-   r(   rH   rI   rJ   rA   r/   )rM   rZ   ptextr   refs         ra   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)rc   rd   re   rf   r   rJ   r   r   r   r   r   r   r   rj   rk   ra   r   r      s          oG  , , ,! ! !  * * *
      rk   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       ra   rC   rC     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
rk   r   )rf   __docformat__sysr>   rE   r;   docutilsr   r   r   r   r   docutils.transformsr	   r
   r   r   r   r   rm   r{   r7   SparseNodeVisitorr   r   rC   rj   rk   ra   <module>r      s  
  # 



 				 				  , , , , , , , , , , 0 0 0 0 0 0 0 0 9 9 9 9 9 9 9 9 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      rk   