@@ -37,17 +37,18 @@ class XpmImageFile(ImageFile.ImageFile):
37
37
format_description = "X11 Pixel Map"
38
38
39
39
def _open (self ) -> None :
40
+ assert self .fp is not None
40
41
if not _accept (self .fp .read (9 )):
41
42
msg = "not an XPM file"
42
43
raise SyntaxError (msg )
43
44
44
45
# skip forward to next string
45
46
while True :
46
- s = self .fp .readline ()
47
- if not s :
47
+ line = self .fp .readline ()
48
+ if not line :
48
49
msg = "broken XPM file"
49
50
raise SyntaxError (msg )
50
- m = xpm_head .match (s )
51
+ m = xpm_head .match (line )
51
52
if m :
52
53
break
53
54
@@ -62,10 +63,10 @@ def _open(self) -> None:
62
63
palette = {}
63
64
64
65
for _ in range (palette_length ):
65
- s = self .fp .readline ().rstrip ()
66
+ line = self .fp .readline ().rstrip ()
66
67
67
- c = s [1 : bpp + 1 ]
68
- s = s [bpp + 1 : - 2 ].split ()
68
+ c = line [1 : bpp + 1 ]
69
+ s = line [bpp + 1 : - 2 ].split ()
69
70
70
71
for i in range (0 , len (s ), 2 ):
71
72
if s [i ] == b"c" :
@@ -74,9 +75,11 @@ def _open(self) -> None:
74
75
if rgb == b"None" :
75
76
self .info ["transparency" ] = c
76
77
elif rgb .startswith (b"#" ):
77
- rgb = int (rgb [1 :], 16 )
78
+ rgb_int = int (rgb [1 :], 16 )
78
79
palette [c ] = (
79
- o8 ((rgb >> 16 ) & 255 ) + o8 ((rgb >> 8 ) & 255 ) + o8 (rgb & 255 )
80
+ o8 ((rgb_int >> 16 ) & 255 )
81
+ + o8 ((rgb_int >> 8 ) & 255 )
82
+ + o8 (rgb_int & 255 )
80
83
)
81
84
else :
82
85
# unknown colour
@@ -106,6 +109,7 @@ def load_read(self, read_bytes: int) -> bytes:
106
109
107
110
xsize , ysize = self .size
108
111
112
+ assert self .fp is not None
109
113
s = [self .fp .readline ()[1 : xsize + 1 ].ljust (xsize ) for i in range (ysize )]
110
114
111
115
return b"" .join (s )
@@ -124,15 +128,15 @@ def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int
124
128
dest_length *= 3
125
129
pixel_header = False
126
130
while len (data ) < dest_length :
127
- s = self .fd .readline ()
128
- if not s :
131
+ line = self .fd .readline ()
132
+ if not line :
129
133
break
130
- if s .rstrip () == b"/* pixels */" and not pixel_header :
134
+ if line .rstrip () == b"/* pixels */" and not pixel_header :
131
135
pixel_header = True
132
136
continue
133
- s = b'"' .join (s .split (b'"' )[1 :- 1 ])
134
- for i in range (0 , len (s ), bpp ):
135
- key = s [i : i + bpp ]
137
+ line = b'"' .join (line .split (b'"' )[1 :- 1 ])
138
+ for i in range (0 , len (line ), bpp ):
139
+ key = line [i : i + bpp ]
136
140
if self .mode == "RGB" :
137
141
data += palette [key ]
138
142
else :
0 commit comments