On 12 ago, 03:10, Aaron Meurer <asmeu...@gmail.com> 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 sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to