@@ -50,8 +50,8 @@ def __init__(self,
5050 self ._width = width
5151 self ._type_lookup = [
5252 (dict , self ._format_dict ),
53- (str , self ._format_str ),
54- (bytes , self ._format_bytes ),
53+ (str , self ._format_str_bytes ),
54+ (bytes , self ._format_str_bytes ),
5555 (tuple , self ._format_tuples ),
5656 ((list , set , frozenset ), self ._format_list_like ),
5757 (Generator , self ._format_generators ),
@@ -125,11 +125,11 @@ def _format_tuples(self, value: tuple, value_repr: str, indent_current: int, ind
125125 # normal tuples are just like other similar iterables
126126 return self ._format_list_like (value , value_repr , indent_current , indent_new )
127127
128- def _format_str (self , value : str , value_repr : str , indent_current : int , indent_new : int ):
128+ def _format_str_bytes (self , value : Union [ str , bytes ] , value_repr : str , indent_current : int , indent_new : int ):
129129 if self ._repr_strings :
130130 self ._stream .write (value_repr )
131131 else :
132- lines = value . splitlines ( True )
132+ lines = list ( self . _wrap_lines ( value , indent_new ) )
133133 if len (lines ) > 1 :
134134 self ._stream .write ('(\n ' )
135135 prefix = indent_new * self ._c
@@ -139,20 +139,14 @@ def _format_str(self, value: str, value_repr: str, indent_current: int, indent_n
139139 else :
140140 self ._stream .write (value_repr )
141141
142- def _format_bytes (self , value : bytes , value_repr : str , indent_current : int , indent_new : int ):
143- wrap = self ._width - indent_new - 3
144- if len (value ) < wrap :
145- self ._stream .write (value_repr )
146- else :
147- self ._stream .write ('(\n ' )
148- prefix = indent_new * self ._c
149- start , end = 0 , wrap
150- while start < len (value ):
151- line = value [start :end ]
152- self ._stream .write (prefix + repr (line ) + '\n ' )
153- start = end
154- end += wrap
155- self ._stream .write (indent_current * self ._c + ')' )
142+ def _wrap_lines (self , s , indent_new ):
143+ width = self ._width - indent_new - 3
144+ for line in s .splitlines (True ):
145+ start = 0
146+ for pos in range (width , len (line ), width ):
147+ yield line [start :pos ]
148+ start = pos
149+ yield line [start :]
156150
157151 def _format_generators (self , value : Generator , value_repr : str , indent_current : int , indent_new : int ):
158152 if self ._repr_generators :
0 commit comments