
    
3j0                     j    S SK r S SKrSSK7  SSKJr  SSK7  S SKJr  SrSS jr	 " S S	\
5      rS
 rg)    N   )*)InvalidImageDataError)_webp   IIc                    0 0 0 0 0 SS.n[        U 5      nUR                  c  U$ UR                  SS [        :X  a  SUl        OSUl        [        R
                  " UR                  S-   UR                  SS	 5      S   nUR                  US
5      US
'   US
   R                  S5      n[        R                  US
   ;   a+  US
   [        R                     nUR                  US5      US'   [        R                  US
   ;   a+  US
   [        R                     nUR                  US5      US'   [        R                  US   ;   a+  US   [        R                     nUR                  US5      US'   US:w  a  [        R
                  " UR                  S-   U5      S   nUR                  US5      US'   [        R                  US   ;   ak  [        R                  US   ;   aT  US   [        R                     US   [        R                     -   nUR                  US   [        R                     U nXrS'   U(       a  [        U5      nU$ )a  
py:function:: piexif.load(filename)

Return exif data as dict. Keys(IFD name), be contained, are "0th", "Exif", "GPS", "Interop", "1st", and "thumbnail". Without "thumbnail", the value is dict(tag name/tag value). "thumbnail" value is JPEG as bytes.

:param str filename: JPEG or TIFF
:return: Exif data({"0th":dict, "Exif":dict, "GPS":dict, "Interop":dict, "1st":dict, "thumbnail":bytes})
:rtype: dict
N)0thExifGPSInterop1st	thumbnailr      <>L      r	   first_ifd_pointerr
   r   r   s       r   r   )_ExifReadertiftagLITTLE_ENDIANendian_markstructunpackget_ifd_dictpopImageIFDExifTagGPSTagExifIFDInteroperabilityTagJPEGInterchangeFormatJPEGInterchangeFormatLength_get_key_name_dict)
input_datakey_is_name	exif_dict
exifReaderpointerr   endthumbs           F/home/wildlama/miniconda3/lib/python3.13/site-packages/piexif/_load.pyloadr.      sR    !#I Z(J 1.!$
!$
mmJ22S8&--a24457G!..w>Ie!%(,,-@A9U++E"8#3#34&33GVD	&)E**E"8??3%227EB	%""i&77F#G$?$?@)66w	J	)//--
 6 6 < 13346%227EB	%**i.>>00Ie4DDU#H$B$BCU#H$H$HIJC%%i&6x7U7U&VWZ[E%*k"&y1	    c                   *    \ rS rSrS rSS jrS rSrg)r   B   c                 8   [         R                  S:  =(       d    [        U[        5      nU(       a9  USS S:X  a0  [	        U5      n[        U5      nU(       a  USS  U l        g S U l        g U(       a  USS S;   a  Xl        g U(       a.  USS S:X  a%  US	S
 S:X  a  [        R                  " U5      U l        g U(       a  USS S:X  a  USS  U l        g [        US5       nUR                  S5      nS S S 5        WS:X  a%  [        U5      nU(       a  USS  U l        g S U l        g US;   a+  [        US5       nUR                  5       U l        S S S 5        g [        US5       nUR                  S
5      nS S S 5        WSS S:X  aJ  US	S
 S:X  aA  [        US5       nUR                  5       nS S S 5        [        R                  " W5      U l        g [        S5      e! , (       d  f       N= f! , (       d  f       g = f! , (       d  f       N= f! , (       d  f       Nh= f)N)   r   r   r   r   s   
   )r   s   MMr   s   RIFFr      s   WEBPs   Exif   rbz$Given file is neither JPEG nor TIFF.)sysversion_info
isinstancestrsplit_into_segmentsget_exif_segr   r   get_exifopenreadread_exif_from_filer   )	selfdatamaybe_imagesegmentsapp1fmagic_numberheader	file_datas	            r-   __init___ExifReader.__init__C   s   &&'1JZc5J4!93*40H)D"23i"T!AY*DDKT!AY'1d1RjG6K...DKT!AY'1qr(DKdD!Q vvay "{**40"&rs)DK"&DK!;;$%"#&&(DK &% $%VVBZF &!A;')VAb\W-DdD)Q$%FFH	 *"'..";DK/0VWW' "! &% &% *)s0   G5G) G:H
G&)
G7:
H
Hc                 R   0 n[         R                  " U R                  S-   U R                  XS-    5      S   nUS-   nUS;   a  SnOUn/ n[	        U5       GH*  n	USU	-  -   n[         R                  " U R                  S-   U R                  XS-    5      S   n
[         R                  " U R                  S-   U R                  US-   US-    5      S   n[         R                  " U R                  S-   U R                  US-   US	-    5      S   nU R                  US	-   US-    nUR                  XX45        XX4nU
[        U   ;   a  U R                  U5      XJ'   GM  U(       d  GM  US   US
   US   U R                  4XJ'   GM-     US:X  a  USU-  -   nU R                  XS-    US'   U$ )NHr   r   )r	   r   Imager5   r   r   r   r   r	   r   )r   r   r   r   rangeappendTAGSconvert_value)rB   r*   ifd_nameread_unknownifd_dict	tag_countoffsettp_and_valuextag
value_type	value_numvaluev_sets                  r-   r   _ExifReader.get_ifd_dictj   s   MM$"2"2S"8"&++gqy"ACCDF	1~%AAy!ArAvoG-- 0 03 6{{7AI6889;Ct'7'7#'=Wq['A+>@@ACJd&6&6&<&*kk'A+w{&K(()+I KK	72:6EYFGE7Ed1g~ $ 2 25 9!&q58U1Xt{{ K "& urI~-G,0KK!,LH()r/   c                 L  ^ ^ S nUS   nUS   nUS   nU[         R                  :X  ax  US:  aS  [        R                  " T R                  S-   U5      S   m[        R                  " SU-  T R
                  TTU-    5      nGO[        R                  " SU-  USU 5      nGOU[         R                  :X  aN  US:  a>  [        R                  " T R                  S-   U5      S   mT R
                  TTU-   S-
   nGOUSUS-
   nGOyU[         R                  :X  a  US:  ac  [        R                  " T R                  S-   U5      S   m[        R                  " T R                  SU-  -   T R
                  TTUS-  -    5      nGO[        R                  " T R                  SU-  -   USUS-   5      nGOU[         R                  :X  a  US:  ac  [        R                  " T R                  S-   U5      S   m[        R                  " T R                  SU-  -   T R
                  TTUS-  -    5      nGOP[        R                  " T R                  SU-  -   U5      nGO'U[         R                  :X  a  [        R                  " T R                  S-   U5      S   mUS:  a!  [        UU 4S j[        U5       5       5      nGO[        R                  " T R                  S-   T R
                  TTS-    5      S   [        R                  " T R                  S-   T R
                  TS-   TS	-    5      S   4nGORU[         R                  :X  ax  US:  aS  [        R                  " T R                  S-   U5      S   m[        R                  " S
U-  T R
                  TTU-    5      nGO[        R                  " S
U-  USU 5      nGOU[         R                  :X  aH  US:  a;  [        R                  " T R                  S-   U5      S   mT R
                  TTU-    nGOqUSU nGOjU[         R                  :X  a  US:  ac  [        R                  " T R                  S-   U5      S   m[        R                  " T R                  SU-  -   T R
                  TTUS-  -    5      nGO[        R                  " T R                  SU-  -   USUS-   5      nGOU[         R                  :X  a  US:  ac  [        R                  " T R                  S-   U5      S   m[        R                  " T R                  SU-  -   T R
                  TTUS-  -    5      nGOA[        R                  " T R                  SU-  -   U5      nGOU[         R                   :X  a  [        R                  " T R                  S-   U5      S   mUS:  a!  [        UU 4S j[        U5       5       5      nGO[        R                  " T R                  S-   T R
                  TTS-    5      S   [        R                  " T R                  S-   T R
                  TS-   TS	-    5      S   4nGOCU[         R"                  :X  a  US:  ab  [        R                  " T R                  S-   U5      S   m[        R                  " T R                  SU-  -   T R
                  TTUS-  -    5      nO[        R                  " T R                  SU-  -   U5      nOU[         R$                  :X  ab  [        R                  " T R                  S-   U5      S   m[        R                  " T R                  SU-  -   T R
                  TTUS	-  -    5      nO)['        S[)        US   5      -   S-   [)        U5      -   5      e[+        U[        5      (       a  [-        U5      S:X  a  US   $ U$ )Nr   r   r   r   r   BrN   c           
   3   6  >#    U  H  n[         R                  " TR                  S -   TR                  TUS-  -   TS-   US-  -    5      S   [         R                  " TR                  S -   TR                  TS-   US-  -   TS-   US-  -    5      S   4v   M     g7f)r   r   r   r   Nr   r   r   r   .0r[   r*   rB   s     r-   	<genexpr>,_ExifReader.convert_value.<locals>.<genexpr>   s       + ]]4#3#3c#9#';;wQ'.{QU':$<==>@ ]]4#3#3c#9#';;w{QU/B'.{QU':$<==>@A +   BBr   bhlc           
   3   6  >#    U  H  n[         R                  " TR                  S -   TR                  TUS-  -   TS-   US-  -    5      S   [         R                  " TR                  S -   TR                  TS-   US-  -   TS-   US-  -    5      S   4v   M     g7f)rm   r   r   r   Nre   rf   s     r-   rh   ri      s      
 )a	 ==!1!1C!7;;wQ!a!e0CDFFGI==!1!1C!7;;w{QU2GaK!a%4GHJJKMN )rj   rG   dz>Exif might be wrong. Got incorrect value type to decode.
tag: r3   z
type: )TYPESByter   r   r   r   AsciiShortLongRationaltuplerP   SByte	UndefinedSShortSLong	SRationalFloatDFloat
ValueErrorr;   r:   len)rB   valrC   rY   lengthr_   r*   s   `     @r-   rS   _ExifReader.convert_value   s   FQA

?z --(8(83(>FqI}}S6\%)[['F:J%KM }}S6\56?C%++z --(8(83(>FqI{{7GFNQ,>?Q
+%++z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*1VaZ%8:%**_z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*,%.. mmD$4$4s$:EB1EGz  #6]  d&6&6&<&*kk'7Q;&GIIJLd&6&6&<&*kk'A+w{&K(()+,
 %++z --(8(83(>FqI}}S6\%)[['F:J%KM }}S6\56?C%//!z --(8(83(>FqI{{7GFN;Qv%,,z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*1VaZ%8:%++z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*,%//!mmD$4$4s$:EB1EGz 
 !=  d&6&6&<&*kk'7Q;&GIIJLd&6&6&<&*kk'A+w{&K(()+,
 %++z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*,%,,mmD$4$4s$:EB1EG==!1!1C&L!@$(KK9I$JLD  %'*3q6{35?@BEa&I J J dE""D	Q7NKr/   )r   NF)__name__
__module____qualname____firstlineno__rK   r   rS   __static_attributes__ r/   r-   r   r   B   s    %XN Dvr/   r   c           
      b   U S   R                  5        VVs0 s H  u  p[        S   U   S   U_M     snnU S   R                  5        VVs0 s H  u  p[        S   U   S   U_M     snnU S   R                  5        VVs0 s H  u  p[        S   U   S   U_M     snnU S   R                  5        VVs0 s H  u  p[        S   U   S   U_M     snnU S   R                  5        VVs0 s H  u  p[        S   U   S   U_M     snnU S   S	.nU$ s  snnf s  snnf s  snnf s  snnf s  snnf )
Nr	   rO   namer
   r   r   r   r   )r	   r
   r   r   r   r   )itemsrR   )r(   nr_   new_dicts       r-   r%   r%     s;   >G>N>T>T>VW>V(!tG}Q'->VW>G>O>U>U>WX>W(!VQ'->WX>G>N>T>T>VW>V(!tG}Q'->VW<Ee<L<R<R<TU<TtE{1~f%e+<TUDMiDXD^D^D`aD`4	?1%f-e3D`ak*H O XXWUas   DDD
6D%+D+r   )r   r8   _common_exceptionsr   _exifpiexifr   r   r.   objectr   r%   r   r/   r-   <module>r      s6     
  .  3l@& @F	r/   