##// END OF EJS Templates
Merge pull request #12099 from eric-wieser/patch-1...
Matthias Bussonnier -
r25445:d7cd43d2 merge
parent child Browse files
Show More
@@ -196,11 +196,7 b' class PrettyPrinter(_PrettyPrinterBase):'
196 self.group_queue = GroupQueue(root_group)
196 self.group_queue = GroupQueue(root_group)
197 self.indentation = 0
197 self.indentation = 0
198
198
199 def _break_outer_groups(self):
199 def _break_one_group(self, group):
200 while self.max_width < self.output_width + self.buffer_width:
201 group = self.group_queue.deq()
202 if not group:
203 return
204 while group.breakables:
200 while group.breakables:
205 x = self.buffer.popleft()
201 x = self.buffer.popleft()
206 self.output_width = x.output(self.output, self.output_width)
202 self.output_width = x.output(self.output, self.output_width)
@@ -210,6 +206,13 b' class PrettyPrinter(_PrettyPrinterBase):'
210 self.output_width = x.output(self.output, self.output_width)
206 self.output_width = x.output(self.output, self.output_width)
211 self.buffer_width -= x.width
207 self.buffer_width -= x.width
212
208
209 def _break_outer_groups(self):
210 while self.max_width < self.output_width + self.buffer_width:
211 group = self.group_queue.deq()
212 if not group:
213 return
214 self._break_one_group(group)
215
213 def text(self, obj):
216 def text(self, obj):
214 """Add literal text to the output."""
217 """Add literal text to the output."""
215 width = len(obj)
218 width = len(obj)
@@ -248,6 +251,9 b' class PrettyPrinter(_PrettyPrinterBase):'
248 """
251 """
249 Explicitly insert a newline into the output, maintaining correct indentation.
252 Explicitly insert a newline into the output, maintaining correct indentation.
250 """
253 """
254 group = self.group_queue.deq()
255 if group:
256 self._break_one_group(group)
251 self.flush()
257 self.flush()
252 self.output.write(self.newline)
258 self.output.write(self.newline)
253 self.output.write(' ' * self.indentation)
259 self.output.write(' ' * self.indentation)
@@ -687,7 +693,9 b' def _repr_pprint(obj, p, cycle):'
687 """A pprint that just redirects to the normal repr function."""
693 """A pprint that just redirects to the normal repr function."""
688 # Find newlines and replace them with p.break_()
694 # Find newlines and replace them with p.break_()
689 output = repr(obj)
695 output = repr(obj)
690 for idx,output_line in enumerate(output.splitlines()):
696 lines = output.splitlines()
697 with p.group():
698 for idx, output_line in enumerate(lines):
691 if idx:
699 if idx:
692 p.break_()
700 p.break_()
693 p.text(output_line)
701 p.text(output_line)
@@ -68,11 +68,6 b' class BreakingRepr(object):'
68 def __repr__(self):
68 def __repr__(self):
69 return "Breaking(\n)"
69 return "Breaking(\n)"
70
70
71 class BreakingReprParent(object):
72 def _repr_pretty_(self, p, cycle):
73 with p.group(4,"TG: ",":"):
74 p.pretty(BreakingRepr())
75
76 class BadRepr(object):
71 class BadRepr(object):
77
72
78 def __repr__(self):
73 def __repr__(self):
@@ -151,8 +146,12 b' def test_pprint_break_repr():'
151 """
146 """
152 Test that p.break_ is used in repr
147 Test that p.break_ is used in repr
153 """
148 """
154 output = pretty.pretty(BreakingReprParent())
149 output = pretty.pretty([[BreakingRepr()]])
155 expected = "TG: Breaking(\n ):"
150 expected = "[[Breaking(\n )]]"
151 nt.assert_equal(output, expected)
152
153 output = pretty.pretty([[BreakingRepr()]*2])
154 expected = "[[Breaking(\n ),\n Breaking(\n )]]"
156 nt.assert_equal(output, expected)
155 nt.assert_equal(output, expected)
157
156
158 def test_bad_repr():
157 def test_bad_repr():
General Comments 0
You need to be logged in to leave comments. Login now