11# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22
3- from typing import Dict , List , Optional
3+ from typing import TYPE_CHECKING , Dict , List , Optional
44
55from pydantic import Field as FieldInfo
66
@@ -14,6 +14,8 @@ class ExifExif(BaseModel):
1414
1515 aperture_value : Optional [float ] = FieldInfo (alias = "ApertureValue" , default = None )
1616
17+ brightness_value : Optional [float ] = FieldInfo (alias = "BrightnessValue" , default = None )
18+
1719 color_space : Optional [int ] = FieldInfo (alias = "ColorSpace" , default = None )
1820
1921 create_date : Optional [str ] = FieldInfo (alias = "CreateDate" , default = None )
@@ -42,7 +44,9 @@ class ExifExif(BaseModel):
4244
4345 f_number : Optional [float ] = FieldInfo (alias = "FNumber" , default = None )
4446
45- focal_length : Optional [int ] = FieldInfo (alias = "FocalLength" , default = None )
47+ focal_length : Optional [float ] = FieldInfo (alias = "FocalLength" , default = None )
48+
49+ focal_length_in35mm_format : Optional [int ] = FieldInfo (alias = "FocalLengthIn35mmFormat" , default = None )
4650
4751 focal_plane_resolution_unit : Optional [int ] = FieldInfo (alias = "FocalPlaneResolutionUnit" , default = None )
4852
@@ -54,30 +58,92 @@ class ExifExif(BaseModel):
5458
5559 iso : Optional [int ] = FieldInfo (alias = "ISO" , default = None )
5660
61+ lens_model : Optional [str ] = FieldInfo (alias = "LensModel" , default = None )
62+
63+ light_source : Optional [int ] = FieldInfo (alias = "LightSource" , default = None )
64+
65+ max_aperture_value : Optional [float ] = FieldInfo (alias = "MaxApertureValue" , default = None )
66+
5767 metering_mode : Optional [int ] = FieldInfo (alias = "MeteringMode" , default = None )
5868
5969 scene_capture_type : Optional [int ] = FieldInfo (alias = "SceneCaptureType" , default = None )
6070
71+ scene_type : Optional [str ] = FieldInfo (alias = "SceneType" , default = None )
72+
73+ sensing_method : Optional [int ] = FieldInfo (alias = "SensingMethod" , default = None )
74+
6175 shutter_speed_value : Optional [float ] = FieldInfo (alias = "ShutterSpeedValue" , default = None )
6276
6377 sub_sec_time : Optional [str ] = FieldInfo (alias = "SubSecTime" , default = None )
6478
79+ user_comment : Optional [str ] = FieldInfo (alias = "UserComment" , default = None )
80+
6581 white_balance : Optional [int ] = FieldInfo (alias = "WhiteBalance" , default = None )
6682
83+ if TYPE_CHECKING :
84+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
85+ # value to this field, so for compatibility we avoid doing it at runtime.
86+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
87+
88+ # Stub to indicate that arbitrary properties are accepted.
89+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
90+ # `getattr(obj, '$type')`
91+ def __getattr__ (self , attr : str ) -> object : ...
92+ else :
93+ __pydantic_extra__ : Dict [str , object ]
94+
6795
6896class ExifGps (BaseModel ):
6997 """Object containing GPS information."""
7098
99+ gps_altitude : Optional [float ] = FieldInfo (alias = "GPSAltitude" , default = None )
100+
101+ gps_altitude_ref : Optional [int ] = FieldInfo (alias = "GPSAltitudeRef" , default = None )
102+
103+ gps_date_stamp : Optional [str ] = FieldInfo (alias = "GPSDateStamp" , default = None )
104+
105+ gps_img_direction : Optional [float ] = FieldInfo (alias = "GPSImgDirection" , default = None )
106+
107+ gps_img_direction_ref : Optional [str ] = FieldInfo (alias = "GPSImgDirectionRef" , default = None )
108+
109+ gps_latitude : Optional [List [float ]] = FieldInfo (alias = "GPSLatitude" , default = None )
110+
111+ gps_latitude_ref : Optional [str ] = FieldInfo (alias = "GPSLatitudeRef" , default = None )
112+
113+ gps_longitude : Optional [List [float ]] = FieldInfo (alias = "GPSLongitude" , default = None )
114+
115+ gps_longitude_ref : Optional [str ] = FieldInfo (alias = "GPSLongitudeRef" , default = None )
116+
117+ gps_time_stamp : Optional [List [float ]] = FieldInfo (alias = "GPSTimeStamp" , default = None )
118+
71119 gps_version_id : Optional [List [int ]] = FieldInfo (alias = "GPSVersionID" , default = None )
72120
121+ if TYPE_CHECKING :
122+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
123+ # value to this field, so for compatibility we avoid doing it at runtime.
124+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
125+
126+ # Stub to indicate that arbitrary properties are accepted.
127+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
128+ # `getattr(obj, '$type')`
129+ def __getattr__ (self , attr : str ) -> object : ...
130+ else :
131+ __pydantic_extra__ : Dict [str , object ]
132+
73133
74134class ExifImage (BaseModel ):
75135 """Object containing EXIF image information."""
76136
137+ artist : Optional [str ] = FieldInfo (alias = "Artist" , default = None )
138+
139+ copyright : Optional [str ] = FieldInfo (alias = "Copyright" , default = None )
140+
77141 exif_offset : Optional [int ] = FieldInfo (alias = "ExifOffset" , default = None )
78142
79143 gps_info : Optional [int ] = FieldInfo (alias = "GPSInfo" , default = None )
80144
145+ image_description : Optional [str ] = FieldInfo (alias = "ImageDescription" , default = None )
146+
81147 make : Optional [str ] = FieldInfo (alias = "Make" , default = None )
82148
83149 model : Optional [str ] = FieldInfo (alias = "Model" , default = None )
@@ -90,11 +156,23 @@ class ExifImage(BaseModel):
90156
91157 software : Optional [str ] = FieldInfo (alias = "Software" , default = None )
92158
93- x_resolution : Optional [int ] = FieldInfo (alias = "XResolution" , default = None )
159+ x_resolution : Optional [float ] = FieldInfo (alias = "XResolution" , default = None )
94160
95161 y_cb_cr_positioning : Optional [int ] = FieldInfo (alias = "YCbCrPositioning" , default = None )
96162
97- y_resolution : Optional [int ] = FieldInfo (alias = "YResolution" , default = None )
163+ y_resolution : Optional [float ] = FieldInfo (alias = "YResolution" , default = None )
164+
165+ if TYPE_CHECKING :
166+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
167+ # value to this field, so for compatibility we avoid doing it at runtime.
168+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
169+
170+ # Stub to indicate that arbitrary properties are accepted.
171+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
172+ # `getattr(obj, '$type')`
173+ def __getattr__ (self , attr : str ) -> object : ...
174+ else :
175+ __pydantic_extra__ : Dict [str , object ]
98176
99177
100178class ExifInteroperability (BaseModel ):
@@ -104,6 +182,18 @@ class ExifInteroperability(BaseModel):
104182
105183 interop_version : Optional [str ] = FieldInfo (alias = "InteropVersion" , default = None )
106184
185+ if TYPE_CHECKING :
186+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
187+ # value to this field, so for compatibility we avoid doing it at runtime.
188+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
189+
190+ # Stub to indicate that arbitrary properties are accepted.
191+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
192+ # `getattr(obj, '$type')`
193+ def __getattr__ (self , attr : str ) -> object : ...
194+ else :
195+ __pydantic_extra__ : Dict [str , object ]
196+
107197
108198class ExifThumbnail (BaseModel ):
109199 """Object containing Thumbnail information."""
@@ -116,9 +206,21 @@ class ExifThumbnail(BaseModel):
116206
117207 thumbnail_offset : Optional [int ] = FieldInfo (alias = "ThumbnailOffset" , default = None )
118208
119- x_resolution : Optional [int ] = FieldInfo (alias = "XResolution" , default = None )
209+ x_resolution : Optional [float ] = FieldInfo (alias = "XResolution" , default = None )
210+
211+ y_resolution : Optional [float ] = FieldInfo (alias = "YResolution" , default = None )
120212
121- y_resolution : Optional [int ] = FieldInfo (alias = "YResolution" , default = None )
213+ if TYPE_CHECKING :
214+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
215+ # value to this field, so for compatibility we avoid doing it at runtime.
216+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
217+
218+ # Stub to indicate that arbitrary properties are accepted.
219+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
220+ # `getattr(obj, '$type')`
221+ def __getattr__ (self , attr : str ) -> object : ...
222+ else :
223+ __pydantic_extra__ : Dict [str , object ]
122224
123225
124226class Exif (BaseModel ):
@@ -139,6 +241,18 @@ class Exif(BaseModel):
139241 thumbnail : Optional [ExifThumbnail ] = None
140242 """Object containing Thumbnail information."""
141243
244+ if TYPE_CHECKING :
245+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
246+ # value to this field, so for compatibility we avoid doing it at runtime.
247+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
248+
249+ # Stub to indicate that arbitrary properties are accepted.
250+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
251+ # `getattr(obj, '$type')`
252+ def __getattr__ (self , attr : str ) -> object : ...
253+ else :
254+ __pydantic_extra__ : Dict [str , object ]
255+
142256
143257class Metadata (BaseModel ):
144258 """JSON object containing metadata."""
@@ -183,3 +297,15 @@ class Metadata(BaseModel):
183297
184298 width : Optional [int ] = None
185299 """The width of the image or video in pixels."""
300+
301+ if TYPE_CHECKING :
302+ # Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
303+ # value to this field, so for compatibility we avoid doing it at runtime.
304+ __pydantic_extra__ : Dict [str , object ] = FieldInfo (init = False ) # pyright: ignore[reportIncompatibleVariableOverride]
305+
306+ # Stub to indicate that arbitrary properties are accepted.
307+ # To access properties that are not valid identifiers you can use `getattr`, e.g.
308+ # `getattr(obj, '$type')`
309+ def __getattr__ (self , attr : str ) -> object : ...
310+ else :
311+ __pydantic_extra__ : Dict [str , object ]
0 commit comments