ó
Š[‚Rc           @   s#  d  d l  m Z d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d d l m	 Z	 d d l
 m Z d e f d „  ƒ  YZ d	 Z d
 e f d „  ƒ  YZ d „  Z d „  Z d „  Z d d „ Z i d d 6d d 6d d 6Z d „  Z d „  Z i i d „  d 6d 6i d „  d 6d 6i d „  d 6d 6i d „  d 6d 6i e d 6d  6Z d! „  Z xc e D][ Z xR e	 j D]G Z e e k rze e j e i  ƒ k rÁe e e ƒ e e e <qÁqzqzWqjWi d d" 6d d# 6d d$ 6d d% 6d& d' 6d( d) 6Z i d" d 6d# d* 6Z d+ „  Z d, „  Z  d S(-   iÿÿÿÿ(   t   with_statement(   t   divisionNi   (   t   formats(   t   Dependenciest   Intermedc           B   sw   e  Z i  d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z RS(   c         C   s=   | |  _  d  |  _ d  |  _ d  |  _ t ƒ  |  _ t |  _ d  S(   N(	   t   mdt   Nonet   patht	   extensiont   dataR   t   depst   Falset   cached(   t   selft   metadata(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   __init__   s    				c         C   s   |  j  d  k	 S(   N(   R   R   (   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   isPath   s    c         C   sx   |  j  d  k rq |  j j d ƒ s0 t |  j ƒ ‚ t j d |  j ƒ \ } |  _  t j | |  j	 ƒ t j
 | ƒ n  |  j  S(   Nt   .t   suffix(   R   R   R   t
   startswitht   AssertionErrort   tempfilet   mkstempt   ost   writeR	   t   close(   R   t   fdesc(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   asPath   s    !c         C   sJ   |  j  d  k rC t |  j ƒ  } | j ƒ  |  _  Wd  QX|  j ƒ  n  |  j  S(   N(   R	   R   t   openR   t   readt   nix(   R   t   f(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   asData   s
    c         C   s   |  j  S(   N(   R   (   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   getExtension"   s    c         C   s/   |  j  d  k	 r+ t j |  j  ƒ d  |  _  n  d  S(   N(   R   R   R   t   remove(   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR   $   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR   (   s    c         C   s   |  j  j | | ƒ d  S(   N(   R
   t   addPropvalDep(   R   t   elmt   propname(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR#   +   s    c         C   s   |  j  j | ƒ d  S(   N(   R
   t   update(   R   R
   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   addDeps-   s    c         C   s   |  j  S(   N(   R
   (   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   getDeps/   s    c         C   s/   |  j  ƒ  t | ƒ |  _ | |  _ d  |  _ |  S(   N(   R   t   unicodeR   R	   R   R   (   R   R	   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   setData2   s
    
		c         C   s=   |  j  ƒ  | |  _ d | j d d ƒ d |  _ d  |  _ d  S(   Nu   .R   i   iÿÿÿÿ(   R   R   t   rsplitR   R   R	   (   R   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   setPath8   s    
	(   t   __name__t
   __module__R   R   R   R    R!   R   R   R#   R'   R(   R*   R,   (    (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR      s   										i`   t   Lengthc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   lengtht   unit(   R   R0   R1   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR   A   s    	c         C   sB   |  j  d k r  t t |  j ƒ St s> t |  j |  j  f ƒ ‚ d  S(   Nt   in(   R1   t   intt   PIXELS_PER_INR0   R   R   (   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   to_pxD   s    c         C   s   d |  j  |  j f S(   Ns   %s%s(   R0   R1   (   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   to_strI   s    (   R-   R.   R   R5   R6   (    (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR/   @   s   		c         C   sD   |  d k r d  S|  j d ƒ r6 t t |  d  ƒ d ƒ St |  ƒ Sd  S(   Nt   ?R2   iþÿÿÿ(   R   t   endswithR/   t   floatR3   (   t   s(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   to_dimL   s
    c         C   ss   |  j  d ƒ r" |  d }  t } n t } d |  k rV d „  |  j d ƒ Dƒ \ } } n t |  ƒ } } | | | f S(   Nt   !i   t   xc         s   s   |  ] } t  | ƒ Vq d  S(   N(   R;   (   t   .0t   b(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pys	   <genexpr>Z   s    (   R   t   TrueR   t   splitR3   (   t   argt   forcet   wt   h(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   parse_dimensionS   s    
	"c         C   s^   t  |  ƒ \ } } } t | d ƒ r3 | j ƒ  } n  t | d ƒ rQ | j ƒ  } n  | | | f S(   NR5   (   RF   t   hasattrR5   (   RB   RD   RE   RC   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   parse_dimension_px_   s    s   .pngc         C   sh  g  } t  } d |  j ƒ  d k r~t |  j ƒ  d d ƒ \ } } } |  j ƒ  d d =| d k r… t | d ƒ } t | d ƒ } n | } | } | rÚ | j d ƒ | j t | ƒ ƒ | j d ƒ | j t | ƒ ƒ qˆt j |  ƒ \ } }	 | j d ƒ | |	 | | k rG| j d ƒ | j t | ƒ ƒ t |	 | | ƒ } qˆ| j d ƒ | j t | ƒ ƒ t | |	 | ƒ } n
 d  } } | j d ƒ | j | d	 ƒ | d
 k rôt	 j
 d d
 ƒ \ }
 } t j |
 ƒ | j d ƒ | j | ƒ n  t j d g | |  j ƒ  g d t j d t j ƒ} | j ƒ  \ } } | j d k rjt d | j | | f ƒ ‚ n  | d
 k rt	 j
 d d
 ƒ \ }
 } t j |
 ƒ t j d | | g d t j ƒ} | j ƒ  \ } } | j d k rùt d | j | f ƒ ‚ n  t j | ƒ |  j | ƒ n |  j | | ƒ | d  k	 rE| |  j ƒ  d <n  | d  k	 rd| |  j ƒ  d <n  d  S(   Nt   dt   filterss   .svgg      ô?s   -ws   -hs   -as   -fi   s   .pdfR   s   -os   rsvg-convertt   stdoutt   stderri    s&   rsvg-convert failed with status %s: %st   ps2pdf13s"   ps2pdf13 failed with status %s: %st   widtht   height(   R   R   RH   R3   t   appendt   strR   t   rsvg_dimensionsR   R   R   R   R   t
   subprocesst   PopenR   t   PIPEt   communicatet
   returncodet   OSErrort   unlinkR,   R*   (   t   imt   formatt   argsRC   RD   RE   t   mwt   mht   owt   ohR   t   pdftmpt   pt   outt   errt   pdf13tmpt   p2(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   rsvg_convertg   sl    #
 s   plot-svgs   .svgt   pss   .epss   gs:pdfwrites   .epdfc         C   sœ   | t  k s t ‚ d d t  | d |  j ƒ  g } t j | d t j d t j ƒ} | j ƒ  \ } } | j d k rˆ t | j | ƒ ‚ n  |  j	 | | ƒ d  S(   Nt   pstoedits   -fs   -ptiRK   RL   i    (
   t   FORMAT_TO_PSTOEDITR   R   RS   RT   RU   RV   RW   RX   R*   (   RZ   R[   t   cmdRb   Rc   Rd   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   pstoedit_convert³   s    !c         C   sI   d d l  m } | t |  j ƒ  d ƒ ƒ } |  j d | j ƒ  d ƒ d  S(   Niÿÿÿÿ(   t   PdfFileReadert   rbs   %s pagest   pdfinfo(   t   pyPdfRm   R   R   R*   t   getNumPages(   RZ   Rm   t   pdf(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   get_pdfinfo¾   s    c         C   s   |  j  |  j j d ƒ d ƒ S(   Ns   utf-8s   .txt(   R*   R	   t   encode(   RZ   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   <lambda>Ñ   s   t   txts   .txtc         C   s   t  |  d ƒ S(   Ns   .png(   Rg   (   RZ   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyRu   Ó   s    c         C   s   t  |  d ƒ S(   Ns   .pdf(   Rg   (   RZ   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyRu   Ô   s    c         C   s   t  |  d ƒ S(   Ns   .eps(   Rg   (   RZ   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyRu   Õ   s    s   .pdfRo   c            s   ‡  ‡ f d †  } | S(   Nc            s   ˆ  |  ˆ ƒ S(   N(    (   RZ   (   t   funcR[   (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt
   translatorÛ   s    (    (   Rw   R[   Rx   (    (   Rw   R[   sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   _transÚ   s    s   image/svg+xmls
   text/plains   application/x-emptys   text/x-cs   .htmls	   text/htmls   .jpgs
   image/jpegs   .texc         C   s;   |  t  k r t  |  St j |  ƒ } | d  k r3 d S| Sd  S(   Ns   .dat(   t   MIME_MAPt	   mimetypest   guess_extensionR   (   t   mimet   ext(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR|   ò   s    c         C   sG   d |  j  d d ƒ d } | t k r4 t | d  f St j |  d t ƒS(   NR   i   iÿÿÿÿt   strict(   R+   t   EXT_MAPR   R{   t
   guess_typeR   (   t   filenameR~   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyR   ü   s    (!   t
   __future__R    R   R   R   t   reR{   RS   t    R   t   dependenciesR   t   objectR   R4   R/   R;   RF   RH   Rg   Rj   Rl   Rs   t   TRANSLATORSRy   t   to_ft   PSTOEDIT_READABLE_FORMATSt   from_ft
   setdefaultRz   R€   R|   R   (    (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazbase/translators.pyt   <module>   sP   $3			G

			



	
