The Sage pretty printer¶
Any transformation to a string goes through here. In other words, the
SagePlainTextFormatter is
entirely implemented via SagePrettyPrinter. Other formatters
may or may not use SagePrettyPrinter to generate text output.
AUTHORS:
- Bill Cauchois (2009): initial version 
- Jean-Baptiste Priez <jbp@kerios.fr> (2013): ASCII art 
- Volker Braun (2013): refactored into DisplayHookBase 
- class sage.repl.display.pretty_print.SagePrettyPrinter(output, max_width, newline, max_seq_length=None)[source]¶
- Bases: - PrettyPrinter- Pretty print Sage objects for the commandline. - INPUT: - See IPython documentation. - EXAMPLES: - sage: 123 123 - >>> from sage.all import * >>> Integer(123) 123 - IPython pretty printers: - sage: set({1, 2, 3}) {1, 2, 3} sage: dict(zzz=123, aaa=99, xab=10) # sorted by keys {'aaa': 99, 'xab': 10, 'zzz': 123} - >>> from sage.all import * >>> set({Integer(1), Integer(2), Integer(3)}) {1, 2, 3} >>> dict(zzz=Integer(123), aaa=Integer(99), xab=Integer(10)) # sorted by keys {'aaa': 99, 'xab': 10, 'zzz': 123} - These are overridden in IPython in a way that we feel is somewhat confusing, and we prefer to print them like plain Python which is more informative. See Issue #14466 - sage: 'this is a string' 'this is a string' sage: type(123) <class 'sage.rings.integer.Integer'> sage: type <... 'type'> sage: import types sage: type('name', (), {}) <class '__main__.name'> sage: types.BuiltinFunctionType <class 'builtin_function_or_method'> sage: def foo(): pass sage: foo <function foo at 0x...> - >>> from sage.all import * >>> 'this is a string' 'this is a string' >>> type(Integer(123)) <class 'sage.rings.integer.Integer'> >>> type <... 'type'> >>> import types >>> type('name', (), {}) <class '__main__.name'> >>> types.BuiltinFunctionType <class 'builtin_function_or_method'> >>> def foo(): pass >>> foo <function foo at 0x...> - DEBUG = False¶
 - pretty(obj)[source]¶
- Pretty print - obj.- This is the only method that outside code should invoke. - INPUT: - obj– anything
 - OUTPUT: string representation for object - EXAMPLES: - sage: from sage.repl.display.pretty_print import SagePrettyPrinter sage: from io import StringIO sage: stream = StringIO() sage: SagePrettyPrinter(stream, 78, '\n').pretty([type, 123, 'foo']) sage: stream.getvalue() "[<... 'type'>," - >>> from sage.all import * >>> from sage.repl.display.pretty_print import SagePrettyPrinter >>> from io import StringIO >>> stream = StringIO() >>> SagePrettyPrinter(stream, Integer(78), '\n').pretty([type, Integer(123), 'foo']) >>> stream.getvalue() "[<... 'type'>," 
 - pretty_repr = (TallListRepr pretty printer, LargeMatrixHelpRepr pretty printer, SomeIPythonRepr pretty printer, PlainPythonRepr pretty printer)¶
 - toplevel()[source]¶
- Return whether we are currently at the top level. - OUTPUT: - boolean; whether we are currently pretty-printing an object at the outermost level ( - True), or whether the object is inside a container (- False).- EXAMPLES: - sage: from sage.repl.display.pretty_print import SagePrettyPrinter sage: from io import StringIO sage: stream = StringIO() sage: spp = SagePrettyPrinter(stream, 78, '\n') sage: spp.toplevel() True - >>> from sage.all import * >>> from sage.repl.display.pretty_print import SagePrettyPrinter >>> from io import StringIO >>> stream = StringIO() >>> spp = SagePrettyPrinter(stream, Integer(78), '\n') >>> spp.toplevel() True