
    "feC                     2   d Z ddlmZ  G d de          Z G d d          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z	 G d de          Z
 G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Zi d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBi dCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddi dedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddēddƓddȓddʓi dd̓ddΓddГddғddԓdd֓ddؓddړddܓddޓddddddddddddddi dddddddddddddddddddd dddddddddd	d
dddi ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>Zd? e                                D             Zi d eej                  d@fdY eej                  dfd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd[ eej                  dfd eej                  d@fdO eej                  dfd} eej                  d@fd{ eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fde eej                  d@fda eej                  d@fi dc eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  dAfd eej                  dAfdB eej                  dAfdC eej                  dAfdD eej                  dAfdE eej                  dAfdF eej                  dAfd. eej                  dAfi d, eej                  dAfdG eej                  dAfdH eej                  dAfdI eej                  dAfd eej                  dAfd( eej                  dAfd& eej                  dAfd
 eej                  dAfd eej                  dAfd eej                  dAfd eej                  dAfd* eej                  dAfd eej                  dAfd eej                  dAfd  eej                  dAfd eej                  dAfd eej                  dAfi d eej                  dAfd$ eej                  dAfd" eej                  dAfd eej                  dAfdQ eej                  dfd eej                  d@fds eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fdS eej                  dfd eej                  dfd eej                  d@fdU eej                  dfd] eej                  d@fi d_ eej                  d@fd+ eej                  dfd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fdW eej                  dfd eej                  d@fdg eej                  d@fdi eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@fd eej                  d@f eej                  d@fdJ eej                  d@f eej                  df eej                  df eej                  d@fdKZdLZdMS (N  zPackage constants.    )IntEnumc                       e Zd ZdZdZ	 dZdS )
ColorSpacezColor space specifier.   i  N)__name__
__module____qualname____doc__SRGBUNCALIBRATED     S/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/exif/_constants.pyr   r      s#          D
Lr   r   c                       e Zd ZdZdZ	 edz   Z	 edz   Z	 edz   Z	 edz   Z	 edz   Z		 edz   Z
	 ed	z   Z	 ed
z   Z	 edz   ZdS )ExifMarkerszEXIF marker segments bytes.                              N)r   r   r	   r
   
SEG_PREFIXSOIAPP1APP2DQTDHTDRISOFSOSEOIr   r   r   r   r      s        %%J 
w
CD<D4
w
C'
w
C"
w
C-
w
C
w
C
w
Cr   r   c                   @    e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Zd
S )	ExifTypesz*EXIF datatype indicator for IFD structure.r                  	   
   N)r   r   r	   r
   BYTEASCIISHORTLONGRATIONALSSHORTSLONG	SRATIONALr   r   r   r'   r'   3   sS        44D E%E!D!H/FEI00r   r'   c                   "    e Zd ZdZdZ	 dZ	 dZdS )ExposureModez*Exposure mode set when the image was shot.r   r   r(   N)r   r   r	   r
   AUTO_EXPOSUREMANUAL_EXPOSUREAUTO_BRACKETr   r   r   r8   r8   O   s+        44MOLr   r8   c                   F    e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Z	 d
ZdS )ExposureProgramRClass of the program used by the camera to set exposure when the picture is taken.r   r   r(   r)   r*   r+         r,   N)r   r   r	   r
   NOT_DEFINEDMANUALNORMAL_PROGRAMAPERTURE_PRIORITYSHUTTER_PRIORITYCREATIVE_PROGRAMACTION_PROGRAMPORTRAIT_MODELANDSCAPE_MODEr   r   r   r=   r=   \   s^        \\KFN9N;MMNLLr   r=   c                       e Zd ZdZdZ	 dZdS )GpsAltitudeRefz(Altitude used as the reference altitude.r   r   N)r   r   r	   r
   ABOVE_SEA_LEVELBELOW_SEA_LEVELr   r   r   rK   rK   {   s#        22OOr   rK   c                       e 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	 dZ	 dZ	 dZdS )LightSourcer>   r   r   r(   r)   r*   r-   r.                                             N)r   r   r	   r
   UNKNOWNDAYLIGHTFLUORESCENTTUNGSTENFLASHFINE_WEATHERCLOUDY_WEATHERSHADEDAYLIGHT_FLUORESCENTDAY_WHITE_FLUORESCENTCOOL_WHITE_FLUORESCENTWHITE_FLUORESCENTSTANDARD_LIGHT_ASTANDARD_LIGHT_BSTANDARD_LIGHT_CD55D65D75D50ISO_STUDIO_TUNGSTENOTHERr   r   r   rO   rO      s        \\GHKH'ELNE/01-
C
C
C
CEr   rO   c                   @    e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Zd
S )MeteringModezMetering mode.r   r   r(   r)   r*   r+   r?   r]   N)r   r   r	   r
   r^   AVERAGECENTER_WEIGHTED_AVERAGESPOT
MULTI_SPOTPATTERNPARTIALrr   r   r   r   rt   rt      sS        GG!DJGGEKr   rt   c                   @    e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Zd
S )Orientationz/Image orientation in terms of rows and columns.r   r(   r)   r*   r+   r?   r@   r,   N)r   r   r	   r
   TOP_LEFT	TOP_RIGHTBOTTOM_RIGHTBOTTOM_LEFTLEFT_TOP	RIGHT_TOPRIGHT_BOTTOMLEFT_BOTTOMr   r   r   r|   r|      ss        99H I L K H I L K r   r|   c                       e Zd ZdZdZ	 dZdS )ResolutionUnitz6Unit for measuring X resolution and Y resolution tags.r(   r)   N)r   r   r	   r
   INCHESCENTIMETERSr   r   r   r   r     s#        @@FKr   r   c                   "    e Zd ZdZdZ	 dZ	 dZdS )
Saturationz(Saturation processing applied by camera.r   r   r(   N)r   r   r	   r
   NORMALLOWHIGHr   r   r   r   r     s+        22F
CDr   r   c                   (    e Zd ZdZdZ	 dZ	 dZ	 dZdS )SceneCaptureTypezDType of scene that was shot or the mode in which the image was shot.r   r   r(   r)   N)r   r   r	   r
   STANDARD	LANDSCAPEPORTRAITNIGHT_SCENEr   r   r   r   r     s3        NNHIHKr   r   c                   :    e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
d	S )
SensingMethodz0Image sensor type on the camera or input device.r   r(   r)   r*   r+   r@   r,   N)r   r   r	   r
   rA   ONE_CHIP_COLOR_AREA_SENSORTWO_CHIP_COLOR_AREA_SENSORTHREE_CHIP_COLOR_AREA_SENSORCOLOR_SEQUENTIAL_AREA_SENSORTRILINEAR_SENSORCOLOR_SEQUENTIAL_LINEAR_SENSORr   r   r   r   r   /  sQ        ::K!"$!"$#$ &#$ &%&"((r   r   c                   "    e Zd ZdZdZ	 dZ	 dZdS )	Sharpnessz'Sharpness processing applied by camera.r   r   r(   N)r   r   r	   r
   r   SOFTHARDr   r   r   r   r   H  s*        11FDDJr   r   c                       e Zd ZdZdZ	 dZdS )WhiteBalancez/White balance mode set when the image was shot.r   r   N)r   r   r	   r
   AUTOrB   r   r   r   r   r   U  s#        99DFr   r   image_width   image_heighti  bits_per_samplei  compressioni  photometric_interpretationi  orientationi  samples_per_pixeli  planar_configurationi  subsampling_ratio_of_y_to_ci  y_and_c_positioningi  x_resolutioni  y_resolutioni  resolution_uniti(  strip_offsetsi  rows_per_stripi  strip_byte_countsi  jpeg_interchange_formati  jpeg_interchange_format_lengthi  transfer_functioni-  white_pointi>  primary_chromaticitiesi?  matrix_coefficientsi  reference_black_whitei  datetimei2  image_descriptioni  makei  modeli  softwarei1  artisti;  	copyrighti  ratingiFG  rating_percentiIG  exposure_timei  f_numberi  exposure_programi"  spectral_sensitivityi$  photographic_sensitivityi'  oecfi(  sensitivity_typei0  standard_output_sensitivityi1  recommended_exposure_indexi2  	iso_speedi3  iso_speed_latitude_yyyi4  iso_speed_latitude_zzzi5  exif_versioni   datetime_originali  datetime_digitizedi  offset_timei  offset_time_originali  offset_time_digitizedi  components_configurationi  compressed_bits_per_pixeli  shutter_speed_valuei  aperture_valuei  brightness_valuei  exposure_bias_valuei  max_aperture_valuei  subject_distancei  metering_modei  light_sourcei  flashi	  focal_lengthi
  subject_areai  
maker_notei|  user_commenti  subsec_timei  subsec_time_originali  subsec_time_digitizedi  temperaturei   humidityi  pressurei  water_depthi  accelerationi  camera_elevation_anglei  xp_titlei  
xp_commenti  	xp_authori  xp_keywordsi  
xp_subjecti  flashpix_versioni   color_spacei  pixel_x_dimensioni  pixel_y_dimensioni  related_sound_filei  flash_energyi  spatial_frequency_responsei  focal_plane_x_resolutioni  focal_plane_y_resolutioni  focal_plane_resolution_uniti  subject_locationi  exposure_indexi  sensing_methodi  file_sourcei   
scene_typei  cfa_patterni  custom_renderedi  exposure_modei  white_balancei  digital_zoom_ratioi  focal_length_in_35mm_filmi  scene_capture_typei  gain_controli  contrasti  
saturationi	  	sharpnessi
  device_setting_descriptioni  subject_distance_rangei  image_unique_idi   camera_owner_namei0  body_serial_numberi1  lens_specificationi2  	lens_makei3  
lens_modeli4  lens_serial_numberi5  gammai   gps_version_idgps_latitude_refr   gps_latituder(   gps_longitude_refr)   gps_longituder*   gps_altitude_refr+   gps_altituder?   gps_timestampr@   gps_satellitesr,   
gps_statusr-   gps_measure_moder.   gps_doprP   gps_speed_refrQ   	gps_speedrR   gps_track_refrS   	gps_trackrT   gps_img_direction_ref   gps_img_directionrU   gps_map_datumrV   gps_dest_latitude_refrW   gps_dest_latituderX   rY   rZ   r[   r\                        ii  i%  i  )gps_dest_longitude_refgps_dest_longitudegps_dest_bearing_refgps_dest_bearinggps_dest_distance_refgps_dest_distancegps_processing_methodgps_area_informationgps_datestampgps_differential gps_horizontal_positioning_error_exif_ifd_pointer_gps_ifd_pointer_interoperability_ifd_Pointerc                     i | ]\  }}||	S r   r   ).0keyvalues      r   
<dictcomp>rF    s    LLLZS%eSLLLr   exifgpsr<  r7  r6  r9  r8  r5  r4  r=  )r@   rG  )r   r   r  r?  r@  rA  z!image does not have attribute {0}N)r
   enumr   r   r   r'   r8   r=   rK   rO   rt   r|   r   r   r   r   r   r   ATTRIBUTE_ID_MAPitemsATTRIBUTE_NAME_MAPintr3   r0   r6   r1   r/   r2   ATTRIBUTE_TYPE_MAPERROR_IMG_NO_ATTRr   r   r   <module>rP     sm                        D1 1 1 1 1 1 1 18
 
 
 
 
7 
 
 
M M M M Mg M M M>    W   @ @ @ @ @' @ @ @F    7   8! ! ! ! !' ! ! !H    W   
 
 
 
 
 
 
 
    w    ) ) ) ) )G ) ) )2
 
 
 
 
 
 
 
    7   ^3^ C^ s	^
 3^ !#^ 3^ ^ C^ "3^ 3^ C^ C^ s^  S!^" c#^$ %^& s'^ ^( %c)^, -^. 3/^0 c1^2 33^4 S5^8 9^: ;^< C=^> S?^@ A^B cC^D E^F eG^H eI^L UM^N O^ ^ ^P Q^R ES^T U^V EW^X Y^Z "5[^\ !%]^^ _^` ea^b ec^d Ee^f g^h %i^j 5k^l Em^n Uo^p q^ ^ ^r  s^t 5u^v ew^x y^z 5{^| %}^~ ^@ UA^B EC^D UE^F EG^H EI^J %K^L EM^N 5O^P EQ^R US^ ^ ^T 5U^V W^X Y^Z 5[^\ E]^^ e_^` a^b &c^d e^f 6g^h &i^j k^l 5m^n o^p q^r %s^t Eu^ ^ ^v !%w^x y^z {^| "5}^~ ^@ eA^B eC^D 5E^F %G^H 5I^J uK^L UM^N UO^P %Q^R  S^T %U^V EW^ ^ ^X Y^Z %[^\ ]^^ !%_^` ea^b uc^d e^f %g^h %i^j k^l %m^n %o^p Uq^t au^v w^x Ay^z {^ ^ ^| Q}^~ ^@ AA^B QC^D aE^F !G^H I^J rK^L RM^N O^P RQ^R S^T RU^V W^X RY^Z R[^\ ]^ ^^ !(*%*{^ ^ ^ @ ML3C3I3I3K3KLLL _33y122F;_33y''+_ 	ss9?33V<_ 	SS!455v>	_
 	IO,,f5_ 	SS))62_ 	cc)/**A._ 	CC	00&9_ 	SS))1-_ 	ss9?33V<_ 	cc)/22F;_ 	ss9#566?_ 	I$7 8 8&A_ 	33y122F;_ 	##io..7_  	SS116:!_" 	##i0116:#_ _$ 	SS+,,f5%_& 	##io&&/'_( 	Y/00&9)_* 	Y/00&9+_, 	$cc)/&:&:F%C-_. 	&IO(<(<f'E/_0 	#SS);%<%<f$E1_2 	#SS);%<%<f$E3_4 	Y/00&95_6 	Y/00%87_8 	SS00%89_: 	##io..6;_< 	SS!344e<=_> 	Y_!5!5u =?_@ 	cc)"455u=A_B 	 ##io"6"6!>C_D 	cc)"455u=E_ _ _F 	 ##io"6"6!>G_H 	ss9#566>I_J 	!33y#7#7"?K_L 	SS1159M_N 	CC	*++U3O_P 	cc)"455u=Q_R 	 ##io"6"6!>S_T 	Y/00%8U_V 	SS1159W_X 	##i01159Y_Z 	cc)/22E:[_\ 	##io..6]_^ 	SS1159__` 	33y//7a_b 	cc),--u5c_d 	##io..6e_f 	ss9?++U3g_ _ _h 	##i01159i_j 	cc),--u5k_l 	##io..6m_n 	33y~..6o_p 	cc)/22A6q_r 	CC	00&9s_t 	cc)/**F3u_v 	ss9#566?w_x 	cc)/**F3y_z 	ss9?++V4{_| 	ss9?33V<}_~ 	Y_--v6_@ 	Y_%%q)A_B 	ss9#566:C_D 	##io..7E_F 	##io&&*G_H 	33y''0I_ _ _J 	33y//8K_L 	IO,,a0M_N 	cc)/22F;O_P 	cc)/22F;Q_R 	ss9?++V4S_T 	ss9?33V<U_V 	33y//8W_X 	I$7 8 8&AY_Z 	SS))1-[_\ 	cc)/**F3]_^ 	Y_!5!5v >__` 	#SS%9%96$Ba_b 	IO,,f5c_d 	Y_!5!5v >e_f 	 ##io"6"6!?g_h 	SS!344f=i_j 	!33y#7#7"@k_ _l !S116:
 #io..7!c).1115 S00!4*-#in*=*=v)F}_ _ _ H 8   r   