ó
¶qëcc           @   s&  d  d l  Z  d  d l m Z y d  d l m Z Wn! e k
 rS d  d l m Z n Xy d  d l m Z m	 Z	 Wn) e k
 r™ d  d l Z d  d l	 Z	 n Xd  d l
 m Z d  d l m Z d Z i d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6Z d „  Z d „  Z d e j f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   six(   t	   cStringIO(   t   BytesIO(   t   Imaget
   ImageChops(   t   source_generators(   t   utilssÄ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAAAQAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABgAAAMBAQAAAAAAAAAAAAAAAAAICgkL/8QAPhAAAAIGBgQGEwAAAAAAAAAABxYABAUGFRcICRMUGCUDChkaIyc3ZoinJDQ1OUVHSVdYZ2imqLjI1tfm5//aAAgBAQAAPwC/hBBBIA9tpWdekz1M0ffxQlftVwNon0jKCYGDKMrzHESXxmaY3jgrvO9ES8MQguqx8ndVksNgqdzYLDZah2Ay1W8XW9LVuu6dYWNMU5xtE8HJXS4eYuGM7RnJXea98hBRh3d5ktS73eKL3atha2/D2tlobNAMbVJ3zm+5gffaiKruy/tsfDd/e0QAbdYb2CInvNVN4QsVuFKC8fs/5Fn2ejvMmkpyVyUGIrFacRL5R3jjZcMeUReBMt/6sus03i6dnEng7wdy38ZGIOYuIM+8wgQKJRkhznj5n8CwXNtVNmX67Orf99TVROQLrR3f16c3Rm+Tyj6m/wBqMflRehN9XCX+J//ZsÌ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAAAgAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABgAAAMBAQAAAAAAAAAAAAAAAAAJCggL/8QAQRAAAAEKAQQJFQAAAAAAAAAAFgAEBQYHCBQVFxgDCQoTGQIaJCUmNkaIpxIjJzU3OUlXWGVmZ2imqLjI1tfm5//aAAgBAQAAPwC/ggggkA3tPO+M33MZ99qE391xd1naMwlRlyXJJzlZEyJpkkoJHo+Jl64rCijPcaKNDEwwdCYGJrgdYNcLSaLS4vV42zxMTZqAy5z7TzrnVrtuLTadVFrYMuBjPlunARpGHuPaqLPL5eJ052qgYuO3dEwxnDoB12mU68pnoZd9/FBVUasv12dG/wC+kgF9rOaNTo8603JxWT3F26AzsyXI0iGNXWfKo3bueUEaeHg9U8LceU5NpHPN7ZlJ0eOyvNba6G3AmwqwoN8pLpKrXST/AMwO6AUC26emInGPJ4Pb+aq2sv7bHw3f3sqqC5AudHd/Xfm5s3yeO+k/7MY/Ci8yb6uCv8L/2Q==i   sÄ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAAAwAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABgAAAMBAQAAAAAAAAAAAAAAAAAICgkL/8QAQxAAAAEIAwcODwAAAAAAAAAAFQAFBgcIFBYXCRMZAwQKGCUmJxojJCg0NTY3ODlER4inSVdYZWZnaKaouMjW1+bn/9oACAEBAAA/AL+C5AuFHc+u3N2Zvk8Z9Lf7AY/Ci9ib6uCv8LAHHaad8ZvuYr77UIsS6MWkX25LZLM04mkVxcY6x5zNBK9iKX2ixEM0FWLXQdAzQEIGg6LmLISLmt/CxQ6Pp5v04nG+0AbnUkrCgRldZNozipY1sbT9y0kK9I9kXCMq+UmdlxQtC04lj8C4cG4jzjFwgxBaAW2lJ15TPcyz7+KCqosy/XZ3b/vpP+pJWUnFYIyrgbiOHBrLIaEPgukJ2P29z+dHd3FHXd13raiv1qtqbmgFJpRl2i8k9NknZOzI6t5hRFMKAvT1BwgIgfzo/inQnLZeVepl/bY+G7+9lVQQQQX/2Q==i   sÀ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABAAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABkAAAIDAQAAAAAAAAAAAAAAAAAJBwgKC//EAD4QAAADBQQEBBcAAAAAAAAAAAcVFgAFBggUCRcYJgQKGTc2OYinExojJCU1Q0ZJV1hkZWdopqi4yNbX5uf/2gAIAQEAAD8A38NyBdaO49eebkzfJ5L6z/tRj8KLyJvq4bf42APbaWnXlM8zMvv4oZv8rlkFZ2WroEwNP5P5Lzf3NqPamvYFi9kcgtVd1sYxCC8CZEBcTA6DRxEQaBzBsNZag1zmZOcvkwf7wer106f8EssVjpxcQZYdMRe+TOYgi6sbot3m/aKxPTyevPjngsRmx52cMi1zl5jamd8ZvuYH32o1Vell/bY+G7+9s/6SWWXB1LEGUuK2vFu6Weck2kThXCDFcd8Hj+Jy8vU5V2806roa7rapo9HJmpZcRiJzsjkcpO9tQmKhIPT7jo6Mj86qKruHQOrVV2Zfrs5t/wB9ZqjDDDf/2Q==i   sÈ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABQAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABgAAAMBAQAAAAAAAAAAAAAAAAgJCgAL/8QAPhAAAAIGBwIFFQAAAAAAAAAABxYABQYUFRcDBAgJExglCho4R2aHqBkjJCYnNDU2OUVIWGmGiLe4xsfY6P/aAAgBAQAAPwC/hIA77TynVpnmZ+n0KEapsy/psfDd+e0qoTIAA23XFhO0YJ7TDKMoGHESWxgpjaOZoxM9ES8zypZVT6OyogqNQ1NzUKjVdQ7AVdVeHV6rWPXaesVimlX2hsbRPuEcoXUm2mypZrZ/z90Vnh0Psi5KSr4SapGIrFacQj+JZcjZj7Y4vCFFC5rN6Ov1/Xm6M1jz9fU6/SAANtueTgntMHErjGXILrJ2hD5F2eVK+8HFFaO7vFHXv6nxcDH61i4NGla80uy94ukn3bMneTuZHFvmDmLmDIXL0ECiUZIcp4+Z/MsF1ZVe4x+1F6E39cJf4iAbbXCdE33M+XzKIVV2Xx2c2/36jVE//9k=i   sÌ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABkAAAIDAQAAAAAAAAAAAAAAAAkKAAcIC//EAEAQAAAACgQICA8AAAAAAAAAAAAEBQYHCBUWFxgDCRMUAgoaJCUmNkYSGSM1NziHqDlHSFhlZmmGiLe4xsfY6P/aAAgBAQAAPwB/gAArtdZ1JvuZ8vjUDVVWX47Ozf79AqgQKAPdVxBKRjnKZ5HkYzZOQs3JpFJ5jxJ95Z5PFCUJ5mSjhERChsRARFaDkBWitLK1peHTYdJSYalmM0LtLO1Okk/FxJNl0mLmRjJqYj5Lr4wigJDzp2NRJ7vO9E8+dlmG1m5pxpM0js9VfKjq9fz5u7Mp5+vodfoAArtV50nSzqTVcZXYiw6czXKNroth7kfGofez0IznZ7Pedlc+D17uN+za83MXFWs0rLlXTk67SFSFPJu3NJFaaRgen1dHFcWXT1xed8d3ne05lXIY/ai9yb+uAf8AAQDrtPCdLM9jP0+ooAqmLL+Wx8N357BqgP/Zi   sÄ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABwAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABkAAAIDAQAAAAAAAAAAAAAAAAkKAAcIC//EAEAQAAABCQEIDQ0AAAAAAAAAABUABQYHCAkUFhcTBBgZGiUnN0cDCiMkJik0NTg5RIeoSFhlZmmGiLe4xsfY6P/aAAgBAQAAPwB/ggAttdJ1ZvuZ8vkULVTsvXZ3b/fpFULkC40c/X8+bwzMefr6T/jkvjF3YrMzZLZOeJpFcVZqjrH0ezFT5oJa6rEQ4IKskdAzQEIGg6LmLISLmuPCxQ6Rp5u04nG6zUqyUkrBTg3ThGZcmMNGctJCd4wIjw7n47HSHhxS7uS2Frb7va2Ww2dqkgHiMftRfBN/XBb/AFJNz4BFWCMum6XX1t6kNZ/Z2oXPtdEhOzSmiuUVxStK1YpL0jpGNy5MeSBcCNZqXZbzTCL1szJ0do7TfWRUKYqhT76hIOEBEj+lI8U7FBb7KoUJAN9p1nTTPcz9PqqCKptZfy2Phu/PZNUF/9k=i   sÈ  /9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAACAAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH//gAdQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWMA/8AACwgAHgAeAQERAP/EABgAAAMBAQAAAAAAAAAAAAAAAAgJCgAL/8QAPxAAAAMGAQQJFQAAAAAAAAAABxUWAAUGCBQXCQQYGiYKEyMnNjc4h6gkJSk1OUNGR0hYZGVphoi3uMbH2Oj/2gAIAQEAAD8Av4aAPG07p1MzzM/T6FDNU2Mv5bHw3fntqqG5AulHY6/nzdGaTz9fWt9wgpXAJxXcOyXmfyfyBr9zaj3dm7AsKaMQtVdrRyEwF4E1EBeIQ6DRxEQaBzBsNatQa5zMnOXyYP8AeD1euXPTllkllik6W2biGVuriptZa5iDFxwkT9PcO4ricvL1O/O1VDV13V1TTZHTlU0Aegx+1F6E39cM/wCkl7DpLEGWHFyi83RZ78nFEsbuiDFY7cXm+enk9c9LcOX4bEZ51tMid3tUllmazjFtqSjkcm/CRQmKhP8A1A46OjI/Sqiq7xtG7FU2ZAM7XKdE33M+X0KMVWGX47Obf79Zqjf/2Q==i   c         C   s;   t  j |  | ƒ j ƒ  } x | d D] } | r# t Sq# Wt S(   s=   
    Check if two images are identical (or near enough).
    i   (   R   t
   differencet	   histogramt   Falset   True(   t   im1t   im2t   difft   color(    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyt   near_identical   s
    c         C   s   t  j t t j |  ƒ ƒ ƒ S(   N(   R   t   openR   t   base64t	   b64decode(   t   data(    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyt   image_from_b64)   s    t   PilImageTestc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s)   |  j  t t j t t j d ƒ ƒ ƒ d S(   s0   
        Non-images raise an exception.
        s   not an imageN(   t   assertRaisest   IOErrorR   t	   pil_imageR   R    t   b(   t   self(    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyt   test_not_image/   s    c         C   s„   |  j  d d ƒ } t j | ƒ } | j d ƒ t ƒ  } | j | j ƒ  d  ƒ | j d ƒ t j | ƒ } |  j | j	 | j	 ƒ d S(   sX   
        Truncated images *don't* raise an exception if they can still be read.
        i    iöÿÿÿN(
   t   create_imaget   NoneR   R   t   seekR   t   writet   readt   assertEqualt   size(   R   R   t	   referencet
   trunc_datat   im(    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyt   test_nearly_image7   s    	c         C   s¬   t  t ƒ } x™ t j t ƒ D]ˆ \ } } t  | ƒ } |  j | | j ƒ  j d ƒ ƒ |  j t	 | | ƒ ƒ t
 j t t j | ƒ ƒ ƒ } |  j t	 | | ƒ d | ƒ q Wd S(   sC   
        Images with EXIF orientation data are reoriented.
        i  s1   EXIF orientation %s did not match reference imageN(   R   t   EXIF_REFERENCER    t	   iteritemst   EXIF_ORIENTATIONR!   t   _getexift   gett   assertFalseR   R   R   R   R   R   t
   assertTrue(   R   R#   t   exif_orientationR   R%   (    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyt   test_exif_orientationF   s    c         C   sy   t  t ƒ } t d } t  | ƒ } |  j t | | ƒ ƒ t j t t j	 | ƒ ƒ d t
 ƒ} |  j t | | ƒ d ƒ d S(   s‚   
        Images with EXIF orientation data are not reoriented if the
        ``exif_orientation`` parameter is ``False``.
        i   R.   s#   Image should not have been modifiedN(   R   R'   R)   R,   R   R   R   R   R   R   R	   (   R   R#   R   R%   (    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyt    test_switch_off_exif_orientationV   s    
(   t   __name__t
   __module__R   R&   R/   R0   (    (    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyR   -   s   			(   R   t   django.utilsR    R   R   t   ImportErrort   django.utils.sixt   PILR   R   t   easy_thumbnailsR   t   easy_thumbnails.testsR   t   testR'   R)   R   R   t   BaseTestR   (    (    (    sŠ   /Users/danaskwith/.local/share/virtualenvs/svtgbi-git-reqaUha4/lib/python2.7/site-packages/easy_thumbnails/tests/test_source_generators.pyt   <module>   s0   
		