ó
N/öSc           @À  sn  d  d l  m Z d  d l  m Z d  d l Z d d l m Z m Z m Z m Z m	 Z	 m
 Z
 d d l m Z m Z d d l m Z d d l m Z d d	 l m Z m Z m Z m Z d
 Z d e
 j f d „  ƒ  YZ d „  Z d Z d Z d d „ Z d „  Z i  e  d d  d „ Z! i  d d „ Z" e i  d „ Z# e i  d „ Z$ d „  Z% e d d „ Z& d d „ Z' d „  Z( d S(   i    (   t   with_statement(   t   absolute_importNi   (   t   wikit   flavorst   dbt   dependenciest	   structuret   formats(   t   Intermedt   TRANSLATORS(   t   FILTERS(   t   benchmarking(   t   cached_formatst   get_from_cachet   cache_propvalt   invalidate_cacheu   txtt   ConversionFailedExceptionc           BÀ  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyR      s   c         À  sÛ  d |  k s t  ‚ t |  ƒ ‰  d ˆ  k rrd ˆ  k s< t  ‚ d ˆ  k sN t  ‚ i  } i  } x› ˆ  d j ƒ  D]‰ \ } } t | d ƒ r“ | | | <qk t | t ƒ s´ t  t | ƒ ƒ ‚ d | k sÆ t  ‚ d | k sØ t  ‚ d | k sê t  ‚ | | | <qk Wˆ  d =t | ƒ d	 k r7d j d
 „  | j ƒ  Dƒ ƒ ˆ  d <n  t | ƒ d	 k rrd j d „  | j ƒ  Dƒ ƒ ˆ  d <qrn  t	 d „  ˆ  j
 ƒ  Dƒ ƒ sšt  ˆ  ƒ ‚ t ˆ  ƒ d	 k rÓd d j ‡  f d †  t ˆ  ƒ Dƒ ƒ Sd Sd  S(   Nt   metadatat   lett   elett   mlett   enamet   ;t   |t   ^i    c         sÀ  s(   |  ] \ } } d  | | j  f Vq d S(   s   %s=%sN(   R   (   t   .0t   kt   v(    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pys	   <genexpr>&   s   c         sÀ  s%   |  ] \ } } d  | | f Vq d S(   s   %s=%sN(    (   R   R   R   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pys	   <genexpr>)   s   c         sÀ  s   |  ] } t  | t ƒ Vq d  S(   N(   t
   isinstancet
   basestring(   R   R   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pys	   <genexpr>+   s   c         3À  s#   |  ] } d  | ˆ  | f Vq d S(   s   %s=%sN(    (   R   R   (   t   mfilters(    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pys	   <genexpr>.   s   t    (   t   AssertionErrort   dictt   itemst   hasattrR   t   unicodet   reprt   lent   joint   allt   valuest   sorted(   t   filtersR   R   R   R   (    (   R    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   flatten_filters   s8    !	t   texs   .text   txtt   htmlc         CÀ  s^  | t  k r0 t | t ƒ sQ t t | ƒ ƒ ‚ n! t | t ƒ sQ t t | ƒ ƒ ‚ |  d  k	 ru |  j j } |  j	 } n
 d  } } t
 | ƒ }	 |	 j | | ƒ |	 j | ƒ x(| D] }
 | d  k	 r||	 j ƒ  r|t j |	 j ƒ  k r|t |	 j ƒ  j d i  ƒ ƒ d k r||	 j ƒ  t k s=t |	 j ƒ  j d g  ƒ ƒ d k r||	 j ƒ  } t |	 j ƒ  ƒ } |	 j ƒ  } t |	 j ƒ  ƒ } n d  } |
 |	 ƒ | d  k	 r¯ t j |	 j ƒ  k r¯ t | | | | | | d | ƒq¯ q¯ W|	 j ƒ  j d i  ƒ } x3 t | ƒ D]% } t |	 j ƒ  | |	 | | ƒ qøW|	 j ƒ  } |	 j ƒ  } |	 j ƒ  } |  d  k	 rÏt j |  j	 ƒ j sÏ| t  k rŸt | t ƒ sÉt t | ƒ |  j	 g ƒ ‚ qÌt | t ƒ sÌt t | ƒ |  j	 g ƒ ‚ qÏn  | d  k	 rZt j | k rB| t k st |	 j ƒ  j d g  ƒ ƒ d k rBt | | | | | |	 j ƒ  d | ƒqZ| t f k sZt ‚ n  |	 S(   NR-   i    t   imagest	   cache_tag(    t   UNICODE_FORMATSR   R&   R"   R'   t   strt   Nonet   elementR   t   propnameR   t   setDatat   addDepst   isPathR   t	   DISCORDIAt   getDepsR(   R   t   gett   getExtensiont   IMAGE_METADATA_FORMATSt   sett   asDataR#   R   t   listR
   R   t
   get_flavort   binaryt   TXT(   t   propvalt	   renderingt   rendering_extt   depsR   t   flistR3   R   t	   prop_namet   imt   ft   oldextt   olddepst   olddatat   oldmetadataR-   t   filtt   valuet   ext(    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   apply_filters<   s`    $!
$$
		#$	c         CÀ  s1   t  |  | d | ƒ} | d  k r% d  S| d Sd  S(   Nt   formatRT   (   R   R6   (   R   RL   RW   t   entry(    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   cached‚   s    t   convertc      
   CÀ  s÷  t  rói  } | rM t | ƒ } d | k r> | d } | d =n  t | ƒ } n d } t |  | | ƒ \ }	 }
 x´ | D]¬ } | |	 k rr t |  | | | d |
 ƒ} | d  k	 sÆ t |  | | | |	 f ƒ ‚ d | k sÞ t | ƒ ‚ t | d ƒ } | j | d | ƒ |  | | | d f | _	 | Sqr Wt
 j d | |  | | f ƒ t j |  | ƒ } | d  k rvt d |  | f ƒ ‚ n  t j | j ƒ j | ƒ } t d „  | Dƒ ƒ } t ƒ  } xt | ƒ d	 k rµ| j | j ƒ  ƒ xX| D]P} | | k s| | |	 k rß| | \ } } | j d
 i  ƒ } | | |	 k r¬t |  | | | d |
 ƒ} | d  k	 spt |	 | | f ƒ ‚ | d } | d } t | d ƒ } |  | | | d f }	 n- t j | | d
 | d | ƒ\ } } } t }	 | j | ƒ | | d <| | d
 <|  | d <t | | | | | | | ƒ } |	 | _	 | SqßWi  } xp | D]h } | | \ } } | t k r@xC t | D]4 } | | k rmt | | g | | f | | <qmqmWq@q@W| } q³Wt d d j | ƒ t j | j ƒ j d j | ƒ f ƒ ‚ n  d  S(   NR   R!   t	   deps_infoRT   i   s    %s not in cache data for %s/%s%ss   %s has no propval %s!c         sÀ  s!   |  ] } | g  | f f Vq d  S(   N(    (   R   t   d(    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pys	   <genexpr>®   s    i    R   R   i   t	   reentrantR-   R7   s2   Couldn't convert from %s (flavor %s) to any of %s!s   , (    t   TrueR#   R.   R   R   R6   R"   R   R9   RY   R   t   infoR   t   get_propvalt   KeyErrorRD   R8   t   getExtensionsRA   R(   t   updatet   keyst   popR   t   evaluatet   FalseRV   R	   R   R)   t   get_propt   flavor(   R   RL   t   destsR-   R]   t   methodt   offsett   explicit_metadatat   flatRY   R[   RN   t   ceRM   RG   t   extst   newt   triedt   nRK   t   destR   RT   RJ   R   t   newnewt   t(    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   convert_any‰   s‚    

	'			"

!


	-
c      	   CÀ  sö  | j  d ƒ s t | ƒ ‚ | d
 k	 rz t d
 d
 d | d | ƒ} | d
 k	 rz | t k rl t | d d ƒ S| d Sqz n  i g  | 6} t ƒ  } xOt | ƒ d k rá| j | j	 ƒ  ƒ x° | D]¨ } | t
 j k r¿ | | } t j |  | d d
 d t
 j ƒ\ }	 }
 } | j | ƒ t d
 |	 | |
 | | | ƒ } | j ƒ  | k s]t | j ƒ  | f ƒ ‚ | j ƒ  Sq¿ Wi  } xd | D]\ } | | } | t k rxx= t | D]. } | | k rŸt | | g | | | <qŸqŸWqxqxW| } q“ Wt d	 | ƒ ‚ d
 S(   s=   Convert a string of explicit markup to the given dest format.t   _RW   R3   RT   s   utf-8i    R7   Ri   s   Couldn't convert list to %s!N(   t
   startswithR"   R6   R   R4   R&   RA   R(   Rc   Rd   R   t   FORMATSR   Rf   t   textRV   R?   RB   R	   R   (   t   markupRt   t   global_metadatat   cacheable_asRo   Rq   Rr   Rs   RK   t   renderedRJ   R   RM   Ru   Rv   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   convert_markupÚ   s@    	
*
'
c         CÀ  s   t  |  | | g d | ƒj ƒ  S(   NR-   (   Rw   RB   (   R   RL   RW   R-   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   render_propval  s    c         CÀ  s   t  |  j | | d | ƒS(   NR-   (   R   R   (   R7   RL   RW   R-   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   render  s    c         CÀ  s   t  |  | ƒ S(   N(   R   (   R   RL   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt
   render_raw  s    c         CÀ  sf   | d  k	 r t j | } n  |  j | ƒ } | d  k r; d  St j | | d t d | ƒ\ } } } | S(   Nt   toPythonRi   (   R6   R   t   FLAVORSR`   R   Rf   R^   (   R7   RL   RW   Ri   t   pvt   valRJ   R   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt	   to_python  s    c   	      CÀ  s(  | r t  j | ƒ f } n t  j j ƒ  } y t |  | | | d t ƒ} Wn t  j k
 rb ‚  nÂ X| j ƒ  } d | k r¿ d | k r¿ | d d  k	 r§ | d d  k	 s­ t	 ‚ | d | d f Sy t  j
 | ƒ \ } } Wn t  j k
 rñ ‚  n) X| d  k	 r
| d  k	 st	 ‚ | | f S| j ƒ  d S(   NR]   t   heightt   width(   NN(   R   t   get_measurable_formatt   MEASURABLE_FORMATSRd   Rw   R^   t   FormatExceptionR   R6   R"   t   get_dimensionst   nix(	   R   t   pnameR-   RW   t   measurablest   imgimt   mdRŠ   R‰   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   cache_and_get_dimensions  s0    	&

c         CÀ  sw   |  j  d ƒ } | d }  xW | d D]K } d | k rQ | j  d d ƒ \ } } n | d } | d } | | | <q$ W|  S(   NR   i    i   t   =(   t   split(   t   wordR-   t   bitst   bR   R   (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   extract_filtersE  s    


(   s   texs   .tex(   s   txts   htmls   tex()   t
   __future__R    R   t   sysR!   R   R   R   R   R   R   t   translatorsR   R	   R-   R
   t	   benchmarkR   t   cacheR   R   R   R   RF   R   R   R.   R@   R4   R6   RV   RY   Rg   Rw   R€   R   R‚   Rƒ   Rˆ   R”   Rš   (    (    (    s[   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazbase/conversion.pyt   <module>   s.   ."	$E	P'	
.