
O'^c        
   @  sn  d  d l  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 d  d l	 Z	 d  d l
 m Z d  d l m Z 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 Z d	 d
 l m Z d Z e Z e Z e Z e Z d Z d Z e j Z e j  Z  d Z! d Z" d Z# d Z$ d Z% d Z& d Z' d Z( d Z) d Z* d Z+ d Z, d Z- d Z. d Z/ d Z0 d Z1 d Z2 d  Z3 d! Z4 d" Z5 d# Z6 d$ Z7 d% Z8 d& Z9 d' Z: d( Z; d) Z< d* Z= d+ Z> d, Z? d- Z@ i d. d	 6d/ d0 6d1 d2 6d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dE dF 6dG dH 6ZA eB g  eA jC   D] \ ZD ZE eE eD f ^ qZ ZF iT dI dJ f e dK d	 f d	 d	 f f  f 6dI dJ f e dK d	 f d	 d	 f f  f 6dI dL f e dK d	 f d0 d	 f f  f 6dI dL f e dK d	 f d0 d	 f f  f 6dI dI f e d	 d	 f d	 d	 f f  f 6dI dI f e d	 d	 f d	 d	 f f  f 6dI dM f e d	 d	 f d0 d	 f f  f 6dI dM f e d	 d	 f d0 d	 f f  f 6dN dO f e dK d	 f d	 d0 f f  f 6dN dO f e dK d	 f d	 d0 f f  f 6dN dP f e dK d	 f d0 d0 f f  f 6dN dP f e dK d	 f d0 d0 f f  f 6dN dQ f e d	 d	 f d	 d0 f f  f 6dN dQ f e d	 d	 f d	 d0 f f  f 6dN dR f e d	 d	 f d0 d0 f f  f 6dN dR f e d	 d	 f d0 d0 f f  f 6dN dS f e dK d	 f d	 d4 f f  f 6dN dS f e dK d	 f d	 d4 f f  f 6dN dT f e dK d	 f d0 d4 f f  f 6dN dT f e dK d	 f d0 d4 f f  f 6dN dU f e d	 d	 f d	 d4 f f  f 6dN dU f e d	 d	 f d	 d4 f f  f 6dN dV f e d	 d	 f d0 d4 f f  f 6dN dV f e d	 d	 f d0 d4 f f  f 6dN dW f e dK d	 f d	 d< f f  f 6dN dW f e dK d	 f d	 d< f f  f 6dN dX f e dK d	 f d0 d< f f  f 6dN dX f e dK d	 f d0 d< f f  f 6dN dN f e d	 d	 f d	 d< f f  f 6dN dN f e d	 d	 f d	 d< f f  f 6dN dY f e d	 d	 f d0 d< f f  f 6dN dY f e d	 d	 f d0 d< f f  f 6dZ d[ f e d	 d	 f d	 d\ f f  f 6dZ dZ f e d	 d	 f d	 d] f f  f 6d^ d^ f e d	 d	 f d	 d] f f  f 6d_ d_ f e d	 d0 f d	 d] f f  f 6d` d` f e d	 d0 f d	 d] f f  f 6da db f e dK d2 f d	 dc f f  f 6da dd f e dK d2 f d	 dc f f  f 6de df f e d	 d	 f d	 dc f f  f 6de dg f e d	 d0 f d	 dc f f  f 6dh dh f e d	 d0 f d	 dc f f  f 6da db f e d	 d2 f d	 dc f f  f 6da dd f e d	 d2 f d	 dc f f  f 6di di f e d	 d	 f d	 d< d< f d0 f f 6di di f e d	 d	 f d	 d< d< f d0 f f 6dj dj f e d0 d	 f d	 d< d< d< f f  f 6dj dj f e d0 d	 f d	 d< d< d< f f  f 6dj dk f e d0 d	 f d0 d< d< d< f f  f 6dj dk f e d0 d	 f d0 d< d< d< f f  f 6dl dl f e d0 d	 f d	 d< d< d< d< f f  f 6dl dl f e d0 d	 f d	 d< d< d< d< f f  f 6dm dm f e d0 d	 f d	 d< d< d< d< f dK f f 6dm dm f e d0 d	 f d	 d< d< d< d< f dK f f 6dl dn f e d0 d	 f d	 d< d< d< d< f d	 f f 6dl dn f e d0 d	 f d	 d< d< d< d< f d	 f f 6dl dl f e d0 d	 f d	 d< d< d< d< f d0 f f 6dl dl f e d0 d	 f d	 d< d< d< d< f d0 f f 6dl dl f e d0 d	 f d	 d< d< d< d< f do f f 6dl dl f e d0 d	 f d	 d< d< d< d< f do f f 6dp dq f e d2 d	 f d	 d	 f f  f 6dp dq f e d2 d	 f d	 d	 f f  f 6dp dr f e d2 d	 f d0 d	 f f  f 6dp dr f e d2 d	 f d0 d	 f f  f 6dp ds f e d2 d	 f d	 d0 f f  f 6dp ds f e d2 d	 f d	 d0 f f  f 6dp dt f e d2 d	 f d0 d0 f f  f 6dp dt f e d2 d	 f d0 d0 f f  f 6dp du f e d2 d	 f d	 d4 f f  f 6dp du f e d2 d	 f d	 d4 f f  f 6dp dv f e d2 d	 f d0 d4 f f  f 6dp dv f e d2 d	 f d0 d4 f f  f 6dp dp f e d2 d	 f d	 d< f f  f 6dp dp f e d2 d	 f d	 d< f f  f 6dw dw f e d2 d	 f d	 d< d< f d0 f f 6dw dw f e d2 d	 f d	 d< d< f d0 f f 6dp dx f e d2 d	 f d0 d< f f  f 6dp dx f e d2 d	 f d0 d< f f  f 6dy dy f e d6 d	 f d	 d< d< d< d< f f  f 6dy dy f e d6 d	 f d	 d< d< d< d< f f  f 6dz dz f e d8 d	 f d	 d< d< d< f f  f 6dz dz f e d8 d	 f d	 d< d< d< f f  f 6d{ d{ f e d< d	 f d	 d< d< d< f f  f 6d{ d{ f e d< d	 f d	 d< d< d< f f  f 6ZG d| d} d~ g ZH d   ZI d   ZJ i  ZK i  ZL d e f d     YZM d e	 jN f d     YZO eK eO _K eL eO _L x` e jC   D]R \ ZP ZQ eQ jR d d  ZQ eS eO d eQ eK eP d	  eS eO d eQ eL eP  qW[K [L [P [Q d eO f d     YZT eT ZU d e j f d     YZV i dI e d	 d	 d	 f eW f dI 6dN e d	 d	 d< f eW f dN 6di e d	 d	 d< d< f d0 f di 6dp e d2 d	 d< f eW f dp 6dw e d2 d	 d< d< f d0 f dw 6dg e d	 d0 dc f eW f de 6dZ e d	 d	 d] f eW f dZ 6d_ e d	 d0 d] f eW f d_ 6db e d	 d2 dc f eW f da 6dj e d0 d	 d< d< d< f eW f dj 6dm e d0 d	 d< d< d< d< f dK f dm 6dl e d0 d	 d< d< d< d< f d0 f dl 6dy e d6 d	 d< d< d< d< f eW f dy 6dz e d8 d	 d< d< d< f eW f dz 6d{ e d< d	 d< d< d< f eW f d{ 6dh e d	 d0 dc f eW f dh 6d^ e d	 d	 d] f eW f d^ 6d` e d	 d0 d] f eW f d` 6dd e d	 d2 dc f eW f dd 6ZX d   ZY d f  d     YZZ d   Z[ e j\ eV j] eV eI  e j^ eV j] eY  e j_ eV j] e[  e j` eV j] d  e j` eV j] d  e ja eV j] d  d S(   i(   t   divisiont   print_function(   t   Imaget	   ImageFile(   t   ImagePalette(   t   _binary(   t   TiffTagsN(   t   Fraction(   t   Numbert   Rationali   (   t   TYPESs   1.3.5t   IIt   MMi   i  i  i  i  i
  i  i  i  i  i  i  i  i  i(  i1  i2  i;  i=  i@  iD  iR  iS  i[  i  i  iI  is  ii  i  i  i  t   rawt
   tiff_ccitti   t   group3i   t   group4i   t   tiff_lzwi   t	   tiff_jpegi   t   jpegi   t   tiff_adobe_deflatei   t   tiff_raw_16i  t   packbitsi  t   tiff_thunderscani)  t   tiff_deflatei  t   tiff_sgilogit  t   tiff_sgilog24iu  t   1s   1;Ii    s   1;IRs   1;Rt   Ls   L;2Is   L;2IRs   L;2s   L;2Rs   L;4Is   L;4IRs   L;4s   L;4Rs   L;Is   L;IRs   L;Rs   I;16s   I;12i   i   s   I;16Bs   I;16Ss   I;16BSt   Fs   F;32Fi    s   F;32BFt   Is   I;32Ns   I;32Ss   I;32BSt   LAt   RGBs   RGB;Rt   RGBAt   RGBXt   RGBai  t   Ps   P;1s   P;1Rs   P;2s   P;2Rs   P;4s   P;4Rt   PAs   P;Rt   CMYKt   YCbCrt   LABs   MM *s   II* s   II c         C  s   |  d  t  k S(   Ni   (   t   PREFIXES(   t   prefix(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _accept   s    c         C  sR   t  |   d k } t | r% d |  n |   j |  } | rN | d  d  d  S| S(   Ni   i(   t   abst   IFDRationalt   limit_rational(   t   valt   max_valt   invt   n_d(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _limit_rational   s    %R-   c           B  s  e  Z d  Z d) Z d d  Z e d    Z e d    Z d   Z d	   Z	 d
   Z
 d   Z d   Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d  Z e d   Z  e d!  Z! e d"  Z" e d#  Z# e d$  Z$ e d%  Z% e d&  Z& e d'  Z' e d(  Z( RS(*   s    Implements a rational class where 0/0 is a legal value to match
    the in the wild use of exif rationals.

    e.g., DigitalZoomRatio - 0.00/0.00  indicates that no digital zoom was used
    t
   _numeratort   _denominatort   _vali   c         C  s  | |  _  | |  _ t d  |  _ t |  t k rW | j |  _ | j |  _  | |  _ n  t |  t k r | j |  _  | j |  _ | j |  _ d S| d k r t d  |  _ d S| d k rt	 j
 d k  r t |  t k r t j |  |  _ qt |  |  _ n t | |  |  _ d S(   s   
        :param value: either an integer numerator, a
        float/rational/other number, or an IFDRational
        :param denominator: Optional integer denominator
        i   Ni    t   nani  (   R5   R4   t   floatR6   t   typeR   t	   numeratort   denominatorR-   t   syst
   hexversiont
   from_float(   t   selft   valueR;   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __init__  s(    		!c         C  s   |  j  S(   N(   R4   (   t   a(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR:   1  s    c         C  s   |  j  S(   N(   R5   (   RB   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR;   5  s    c         C  sA   |  j  d k r |  j |  j  f S|  j j |  } | j | j  f S(   s   

        :param max_denominator: Integer, the maximum denominator value
        :returns: Tuple of (numerator, denominator)
        i    (   R;   R:   R6   t   limit_denominator(   R?   t   max_denominatort   f(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR.   9  s    c         C  s   t  t |  j   S(   N(   t   strR8   R6   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __repr__F  s    c         C  s   |  j  j   S(   N(   R6   t   __hash__(   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRH   I  s    c         C  s   |  j  | k S(   N(   R6   (   R?   t   other(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __eq__L  s    c           s     f d   } | S(   Nc           s   t  |  j    |   S(   N(   t   getattrR6   (   R?   t   args(   t   op(    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   delegateP  s    (    (   RM   RN   (    (   RM   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt	   _delegateO  s    t   __add__t   __radd__t   __sub__t   __rsub__t   __div__t   __rdiv__t   __mul__t   __rmul__t   __truediv__t   __rtruediv__t   __floordiv__t   __rfloordiv__t   __mod__t   __rmod__t   __pow__t   __rpow__t   __pos__t   __neg__t   __abs__t	   __trunc__t   __lt__t   __gt__t   __le__t   __ge__t   __nonzero__t   __ceil__t	   __floor__t	   __round__(   R4   R5   R6   ()   t   __name__t
   __module__t   __doc__t	   __slots__RA   t   propertyR:   R;   R.   RG   RH   RJ   RO   RP   RQ   RR   RS   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R`   Ra   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   Rj   Rk   (    (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR-     sL   "					t   ImageFileDirectory_v2c           B  s7  e  Z d  Z d d? d  Z e d    Z e d    Z e d    Z e j	 d    Z d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z e e k r d   Z n  d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e e e d@ dA dB dC dD dE dF g   e d- d-  e d.   Z  e d-  d/    Z! e d0 d-  e d1   Z" e d0  d2    Z# e d3 d!  e d4   Z$ e d3  d5    Z% e d6 d-  e d7   Z& e d6  d8    Z' e d9 d!  e d:   Z( e d9  d;    Z) d<   Z* d=   Z+ d>   Z, RS(G   s|  This class represents a TIFF tag directory.  To speed things up, we
    don't decode tags unless they're asked for.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v2()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = 2
        print(ifd[key])
        'Some Data'

    Individual values are returned as the strings or numbers, sequences are
    returned as tuples of the values.

    The tiff metadata type of each item is stored in a dictionary of
    tag types in
    `~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types
    are read from a tiff file, guessed from the type added, or added
    manually.

    Data Structures:

        * self.tagtype = {}

          * Key: numerical tiff tag number
          * Value: integer corresponding to the data type from `~PIL.TiffTags.TYPES`

    .. versionadded:: 3.0.0
    s   II*     c         C  s   | d  t  k r# t d |   n  | d k	 r5 | n | d  |  _ |  j t k r] d |  _ n' |  j t k rx d |  _ n t d   |  j   |  j d | d  \ |  _	 t
 |  _ d S(	   s  Initialize an ImageFileDirectory.

        To construct an ImageFileDirectory from a real file, pass the 8-byte
        magic header to the constructor.  To only set the endianness, pass it
        as the 'prefix' keyword argument.

        :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets
              endianness.
        :param prefix: Override the endianness of the file.
        i   s%   not a TIFF file (header %r not valid)i   t   >t   <s   not a TIFF IFDR   N(   R)   t   SyntaxErrort   Nonet   _prefixR   t   _endianR   t   resett   _unpackt   nextt   Falset   _legacy_api(   R?   t   ifhR*   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRA     s    
c         C  s   |  j  S(   N(   Rv   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   <lambda>  t    c         C  s   |  j  S(   N(   t   _offset(   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~     R   c         C  s   |  j  S(   N(   R|   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~     R   c         C  s   t  d   d  S(   Ns"   Not allowing setting of legacy api(   t	   Exception(   R?   R@   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt
   legacy_api  s    c         C  s:   i  |  _  i  |  _ i  |  _ i  |  _ d  |  _ d  |  _ d  S(   N(   t   _tags_v1t   _tags_v2t   _tagdatat   tagtypeRu   t   _nextR   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRx     s    					c         C  s   t  t |    S(   N(   RF   t   dict(   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __str__  s    c         C  s   t  j d d t  t |   S(   sP   Return a dictionary of the image's tags.

        .. deprecated:: 3.0.0
        s   as_dict() is deprecated. s   Please use dict(ifd) instead.(   t   warningst   warnt   DeprecationWarningR   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   as_dict  s    	c         C  s   t  d   |  j   D  S(   s   
        :returns: dict of name|key: value

        Returns the complete tag dictionary, with named tags where possible.
        c         s  s-   |  ]# \ } } t  j |  j | f Vq d  S(   N(   R   t   lookupt   name(   t   .0t   codeR@   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s   (   R   t   items(   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   named  s    	c         C  s    t  t |  j  t |  j  B S(   N(   t   lent   setR   R   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __len__  s    c         C  s   | |  j  k rX |  j | } |  j | } |  j | \ } } | |  | |  j  |  | <n  |  j  | } |  j r t | t t f  r | f } n  | S(   N(   R   R   R   t   _load_dispatchR   t
   isinstancet   tuplet   bytes(   R?   t   tagt   datat   typt   sizet   handlerR/   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __getitem__  s    c         C  s   | |  j  k p | |  j k S(   N(   R   R   (   R?   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __contains__  s    c         C  s
   | |  k S(   N(    (   R?   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   has_key  s    c         C  s   |  j  | | |  j  d  S(   N(   t   _setitemR   (   R?   R   R@   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __setitem__  s    c           s?  t  t t f } t t k r+ | t f 7} n  t j |    t | |  rR | g n | } | |  j k rm  j r   j |  j | <qmd |  j | <t	 d   | D  r d |  j | <qmt	 d   | D  rt	 d   | D  r d |  j | <qjd |  j | <qmt	 d   | D  r(d	 |  j | <qmt t k rDd
 |  j | <qmt	 d   | D  rmd
 |  j | <qmn  |  j | d k rt t k	 rt | t  r| j
 d d  n | g } n  t   f d   | D  } | r|  j n |  j }   j d k r1| r!|  j | d k r!| f } n  | \ | | <n
 | | | <d  S(   Ni   c         s  s   |  ] } t  | t  Vq d  S(   N(   R   R-   (   R   t   v(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s    i   c         s  s   |  ] } t  | t  Vq d  S(   N(   R   t   int(   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s    c         s  s   |  ] } | d k  Vq d S(   i   i   Ni   (    (   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s    i   i   c         s  s   |  ] } t  | t  Vq d  S(   N(   R   R8   (   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s    i   i   c         s  s   |  ] } t  | t  Vq d  S(   N(   R   RF   (   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s    t   asciit   replacec         3  s   |  ] }   j  |  Vq d  S(   N(   t   cvt_enum(   R   R@   (   t   info(    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>%  s    i   i
   (   i   i
   (   R   R   RF   t   unicodeR   R   R   R   R9   t   allt   encodeR   R   R   t   length(   R?   R   R@   R   t	   basetypest   valuest   dest(    (   R   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR     s<    	-c         C  s=   |  j  j | d   |  j j | d   |  j j | d   d  S(   N(   R   t   popRu   R   R   (   R?   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __delitem__0  s    c         C  s    t  t |  j  t |  j  B S(   N(   t   iterR   R   R   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __iter__5  s    c         C  s   t  j |  j | |  S(   N(   t   structt   unpackRw   (   R?   t   fmtR   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRy   8  s    c         G  s   t  j |  j | |  S(   N(   R   t   packRw   (   R?   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _pack;  s    c           s      f d   } | S(   Nc           sV   d d l  m } |  j j d  rB |  j d j d d  |   <n   |  f t   <|  S(   Ni(   R
   t   load_i   t   _t    (   t   PIL.TiffTagsR
   Rl   t
   startswithR   R   (   t   funcR
   (   t   idxR   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt	   decorator?  s
     (    (   R   R   R   (    (   R   R   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _register_loader>  s    c           s     f d   } | S(   Nc           s   |  t    <|  S(   N(   t   _write_dispatch(   R   (   R   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   H  s    
(    (   R   R   (    (   R   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _register_writerG  s    c           sr   d d l  m } |  \ }   } | | | <t j d      t    f d  f t | <  f d   t | <d  S(   Ni(   R
   t   =c           s&   |  j  d j t |      |  S(   Ns   {0}{1}(   Ry   t   formatR   (   R?   R   R   (   R   R   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~   R  s    c           s    d j     f d   | D  S(   NR   c         3  s!   |  ] }  j    |  Vq d  S(   N(   R   (   R   R@   (   R   R?   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>U  s    (   t   join(   R?   R   (   R   (   R?   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~   T  s    (   R   R
   R   t   calcsizet   TrueR   R   (   t   idx_fmt_nameR
   R   R   (    (   R   R   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _register_basicM  s    
i   t   Ht   shorti   R   t   longi   t   bs   signed bytei   t   hs   signed shorti	   t   ls   signed longi   RE   R8   i   t   dt   doublei   c         C  s   | S(   N(    (   R?   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt	   load_byte\  s    c         C  s   | S(   N(    (   R?   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt
   write_byte`  s    i   c         C  s,   | j  d  r | d  } n  | j d d  S(   Ns    is   latin-1R   (   t   endswitht   decode(   R?   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   load_stringd  s    c         C  s@   t  j d d k r( | j d d  } n  d | j d d  d S(   Ni    i   R   R   R   s    (   R<   t   version_infoR   R   (   R?   R@   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   write_stringj  s    i   c           sq   |  j  d j t |  d  |  }  f d     t   f d   t | d  d  d  | d d  d   D  S(   Ns   {0}Li   c           s     r |  | f St  |  |  S(   N(   R-   (   RB   R   (   R   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~   t  R   c         3  s$   |  ] \ } }   | |  Vq d  S(   N(    (   R   t   numt   denom(   t   combine(    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>u  s   i   i   (   Ry   R   R   R   t   zip(   R?   R   R   t   vals(    (   R   R   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   load_rationalq  s    %c           s   d j    f d   | D  S(   NR   c         3  s*   |  ]  }   j  d  t | d   Vq d S(   t   2Li   i   NI       (   R   R3   (   R   t   frac(   R?   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>z  s   (   R   (   R?   R   (    (   R?   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   write_rationalx  s    i   c         C  s   | S(   N(    (   R?   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   load_undefined}  s    c         C  s   | S(   N(    (   R?   R@   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   write_undefined  s    i
   c           sq   |  j  d j t |  d  |  }  f d     t   f d   t | d  d  d  | d d  d   D  S(   Ns   {0}li   c           s     r |  | f St  |  |  S(   N(   R-   (   RB   R   (   R   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~     R   c         3  s$   |  ] \ } }   | |  Vq d  S(   N(    (   R   R   R   (   R   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s   i   i   (   Ry   R   R   R   R   (   R?   R   R   R   (    (   R   R   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   load_signed_rational  s    %c           s   d j    f d   | D  S(   NR   c         3  s*   |  ]  }   j  d  t | d   Vq d S(   R   i   i   Ni   @(   R   R3   (   R   R   (   R?   (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s   (   R   (   R?   R   (    (   R?   s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   write_signed_rational  s    c         C  sH   | j  |  } t |  | k rD t d d | t |  f   n  | S(   Ns   Corrupt EXIF data.  s,   Expecting to read %d bytes but only got %d. (   t   readR   t   IOError(   R?   t   fpR   t   ret(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _ensure_read  s    c         C  s  |  j    | j   |  _ y>xt |  j d |  j | d   d  D]} |  j d |  j | d   \ } } } } t r t j |  j	 } t
 j | d  } t d | | | | f d d	 n  y |  j | \ }	 }
 Wn* t k
 rt rE t d
 |  qE qE n X| |	 } | d k r| j   } |  j d |  \ } t r`t d | | f d d	 n  | j |  t j | |  } | j |  n
 | |  } t |  | k rt j d | t |  | f  qE n  | sqE n  | |  j | <| |  j | <t rE | d k rt d |  q.t d |  |  qE qE W|  j d |  j | d   \ |  _ Wn' t k
 r} t j t |   d  SXd  S(   NR   i   i    t   HHL4si   t   unknowns   tag: %s (%d) - type: %s (%d)t   endR   s   - unsupported typei   R   s$   Tag Location: %s - Data Location: %ssX   Possibly corrupt EXIF data.  Expecting to read %d bytes but only got %d. Skipping tag %si    s   - value: <table: %d bytes>s   - value:(   Rx   t   tellR   t   rangeRy   R   t   DEBUGR   R   R   R
   t   gett   printR   t   KeyErrort   seekR   t
   _safe_readR   R   R   R   R   Rz   R   RF   (   R?   R   t   iR   R   t   countR   t   tagnamet   typnamet	   unit_sizeR   R   t   heret   offsett   msg(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   load  sV    
/*

	(c         C  s  | j    d k r8 | j |  j |  j d d d   n  | j |  j d t |  j    g  } | j    t |  j  d d } d  } xt |  j j    D]\ } } | t	 k r t |  } n  |  j
 j |  } t r t d | | | f  n  t | t  r| n | f } |  j | |  |  }	 t rt j |  j }
 t j | d	  } t d
 |
 | | | f d d t |	  d k rt d t |	   qt d |  n  | d k rt |	  n	 t |  } t |	  d k r| j | | | |	 j d d  d f  q | j | | | |  j d |  |	 f  | t |	  d d d 7} q W| d  k	 r| | \ } } } } }	 |	 rt d   n  |  j d |  j d |  d |  } | | | | |	 f | | <n  xp | D]h \ } } } } }	 t d k rt | | | t |  t |	   n  | j |  j d | | | |   qW| j d  xJ | D]B \ } } } } }	 | j |	  t |	  d @rY| j d  qYqYW| S(   Ni    t   HLi*   i   R   i   i   s   Tag %s, Type: %s, Value: %sR   s   save: %s (%d) - type: %s (%d)R   R   i   s   - value: <table: %d bytes>s   - value:i   i   s    R   R   i   s&   multistrip support not yet implementedR   s       (   i   i   (   R   t   writeRv   R   R   R   Ru   t   sortedR   t   STRIPOFFSETSR   R   R   R   R   R   R   R   R   R   R
   t   appendt   ljustt   NotImplementedErrorRy   t   repr(   R?   R   t   entriesR   t   stripoffsetsR   R@   R   R   R   R   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   save  sX    &"!"$+( &%&N(   i   R   R   (   i   R   R   (   i   R   s   signed byte(   i   R   s   signed short(   i	   R   s   signed long(   i   RE   R8   (   i   R   R   (-   Rl   Rm   Rn   Ru   RA   Rp   R*   R   R   t   setterRx   R   R   R   R   R   R   R   RF   R   R   R   R   R   Ry   R   R   R   R   t   listt   mapR   R   R   R   R   R   R   R   R   R   R   R   R  R  (    (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRq   z  s\   											,								
			8R   R   R   t   write_t   ImageFileDirectory_v1c           B  sz   e  Z d  Z d   Z e d    Z e d    Z e d    Z d   Z	 d   Z
 d   Z d   Z d	   Z d
   Z RS(   s  This class represents the **legacy** interface to a TIFF tag directory.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v1()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = 2
        print ifd[key]
        ('Some Data',)

    Also contains a dictionary of tag types as read from the tiff image file,
    `~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`.

    Values are returned as a tuple.

    ..  deprecated:: 3.0.0
    c         O  s    t  j |  | |  t |  _ d  S(   N(   Rq   RA   R   R|   (   R?   RL   t   kwargs(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRA   1  s    c         C  s   |  j  S(   N(   R   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~   5  R   c         C  s   |  j  S(   N(   R   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR~   6  R   c         C  s:   |  d | j   } | j | _ | j | _ | j | _ | S(   s3   Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`

        R*   (   R*   R   R   Rz   (   t   clst   originalt   ifd(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   from_v28  s
    c         C  sL   t  d |  j  } t |  j  | _ t |  j  | _ t |  j  | _ | S(   s3   Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`

        R*   (   Rq   R*   R   R   R   R   (   R?   R  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   to_v2J  s
    c         C  s   | |  j  k p | |  j k S(   N(   R   R   (   R?   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   [  s    c         C  s    t  t |  j  t |  j  B S(   N(   R   R   R   R   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   ^  s    c         C  s    t  t |  j  t |  j  B S(   N(   R   R   R   R   (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   a  s    c         C  s.   x' t  t f D] } |  j | | |  q Wd  S(   N(   R{   R   R   (   R?   R   R@   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   d  s    c         C  s   | |  j  k ru |  j | } |  j | } |  j | \ } } x6 t t f D]% } |  j | | |  | |  |  qI Wn  |  j  | } t | t t	 f  s | f } n  | S(   N(
   R   R   R   R   R{   R   R   R   R   R   (   R?   R   R   R   R   R   t   legacyR/   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   h  s    &(   Rl   Rm   Rn   RA   Rp   t   tagst   tagdatat   classmethodR  R  R   R   R   R   R   (    (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR    s   						t   TiffImageFilec           B  s}   e  Z d  Z d Z d   Z e d    Z e d    Z d   Z d   Z	 d   Z
 d d  Z d	   Z d
   Z d   Z RS(   t   TIFFs
   Adobe TIFFc         C  s   |  j  j d  } t |  |  _ d |  _ |  _ |  j j |  _ |  _	 d |  _
 |  j  |  _ g  |  _ d |  _ d |  _ t r t d  t d |  j  t d |  n  |  j d  d S(   s#   Open the first image in a TIFF filei   is   *** TiffImageFile._open ***s
   - __first:s   - ifh: i    N(   R   R   Rq   t   tag_v2Ru   R   R  Rz   t   _TiffImageFile__firstt   _TiffImageFile__nextt   _TiffImageFile__framet   _TiffImageFile__fpt
   _frame_post	   _n_framest   _is_animatedR   R   t   _seek(   R?   R}   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _open  s    				
c         C  s   |  j  d  k rz |  j   } y( x! t rA |  j |  j   d  q! WWn$ t k
 ri |  j   d |  _  n X|  j |  n  |  j  S(   Ni   (   R$  Ru   R   R   R&  t   EOFErrorR   (   R?   t   current(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   n_frames  s    	c         C  si   |  j  d  k rb |  j   } y |  j d  t |  _  Wn t k
 rQ t |  _  n X|  j |  n  |  j  S(   Ni   (   R%  Ru   R   R   R   R(  R{   (   R?   R)  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   is_animated  s    c         C  sH   |  j  t | d   t j |  j  t j j |  j |  j  |  _ d S(   s%   Select a given frame as current imagei    N(	   R&  t   maxR   t   _decompression_bomb_checkR   t   coret   newt   modet   im(   R?   t   frame(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR     s    c         C  sS  |  j  |  _ x t |  j  | k r |  j s< t d   n  t rn t d | |  j |  j |  j j	   f  n  |  j j	   |  j j
 |  j  |  j j |  j  t r t d |  j j	    n  |  j j |  j  |  j j |  _ |  j d 7_ q W|  j j
 |  j |  |  j j |  j  t j |  j  |  _ |  _ | |  _ |  j   d  S(   Ns   no more images in TIFF files9   Seeking to frame %s, on frame %s, __next %s, location: %ss   Loading tags, location: %si   (   R"  R   R   R#  R   R(  R   R   R!  R   R   R  R  R  Rz   R  R  R   R  t   _setup(   R?   R2  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR&    s(    	&	c         C  s   |  j  S(   s   Return the current frame number(   R!  (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR     s    c         C  s  d } | d k r. |  j d k r. | | } n  |  j } | d k rU | d d f } n | d k r | d f } t |  j k r |  j t \ |  _ q nO | d k r | } n: | d	 k r | } t |  j k r |  j t f |  _ q n  t |  j k r
|  j t |  j	 d
 <n  | S(   s   Setup decoder contextsR    i   R   i    i   R   R   R   R   t   icc_profileN(
   Ru   t   _planar_configurationt   _compressiont
   JPEGTABLESR  t   tile_prefixt	   PREDICTORt   decoderconfigt
   ICCPROFILER   (   R?   t   rawmodet   layert   tileRL   t   compression(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   _decoder  s&    		c         C  s&   |  j  r |  j   St t |   j   S(   N(   t   use_load_libtifft   _load_libtifft   superR  R  (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR    s    	
c         C  s  t  j  j |   } |  j d k r0 t d   n  |  j s= | S|  j   t |  j  d k sk t d   n  |  j d d } t |  j d d  |  j j	 g } yP t
 |  j d  o t j |  j j    } t
 |  j d  r |  j j   n  Wn t k
 r	t } n X| r| | d <n  t  j |  j d	 t |  |  j  } y | j |  j |  Wn t k
 rwt d
   n Xt
 |  j d  rt rt d  n  | j |  j j    \ } } n~ t
 |  j d  rt rt d  n  |  j j d  | j d  \ } } n1 t rt d  n  | j |  j j    \ } } g  |  _ d |  _ t
 |  j d  r||  j s||  j j    q|n  d |  _ | d k  rt |   n  |  j!   t  j  j |   S(   s]    Overload method triggered when we detect a compressed tiff
            Calls out to libtiff s   cannot load this imagei   s   Not exactly one tilei    i   t   filenot   flushi   t   libtiffs   Couldn't set the imaget   getvalues5   have getvalue. just sending in a string from getvalues3   have fileno, calling fileno version of the decoder.t   fpfps+   don't have fileno or getvalue. just readingt   closeN("   R   R  R>  Ru   R   t   load_prepareR   R  R  R   t   hasattrR   t   ost   dupRD  RE  R{   t   _getdecoderR0  R   R:  t   setimageR1  t
   ValueErrorR   R   R   RG  R   R   t   readonlyR   RI  t   load_end(   R?   t   pixelt   extentsRL   R   t   decodert   nt   err(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRB    s\    	
$*

!				
c         C  s  d |  j  k r t d   n  t |  j  j t d  |  _ |  j  j t d  |  _ |  j  j t d  } |  j  j t	 d  } t
 r t d  t d |  j  t d |  t d |  j  t d	 |  n  |  j  j t  } |  j  j t  } | | f |  _ t
 rt d
 |  j  n  |  j  j t d-  } t |  d k rmt |  t |  k o_d k n rmd. } n  |  j  j | | | |  j  j t d/  |  j  j t d0  f } t
 rt d |  n  y t | \ |  _ } Wn0 t k
 rt
 rt d  n  t d   n Xt
 r/t d |  t d |  j  n  |  j |  j d <|  j  j t d  } |  j  j t d  }	 | r|	 r|  j  j t d  }
 |
 d k r| |	 f |  j d <q|
 d k r| d |	 d f |  j d <q| |	 f |  j d <n  d } } } g  |  _ t |  _  t! |  j  k r|  j  t! } |  j  j t" |  } |  j d } t# s_|  j d1 k rFt$ |  _  | d k r|  j  j | | d |  j  j t d2  |  j  j t d3  f } t
 rt d |  n  t | \ |  _ } n  |  j d4 k r d! | k r d" } n  | |  j t f } |  j j% |  j d d | | f d | f  d, } q5xt' t |   D] } |  j( | | |  } |  j j% |  j d t | |  | t | | |  f | | | f  t
 rt d# |  j  n  | | } | |  j d k rd } } | d 7} n  d, } qYWn"t) |  j  k r|  j  j d$  } |  j  j d%  } d, } x |  j  t) D] } | s{|  j( | |  } n  |  j j% |  j | | | | | | f | | f  | | } | |  j d k rZd | | } } | |  j d k rd } } | d 7} d, } qqZqZWn t
 r)t d&  n  t d'   |  j d( k rg  |  j  t* D] } t+ | d)  ^ qR} t, j- d* d+ j. |   |  _/ n  d, S(5   s-   Setup this image object based on current tagsi  s+   Windows Media Photo files not yet supportedi   i    s   *** Summary ***s   - compression:s   - photometric_interpretation:s   - planar_configuration:s   - fill_order:s   - size:s   format key:s   - unsupported formats   unknown pixel modes   - raw mode:s   - pil mode:R?  i   t   dpii   gRQ@t
   resolutionR   R   R   R   R   R   R   R   R   R   s   I;16Bs   I;16s   I;16Ns   tiles: iB  iC  s   - unsupported data organizations   unknown data organizationR$   i   s   RGB;LR   N(   i   (   i   (   i   (    (
   R   R   R   R   R   R   R   R   R   R   (   i   (    (   s   I;16Bs   I;16(0   R  R   t   COMPRESSION_INFOR   t   COMPRESSIONR6  t   PLANAR_CONFIGURATIONR5  t   PHOTOMETRIC_INTERPRETATIONt	   FILLORDERR   R   t
   IMAGEWIDTHt   IMAGELENGTHR   t   SAMPLEFORMATR   R,  t   minR*   t   BITSPERSAMPLEt   EXTRASAMPLESt	   OPEN_INFOR0  R   Rt   R   t   X_RESOLUTIONt   Y_RESOLUTIONt   RESOLUTION_UNITR>  R{   RA  R  t   ROWSPERSTRIPt   READ_LIBTIFFR   R  Ru   R   R@  t   TILEOFFSETSt   COLORMAPt   o8R   R   R   t   palette(   R?   t   photot	   fillordert   xsizet   ysizet   sampleFormatt   keyR<  t   xrest   yrest   resunitt   xt   yR   t   offsetsR   t   wRB   R   t   oR   Rn  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR3  X  s    
(			      						%

	


*N(   Rl   Rm   R   t   format_descriptionR'  Rp   R*  R+  R   R&  R   Ru   R@  R  RB  R3  (    (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  |  s   							Yc         C  sO  y# t  |  j \ } } } } } } Wn$ t k
 rI t d |  j   n Xt d |  }	 |  j j d |  j j d d   }
 t p |
 d k } t	 |  d d  |	 t
 <|  j d |	 t <|  j d |	 t <|  j j d i   } t r t d	 t |   n  t | t  r| j   } n  xC | D]; } | j |  |	 | <y | j | |	 j | <WqqXqWt |  d
  rxZ t t t t t t f D]@ } | |  j k r|  j | |	 | <|  j j | |	 j | <qqWd |  j k r|  j d |	 t <qn  x t d f t d f t d f t d f t d f t d f t d f t  d f t! d f t" d f g
 D] \ } } | j# d d  } d | k r| |  j k rt$ j% d | | f t&  |  j | j# d d  |	 | <n  | |  j k rP|  j | |	 | <qPqPW|  j j d  } | r+d |	 t <| d |	 t <| d |	 t <n  | d0 k ri| |	 t' <t( |  d k rit( |  |	 t) <qin  | d  k	 r| |	 t+ <n  | d k r| |	 t, <n  | |	 t- <|  j d k r|  j. j/ d d  } t0 d   | D  |	 t1 <n  t( |  |  j d | d d d } |  j d |	 t2 <| |  j d |	 t3 <d |	 t4 <t5 j |
 d  |	 t6 <| rt rt d   t d! t7 |	 j8     n  d } t | d"  ry& | j9 d  t: j; | j<    } Wqt= j> k
 rqXn  t4 t3 g } i  } | d | t' <i  } t |  d#  r"|  j? j   } n  x t@ jA |	 j8   t	 |  d
 i   j8   | j8    D] \ } } | tB jC k rwqVn  | | k rV| | k rVt | tD tE k rtF n tE  r| jG d$ d%  d& | | <qt | tH  rtI |  | | <q| | | <qVqVWt r#t d' t7 | j8     n  |  j d1 k r;d* } n  | |
 | | | f } tJ jK |  j d+ | |  jL  } | jM |  j. d2 |  j  xB tN r| jG d3  \ } } } | s| jO |  n  | rPqqW| d k  r0t d. |   q0nA |	 jP |  } tQ jR |  | d d4 |  j | | | d f f g  d/ |  j k rK|	 |  _S n  d  S(5   Ns   cannot write mode %s as TIFFR*   R?  R   R5  i   i    t   tiffinfos   Tiffinfo Keys: %sR  R4  t   descriptionRY  t   x_resolutiont   y_resolutiont   resolution_unitt   softwaret	   date_timet   artistt	   copyrightR   R   s    %r is deprecated; use %r insteadRX  i   R$   R    s   RGB;Lc         s  s   |  ] } t  |  d  Vq d S(   i   N(   t   i8(   R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pys	   <genexpr>  s    i   i   s   Saving using libtiff encoders	   Items: %sRD  R   R   R   s    s   Converted items: %ss   I;16Bs   I;16s   I;16NRF  i   i   s(   encoder error %d when writing image filet   _debug_multipage(   i   (   s   I;16Bs   I;16(   i    i    i @  (   i    i    (T   t	   SAVE_INFOR0  R   R   Rq   t   encoderinfoR   R   t   WRITE_LIBTIFFRK   R\  R   R_  R`  R   R   R  R   R  R  R   RK  Rh  Rf  Rg  t   IPTC_NAA_CHUNKt   PHOTOSHOP_CHUNKt   XMPR  R;  t   IMAGEDESCRIPTIONt   SOFTWAREt	   DATE_TIMEt   ARTISTt	   COPYRIGHTR   R   R   R   Rc  R   t   SAMPLESPERPIXELRu   Rd  Ra  R]  R1  t
   getpaletteR   Rl  Ri  t   STRIPBYTECOUNTSR  t   COMPRESSION_INFO_REVR[  R  R   R   RL  RM  RD  t   iot   UnsupportedOperationR   t	   itertoolst   chainR   t   LIBTIFF_CORER   RF   R   R   R-   R8   R   t   _getencodert   encoderconfigRO  R   R  R  R   t   _saveR  (   R1  R   t   filenameR<  R*   Ro  R   t   bitst   extraR  R?  RF  R   Rt  R   t   name_with_spacesRX  t   lutt   stridet   _fpt	   blocklistt   attst
   legacy_ifdR   R@   RB   t   eR   t   sR   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  .  s    #									 


'

!		&t   AppendingTiffWriterc           B  s  e  Z d  d d d d d d d d d d d d g Z e d!  Z e d  Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e e d   Z RS("   i    i   i   i   i   i  i   iD  i  i  i	  c         C  s   t  | d  r$ | |  _ t |  _ n` | |  _ t |  _ y% t j | | rN d n d  |  _ Wn& t k
 r t j | d  |  _ n X|  j j	   |  _
 |  j   d  S(   NR   s   w+bs   r+b(   RK  RE   R{   t   close_fpR   R   R  t   openR   R   t	   beginningt   setup(   R?   t   fnR/  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRA     s    			%c         C  s   |  j  j |  j t j  d  |  _ d |  _ |  j  j d  |  _	 } | sW t
 |  _ d  St |  _ | d k r| |  j d  n( | d k r |  j d  n t d   |  j   |  j   d  S(   Ni    i   s   II* Rs   s   MM *Rr   s   Invalid TIFF file header(   RE   R   R  RL  t   SEEK_SETRu   t   whereToWriteNewIFDOffsett   offsetOfNewPageR   t   IIMMR   t   isFirstR{   t	   setEndiant   RuntimeErrort   skipIFDst   goToEnd(   R?   R  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR    s    				
c         C  s   |  j  r d  S|  j j |  j  |  j j d  } | s< d  S| |  j k rZ t d   n  |  j   } | |  j 7} |  j j |  j  |  j	 |  |  j j |  |  j
   d  S(   Ni   s1   IIMM of new page doesn't match IIMM of first page(   R  RE   R   R  R   R  R  t   readLongR  t	   writeLongt   fixIFD(   R?   R  t	   IFDoffset(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   finalize  s    	c         C  s   |  j    |  j   d  S(   N(   R  R  (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   newFrame1  s    
c         C  s   |  S(   N(    (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt	   __enter__6  s    c         C  s   |  j  r |  j   n  t S(   N(   R  RI  R{   (   R?   t   exc_typet	   exc_valuet	   traceback(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   __exit__9  s    	c         C  s   |  j  j   |  j S(   N(   RE   R   R  (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   >  s    c         C  s<   | t  j k r | |  j 7} n  |  j j | |  |  j   S(   N(   RL  R  R  RE   R   R   (   R?   R   t   whence(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR   A  s    c         C  s   |  j  j d t j  |  j  j   } d | d } d | k  oJ d k  n rn |  j  j t t |    n  |  j  j   |  _ d  S(   Ni    i   (	   RE   R   RL  t   SEEK_ENDR   R  R   t	   bytearrayR  (   R?   t   post   padBytes(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  H  s    c         C  s=   | |  _  |  j  d |  _ |  j  d |  _ |  j  d |  _ d  S(   NR   R   t   HHL(   t   endiant   longFmtt   shortFmtt	   tagFormat(   R?   R  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  R  s    	c         C  sy   xr t  rt |  j   } | d k r; |  j j   d |  _ Pn  |  j j |  |  j   } |  j j | d t j  q Wd  S(   Ni    i   i   (	   R   R  RE   R   R  R   t	   readShortRL  t   SEEK_CUR(   R?   R  t   numTags(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  X  s    	c         C  s   |  j  j |  S(   N(   RE   R  (   R?   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  c  s    c         C  s(   t  j |  j |  j j d   \ } | S(   Ni   (   R   R   R  RE   R   (   R?   R@   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  f  s    $c         C  s(   t  j |  j |  j j d   \ } | S(   Ni   (   R   R   R  RE   R   (   R?   R@   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR  j  s    $c         C  sf   |  j  j d t j  |  j  j t j |  j |   } | d  k	 rb | d k rb t	 d |   n  d  S(   Nii   s    wrote only %u bytes but wanted 4(
   RE   R   RL  R  R  R   R   R  Ru   R  (   R?   R@   t   bytesWritten(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   rewriteLastShortToLongn  s
    !c         C  sf   |  j  j d t j  |  j  j t j |  j |   } | d  k	 rb | d k rb t	 d |   n  d  S(   Nii   s    wrote only %u bytes but wanted 2(
   RE   R   RL  R  R  R   R   R  Ru   R  (   R?   R@   R  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   rewriteLastShortu  s
    !c         C  sf   |  j  j d t j  |  j  j t j |  j |   } | d  k	 rb | d k rb t	 d |   n  d  S(   Nii   s    wrote only %u bytes but wanted 4(
   RE   R   RL  R  R  R   R   R  Ru   R  (   R?   R@   R  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   rewriteLastLong|  s
    !c         C  sP   |  j  j t j |  j |   } | d  k	 rL | d k rL t d |   n  d  S(   Ni   s    wrote only %u bytes but wanted 2(   RE   R  R   R   R  Ru   R  (   R?   R@   R  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt
   writeShort  s    !c         C  sP   |  j  j t j |  j |   } | d  k	 rL | d k rL t d |   n  d  S(   Ni   s    wrote only %u bytes but wanted 4(   RE   R  R   R   R  Ru   R  (   R?   R@   R  (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR    s    !c         C  s   |  j    |  j j   d  S(   N(   R  RE   RI  (   R?   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyRI    s    
c         C  st  |  j    } xat |  D]S} t j |  j |  j j d   \ } } } |  j | } | | } | d k } | s |  j   }	 |	 |  j	 7}	 |  j
 |	  n  | |  j k rM|  j j   }
 | r |  j | d | d k d | d k |  j j |
 d  nE |  j j |	  |  j | d | d k d | d k |  j j |
  d  }	 }
 q | r |  j j d t j  q q Wd  S(   Ni   i   t   isShorti   t   isLong(   R  R   R   R   R  RE   R   t
   fieldSizesR  R  R  t   TagsR   t
   fixOffsetsR   Ru   RL  R  (   R?   R  R   R   t	   fieldTypeR   t	   fieldSizet	   totalSizet   isLocalR   t   curPos(    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR    s.    *
c         C  s   | r | r t  d   n  x t |  D] } | rB |  j   n	 |  j   } | |  j 7} | r | d k r | d k r t  d   n  |  j |  |  j j d t j	  |  j
 d  |  j j d t j	  q* | r |  j |  q* |  j |  q* Wd  S(   Ns    offset is neither short nor longi   i   s   not implementedii   i   (   R  R   R  R  R  R  RE   R   RL  R  R  R  R  (   R?   R   R  R  R   R   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR    s    (   i  i   iD  i  i  i	  (   Rl   Rm   R  R   R  R{   RA   R  R  R  R  R  R   R   R  R  R  R  R  R  R  R  R  R  R  RI  R  R  (    (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyR    sH   										
												%c      	   C  s   t  |  d  s t |  | |  S|  j   } zd t |  R } xH t |  j  D]7 } |  j |  |  j   t |  | |  | j   qM WWd  QXWd  |  j |  Xd  S(   NR*  (	   RK  R  R   R  R   R*  R   R  R  (   R1  R   R  t   cur_idxt   tfR   (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt	   _save_all  s    
s   .tifs   .tiffs
   image/tiff(b   t
   __future__R    R   t   PILR   R   R   R   R   t   collectionst	   fractionsR   t   numbersR   R	   R  R  RL  R   R<   R   R
   t   __version__R{   R   Rj  R  R   t   IFD_LEGACY_APIR   R   R  Rm  R_  R`  Rc  R[  R]  R^  R  R  R  Ri  R  Rf  Rg  R\  Rh  R  R  R  R9  Rl  Rk  Rd  Ra  R7  R  R  R  R;  t   EXIFIFDR  t   IMAGEJ_META_DATA_BYTE_COUNTSt   IMAGEJ_META_DATARZ  R   R   t   kR   R  Re  R)   R+   R3   R   R   R-   t   MutableMappingRq   R   R   R   t   setattrR  t   ImageFileDirectoryR  Ru   R  R  R  R  t   register_openR   t   register_savet   register_save_allt   register_extensiont   register_mime(    (    (    s5   /tmp/pip-unpacked-wheel-ivxKtu/PIL/TiffImagePlugin.pyt   <module>*   s  		
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++..11111111%%%%%%%%%%%%%%++%%..+++.		y 		W "%%%""		