@@ -1430,15 +1430,14 @@ def get_value(element):
1430
1430
root = ElementTree .fromstring (xmp_tags )
1431
1431
return {get_name (root .tag ): get_value (root )}
1432
1432
1433
- def getexif (self ):
1433
+ def getexif (self ) -> Exif :
1434
1434
"""
1435
1435
Gets EXIF data from the image.
1436
1436
1437
1437
:returns: an :py:class:`~PIL.Image.Exif` object.
1438
1438
"""
1439
1439
if self ._exif is None :
1440
1440
self ._exif = Exif ()
1441
- self ._exif ._loaded = False
1442
1441
elif self ._exif ._loaded :
1443
1442
return self ._exif
1444
1443
self ._exif ._loaded = True
@@ -1525,7 +1524,7 @@ def getim(self):
1525
1524
self .load ()
1526
1525
return self .im .ptr
1527
1526
1528
- def getpalette (self , rawmode = "RGB" ):
1527
+ def getpalette (self , rawmode : str | None = "RGB" ) -> list [ int ] | None :
1529
1528
"""
1530
1529
Returns the image palette as a list.
1531
1530
@@ -1615,7 +1614,7 @@ def getprojection(self):
1615
1614
x , y = self .im .getprojection ()
1616
1615
return list (x ), list (y )
1617
1616
1618
- def histogram (self , mask = None , extrema = None ):
1617
+ def histogram (self , mask = None , extrema = None ) -> list [ int ] :
1619
1618
"""
1620
1619
Returns a histogram for the image. The histogram is returned as a
1621
1620
list of pixel counts, one for each pixel value in the source
@@ -1804,7 +1803,7 @@ def alpha_composite(self, im, dest=(0, 0), source=(0, 0)):
1804
1803
result = alpha_composite (background , overlay )
1805
1804
self .paste (result , box )
1806
1805
1807
- def point (self , lut , mode = None ):
1806
+ def point (self , lut , mode : str | None = None ) -> Image :
1808
1807
"""
1809
1808
Maps this image through a lookup table or function.
1810
1809
@@ -1928,7 +1927,7 @@ def putdata(self, data, scale=1.0, offset=0.0):
1928
1927
1929
1928
self .im .putdata (data , scale , offset )
1930
1929
1931
- def putpalette (self , data , rawmode = "RGB" ):
1930
+ def putpalette (self , data , rawmode = "RGB" ) -> None :
1932
1931
"""
1933
1932
Attaches a palette to this image. The image must be a "P", "PA", "L"
1934
1933
or "LA" image.
@@ -2108,7 +2107,7 @@ def _get_safe_box(self, size, resample, box):
2108
2107
min (self .size [1 ], math .ceil (box [3 ] + support_y )),
2109
2108
)
2110
2109
2111
- def resize (self , size , resample = None , box = None , reducing_gap = None ):
2110
+ def resize (self , size , resample = None , box = None , reducing_gap = None ) -> Image :
2112
2111
"""
2113
2112
Returns a resized copy of this image.
2114
2113
@@ -2200,10 +2199,11 @@ def resize(self, size, resample=None, box=None, reducing_gap=None):
2200
2199
if factor_x > 1 or factor_y > 1 :
2201
2200
reduce_box = self ._get_safe_box (size , resample , box )
2202
2201
factor = (factor_x , factor_y )
2203
- if callable (self .reduce ):
2204
- self = self .reduce (factor , box = reduce_box )
2205
- else :
2206
- self = Image .reduce (self , factor , box = reduce_box )
2202
+ self = (
2203
+ self .reduce (factor , box = reduce_box )
2204
+ if callable (self .reduce )
2205
+ else Image .reduce (self , factor , box = reduce_box )
2206
+ )
2207
2207
box = (
2208
2208
(box [0 ] - reduce_box [0 ]) / factor_x ,
2209
2209
(box [1 ] - reduce_box [1 ]) / factor_y ,
@@ -2818,7 +2818,7 @@ def __transformer(
2818
2818
2819
2819
self .im .transform2 (box , image .im , method , data , resample , fill )
2820
2820
2821
- def transpose (self , method ) :
2821
+ def transpose (self , method : Transpose ) -> Image :
2822
2822
"""
2823
2823
Transpose image (flip or rotate in 90 degree steps)
2824
2824
@@ -2870,7 +2870,9 @@ class ImagePointHandler:
2870
2870
(for use with :py:meth:`~PIL.Image.Image.point`)
2871
2871
"""
2872
2872
2873
- pass
2873
+ @abc .abstractmethod
2874
+ def point (self , im : Image ) -> Image :
2875
+ pass
2874
2876
2875
2877
2876
2878
class ImageTransformHandler :
@@ -3690,6 +3692,7 @@ class Exif(_ExifBase):
3690
3692
3691
3693
endian = None
3692
3694
bigtiff = False
3695
+ _loaded = False
3693
3696
3694
3697
def __init__ (self ):
3695
3698
self ._data = {}
@@ -3805,7 +3808,7 @@ def _get_merged_dict(self):
3805
3808
3806
3809
return merged_dict
3807
3810
3808
- def tobytes (self , offset = 8 ) :
3811
+ def tobytes (self , offset : int = 8 ) -> bytes :
3809
3812
from . import TiffImagePlugin
3810
3813
3811
3814
head = self ._get_head ()
@@ -3960,7 +3963,7 @@ def __setitem__(self, tag, value):
3960
3963
del self ._info [tag ]
3961
3964
self ._data [tag ] = value
3962
3965
3963
- def __delitem__ (self , tag ) :
3966
+ def __delitem__ (self , tag : int ) -> None :
3964
3967
if self ._info is not None and tag in self ._info :
3965
3968
del self ._info [tag ]
3966
3969
else :
0 commit comments