Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1e8ea2f

Browse filesBrowse files
authored
Merge pull request #28736 from QuLogic/simplify-dviread
2 parents 1c892c2 + d734a45 commit 1e8ea2f
Copy full SHA for 1e8ea2f

File tree

1 file changed

+41
-29
lines changed
Filter options

1 file changed

+41
-29
lines changed

‎lib/matplotlib/dviread.py

Copy file name to clipboardExpand all lines: lib/matplotlib/dviread.py
+41-29Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -132,20 +132,20 @@ def glyph_name_or_index(self):
132132
# raw: Return delta as is.
133133
raw=lambda dvi, delta: delta,
134134
# u1: Read 1 byte as an unsigned number.
135-
u1=lambda dvi, delta: dvi._arg(1, signed=False),
135+
u1=lambda dvi, delta: dvi._read_arg(1, signed=False),
136136
# u4: Read 4 bytes as an unsigned number.
137-
u4=lambda dvi, delta: dvi._arg(4, signed=False),
137+
u4=lambda dvi, delta: dvi._read_arg(4, signed=False),
138138
# s4: Read 4 bytes as a signed number.
139-
s4=lambda dvi, delta: dvi._arg(4, signed=True),
139+
s4=lambda dvi, delta: dvi._read_arg(4, signed=True),
140140
# slen: Read delta bytes as a signed number, or None if delta is None.
141-
slen=lambda dvi, delta: dvi._arg(delta, signed=True) if delta else None,
141+
slen=lambda dvi, delta: dvi._read_arg(delta, signed=True) if delta else None,
142142
# slen1: Read (delta + 1) bytes as a signed number.
143-
slen1=lambda dvi, delta: dvi._arg(delta + 1, signed=True),
143+
slen1=lambda dvi, delta: dvi._read_arg(delta + 1, signed=True),
144144
# ulen1: Read (delta + 1) bytes as an unsigned number.
145-
ulen1=lambda dvi, delta: dvi._arg(delta + 1, signed=False),
145+
ulen1=lambda dvi, delta: dvi._read_arg(delta + 1, signed=False),
146146
# olen1: Read (delta + 1) bytes as an unsigned number if less than 4 bytes,
147147
# as a signed number if 4 bytes.
148-
olen1=lambda dvi, delta: dvi._arg(delta + 1, signed=(delta == 3)),
148+
olen1=lambda dvi, delta: dvi._read_arg(delta + 1, signed=(delta == 3)),
149149
)
150150

151151

@@ -271,7 +271,8 @@ def _output(self):
271271
Output the text and boxes belonging to the most recent page.
272272
page = dvi._output()
273273
"""
274-
minx, miny, maxx, maxy = np.inf, np.inf, -np.inf, -np.inf
274+
minx = miny = np.inf
275+
maxx = maxy = -np.inf
275276
maxy_pure = -np.inf
276277
for elt in self.text + self.boxes:
277278
if isinstance(elt, Box):
@@ -357,7 +358,7 @@ def _read(self):
357358
self.close()
358359
return False
359360

360-
def _arg(self, nbytes, signed=False):
361+
def _read_arg(self, nbytes, signed=False):
361362
"""
362363
Read and return a big-endian integer *nbytes* long.
363364
Signedness is determined by the *signed* keyword.
@@ -422,7 +423,7 @@ def _nop(self, _):
422423
@_dispatch(139, state=_dvistate.outer, args=('s4',)*11)
423424
def _bop(self, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, p):
424425
self.state = _dvistate.inpage
425-
self.h, self.v, self.w, self.x, self.y, self.z = 0, 0, 0, 0, 0, 0
426+
self.h = self.v = self.w = self.x = self.y = self.z = 0
426427
self.stack = []
427428
self.text = [] # list of Text objects
428429
self.boxes = [] # list of Box objects
@@ -506,7 +507,7 @@ def _fnt_def_real(self, k, c, s, d, a, l):
506507
self.fonts[k] = exc
507508
return
508509
if c != 0 and tfm.checksum != 0 and c != tfm.checksum:
509-
raise ValueError('tfm checksum mismatch: %s' % n)
510+
raise ValueError(f'tfm checksum mismatch: {n}')
510511
try:
511512
vf = _vffile(fontname)
512513
except FileNotFoundError:
@@ -517,7 +518,7 @@ def _fnt_def_real(self, k, c, s, d, a, l):
517518
def _pre(self, i, num, den, mag, k):
518519
self.file.read(k) # comment in the dvi file
519520
if i != 2:
520-
raise ValueError("Unknown dvi format %d" % i)
521+
raise ValueError(f"Unknown dvi format {i}")
521522
if num != 25400000 or den != 7227 * 2**16:
522523
raise ValueError("Nonstandard units in dvi file")
523524
# meaning: TeX always uses those exact values, so it
@@ -678,57 +679,66 @@ def _read(self):
678679
Read one page from the file. Return True if successful,
679680
False if there were no more pages.
680681
"""
681-
packet_char, packet_ends = None, None
682-
packet_len, packet_width = None, None
682+
packet_char = packet_ends = None
683+
packet_len = packet_width = None
683684
while True:
684685
byte = self.file.read(1)[0]
685686
# If we are in a packet, execute the dvi instructions
686687
if self.state is _dvistate.inpage:
687688
byte_at = self.file.tell()-1
688689
if byte_at == packet_ends:
689690
self._finalize_packet(packet_char, packet_width)
690-
packet_len, packet_char, packet_width = None, None, None
691+
packet_len = packet_char = packet_width = None
691692
# fall through to out-of-packet code
692693
elif byte_at > packet_ends:
693694
raise ValueError("Packet length mismatch in vf file")
694695
else:
695696
if byte in (139, 140) or byte >= 243:
696-
raise ValueError(
697-
"Inappropriate opcode %d in vf file" % byte)
697+
raise ValueError(f"Inappropriate opcode {byte} in vf file")
698698
Dvi._dtable[byte](self, byte)
699699
continue
700700

701701
# We are outside a packet
702702
if byte < 242: # a short packet (length given by byte)
703703
packet_len = byte
704-
packet_char, packet_width = self._arg(1), self._arg(3)
704+
packet_char = self._read_arg(1)
705+
packet_width = self._read_arg(3)
705706
packet_ends = self._init_packet(byte)
706707
self.state = _dvistate.inpage
707708
elif byte == 242: # a long packet
708-
packet_len, packet_char, packet_width = \
709-
[self._arg(x) for x in (4, 4, 4)]
709+
packet_len = self._read_arg(4)
710+
packet_char = self._read_arg(4)
711+
packet_width = self._read_arg(4)
710712
self._init_packet(packet_len)
711713
elif 243 <= byte <= 246:
712-
k = self._arg(byte - 242, byte == 246)
713-
c, s, d, a, l = [self._arg(x) for x in (4, 4, 4, 1, 1)]
714+
k = self._read_arg(byte - 242, byte == 246)
715+
c = self._read_arg(4)
716+
s = self._read_arg(4)
717+
d = self._read_arg(4)
718+
a = self._read_arg(1)
719+
l = self._read_arg(1)
714720
self._fnt_def_real(k, c, s, d, a, l)
715721
if self._first_font is None:
716722
self._first_font = k
717723
elif byte == 247: # preamble
718-
i, k = self._arg(1), self._arg(1)
724+
i = self._read_arg(1)
725+
k = self._read_arg(1)
719726
x = self.file.read(k)
720-
cs, ds = self._arg(4), self._arg(4)
727+
cs = self._read_arg(4)
728+
ds = self._read_arg(4)
721729
self._pre(i, x, cs, ds)
722730
elif byte == 248: # postamble (just some number of 248s)
723731
break
724732
else:
725-
raise ValueError("Unknown vf opcode %d" % byte)
733+
raise ValueError(f"Unknown vf opcode {byte}")
726734

727735
def _init_packet(self, pl):
728736
if self.state != _dvistate.outer:
729737
raise ValueError("Misplaced packet in vf file")
730-
self.h, self.v, self.w, self.x, self.y, self.z = 0, 0, 0, 0, 0, 0
731-
self.stack, self.text, self.boxes = [], [], []
738+
self.h = self.v = self.w = self.x = self.y = self.z = 0
739+
self.stack = []
740+
self.text = []
741+
self.boxes = []
732742
self.f = self._first_font
733743
self._missing_font = None
734744
return self.file.tell() + pl
@@ -744,7 +754,7 @@ def _pre(self, i, x, cs, ds):
744754
if self.state is not _dvistate.pre:
745755
raise ValueError("pre command in middle of vf file")
746756
if i != 202:
747-
raise ValueError("Unknown vf format %d" % i)
757+
raise ValueError(f"Unknown vf format {i}")
748758
if len(x):
749759
_log.debug('vf file comment: %s', x)
750760
self.state = _dvistate.outer
@@ -794,7 +804,9 @@ def __init__(self, filename):
794804
widths = struct.unpack(f'!{nw}i', file.read(4*nw))
795805
heights = struct.unpack(f'!{nh}i', file.read(4*nh))
796806
depths = struct.unpack(f'!{nd}i', file.read(4*nd))
797-
self.width, self.height, self.depth = {}, {}, {}
807+
self.width = {}
808+
self.height = {}
809+
self.depth = {}
798810
for idx, char in enumerate(range(bc, ec+1)):
799811
byte0 = char_info[4*idx]
800812
byte1 = char_info[4*idx+1]

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.