On 12 ago, 03:10, Aaron Meurer <[email protected]> wrote:
> Unfortunately, it seems it is not possible to supply a custom terminal
> width. It would be great to add this as a setting to PrettyPrinter.
> It would flow through to the render() function in that file you
> mentioned, and would override the value calculated from
> terminal_width() (the default setting would be None, which would do
> what it does now).
Hi Aaron Meurer,
I think I have succeeded with the following changes to add a
"num_columns" setting (with default None so it reads the terminal
width) to "init_printing" and "pretty"/"pretty_print"/"pprint" :
file "interactive/printing.py" :
Function init_printing, line 64 before :
def init_printing(pretty_print=True, order=None, use_unicode=None,
wrap_line=None, no_global=False, ip=None):
after :
def init_printing(pretty_print=True, order=None, use_unicode=None,
wrap_line=None, num_columns=None, no_global=False, ip=None):
Function init_printing, line 79 before :
stringify_func = lambda expr: _stringify_func(expr,
order=order, use_unicode=use_unicode, wrap_line=wrap_line)
after :
stringify_func = lambda expr: _stringify_func(expr,
order=order, use_unicode=use_unicode, wrap_line=wrap_line,
num_columns=num_columns)
printing/pretty/pretty.py :
Inside class PrettyPrinter(Printer), line 25-26 before :
"wrap_line": True,
}
after :
"wrap_line": True,
"num_columns": None
}
Inside function pretty(expr, **settings), line 1166 before :
wrap_line: line wrapping enabled/disabled, should be a boolean
value (default to True)
after :
wrap_line: line wrapping enabled/disabled, should be a boolean
value (default to True)
num_columns: number of columns before line breaking (default to
None which reads the
terminal width), it is useful when using SymPy without
terminal.
printing/pretty/stringpict.py :
Inside function render(self, * args, **kwargs), line 244 before :
# Attempt to get a terminal width
ncols = self.terminal_width()
after :
if (kwargs["num_columns"] is not None) and
(isinstance(kwargs["num_columns"], int)):
# Read the argument num_columns if it is an integer number
ncols = kwargs["num_columns"]
else:
# Attempt to get a terminal width
ncols = self.terminal_width()
What do you think ? About the name of the setting (num_columns) and
the implementation above ?
So "pretty_print(expr, num_columns=40)" sets the pretty printing
output to 40 columns.
> If you could implement this, it would be great. We can help you with
> the patch. Do you already know how to use git? We have an extensive
> guide on all aspects of patch submission
> athttps://github.com/sympy/sympy/wiki/Development-workflow#wiki-how-to-...
> if you need guidance (or just ask us here).
If everything above is ok (I want to hear the opinions from the
SymPy community), the I
will try to submit using git (for the 1st time...).
Roberto Colistete Jr.
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sympy?hl=en.