ó
śqëcc           @   sě   d  d l  Z  y d  d l m Z Wn! e k
 rC d  d l m Z n Xy d  d l m Z Wn e k
 rw d  d l Z n Xd  d l m Z d  d l	 m
 Z
 d  d l m Z d e f d	     YZ d d
  Z d d d  Z d e d  Z d S(   i˙˙˙˙N(   t	   cStringIO(   t   BytesIO(   t   Image(   t   utils(   t   settings(   t   ThumbnailOptionst   NoSourceGeneratorc           B   s   e  Z d  Z d   Z RS(   sZ   
    Exception that is raised if no source generator can process the source
    file.
    c         C   s   d j  t |  j   S(   Ns+   Tried {0} source generators with no success(   t   formatt   lent   args(   t   self(    (    st   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/engine.pyt   __unicode__   s    (   t   __name__t
   __module__t   __doc__R   (    (    (    st   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/engine.pyR      s   c         C   sj   t  |  } | d k r@ g  t j D] } t j |  ^ q" } n  |  } x | D] } | | |  } qM W| S(   sy   
    Process a source PIL image through a series of image processors, returning
    the (potentially) altered image.
    N(   R   t   NoneR   t   THUMBNAIL_PROCESSORSR   t   dynamic_import(   t   sourcet   processor_optionst
   processorst   namet   imaget	   processor(    (    st   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/engine.pyt   process_image   s    %c         K   sb  | d k r t   } n  | p! d } t j   t j j t j j |  d j	   d  } | d k rx | j
 d d  n  t } | d k r |  j j d  rľ |  j |  j d   }  n  t j ră t |  j  t j k ră t | d	 <n  y& |  j | d
 | d d | t } Wq t k
 rq Xn  | s?|  j | d
 | | n  t | d  r^| j d  n  | S(   s   
    Save a PIL image.
    t    i   t   JPEGt   WEBPt   qualityiU   t   Ai˙˙˙˙t   progressiveR   t   optimizet   seeki    N(   R   R   (   R   R   R   t   initt	   EXTENSIONt   gett   ost   patht   splitextt   lowert
   setdefaultt   Falset   modet   endswitht   convertR   t   THUMBNAIL_PROGRESSIVEt   maxt   sizet   Truet   savet   IOErrort   hasattrR    (   R   t   destinationt   filenamet   optionsR   t   saved(    (    st   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/engine.pyt
   save_image,   s0    
+	
c         C   sv  t  |  } t |  d t  } | d k rR g  t j D] } t j |  ^ q4 } n  g  } zĎ xČ | D]Ŕ } |  } y | j   Wn< t	 k
 rş y | j
 d  Wqť t	 k
 rś d } qť Xn Xy | | |  }	 WnG t	 k
 r}
 | st |  d k rţ   n  | j |
  n  d }	 n X|	 rb |	 Sqb WWd | rUy |  j   WqUt	 k
 rQqUXn  X| rr| rrt |    n  d S(   sH  
    Processes a source ``File`` through a series of source generators, stopping
    once a generator returns an image.

    The return value is this image instance or ``None`` if no generators
    return an image.

    If the source file cannot be opened, it will be set to ``None`` and still
    passed to the generators.
    t   closedi    i   N(   R   t   getattrR)   R   R   t   THUMBNAIL_SOURCE_GENERATORSR   R   t   opent	   ExceptionR    R   t   appendt   closeR   (   t   source_fileR   t
   generatorst   fail_silentlyt
   was_closedR   t
   exceptionst	   generatorR   R   t   e(    (    st   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/engine.pyt   generate_source_imageQ   sB    %
(   R$   R    R   t   ImportErrort   django.utils.sixt   PILR   t   easy_thumbnailsR   t   easy_thumbnails.confR   t   easy_thumbnails.optionsR   R=   R   R   R   R8   R0   RG   (    (    (    st   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/engine.pyt   <module>   s    %