
Sc           @   s  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 d  d l	 m
 Z
 d  d l m Z d  d l m Z m Z d  d l m Z d  d l m Z d  d	 l Td
 d l m Z m Z m Z m Z m Z d
 d l m Z m Z m Z d
 d l m  Z  d e! f d     YZ" d e" f d     YZ# d e" f d     YZ$ d e" f d     YZ% d e& f d     YZ' d e& f d     YZ( d e( f d     YZ) d e& f d     YZ* d e& f d     YZ+ e, f Z- d    Z. d!   Z/ d"   Z0 d# e f d$     YZ1 d%   Z2 e, e, d&  Z3 e, e, d'  Z4 e, e, d(  Z5 e, d)  Z6 e, d*  Z7 d+   Z8 d,   Z9 d-   Z: d.   Z; d/   Z< d0   Z= d1   Z> d2   Z? d3   Z@ d4   ZA eB d5   eC eD f D  ZE eD d6  ZF d7   ZG d8   ZH d9   ZI d:   ZJ e, i  i  d;  ZK i  i  e, d<  ZL e jM d=  ZN d>   ZO d?   ZP d@   ZQ dA   ZR dB   ZS dC   ZT dD   ZU dE   ZV dF   ZW dG   ZX dH e& f dI     YZY dJ   ZZ eC e, g  dK  Z[ dL e& f dM     YZ\ dN e& f dO     YZ] dP e& f dQ     YZ^ g  Z_ e, e, dR dS dT  Z` dS dS dU  Za dV   Zb dW   Zc e, dS dX  Zd dY   Ze dZ   Zf d[ e& f d\     YZg d] e& f d^     YZh eh   Zi d_ e& f d`     YZj ek da  Zl db   Zm e jM dc  Zn g  e, dd  Zo ej   Zp de   Zq i df dg 6dh di 6dj dk 6dl dm 6dn do 6Zr x( er D]  Zs et ep es eq er es   q!We  ju   Zv i  eC dp  Zw e jM dq  Zx dr   Zy eC i  e, e, eC eC ds  Zz dt   Z{ e, du  Z| dv   Z} dw   Z~ dx   Z dy   Z d S(z   iN(   t   izipt   countt   chain(   t	   decorator(   t   contextmanager(   t   latex(   t
   BaseFormatt   Format(   t   tokenize(   t   Parser(   t   *i   (   t   customt   dbt   dependenciest   cachet	   structure(   t   FLAVORSt   FORMATSt	   Reference(   t   benchmarkingt   WikiExceptionc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR      s   t   NoContentExceptionc           B   s   e  Z RS(    (   R   R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR      s   t   ElementNotFoundc           B   s   e  Z RS(    (   R   R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR      s   t   PropNotFoundc           B   s   e  Z RS(    (   R   R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR      s   t	   moverridec           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s}   x/ | j    D]! } t | t  s t |   q Wx; | D]3 } | d j   r` | d d k s9 t |   q9 W| |  _ d  S(   Ni    R
   (   t   valuest
   isinstancet   unicodet   AssertionErrort   isuppert   kw(   t   selfR    t   vt   k(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __init__   s
    1c         C   s)   t  t j  |  _ t j j |  j  d  S(   N(   t   dictt
   eval_statet
   moverridest   old_moverridest   updateR    (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt	   __enter__$   s    c         C   s   |  j  t _ d  S(   N(   R(   R&   R'   (   R!   t   exc_typet   exc_valt   exc_tb(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __exit__'   s    (   R   R   R$   R*   R.   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR      s   		t	   eoverridec           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s|   | |  _  xl | D]d } | d j   s2 t |   t | | d  s t | | d  s | | d  k s t |   q Wd  S(   Ni    t   enamet   element(   R    t   islowerR   t   hasattrt   None(   R!   R    R#   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$   +   s    	c         C   s)   t  t j  |  _ t j j |  j  d  S(   N(   R%   R&   t
   eoverridest   old_eoverridesR)   R    (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR*   0   s    c         C   s   |  j  t _ d  S(   N(   R6   R&   R5   (   R!   R+   R,   R-   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR.   3   s    (   R   R   R$   R*   R.   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR/   *   s   		t   push_currentc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   sO   i | d 6} t  | d  r; | j d  k	 r; | j | d <n  t j |  |  d  S(   Nu   currentt   owneru   owner(   R3   R8   R4   R/   R$   (   R!   t   currt   eover(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$   6   s    c         C   s(   t  j j |  j d  t j |   d  S(   Nu   current(   R&   t   current_stackt   appendR    R/   R*   (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR*   <   s    c         C   sG   t  j |  | | |  t j d |  j d k s6 t  t j j   d  S(   Niu   current(   R/   R.   R&   R;   R    R   t   pop(   R!   R+   R,   R-   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR.   ?   s     (   R   R   R$   R*   R.   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR7   5   s   		t	   poverridec           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s9   x) | D]! } | j  d  s t |   q W| |  _ d  S(   NR
   (   t
   startswithR   R    (   R!   R    R#   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$   E   s    c         C   s)   t  t j  |  _ t j j |  j  d  S(   N(   R%   R&   t
   poverridest   old_poverridesR)   R    (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR*   I   s    c         C   s   |  j  t _ d  S(   N(   RA   R&   R@   (   R!   R+   R,   R-   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR.   L   s    (   R   R   R$   R*   R.   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR>   D   s   		t   contextc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   | |  _  d  S(   N(   R    (   R!   R    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$   P   s    c         C   s)   t  t j  |  _ t j j |  j  d  S(   N(   R%   R&   RB   t   old_contextR)   R    (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR*   R   s    c         C   s   |  j  t _ d  S(   N(   RC   R&   RB   (   R!   R+   R,   R-   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR.   U   s    (   R   R   R$   R*   R.   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRB   O   s   		c         C   s	  t  j |  t   t d  f  \ } } t } | t k	 r x | D] \ } } } | d k r{ t j j | d   | k r Pq q> | d k r t j	 j | d   | k r Pq q> | d k r> t j
 j | d   | k r Pq q> q> Wt } n  | r | St j j t    t Sd  S(   NR/   R   R>   (   R   t   get_memot   get_context_tagt   NO_MEMOR4   t   FalseR&   R5   t   getR'   R@   t   Truet   memoable_stackR<   t   set(   t   keyt   rett   restrt   foundt   typt   namet   val(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_memo_or_push[   s$    %	c         C   s  t  j j   } t   } x | D] \ } } | d k r_ | j d | t  j j | d   f  q | d k r | j d | t  j j | d   f  q | d k r | j d | t  j	 j | d   f  q t
 s t |   q Wt j |  t   | | f  t  j d j |  d  S(   NR/   R>   R   i(   R&   RJ   R=   RK   t   addR5   RH   R4   R@   R'   RG   R   R   t   set_memoRE   R)   (   RL   RR   t   memoableRN   RP   RQ   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   set_memo_and_popr   s    	c            s  t  } t } t |  d k r t |  d k r[ t |  d k sN t |   | d } n  | d } | d k sw t  | j d  r d | k r t } n  d } q n d } t |  |  } |  g t |  t f g } | d k r g  } n  | d k r| r|  g | } n  | r6g  | D] }	 |	 | f ^ q} n  xt |  d k rg  }
 x| D]\ } } } xu| D]m    | k rt d	 | d
 j |   g  f   n  t	    f d   d    D D  } | s| d k rn| d k s	| d k rm| s	| rm| r]  j
 d  rGt   d  rG| j   | d f  qj| j   | f  qm| j    n    j
 |  rt   |  } | d k r| st  | | 7} qn  |
 j |   g | | p| f  qnqnWqXW|
 } q9W| S(   Ni    i   i   t   prunet   invertt   excludes   exclude!t   !s&   Infinite %s loop in recursive_get: %s!s   ->c         3   s=   |  ]3 }   j  |  r' t   |  n d   | k Vq d  S(   N(   t   has_propvalt	   to_pythonR4   (   t   .0t   r(   t   nt   restrictions(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>   s   c         s   s   |  ] } t  | d   Vq d S(   s   utf-8N(   R   (   R^   t   sr(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>   s   u   subownedi(   RX   s   invertRZ   s   exclude!(   RI   RG   t   lenR   R?   R]   t   listR   t   joint   allR\   R<   (   t   elmt	   prop_namet   argsRa   t   incl_elmt
   with_ownert   filterRM   t   newt   et   newnewt   patht   lt   prunedt   passed_restrt   adding(    (   R`   Ra   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   recursive_get   sb    
		"#
t   RefExtractingFormatc           B   sG   e  Z d    Z d   Z d   Z d d  Z d d  Z d d  Z RS(   c         C   s   g  |  _  d  |  _ d  S(   N(   t   refsR4   t	   link_toks(   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$      s    	c         C   s,   |  j  d  k	 r( |  j  j t |   n  d S(   Nu    (   Rx   R4   R<   t   Text(   R!   t   text(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRz      s    c         C   s   d S(   Nu    (    (   R!   Rz   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   error   s    c         C   sG   | t  k r g  |  _ n+ |  j d  k	 rC |  j j t | |   n  d S(   Nu    (   t   LINKRx   R4   R<   t   Start(   R!   t   tt   arg(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   start   s
    c         C   s   | t  k re d | k rY t | d t  s= t t |    |  j j | |  j f  n  d  |  _ n+ |  j d  k	 r |  j j t	 | |   n  d S(   NR0   u    (
   R|   R   R   R   t   reprRw   R<   Rx   R4   t   End(   R!   R~   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   end   s    %c         C   s/   |  j  d  k	 r+ |  j  j t | |   n  d S(   Nu    (   Rx   R4   R<   t   Entity(   R!   R~   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   entity   s    N(	   R   R   R$   Rz   R{   R4   R   R   R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRv      s   			
c         C   s   | t  k r |  j d  r d |  k r d  } d |  k r[ |  j d  } | j d  }  n  d |  k r d |  k r t |   } | d  k	 r | j } n |  } d t d | d | d	 t d
   f Sn  d i  f S(   Nt   /s   ://i    t   .t    u    R0   Ri   R8   u   owner(	   R|   R?   R4   t   splitR=   t   get_elementR0   R%   t   get_overridden_element(   t   ht   styRi   Rg   R0   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   ref_link_func   s    (c      
   C   s_  | d  k	 rD d | j j | j f } t |  } | t k	 rD | Sn  | d  k	 r t j |  j si t	  |  j
 |  } t | j d  } t j j |  n t |  t  s t	  |  } t j } t j } g  t _ t   }	 t i t d 6 ! t j j | d |	 d t Wd  QX| t _ t j }
 | t _ | d  k	 rRt | |	 j |
 f  n  |	 j |
 f S(   Ns   g_r_e_w_l:%s.%ss   utf-8t   in_get_refst   formatt	   link_func(   R4   R1   R0   t   propnameRS   RF   R   t
   get_flavort   binaryR   t   get_propvalR   t   valueR&   R   t   addDepR   t   mentionst   errorsRv   RB   RI   t
   mainparsert   parseR   RW   Rw   (   t   text_or_elmR   t   propvalRL   RM   t   pvRz   t   old_mentionst
   old_errorst   reft
   new_errors(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt    get_reference_enames_with_labels   s0    				"			c         C   s;   t  |  | |  \ } } g  | D] \ } } | ^ q | f S(   N(   R   (   R   R   R   t   with_labelsR   t   dRq   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_reference_enames  s    c         C   s<   t  |  | |  \ } } g  | D] } t j | d  ^ q S(   NR0   (   R   R   R   (   R   R   R   t	   with_argsR   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_references  s    c         C   s   t  d |  |  S(   NR   (   t   get_eval_state_delta(   R   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_mention_enames!  s    c         C   s)   g  t  |  |  D] } t j |  ^ q S(   sC   Return all elements linked to or named in this wikitext or propval.(   R   R   R   (   R   R   Rn   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_mentions$  s    c         C   s9   y  t  t d |  |   d k SWn t k
 r4 t SXd S(   s   Return true if any errors are encountered evaluating this propval.

    This probably only works properly if the logged in user is omniscient; we
    could catch the non-wiki exceptions that can arise, but we don't.R   i    N(   Rc   R   R   RI   (   Rg   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt
   has_errors)  s     c         C   s(   t  |  d  r |  j }  n  | j |   S(   NR1   (   R3   R1   t   is_ancestor_of(   R1   t   ancestor(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   has_ancestor3  s    c         C   s4   t  |  d  r |  j }  n  | |  k p3 | j |   S(   NR1   (   R3   R1   R   (   R1   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   is_a7  s    c         G   s"   d | k s t   t |  | |  S(   Nt   __(   R   t   getattr(   t   objectRQ   Ri   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   safe_getattr<  s    c         C   sE   t  |  t  s t |    y t |  |  Wn t k
 r@ t SXt S(   N(   R   t   attrelmR   R   R   RG   RI   (   t   objRQ   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   has_propB  s    c            s   t    d  r+ t   j    j   j  St    d  rG t     St   t  rv g    D] } t |   ^ q] St   t  r t    f d     D  S  Sd  S(   NR1   R0   c         3   s1   |  ]' } t  |   t    |   f Vq d  S(   N(   t   baz_eval_wrap(   R^   R#   (   R   t   toPython(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>R  s   (	   R3   R   R1   Ri   R8   R   Rd   R   R%   (   R   R   t   a(    (   R   R   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   J  s     c            s   t    f d    } | |   S(   Nc            sQ   g  | D] } t  |  ^ q } t d   | j   D  } t |  | |      S(   Nc         s   s'   |  ] \ } } | t  |  f Vq d  S(   N(   t   baz_eval_unwrap(   R^   R#   R"   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>Z  s    (   R   R%   t   itemsR   (   t   funcRi   R    R   (   R   (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   helperW  s    (   R   (   R   R   R   (    (   R   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   baz_eval_wrap_funcV  s    c            s   t    t  r   j   St    t  rE g    D] } t |  ^ q/ St    t  rn t   f d     D  St    t  r t   d  S  Sd  S(   Nc         3   s+   |  ]! } t  |  t    |  f Vq d  S(   N(   R   (   R^   R#   (   RM   (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>c  s    s   utf-8(   R   R   t   unwrap__Rd   R   R%   t   strR   (   RM   R_   (    (   RM   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   ]  s    
c         C   s   t  j j |  t  S(   N(   R&   RB   RH   RG   (   RL   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_contexti  s    c          C   sc   d }  xV t  j D]K } t  j | } | t t f k sD t t  j   | r |  d | 7}  q q W|  S(   Nt    t   +(   R&   RB   RI   RG   R   (   t   tagR#   RR   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRE   k  s    !c         c   s   |  ] } | i i  d  6t  d 6t d 6t d 6t d 6d d 6t d   |  d 6t d 6t d	 6t d
 6t	 d 6t
 d 6t d   |  d 6t t |  d 6t t |  d 6t t |  d 6t t |  d 6t t |  d 6t t |  d 6t d 6f Vq d S(   t   __builtins__R   R   RI   RG   R4   c          _   s   t  |  |   S(   N(   R%   (   Ri   R    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   <lambda>{  s    R%   t   anyRf   Rc   R3   R   c         S   s
   t  |   S(   N(   Rd   (   Rn   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    t
   list_propsRu   R   R   R   R   R   R   N(   R   R   RI   RG   R4   R   R   Rf   Rc   R   R   Ru   R   R   R   R   R   R   (   R^   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>t  s   c            st  t  |  j    d k r d Sd |  k r7 t d   n9|  j d d  }  d | |  f } t |  } | t k	 ru | St d |    yb t t |  } | j	 i   f d	   d
 6d    f d  d 6 t |  |    } t |  } Wnv t k
 r   nt t k
 r^}   t | t  r?t j d | j d  r?d } n d } t t |  |   n Xt | |  | Sd  S(   Ni    u    R   s8   The string '__' is not allowed to appear in expressions!s   
R   s   baz_eval%s:%sR   c            s
   |    k S(   N(    (   t   s(   t   elemlocs(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    t   definedc            s     j  |  |  S(   N(   RH   (   R   R   (   R   (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    RH   s$   ^global name '(\w+)' is not defined$sD    (If you're using a generator expression, try a list comprehension.)R   (   Rc   t   stripR   t   replaceRS   RF   t	   _elemdictR%   t   BAZ_EVAL_GLOBALSR)   R4   t   evalR   R   t	   ExceptionR   t	   NameErrort   ret   searchRi   R   RW   (   t   exprR   RL   RM   t   eval_globalsRn   t   extra(    (   R   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   baz_eval  s:    		c         C   s6   t  |  d t } t | t  r. t |  g S| Sd S(   sD   Returns a generator for tokens representing the given baz_eval expr.R   N(   R   RG   R   t
   basestringRy   (   R   RM   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt	   full_eval  s    c         C   sI   t  |   } t | d  r9 | d  d   } t |  } n t |  } | S(   Nt   __call__(   R   R3   R4   t   tokens_textR   (   R   RM   t   gen(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   unicode_eval  s    c         C   s   t  d j |  t j  S(   Nt   string(   R   R   R&   R   (   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   string_tokenize  s    c         C   s   d } x |  D] } | j  t k rj | j t k rj | j d d  k sP t |   | t | j d  7} q | j  t k s t |   | | j 7} q W| S(   Nu    i   i    (	   t   opt   ENTITYt   stylet   MACROR   R4   R   R   t   TEXT(   t   toksRM   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    c         C   s   t  j d j d | f  x) | j   D] } t | t  s' t  q' W| t  j k r` t  j | St |  } t  j	 j
 |  |  |  j |  r t |  | d | d | S| Sd  S(   NiR   R5   R'   (   R&   RJ   RT   R   R   R   R   R'   t   get_propnameR   t   addPropvalDepR\   t   render_propval(   R1   Rh   t   defaultR5   R'   R"   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   render_allow_override  s    c         C   s\  x) | j    D] } t | t  s t  q WxI | D]A } | d j   sU t |   t | | d  s3 t |   q3 Wx; | D]3 } | d j   r | d d k s t |   q Wt t d t	 t
 t  } t t j  } t t j  }	 t j }
 t j j |  t j j |  | t _ | j t |  | d |  } | t _ |	 t _ |
 t _ | S(   s8   Render the propval as plain text, tracking dependencies.i    R0   R
   t   txtt   content(   R   R   R   R   R2   R3   R   R	   R   t
   macro_funcR   t   makeRestrictedR%   R&   R5   R'   R   R)   t   rendert   recurse(   R1   Rh   R5   R'   R   R"   R#   t   parserR6   R(   t
   old_parserRM   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s&    #1					s   ^(\w+)[=]([^=].*)$c         C   si   d } i  } xV |  D]N } t  j |  } | rM | j d  | | j d  <q | | | <| d 7} q W| S(   s   Parse an argument list into a map of names to values.

    name will be an integer for positional parameters and a string for
    keyword parameters.i   i   (   t
   KW_ARG_PATR   t   group(   t   arglistt   nextnamet   retmapt   wordt   m(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   parse_macro_args  s    
c         C   sV   |  j  d  k	 s t  t j j |   |  j   } x | D] } t j j |  q8 W| S(   N(   R0   R4   R   R&   R   t   addChildrenDept   get_descendants(   Rn   t   everyonet   dude(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   _list_descendants  s    c         C   s   g  d  f g } d } x |  D] } | d k rx | j t k rx | j t k rx | j d | k rx | j g  | j f  q | j t k r | j t k r | d 7} q | j t k r | d 8} q n  | d d j |  q W| S(   Ni    i   i(	   R4   R   R   R   R   R   R<   t   STARTt   END(   R   t	   splitterst   retlistt   macro_levelR~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   safesplit_tags  s    *c         C   s$   g  t  |  |  D] } | d ^ q S(   Ni    (   R  (   R   R  t   p(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt	   safesplit,  s    c         C   s   t  |  t  s! t t |     t t d  r |  d j   r |  t j k ro t j	 j
 t j  t j j   St j d j d |  f  |  t j k r t j |  S|  t j k r t j Sn  d  S(   NR   i    iR/   (   R   R   R   R   R3   R&   R2   R   t   PARENT_ELEMENTR   t   addParentDept   met
   get_parentRJ   RT   R5   t
   ME_ELEMENTR4   (   R0   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   /  s    !
c         C   se   t  |   } | d  k	 r | St j |   } | d  k r] t t d  rY t j j |   n  d  S| Sd  S(   NR   (   R   R4   R   R   R3   R&   R   t   addExistsDep(   R0   Rn   Rg   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   @  s    c          C   sP   t  j d j d  d t  j k rC t  j d }  |  d k	 rC |  Sn  t t j  S(   sQ   Like get_element(u'leaf'), but allows explicit overriding by setting
    current.iR/   u   current(   s	   eoverrideu   currentN(   R&   RJ   RT   R5   R4   R   R   t   LEAF_ELEMENT(   RM   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_current_elementL  s    c         C   s1   x* t  t j  D] } | j |   r | Sq Wd  S(   N(   t   reversedR&   R;   R\   R4   (   R   R9   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_current_for_propW  s    c         C   sw   |  d d k r  |  d k r  |  S|  d k rI t  j d j d |  f  n  |  t  j k rc t  j |  St d |    d  S(   Ni    R
   u   thisiR>   s   Undefined propname '%s'!(   R&   RJ   RT   R@   R   (   t   pname(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   ]  s    c         C   s"   |  t  j k r t  j |  Sd  Sd  S(   N(   R&   R'   R4   (   t   mname(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_moverrideg  s    t   Argc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   raw(   R!   R  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$   n  s    c         c   s   t  t |  j   Vd  S(   N(   Ry   R   R  (   R!   Ri   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   p  s    (   R   R   R$   R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR  m  s   	c         C   s   t  |  } t |  d  r' |  j } nU t |  d  r[ d |  j j d j |  j  f } n! t |   } | d  k r| |  } n  d | | f } t |  } | t	 k	 r | St
 t |  | d t  } t |  d k s t  t | | d  | d S(	   NR0   R1   u   %s/%sR   s   to_python:%s.%sR]   i   i    (   R   R3   R0   R1   Re   Ri   R   R4   RS   RF   Rd   R   RI   Rc   R   RW   (   t
   ename_or_eR  t
   memo_enameRL   RM   t   ls(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR]   s  s"    	c         #   sw  |  d  k	 s t  t |  d  rN |  } | j }  t | d  s t |   nK t |  d  rr |  } | j j }  n' t |   } | d  k r t |    n  t |  } | d  k	 s t  | d  k	 s t  i  } i  } | } t | d  rMx8 t t	 | j
   D]! }	 | j
 |	 | t |	 d  <q W| j rAi | j d 6} n  | j } n  t | d  sht |   | t j k r| r| j Vqst | j  Vnt t d  rt | d  st |   t j j | |  n  | t j k r|  t j k rt j j |   qn  t j }
 t t j   t t j  } t t j  } t t j  } t } z| t _ | t j d <|  t j k r| t j t j <| t j t j  <t j j |  t! } n    d  k	 rt         f d   } | t j d	 <n |  t j k rd  t j d	 <n  |  t j k s'| rd
 j" |  t j d <| rx@ t# |  j$   D]) \ } } t% |  t j d t |  <qVWqn  t& j' |  } | j( r| t j d <n  t j j) |  t j j) |  | j* |  } | d  k r~| t j+ k r5| rt, t- j.    Vn x t- j.   D] } | Vq"Wd  St/ d | d  k	 rP| j n d  |  |
 d  k	 rk|
 j n d  | f   n  t | j0 d  } | r| j1 | t j2 d | Vn+ x( | j3 | t j2 d | D] } | VqW| rAt j d | k st t j t j d | f   t j d  | k sAt t j | f   n  Wd  |
 t _ | t _  t _ | t _ | t _ Xd  S(   NR0   R1   i   u   ownerR   R   t   thisc         3   sQ   t  j t j }  t j t  j t j <x   D] } | Vq. W| t  j t j <d  S(   N(   R&   R5   R   R  (   R   t   contt   newleafR~   (   R   t   oldeover(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   render_content  s    	u   contentu    u   argsu   argsC   Element ##%s## (called as ##%s## by ##%s##) has no property ##%s##!s   utf-8R   i(4   R4   R   R3   R0   R1   R   R   R   t   xrangeRc   Ri   R   R8   R   t   ELEMENT_NAME_PROPRy   R&   R   R   t	   NAME_PROPR   R<   R  R%   R5   R'   R@   Rd   R;   RG   R
  R  t   CURRENT_ELEMENTRI   Re   R   R   R  R   R   t   ownedR)   R   t   SUBSTITUTION_PROPR   t   macrost   contextevalR   R   R   R   R   (   R0   R  R]   R   R   Rn   t   extra_movert   extra_eovert   orig_et   it   oldmet   oldmovert   oldpovert   old_currentt   added_currentR   t   varR   t   flavorR   R~   R   (    (   R   R  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    					'		(		/				t   nice_genc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   _nice_gen__gen(   R!   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$     s    c         C   s   |  S(   N(    (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __iter__  s    c         C   s   |  j  j   S(   N(   R5  t   next(   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR7    s    c         C   s   t  |  |  S(   N(   R   (   R!   t   other(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __add__  s    (   R   R   R$   R6  R7  R9  (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR4    s   			R   c           B   sM   e  Z d d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C   sR   t  | d  s* t  | d  s* t |   | |  _ | |  _ | |  _ | |  _ d  S(   NR0   R1   (   R3   R   t	   element__t   _attrelm__toPythont   _attrelm__argst   _attrelm__owner(   R!   R1   R   Ri   R8   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$     s
    *			c         C   sB   |  j  d  k r% |  j d  k r% |  j St |  j |  j  |  j  Sd  S(   N(   R<  R4   R=  R:  R   (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    c         C   s~   | d  k r t    n  t | t  s9 t | d  } n  |  j rd t |  j |  } t | |  j  St t	 |  j |   Sd  S(   Ns   utf-8(
   R4   t   KeyErrorR   R   R;  R]   R:  R   R4  R   (   R!   R   RM   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __getattr__"  s    	c         C   s   d |  j  j S(   Ns   <@Element %s>(   R:  R0   (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __str__.  s    c         C   s   t  | t  o |  j | j k S(   N(   R   R   R:  (   R!   R8  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __eq__0  s    c         C   s   |  j  |  S(   N(   RA  (   R!   R8  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __ne__2  s    c         C   s   t  |  j  S(   N(   t   hashR:  (   R!   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __hash__4  s    N(
   R   R   R4   R$   R   R?  R@  RA  RB  RD  (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s   					R   c           B   sA   e  Z d    Z d   Z d   Z d   Z d   Z d d  Z RS(   c         C   s   | |  _  i  |  _ d  S(   N(   t   _elemdict__toPythont   _elemdict__locals(   R!   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$   8  s    	c         C   sA  | |  j  k s | t j k r" t St | t  sC t | d  } n  | d  k rS t S| d j   s t	 j
 d j d | f  t	 j
 d j d | f  | t	 j k s | t	 j k r t St |  } t j |  | d  k	 r t Sn  t t |  r t St j |  } | d  k	 rt St t	 d  r9t	 j j |  n  t Sd  S(   Ns   utf-8i    iR/   R   R   (   RF  R   R
  RI   R   R   R4   RG   R   R&   RJ   RT   R5   R'   R  t   fooR<   R3   R'  R   R   R   R  (   R!   RL   R9   Rn   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __contains__;  s.    c         C   s  t  j |  | |  j k r' |  j | S| t j k rb t j j t j  t	 t j j
   |  j  St | d  } | |  k r t  j t  t d |   n  | d j   r | t j k r t j | S| d d k r | d t j k r t j | d S| t j k r4t t |  r4t t t |  d  d    S| d j   r| t j k rt |  } | d  k	 r| j |  st  t t	 | |  j  |  Sn  t	 t |  |  j  Sd  S(   Ns   utf-8s   No element '%s' exists!i    t   _i   (   RG  R<   RF  R   R
  R&   R   R  R  R   R  RE  R   RG   R>  R   R'   R5   R3   R'  R   R   R4   R  R\   R   R   (   R!   RL   R9   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __getitem__T  s,     # c         C   s   | |  j  | <d  S(   N(   RF  (   R!   RL   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __setitem__l  s    c         C   s   |  j  | =d  S(   N(   RF  (   R!   RL   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __delitem__n  s    c         C   s%   y |  | SWn t  k
 r  | SXd  S(   N(   R>  (   R!   RL   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRH   p  s    N(	   R   R   R$   RH  RJ  RK  RL  R4   RH   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   7  s   					t   environmentR   c            s:    d  k r    n       f d   } | | _ | S(   Nc         3   s  t  |   } g  } xR | j   D]D \ } } | d k rM | j t |   q t d |   f   q Wt j t d k r% d  k	 r t	 d   Vx | D] } | Vq Wt
 t t  Vt	 d   Vqt	 d   d j d   | D  f  Vx | D] } | Vq Wt
 t t  Vt	 d	  Vn t j t d
 k r d k rt	 d   Vx | D] } | VqZWt
 t t  Vt	 d   Vqt	 d   Vx | D] } | VqWt
 t t  Vt	 d  Vn$ x | D] } | VqWt
 t t  Vd  S(   Nt   subclasss#   Unknown arg '%s' in %s environment!t   htmls   <%s>s   </%s>s   <div class="%s%s">R   c         s   s   |  ] } d  | Vq d S(   R   N(    (   R^   t   c(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>  s    s   </div>t   texRM  s   \begin{%s}
s   \end{%s}s   \%s{t   }(   R   R   R<   R   R   R&   R   R   R4   t   LiteralR   t	   ENV_BREAKRI   Re   (   R   R   Ri   t
   subclassesRL   RR   R~   (   RQ   t   tagnamet   texmodet   texname(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   env{  sF    	"				(   R4   t   __doc__(   RQ   RX  RV  RW  t   docRY  (    (   RQ   RV  RW  RX  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRM  w  s
    	(	c            s"   d     f d  } | | _ | S(   Nc         3   sF   x?  D], } t  j t | k r t  |  Vd  Sq Wt    Vd  S(   N(   R&   R   R   RS  Ry   (   R   R   R#   (   R   R    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   ato  s
    (   R4   RZ  (   R   R[  R    R\  (    (   R   R    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   atom  s    	c            s     f d   } | S(   Nc            s   t  t j    S(   N(   R   R   R  (   R   (   R  (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   lp  s    (    (   R  R^  (    (   R  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   leafprop  s    c            s       f d   } | S(   s   A macro that turns something like <<card>>Foo<<flip/>>Bar<</card>>
    into
    <div class="card">
    <div class="front">Foo</div>
    <div class="back">Bar</div>
    </div>c         3   s  t  |   f  } t |   } g  } xR | j   D]D \ } } | d k r_ | j t |   q1 t d |  f   q1 Wt |  t   k r xtt d    f  D] } | Vq WnNt j	 t
 d k rXt d  d j d   | D  f  VxR t t |   D]> } t d  |  Vx | | D] }	 |	 Vq,Wt d	  VqWt d	  Vn t j	 t
 d
 k rt d   VxR t t |   D]> } t d  |  Vx | | D] }	 |	 VqWt d  VqWt d   Vn' x$ | D] }
 x |
 D] }	 |	 VqWqWd  S(   NRN  s   Unknown arg '%s' in %s divided!s   Too many %ss in a %s!RO  s   <div class="%s%s">R   c         s   s   |  ] } d  | Vq d S(   R   N(    (   R^   RP  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>  s    s   <div class="%s">s   </div>RQ  s   \begin{%s}
s   \%s{RR  s	   
\end{%s}(   R	  R   R   R<   R   R   Rc   t   _errorR&   R   R   RS  Re   R!  (   R   R   t   partsRi   RU  RL   RR   Rn   R,  R~   R  (   t   dividert   innerRQ   (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   div  s>    		(    (   RQ   Rb  Rc  Rd  (    (   Rb  Rc  RQ   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   divided  s    #c            s+   g     f d  } | | _  d | _ | S(   Nc         3   s6   t      Vx | D] } | Vq Wt     Vd  S(   N(   R}   R   (   R   R   R~   (   R   R   (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   fmt  s    	t
   latexalike(   RZ  t   hidden(   R   R   R[  Rf  (    (   R   R   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   inline_format  s    		c            s   d    f d  } | S(   Nc         3   s   d   } t  j d j d | f  | t  j k r\ x` t t  j | j  D] } | VqJ Wn: d t  j k s d t  j k r} n t d   t  j f   d S(   s   For references with arguments.u   arg%diR   u   1u   arg1s   No arg %s: %sN(   R&   RJ   RT   R'   R   R  R   (   R   R   t   arg_nameR~   (   t   num(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   argi  s    
(   R4   (   Rk  Rl  (    (   Rk  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt	   arg_index  s    c            s"   d     f d  } d | _ | S(   Nc            s'   t  d  d j d     D  f  S(   Ns   "%s" may only be used in a %s!s    or c         s   s   |  ] } d  | Vq d S(   s   "%s"N(    (   R^   RP  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>  s    (   R`  Re   (   R   R   (   t	   containerRQ   (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   ill  s    t   illegal(   R4   Rh  (   RQ   Rn  Ro  (    (   Rn  RQ   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRp    s    	t   noescapec           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s4   Wrap a format such that it's escape method is a nop.c         C   s   | |  _  d  S(   N(   t   _noescape__format(   R!   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR$     s    c         C   s   | S(   N(    (   R!   Rz   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   escape  s    c         C   s   t  |  j |  S(   N(   R   Rr  (   R!   t   attr(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR?    s    (   R   R   RZ  R$   Rs  R?  (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRq    s   		t   maxwec           B   s   e  Z d    Z RS(   c         C   s   d S(   Ni   (    (   R!   R8  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   __cmp__  s    (   R   R   Rv  (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRu    s   t   Macrosc           B   s  e  Z e d     Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z	 e e
 d d   Z e e
 d	 d   Z e e e d
   Z e e d   Z e e d   Z e e e d   Z e e
 d d d   Z e e d   Z e e d   Z e d    Z e e d d d d d  Z e e d d d d d  Z e e d d d d d  Z e e d d  d! d d"  Z e e d# d d$  Z e e d% d& d' d( d d)   Z e e d% d& d' d* d d+   Z  e e d% d, d' d- d d.   Z! e e d% d, d' d/ d d0   Z" e e d% d, d' d1 d d2   Z# e e d% d3 d' d4 d d5   Z$ e e d6 d d7  Z% e e d8 d d9  Z& e e d: d d;  Z' e e( e) d d<  Z* e e( e+ d d=  Z, e e( e+ d d=  Z- e e( e. d d>  Z/ e e( e0 d d?  Z1 e e( e2 d d@  Z3 e e( e4 d dA  Z5 e e( e6 dB d dC  Z7 e e( e6 dD d dC  Z8 e e( e6 dE d dC  Z9 e e( e6 dF d dC  Z: e e( e6 dG d dC  Z; e e( e6 dH d dI  Z< e e( e6 dJ d dK  Z= e e( e6 dL d dM  Z> e e( e6 dN d dO  Z? e e( e6 dP d dQ  Z@ e e( e6 dR d dS  ZA e e dT   ZB e dU    ZC e dV    ZD e e e dW   ZE e dX    ZF e dY    ZG e dZ    ZH e d[    ZI e d\    ZJ e d]    ZK e d^    ZL e e d_   ZM e d` da   ZN e db    ZO e dc    ZP e dd    ZQ e de    ZR e df    ZS e dg    ZT e dh    ZU e eV dJ   ZW e eV dL   ZX e eV dN   ZY e eV dP   ZZ e eV dR   Z[ e eV di   Z\ e eV dj   Z] e eV dk   Z^ e eV dl   Z_ RS(m   c         c   s   t  t  Vd S(   s   Start a new paragraph.N(   R   RT  (   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   par  s    c         c   s   x | D] } | Vq Wd S(   s?   Treat the content as its own block, separate from surroundings.N(    (   R   R   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   block  s    c         c   sl   t  |   } t | d  } t j t | k rh x6 | D]+ } | j t k r\ t | j  Vq6 | Vq6 Wn  d S(   s   Include the markup, unsanitized, in the given format, with
        macros evaluated.
    
        Use like {{{<<format "html">><b>Raw HTML</b><</format>>}}}.i   N(	   R   R   R&   R   R   R   R   RS  R   (   R   R   Ri   Rf  R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   !  s    c         c   s   t  |   } t t j  } t t j  } x | j   D] \ } } t |  } t | d  rn | t j | <q7 t | t	  s t | d  s | d k s t | t j f   | t j | <q7 Wx | D] } | Vq W| t _ | t _ d S(   sv   Define local names for elements or other data.

        Use like {{{<<let current=ExamplePC foo="bar">>...<</let>>}}}.R0   R   N(   R   R%   R&   R'   R5   R   R   R3   R   R   R4   R   (   R   R   Ri   R.  R  R#   R"   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   let0  s    !		c         c   s   t  |   } t t j  } i  } x4 | j   D]& \ } } t |  } | t d | <q. Wt t   x | D] } | Vql WWd QXd S(   sW   Define local prop names.

        Use like {{{<<plet p="name">><<Bob.*p/>><</plet>>}}}.R
   N(   R   R%   R&   R@   R   R   t   psubstR>   (   R   R   Ri   R/  t   pstubstR#   R"   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   pletH  s    c         C   s   t     d S(   s   When evaluating a reference, the content of the macro.

        For self-closing macros, content evaluates to None.  When not in
        reference context, raises an exception.N(   R   (   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   Y  s    c         c   s   t  | d  } d j |   } xs t r t |  } | r= Pn
 | d } t |  d k r] d S| d d \ } }  | d k r Pq! d j |   } q! Wx | d d D] } | Vq Wd S(   sH  Evaluate the content only if a condition is true.

        Can contain {{{<<elif another condition/>>}}} and/or {{{<<else/>>}}}.
        For example:
        {{{
        <<if leaf.gender == "male">>
          he
        <<elif leaf.gender == "female"/>>
          she
        <<else/>>
          they
        <</if>>
        }}}t   elset   elifu    i   i    N(   s   elses   elif(   R  Re   RI   R   Rc   (   R   R   t   parttagst   condRR   RQ   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   _ifa  s    	
R~  t   ifR  c         #   s   t  |     d j   f d   t    D  } | d k	 rr t | |  Vx | D] } | VqR Wt | |  Vn t | |  Vd S(   s   Builds a link dynamically, evaluating and joining arguments.

        Use like {{{<<link "/print/" leaf.username ".pdf">>Packet<</link>>}}}
        or {{{<<link i.prefix ":" i.examplepage />>}}}.R   c         3   s   |  ] } t    |  Vq d  S(   N(   R   (   R^   R   (   Ri   (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>  s    N(   R   Re   t   sortedR4   R}   R   R   (   R   R   R   t   destR~   (    (   Ri   sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   link  s    %	c         C   s   t  j |  | d t S(   NR   (   Rw  R  t   IMAGE(   R   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   image  s    c         C   s   t  j |  d | d t S(   s?   Counts the number of elements that would be matched by foreach.R   R   (   Rw  t   foreachRI   (   R   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    c   '      #   s)	  t  |   } d | k s$ d | k r3 t d   n  | d } | d =| d  | d =g  } g  } d } x | | k r | | d% k r | | d k r t  n  | | =| j | | d  | | d =| j | | d  | | d =| d 7} qj W d k r st d   qg   n  t    t   } g  	 d }	 t }
 t } t   d } d } x| j   D]\ } } t	 | t
  s| j   d k r	 | j   j   7	 q| j   d	 k r=d
 | k r| j d
 d  \ } } n | } d } | j   } d | k r0| j   } | d }	 | d } q| }	 } q| j   d k r^t |  } q| j   d k rt |  }
 q| j   d k rt |  } q| j   d k rt |    q| j   d k rt |  } qx- t d |  D] } | VqWqj| j |  qjWt |  } |
 s  f d   } d    t d |   | |  } Wd QX j d
   t   d k rx/ | D]' } | d k	 st | | | f   qWg  | D] } i |  6^ q} n x7 | D]/ } x& | D]   d k	 st |   qWqWt  f d   | D  sBt d    n  g  | D] } t t  |   ^ qI} t t j  } t t j  } x t | |  D] \ } } g  } x} | D]u }  |  | t |   } xP | D]H } | d k rt d |   n  t |  }  | |  | <| j |   qWqW| } qWt |  d k rt d |  j g  }! xV | D]N }  |  y* t d   | D  r|! j |  n  Wqdt k
 rqdXqdW|! } Wd QXn   rt t t |    Vnt |  d k r%| d k	 r%xt | t  D] }" |" VqWnx0 t 	  D]"  | j  d   f d    q2W f d   
 |	 ri  }# xa | D]Y } |  } |	 | k r| |	 n t! }$ |$ |# k r|# |$ j |  qz| g |# |$ <qzWxt" |# j#    D] }% t	 |% t  st t$ |%    |% t! k r#|% n d  t j | <| rXx t | t  D] }" |" VqFWn  x1 |# |% D]% } x 
 |   D] }" |" VqyWqcWqWn.| rg   t%  d!    d   d   
  f d"   }& n  x | D] } | rt   d k rt& t'  Vn  t& t(  Vn  x 
 |   D] }" |" Vq+W| rt) t(  V j |  t   | k rx |&   D] }" |" VqtWqqqW| rt   d k rx |&   D] }" |" VqWn  | t _ | t _ nO     	 f d#    t* | d$  s	t  x  | d  D] }" |" Vq	Wd S(&   s  Evaluate the content once for each member of some group.

        The basic form is {{{<<foreach group var ...>>...<</foreach>>}}}.
        "group" can either be an element, in which case the content is
        evaluated with var set to each of that element's descendents in
        turn, or a particular element's prop (generally of flavor references),
        in which case the content is evaluated with var set to each of the
        elements referenced in that prop value, in turn.

        Nested loops can be created in a single macro by adding
        {{{foreach group2 var2}}} after the first var name.
        You can also sum counts by doing something like:
        {{{<<foreach Object o count o.stuff i .../>>}}}.

        Parameters after the var name can be conditions filtering the
        specified group; these should generally be in parentheses.

        foreach also takes a large number of optional keyword parameters,
        which take a value after an =:

        orderBy: a prop the group members have they should be ordered by

        groupBy: the group members should be grouped by the specified
                 prop.  If the value contains a comma, the markup after
                 the comma is used as a group header.

        ifNone: markup that should be evaluated if the group is empty.

        asTree: put the evaluations of the content in a nested list
                structure reflecting the inheritance tree of the group.
                Doesn't support nested loops.

        inRowsOf: put the evaluations in a table with the specified number
                  of columns.  {{{<<break/>>}}} may be used to break an
                  evaluation into several rows.

        recursive: if the group was based on a references-flavor prop and
                   group members have that prop, evaluate the content
                   for the elements referenced in their values for the prop,
                   and so on.

        childrenOnly: use the specified element's children only, not all of
                      its descendents.
        i   i   sB   {{{foreach}}} takes at least two parameters!  See [[edit:Macros]]!i   R  R   s6   {{{foreach}}} must have content!  See [[edit:Macros]]!t   orderbyt   groupbyt   ,R   R   i    t   ifnonet   astreet	   recursivet   childrenonlyt   inrowsofs   Unknown foreach parameter '%s'!c            se   t  |  d  r<   r/ t j j |   |  j   St |   Sn% t |  t  s] t t	 |     |  Sd  S(   NR0   (
   R3   R&   R   R   t   get_childrenR  R   Rd   R   R   (   t   list_or_elm(   t   childrenOnly(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_list(  s    
!c         S   s   x |  D] } t  |  | d  s3 t  |  | d  rG |  | t j | <q t |  | t t j f  su t |  | f   |  | t j | <q Wd  S(   NR0   R1   (	   R3   R&   R5   R   R   t   typest   FunctionTypeR   R'   (   t   substt   substnam(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   do_overrides3  s    .s   foreach get_list %sNc         3   s'   |  ] } t     t  |  k Vq d  S(   N(   Rc   (   R^   Rn   (   t   nambits(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>F  s    s   Length error unpacking for %s!s   Got None evaluating %s!s   foreach filtering %sc         s   s   |  ] } t  |  Vq d  S(   N(   R   (   R^   R_   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pys	   <genexpr>c  s    RL   c            s0   |   d j     r, t |   d    St S(   Ni    (   R\   R]   t   MAXWE(   R  (   t   fR  (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   q  s    ,c         3   s$     |   x | D] } | Vq Wd  S(   N(    (   R  R  R~   (   R  (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   stickonv  s    
u   ???t   breakc          3   s   t  t  Vxj   D]b }  t t  VxC  D]; } t t  Vx  | |   D] } | VqK Wt  t  Vq* Wt  t  Vq W 2d  S(   N(   R   t	   TABLE_ROWR}   t
   TABLE_CELL(   RP  R   R~   (   t   content_bitsR  t   this_row(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   end_row  s    	c         3   s%  |  j  d  k	 s t  t j j |   t t j  } |  t j  <t t	 |  Vx  D] } | VqV Wt
 t	 |  V| t _ |  j   }  r t t t |    Vny t |  d k r!x- t   D]   | j d   f d    q Wx4 | D]) }  x   |  | d  D] } | VqWq Wn  d  S(   Ni    RL   c            s     |  k r |    St  S(   N(   R  (   Rn   (   R  (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    i   (   R0   R4   R   R&   R   R   R%   R5   R}   t   UNORDERED_ITEMR   t   getChildrenRy   R   Rc   R  t   sort(   Rn   t   deptht   old_overridesR~   t   lstt   y(   R   R   t   digt   namt   orderBy(   R  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR    s$    		R0   (   s   foreachs   count(+   R   R   RI   R<   R4   Rd   RK   RG   R   R   t   intt   lowerR   R   R   R`  RT   R   Rc   R   Rf   R%   t   zipR&   R5   R'   R   Ry   R   R   R   R  R  R  R  t   keysR   R	  R}   R  R  R   R3   ('   R   R   R   Ri   RP   t   subtypst   subnamsR7  RN   t   groupByt   asTreeR  t   ifNonet   inRowsOfRL   R   R2  t   groupMarkupt	   groupNameRn   R  R  R  t
   subst_listt	   old_eovert	   old_movert   stypt   snamt   new_subst_listR  t   new_lstt   new_et	   new_substt   filtlstR~   t   groupsRR   t   gR  (    (   R  R   R  R   R  R  R  R  R  R  R  R  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR    s:   .

			
	%# (



 
!

		R  R  t   similarc   
      c   s  t  d  } t d  } t } i  } t   } t | d  rg | j d k	 r[ | j | d <n  | j } n  t d  d k r | | k r d | k r | | d <n  t	 |  Nt
 d  r%t } | j } d } xE t d |  r| d t t t d |  j   7} | d 7} q Wt t |  Vn  t i t d 6  t |   | d k	 rd	 } x& | d d  D] }	 | d 7} |	 VqhW| d	 k rx t | d
  D] }	 |	 VqWqn x t | d
  D] }	 |	 VqWWd QXWd QX| rt t |  Vn  Wd QXd S(   s   Call as {{{<<contexteval/>>}}} in an element's substitution
        to allow that element to serve as a context for property/macro
        evaluation.u   leafu   contentR1   u   ownerR   i   u   arg%du   /i    u   nameN(   R   R  RG   R  R3   R8   R4   R1   R   R/   R   RI   R0   R   R   R  R}   R|   RB   R7   R   R   (
   R   t   leaft   ccontentt   is_refst
   eover_dictt   currentt   hrefR,  t   cntR~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR(    sH    			
	  c         C   s   d S(   sr   Suppress any content.

        Useful for leaving comments only relevant to people editing a prop's
        value.(    (    (   R   R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   comment  s    c         c   s  t  |   } d d d d g } xM | j   D]? \ } } | d k rZ t |  | | d <q+ t d |   q+ Wt |  } | rt j t d k r t d t	 |   Vx | D] } | Vq Wt d	  Vqt j t d
 k rt d t	 |   Vx | D] } | Vq Wt d  Vqn  d S(   sA   Renders the (up to) four arguments as headers around the content.R   i   i   i   i   s   Unknown arg '%s' in card!RO  s   <div class="page">
<div class="lheader">%s</div>
<div class="rheader">%s</div>
<div class="lfooter">%s</div>
<div class="rfooter">%s</div>
s   
</div>
RQ  s:   \cleardoublepage
\resetnumbering
\headers{%s}{%s}{%s}{%s}
s   
\cleardoublepage
N(   i   i   i   i   (
   R   R   R   R   Rd   R&   R   R   RS  t   tuple(   R   R   Ri   t   headfootRL   RR   R  R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   withheaders  s.    		t   centerRV  R[  s   Center the content.t   rightRX  t
   flushrights   Right-justify the content.t   leftt	   flushlefts   Left-justify the content.t   dboxRW  t   commands#   Put a double box around the contentt   figures   Make a floating figure.RO  u   <hr />RQ  s
   \clearpages   Start a new logical page.s   \cleardoublepages   Start a new piece of paper.u   <div class="gap"></div>s   \par\smallskip s   Insert a small gap.s   \par\medskip s   Insert a medium gap.s   \par\bigskip s   Insert a big gap.u    u   	ableofcontentss   Insert a table of contents.u   …s	   Ellipsis.u   æt   aeu   Æt   AEs   Bold.s   Italic.s
   Monospace.s
   Underline.s   Strike.s	   Footnote.is   Small text.iiiii    s   Normal font size.i   s   Large text.i   s   Rather large text.i   s   Very large text.i   s
   Huge text.i   s   Very huge text.c         c   sJ   | d k r t t  Vn, t t  Vx | D] } | Vq, Wt t  Vd S(   s   No indentation.N(   R4   R   t   NOINDENTR}   R   (   R   R   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   noindentf  s    	c         c   s?   t  d j |    } t | t  s0 t |   t |  Vd S(   sg   Evaluate the given expression and output its value.

        E.g., {{{<<eval 3 + 5/>>}}} will output 8.u    N(   R   Re   R   R   R   Ry   (   R   t   result(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   _evalq  s    c         c   s   d j  |   j   } t j d j d | f  | t j k rl t t j | d  rl t t j | j  Vn t t	 |   Vd S(   sa   Return a macro's value as a string, unevaluated.

        Useful for args of macro-like elements.u    iR   R  N(
   Re   R   R&   RJ   RT   R'   R3   Ry   R  R   (   R   t   argstr(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR  z  s    c         c   sr  t  |   } d | k r' t d   n  | d j d  \ } } t |  } | d =i  } x* | j   D] \ } }	 t |	  | | <qf Wt | d  r x8 t t | j	   D]! }
 | j	 |
 | t
 |
 d  <q W| j } n  d d l } | j i | d 6 } | j | j | d t j d	 | } | d k r| j |  } | d k rbt d
 | | f   n  t | t j d | d t \ } } } t j | k r| j | j | t j | | | |  qn$ | d } | d } | d } d } x{ | D]s } | t j k rt j j   Pq| t j k r4t j j   qt |  d k sRt |   t j j |   qWx" | d D] }
 t j j |
  qqW| rt j j   t  d  Vn  t! | t"  rt  |  Vn x | D] }
 t  |
  VqW| rnd d l# m$ } | d k r| j |  } n  t% | j& d  } t  d | j | | |  | j | f  Vt' d  Vt  d  Vn  d S(   s   Evaluate the specified prop of an element cachably.

        This means the evaluation will ignore any context, but that it can
        take advantage of caching.  Limited context can be provided in
        the form of {{{let}}}-style keyword parameters.i   s/   ##cache## takes only one non-keyword parameter!R   R1   iNRz  R   t	   cache_tags   ##%s## has no property ##%s##!t	   reentrantR   R   t   metadatai   t   imagess   <div class="editable">(   t   jsarg_escapes   utf-8uk   </div><a onclick="editize('%s.%s', '%s', this); return false" class="editlink" id="editize-%s.%s" href="#">u   edits   </a>((   R   R   R   R   R   R   R3   R!  Rc   Ri   R   R1   t
   conversiont   flatten_filterst   get_from_cacheR0   R&   t	   extensionR4   R   t   evaluateRI   R   t	   DISCORDIAt   cache_propvalt   makeUncacheablet   OMNISCIENCER   R   t	   addRawDepR  R<   RS  R   R   t
   bazki.utilR  R   R   Ry   (   R   R   t   editableRi   R0   Rh   R1   Rz  R#   R"   R,  R  t   flatt   ceR   R  t   depsR  R   R  RR   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    			



		c         c   s<   t  j t d k } x" t j |  d | D] } | Vq) Wd S(   s,   Like {{{<<cache>>}}}, but adds an edit link.RO  R  N(   R&   R   R   Rw  R   (   R   R  R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR    s    c   	      c   s  t  |   } d | k s$ d | k r3 t d   n  | d } | d } d | k rf t | d  } n d } t |  } t |  } x | j   D]| } | t d  k r | d k	 r t j	 |  j
 | k r q q n  t i | d | 6  x | D] } | Vq WWd QXq q Wd S(   s   Evaluate the content once for each prop in the given element.

        Use like
        {{{<<foreachpropin Gizmo p>> * <<Gizmo.p/>><</foreachpropin>>}}}.

        Can be given an extra ##flavor=whatever## arg to limit it to
        props of a given flavor.i   i   s'   ##foreachpropin## takes two parameters!R3  u   thisR
   N(   R   R   R   R4   Rd   R   R   R   R   t   get_propR3  R>   (	   R   R   Ri   R0   R2  R3  R1   R  R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   foreachpropin  s&    	

	c   	      c   s   t  |   } d | k s$ d | k r3 t d   n  t j } g  t _ t | d  } | d } t |  } t j } | t _ x> | D]6 } t i | | 6  x | D] } | Vq WWd  QXq Wd  S(   Ni   i   s1   {{{foreachimage}}} takes at least two parameters!(   R   R   R&   R  R   Rd   R   (	   R   R   Ri   t
   old_imagesR   R  t   latched_imagesR,  R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   foreachimage  s    		
		c         c   s   t  |   } d | k s* t |  d k r9 t d   n  | d j d  \ } } t |  } t |  } | | k r t d | j | f   n  t t  Vt	 t
 | | j d   Vt t  Vd S(   sg   Render the source of the given prop of an element.

        Use like {{{<<sourceof Gizmo.whatzit/>>}}}.i   s&   ##sourceof## takes only one parameter!R   s/   ##%s## has no prop ##%s## to get the source of!s   utf-8N(   R   Rc   R   R   R   R   R0   R}   t	   CODEBLOCKRy   R   R   R   (   R   Ri   R0   Rh   R1   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   sourceof  s    c         c   sX   t  |   } d | k s* t |  d k r9 t d   n  t | d  } t |  Vd S(   sQ   Render the propname of the given prop; useful in
        {{{<<foreachpropin>>}}}.i   s&   ##propname## takes only one parameter!N(   R   Rc   R   R   Ry   (   R   Ri   Rh   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   0  s    c      	   c   s   t  |   } d | k s* t |  d k r9 t d   n  | d } d | k rY | d n d } x t t  D] } | j d  rl t t t |  d d  | k rl | j d  r | d  } n  t	 i | | 6  x | D] } | Vq WWd QXql ql Wd S(	   s   Evaluate content once for each built-in macro.

        Sets the argument to the name of the built-in macro.  Optionally,
        a second argument selects a class of macro hidden by default.i   i   s-   ##foreachmacro## takes one or two parameters!RI  Rh  iN(   i   i   (
   R   Rc   R   R4   t   dirR'  R?   R   t   endswithR   (   R   R   Ri   R2  t   expected_hiddenR   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   foreachmacro=  s    
"c         c   s  t  |   } d | k s* t |  d k r9 t d   n  | d } t j d j d | f  | t j k r| t j | } n  t t | d  r | d } n" t t |  s t d |   n  t	 t	 t |  d d  } | d k	 rx t | t  D] } | Vq Wn  d S(	   s-   Given a built-in macro, render its help text.i   s&   ##macrodoc## takes only one parameter!iR   RI  s   No such macro ##%s##!RZ  N(   R   Rc   R   R&   RJ   RT   R'   R3   R'  R   R4   R   R   (   R   Ri   RQ   R[  R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   macrodocS  s     
c         C   s   d j  |   j   } d | k r< | j d d  \ } } n | } d } t j d j d | f  | t j k r t j | } n  | d k	 r t t	 |  | |  St t	 |  |  Sd S(   s:   Evaluate the built-in macro named by the given expression.u    R   i   R   iR   N(
   Re   R   R   R&   RJ   RT   R'   R4   R   R'  (   R   R   R  RQ   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   macroj  s    R   c         c   s   x | D] } | Vq Wd S(   s   Special indicator macro.  Propvals that //start// with this macro
        will be considered 'abstract', and the interface will encourage
        users to override them in children.  Has no effect on evaluation.N(    (   R   R   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   |  s    c         c   s.   d d l  m  } t t | j   j   Vd S(   s   Evauates to the current year.i(   t   datetimeN(   R  Ry   R   t   nowt   year(   R   R  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR    s    c         C   sS   t  d  sO t |  } | t j k s< t | t j f   t j t j | <n  d S(   NR   (    (   R   R   R&   t	   label_mapR   R  (   R   R   t   lab(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   label  s
    $c         c   s   t  |  } t t |  Vd  S(   N(   R   R   t   REF(   R   R   R  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    c         C   s   d d  l  } d d  l } d d  l } d j |   j d d  \ } } i  } | j | |  } | j | | |  \ }	 }
 |	 d  k	 r |
 d  k	 s t |	 |
 | | | f   t	 j
 j | d | |	 |
 t |  f  d S(   Niu    R   i   (    (   t	   tracebackR  t   translatorsRe   R   t   extract_filterst   cache_and_get_dimensionsR4   R   R&   t
   subfiguresR<   Rd   (   R   R   R
  R  R  R0   t   pname_with_filterst   filtersR  t   widtht   height(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt	   subfigure  s    !$c         c   s  t  |   } d | k r( t | d  n t } d | k rJ t | d  n d } d | k rl t | d  n d } d | k r t | d  n d } | t k r t j d } n  t d  s | t _ n  g  t _ i  } | s t | d <n  | d k r| | d <n  d } t	 d	  }	 t
 t |  Vx| D] }
 |
 j t k rq|
 j t k rq| ret t |  Vn  d t _ n  |
 V|
 j t k r*|
 j t k r| d 7} q)|
 j t k r)| rt
 t | d f  Vn  | d
 k r&| d k	 r&d | t |	  f } t d | f  V| t _ |	 d 7}	 q&q)q*q*Wt t j  d k rg  } g  } g  } xS t j D]H \ } } } } | j |  | j d | t j d  | j |  q^Wt
 t  Vx2 | D]* } t
 t  Vt t |  Vt t  VqWt t  Vt
 t  Vx | D] } t
 t  V| r5t
 t | d f  Vn  d | t |	  f } t d | f  V| t _ |	 d 7}	 x | D] }
 |
 VqwW| rt t |  Vn  d t _ t t  VqWt t  V| | d <n  t ` t t |  Vd S(   s?  Start a table, with various options.

        border: include a border, default True.

        align: cell alignment, default 'left'.

        figure: Treat this as the numbered figure, with each column as
                subfigures labeled in the second row.

        font: a macro name to wrap each cell with
        t   bordert   alignR  R  t   fonti   R   i    R   i   u   %s%su   (%s) s   w{%spt}i   t   specsN(   R   R   RI   R4   R&   t   last_figureR   R  RG   t   ordR}   t   TABLER   R  R   R  R   R   R  R  R  t   unichrRy   Rc   R<   R   t   PX_TO_PTR   R  (   R   R   Ri   R  R  R  R  t   paramst   rowt   subfigure_ordR~   R  t   imgst   capsR  t   imgR  R  t   captiont   cap(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   table  s    """"			
		c         c   s0   t  t  Vx | D] } | Vq Wt t  Vd  S(   N(   R}   R  R   (   R   R   R~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   tablerow  s    	c         c   sh   t  |   } i  } d | k r5 t | d  | d <n  t t |  Vx | D] } | VqJ Wt t  Vd  S(   Nt   colspan(   R   R   R}   R  R   (   R   R   Ri   t
   start_dictR~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt	   tablecell  s    	i   i   i   i	   (`   R   R   t   staticmethodRx  Ry  R   Rz  R}  R   R  Rp  t   _elset   _elifR4   R|   R  R  R   RG   R  t   _breakR(  R  R  RM  R  R  R  R  R  R]  t	   clearpaget   cleardoublepaget	   smallskipt   medskipt   bigskipt   tableofcontentst   ldotsR  R  Ri  t   BOLDt   textbft   ITALICt   textitt   empht	   MONOSPACEt   textttt	   UNDERLINEt   ulinet   STRIKEt   soutt   FOOTNOTEt   footnotet   SIZEt   Tinyt   tinyt   SMALLt   Smallt   smallt
   normalsizet   larget   Larget   LARGEt   huget   HugeR  R  R  R   R  R  R  R  R   R   R  R  R   R  R  R   R  R%  R&  R)  Rm  t   _1t   _2t   _3t   _4t   _5t   _6t   _7t   _8t   _9(    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyRw    s   " 1$
	S!Yc            s  t  } d |  k r" |  j d  s2 |  d j   r d |  k r d |  k r t j d  k	 r{ t j t j  j r{ d |  }  n
 d |  }  t	 } q d |  k r d |  k s |  j
 d  |  j
 d  k r d |  }  t	 } q n  d |  k r|  j d d  \ } } | j   } | d k r{d  } d
 | k r| j d
  r| j d
 d  \ } } d
 | k r| j d
 d  \ } } | d j   r| j d  r| d
 | } d  } qd
 | } qn | } d  } d  } t }	 d | k rO| j d  } | j d  } i    x2 t t |   D] }
 | |
   t |
 d  <qW  f d   } | }	 n  | t j k rt j | } t | d  r| j } n  | j } n t j |  } | t k rt j j d | | f  n  t |  w | d k rt j | | t j  |	 d | d | \ } } n6 | d	 k rIt j! | | t j  |	 d | \ } } n  Wd  QX| t j" k rqt j" j |  n  | | f S| j d  st j d  } | d  k rt j  j# d  qt j  j$ | j% d   t j  j$ | j% d   | j& d  r| j& d  rx t' |  D] }
 t j  j$ |
 j% d   t |
 j d  d  | k rt j  j$ |
 j% d   |  t( d t |
 j d  d  | d d  f SqWqqn  |  j d  rt j) |   } d } n! |  } d |  k rd } n d } |  t( d | d |  f S(   Nt   :R   i    R   s   get:s   edit:i   RH   t   editR   t   inc            s   t  |  | d   S(   NR'   (   R   (   R1   Rh   (   t   mover(    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   render_with_contentE  s    R1   s   %s.%sR  Ri   s   //u   InterwikiConfigu   prefixu   urls   utf-8t   urlR   t   externalt   internals   ://(   s   getRX  (*   RG   R?   R   R&   t   topthisR4   R   R  t   visibleRI   t   findR   R   R  t   rsplitt   isdigitR   R=   R!  Rc   R   R5   R3   R1   R0   R   R  R  R<   R7   R   t   product_linkR   t	   edit_linkR   R  R   R   R\   R  R%   t
   local_link(   R  R   t   implicitt   preft   restt   extR0   R  Ri   t   render_funcR,  R[  Rg   Rz   t   infot   iwt   abshrefR   (    (   RZ  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    ,
	
		
		c         c   sm   t  j r t d  VnR t  j j   t  j j |   t t  Vx t	 |  t  D] } | VqO Wt
 t  Vd  S(   Ns   [error](   R&   t   catch_errorst   ErrorR   R   R   R<   R}   t   ERRORR   R   (   t   messageR~   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR`  |  s    		s   ^([^\s#]+)(?:\#\S+)?c         c   s  yt  j |   } | d  k r1 t d |    n  | j d  }  |  } | pO g  } t } d |  k r |  d j   r | r t j d j	 d |  f  t
 } n t } d |  k r|  d j   s | r|  t j k rt t |   rt t d |   rt |   d  k rkt |   } | d  k	 rY| j |   s9t  t j j |   | |  } }	 qz|  } t j }	 n |  } t j }	 t
 } nd |  k r|  j   j d d  \ } }	 d | k rht |  } | d  k rt d |    qqhn~|  d j   rl| rl|  t j k rlt j |  }
 t |
 d	  rNx9 |
 | |  D] } | Vq<Wn |
 d  k r]n t |
  Vd  St t d |   rd |  }  n  t t |   rD| d  k	 rt t |   d
 | d |  } n t t |   d
 |  } t | d  s+x5 t d |  d j |  t |  f  D] } | VqWd  Sx6 | D] } | Vq2Wn  x t d |   D] } | VqUWd  S|	 t j k rt j  t! |	   } | d  k	 st |	 | f   | j" rt# | |	  } | d  k rt d |    n  t j }	 qn  y yM | d  k	 st |    t$ | |	 d | d
 | } x | D] } | Vq0WWn t% k
 rt& | t'  rt( |  d k r| d j)   r| d j   rt$ | d |	 d | d
 | } x | D] } | VqWq  n XWn t% k
 r| rRt j* t j+ } | d  k	 r d | j, t j- d f } n d } xd t d | | |  f  D] } | Vq@Wqt smt | t j* f   x! t d |  D] } | Vq~Wn XWnI t. k
 r  n6 t k
 r} x$ t | j/ d  D] } | VqWn Xd  S(   Ns   Weird macro name '%s'!i   R   i    iR   RI  s   %s evaluates to None!R   R   R   R6  s0   Error: {{{<<%s %s>>}}} return non-iterator "%s"!u    s   Error: no such macro %s!s)   %s is a reference that evaluates to None!i   s   %s.%sR  t   wikitexts<   No element or macro ##%s## exists evaluating %s! (Tried %s.)s   No element ##%s## exists!(0   t   MACRO_NAME_PATt   matchR4   R   R   RG   R   R&   RJ   RT   RI   R'   R3   R'  R   R  R\   R   R   R  R   R&  R   Rb  R   Ry   R   R`  Re   R   R"  R   R   R   t   is_refR]   R   R   R   R   Rc   R2   R5   R  R0   R@   R   Ri   (   RQ   R   R   R   t   orignamet   macedt   overridableR9   Rg   t   pnamt   oveR~   R   Rn   t   flavR_   R  t   eval_bit(    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR     s    $			!&				A		c            s     f d   } | S(   Nc         3   s7   t  |  } d d  l } t | j d |     Vd  S(   Nit   NFC(   R   t   unicodedataRy   t	   normalize(   R   R   R   R  (   R  (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   amac	  s    (    (   R  R  (    (   R  sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   accent	  s    u   ́t   'u   ̀t   `u   ̈t   "u   ̃t   ~u   ̄t   =c   
      C   s  t  j   t _  | t _ | d  k	 r@ t j  j |  j |   n  |  t _ i |  t j	 6|  t j
 6t _ |  d  k r~ g  t _ n |  g t _ i d d 6t _ i | d 6t _ xa | j   D]S \ } } t | d  r | t j | <q t | t  s t |   | t j | <q Wg  t _ g  t _ g  t _ i  t _ t   g t _ d t _ i  t _ | t _ | t k rt | } t | t t   }	 | t _! |	 t _" n | j# st  | t _" | t _$ d  S(   Nu    u   argsu   thisR0   i    (%   R   t   DependenciesR&   R_  R4   R   R   R  R   R$  R  R5   R;   R'   R@   R   R3   R   R   R   R  R   R   RB   RK   RJ   R  R  R  R   R	   R   R   R   R   R   Ro  (
   R1   R   R  R3  Rz  Ro  R#   R"   Rf  R   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   init_eval_state!	  sD    		
							
		s   <<<([^>]+)>>>c         C   s1   y t  j |  j d  SWn t k
 r, d SXd  S(   Ni   s   ???(   R&   R  R   R>  (   Ru  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   unplaceholderO	  s    c      	   C   s)  t  |  d  r |  j } |  } | j }	 | d  k	 s9 t  |	 d  k	 sK t  | j d  k	 sf t |   | d  k r t j | j  } n  | j r | j }
 n t	 | j d  }
 | j
 } n* d  } d  }	 |  }
 t } | d  k	 s t  | st  t d  s!t t t j    n t t j  } t | |	 | | | d | | rS| t j d <n  zjy | d  k	 r~d | j j | j f n d } | st d |    | j |
 t j d	 | } Wd  QXt | t  rt j t |  } qn2 t d
 |    | j |
 t j d	 | } Wd  QXWn t k
 rw}   | r7  n  t   t j j t d  t  t!  t |
  t" t!  g  } nE t# k
 r} | r  n  t j j t$ d | j% d f   } n XWd  t j& } t j' } t j( } t)   | rt j j* |  n  Xi | d 6} | r| | d <n  | | | f S(   NR1   s   utf-8R   Ro  u   owners   %s.%sRs  s   evaluating R   s   python-converting u!   Content unspecified, raw markup: u   Wiki Error: {{{%s}}}i    R  R   (+   R3   R1   R   R4   R   R   R   R   R   R   R%  RG   R&   R   t   __dict__R%   R  R5   R0   R   R  R   R   R   t   PLACEHOLDER_PATt   subR  R   R   R   R   Ry   R}   R  R   R   R`  Ri   R   R  R   t   clear_eval_stateR)   (   t   thingR  R   Rz  R1   R3  R  t   catchErrorsR   R   Rs  t
   prop_ownedt   old_eval_statet   desct   resRn   R  R  R   R  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR  V	  s|    			( +					%			c           C   s   t  j j   d  S(   N(   R&   R  t   clear(    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR  	  s    c         C   s   | d  k	 rR t j |  j s% t  t | | j d  } t j j	 | |  n t
 | t  sg t  | } t j } t j } t t |  g   t j j | d t   t t |   } | t _ | t _ | S(   Ns   utf-8R   (   R4   R   R   R   R   R   R   R&   R   R   R   R   R   t   setattrR   R   R   R   (   t   whichR   R   Rz   R   R   RM   (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   	  s    				c           C   s   t  j S(   N(   R&   R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt
   get_format	  s    c           C   s   t  j S(   N(   R&   R_  (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   get_topthis	  s    c         C   s   t  j j |   d  S(   N(   R&   R   R)   (   R  (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   addDeps	  s    c           C   s   t  j j   d  S(   N(   R&   R   R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyR   	  s    (   t	   threadingR   t   sysR  t	   itertoolsR    R   R   R   t
   contextlibR   t   redbeansR   t   redbeans.formatsR   R   t   redbeans.creoleR   t   redbeans.parserR	   t   redbeans.tokensR   R   R   R   R   R   t   flavorsR   R   R   t	   benchmarkR   R   R   R   R   R   R   R   R/   R7   R>   RB   R4   RF   RS   RW   Ru   Rv   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   RE   R%   RG   RI   R   R   R   R   R   R   R   R   t   compileR   R   R  R  R	  R   R   R  R  R   R  R  R]   R   R4  R   R   RG  RM  R]  R_  Re  Ri  Rm  Rp  Rq  Ru  R  Rw  R|   R   R`  Rt  R   R'  R  t   ACCENT_MACROSt   symR  t   localR&   R  R  R  R  R  R   R  R  R  R   (    (    (    sU   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/wiki.pyt   <module>   s   $
(
				A	"	
											'															
		
!>	-
		,				    _			

+		L				