;ò
Û†Ð@c           @   s  d  Z  d Z d k Z d k Z d k Z d k Z d k l Z l Z l	 Z	 d k l
 Z
 l Z d k l Z l Z d k l Z l Z l Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e i f d „  ƒ  YZ d d d f Z e d „ Z d S(   sø   
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.
s   reStructuredTextN(   s   nodess   utilss	   languages(   s   ApplicationErrors	   DataError(   s	   Transforms   TransformError(   s   partss
   referencess   miscs   Headersc           B   sY   t  Z d  Z d Z d Z d Z e i d e i ƒ d f e i d ƒ d f f Z	 d „  Z
 RS(   s<   
    Process fields in a PEP's initial RFC-2822 header.
    ih  s   pep-%04d.htmlsV   http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/python/nondist/peps/pep-%04d.txts   \$RCSfile: (.+),v \$$s   \1s   \$[a-zA-Z]+: (.+) \$$c      
   C   s®  t  |  i ƒ o t d ƒ ‚ n |  i d } t | t i ƒ p | i d ƒ d j o t d ƒ ‚ n t	 } x4| D],}
 |
 d i ƒ  i ƒ  d j o	|
 d i ƒ  } y t | ƒ } |  i | }	 WnÔ t j
 oÈ | } t	 }	 |  i i i d | d	 |
 ƒ} |  i i | ƒ } t i | | p d
 d | ƒ} |  i i | ƒ } | i | ƒ t  |
 d ƒ o | g |
 d d (qœ|
 d c t i d d | ƒ 7<n XPqu qu W| t	 j o t d ƒ ‚ n | d j o6 t i t ƒ } |  i i d | ƒ |  i i  | ƒ n t  | ƒ d j  p | d d i ƒ  i ƒ  d j o t d ƒ ‚ n x^| D]V}
 |
 d i ƒ  i ƒ  } |
 d } t  | ƒ d j o  t d |
 i# d d ƒ ƒ ‚ nÉ t  | ƒ d j o< t | d t i ƒ o  t d |
 i# d d ƒ ƒ ‚ qqnz | d j oi t$ i% d t$ i& t' i( |  i d ƒ d ƒ ƒ } |	 o/ | t i d d t i* d | d |	 ƒƒ 7} qqn qP| d } | d j oE x| D]6 } t | t i* ƒ o | i- i. | t/ | ƒ ƒ qqWqP| d j oH xÉ| D]9 } t | t i* ƒ o  | i- i. | t/ | | ƒ ƒ qáqáWqP| d d d f j o“ g  } t i1 d ƒ } xl t3 i4 d | i ƒ  ƒ D]R } t | ƒ } | i7 t i* | | d |  i i8 i9 |  i: | ƒƒ | i7 | ƒ qfW| d   | (qP| d j oJ t; i< | |  i= ƒ |	 o, | i ƒ  } t i* d | d |	 ƒg | (q¦qP| d! j oF | i ƒ  } |  i i8 i9 |  i: d" } t i* d | d | ƒg | (qP| d# j o
 t  | ƒ o t; i< | |  i= ƒ qPqPWd  S($   Ns   Document tree is empty.i    s   classs   rfc2822sA   Document does not begin with an RFC-2822 header; it is not a PEP.s   pepi   s?   "PEP" header must contain an integer; "%s" is an invalid value.s	   base_nodes   (none)s   refids    s3   Document does not contain an RFC-2822 "PEP" header.i   s   titles	   No title!s4   PEP header field body contains multiple elements:
%ss   levels=   PEP header field body may only contain a single paragraph:
%ss   last-modifieds   %d-%b-%Ys   sourcei   s   refuris   authors   discussions-tos   replacess   replaced-bys   requiress    s   ,?\s+iÿÿÿÿs   content-typei   s   version(@   s   lens   selfs   documents	   DataErrors   headers
   isinstances   nodess
   field_lists   gets   Nones   peps   fields   astexts   lowers   values   ints   pep_cvs_urls   cvs_urls
   ValueErrors   reporters   warnings   msgs   set_ids   msgids   problematics   prbs   prbids   add_backrefs	   paragraphs   pendings   PEPZeros   inserts   note_pendings   names   bodys   pformats   times   strftimes	   localtimes   oss   stats   dates	   references   paras   nodes   parents   replaces
   mask_emails   newbodys   Texts   spaces   res   splits   refpeps   pepnos   appends   settingss   pep_base_urls   pep_urls   utilss   clean_rcs_keywordss   rcs_keyword_substitutionss   pep_types   uri(   s   selfs   nodes   prbs   prbids   headers   pepnos   newbodys   msgids   peps   cvs_urls   fields   msgs   bodys   paras   dates   pep_types   names   spaces   uris   values   refpeps   pending(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   apply+   s¤    * $	4 
 $	&3
 % ( !$ (   s   __name__s
   __module__s   __doc__s   default_prioritys   pep_urls   pep_cvs_urls   res   compiles
   IGNORECASEs   rcs_keyword_substitutionss   apply(    (    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   Headers   s    0s   Contentsc           B   s   t  Z d  Z d Z d „  Z RS(   s~   
    Insert an empty table of contents topic and a transform placeholder into
    the document after the RFC 2822 header.
    i|  c         C   sÓ   t  i |  i i i ƒ } | i d } t	 i
 d | ƒ } t	 i d | d d ƒ} t	 i | ƒ } |  i i | ƒ o | | d <n |  i i | ƒ t	 i t i ƒ } | | 7} |  i i d | ƒ |  i i | ƒ d  S(   Ns   contentss    s   CLASSs   namei   (   s	   languagess   get_languages   selfs   documents   settingss   language_codes   languages   labelss   names   nodess   titles   topics   fully_normalize_names   has_names   note_implicit_targets   pendings   partss   Contentss   inserts   note_pending(   s   selfs   topics   names   languages   titles   pending(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   apply”   s    
(   s   __name__s
   __module__s   __doc__s   default_prioritys   apply(    (    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   Contents‹   s    s   TargetNotesc           B   s&   t  Z d  Z d Z d „  Z d „  Z RS(   s¶   
    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         C   s‰  |  i } t | ƒ d } t } } x† | d j o t | | t	 i
 ƒ oa | | d i ƒ  i ƒ  i ƒ  } d | j o | | } Pn d | j o
 | } n | d 8} q& W| o[ t	 i
 ƒ  } | t	 i d d ƒ 7} | i | ƒ | o | i | | ƒ q| i | ƒ n t	 i t i ƒ } | i | ƒ |  i i | d ƒ t	 i t i d h  d |  i <ƒ} | i | ƒ |  i i | d ƒ d  S(	   Ni   i    s
   referencess	   copyrights    s
   Referencess   detailss   callback(   s   selfs   documents   docs   lens   is   Nones   refsects	   copyrights
   isinstances   nodess   sections   astexts   lowers   splits   title_wordss   titles   set_ids   inserts   appends   pendings
   referencess   TargetNotess   note_pendings   miscs   CallBacks   cleanup_callback(   s   selfs	   copyrights   is   docs   refsects   pendings   title_words(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   apply­   s4    	
 $ 

c         C   s4   t  | i ƒ d j o | i i i | i ƒ n d S(   s   
        Remove an empty "References" section.

        Called after the `references.TargetNotes` transform is complete.
        i   N(   s   lens   pendings   parents   remove(   s   selfs   pending(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   cleanup_callbackË   s     (   s   __name__s
   __module__s   __doc__s   default_prioritys   applys   cleanup_callback(    (    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   TargetNotes£   s    	s   PEPZeroc           B   s   t  Z d  Z d Z d „  Z RS(   s'   
    Special processing for PEP 0.
    iø  c         C   s9   t  |  i ƒ } |  i i | ƒ |  i i i |  i ƒ d  S(   N(   s   PEPZeroSpecials   selfs   documents   visitors   walks	   startnodes   parents   remove(   s   selfs   visitor(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   applyÝ   s    (   s   __name__s
   __module__s   __doc__s   default_prioritys   apply(    (    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   PEPZeroÕ   s    s   PEPZeroSpecialc           B   sV   t  Z d  Z e i Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(   s´   
    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         C   s   d  S(   N(    (   s   selfs   node(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   unknown_visitð   s    c         C   s   | i i | t | ƒ ƒ d  S(   N(   s   nodes   parents   replaces
   mask_email(   s   selfs   node(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   visit_referenceó   s    c         C   s2   | i d ƒ o | d d j o t i ‚ n d  S(   Ns   classs   rfc2822(   s   nodes   hasattrs   nodess   SkipNode(   s   selfs   node(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   visit_field_listö   s    !c         C   s    | d d j |  _ d |  _ d  S(   Ns   colsi   i    (   s   nodes   selfs	   pep_tables   entry(   s   selfs   node(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   visit_tgroupú   s    c         C   s;   |  i d 7_ |  i o |  i d j o d | d <n d  S(   Ni   i   s   nums   class(   s   selfs   entrys	   pep_tables   node(   s   selfs   node(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   visit_colspecþ   s    c         C   s   d |  _ d  S(   Ni    (   s   selfs   entry(   s   selfs   node(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys	   visit_row  s    c         C   sê   |  i d 7_ |  i o  |  i d j o t | ƒ d j oª d | d <| d } t | t i ƒ o t | ƒ d j ol | i	 ƒ  } yF t | ƒ } |  i i i |  i | } t i | | d | ƒ| d <Wqâ t j
 o qâ Xqæ n d  S(   Ni   i   s   nums   classi    s   refuri(   s   selfs   entrys	   pep_tables   lens   nodes   ps
   isinstances   nodess	   paragraphs   astexts   texts   ints   peps   documents   settingss   pep_base_urls   pep_urls   refs	   references
   ValueError(   s   selfs   nodes   texts   peps   ps   ref(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   visit_entry  s    -

& (   s   __name__s
   __module__s   __doc__s   Headerss   pep_urls   unknown_visits   visit_references   visit_field_lists   visit_tgroups   visit_colspecs	   visit_rows   visit_entry(    (    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   PEPZeroSpecialã   s   	 							s   peps@python.orgs   python-list@python.orgs   python-dev@python.orgc         C   sº   |  i d ƒ o |  d i d ƒ oŽ |  d d t j o |  d } n1 |  i ƒ  i d d ƒ } t i	 d | d d	 ƒ} | t j o | Sq¶ |  d c d
 | 7<| g |  (|  Sn |  Sd S(   s¨  
    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.
    s   refuris   mailto:i   i    s   @s   &#32;&#97;t&#32;s    s   formats   htmls   ?subject=PEP%%20%sN(   s   refs   hasattrs
   startswiths   non_masked_addressess   replacements   astexts   replaces   replacement_texts   nodess   raws   pepnos   None(   s   refs   pepnos   replacement_texts   replacement(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys
   mask_email  s    
 $
(   s   __doc__s   __docformat__s   syss   oss   res   times   docutilss   nodess   utilss	   languagess   ApplicationErrors	   DataErrors   docutils.transformss	   Transforms   TransformErrors   partss
   referencess   miscs   Headerss   Contentss   TargetNotess   PEPZeros   SparseNodeVisitors   PEPZeroSpecials   non_masked_addressess   Nones
   mask_email(   s   utilss   miscs	   Transforms   __docformat__s
   referencess   PEPZeroSpecials	   languagess   res   partss   TargetNotess   nodess   PEPZeros	   DataErrors
   mask_emails   ApplicationErrors   syss   Headerss   non_masked_addressess   TransformErrors   times   oss   Contents(    (    sM   /mit/golem/arch/share/lib/python2.3/site-packages/docutils/transforms/peps.pys   ?   s    				o23