Skip to content
Closed
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
a35983e
formatting OutputForm
mmatera Nov 10, 2024
3b5a2ba
Merge branch 'master' into 1d_OutputForm
mmatera Feb 11, 2025
b5fd7da
Merge branch 'master' into 1d_OutputForm
mmatera Sep 7, 2025
3932011
merge
mmatera Dec 23, 2025
b6d0de4
Merge branch 'master' into 1d_OutputForm
mmatera Dec 26, 2025
1388dd5
fix typo
mmatera Dec 26, 2025
89678aa
merge
mmatera Dec 26, 2025
777b418
add Pane and PaneBox
mmatera Dec 27, 2025
9bd5cad
improve Pane in mathml
mmatera Dec 27, 2025
d8b8bff
Merge remote-tracking branch 'origin/master' into Pane
mmatera Dec 27, 2025
088e657
improve compatibility in OutputForm
mmatera Dec 27, 2025
0e7a3a4
reduce trivial changes
mmatera Dec 27, 2025
c00f0dc
merge
mmatera Dec 28, 2025
4cd237b
Update mathics/eval/makeboxes/makeboxes.py
mmatera Dec 28, 2025
89f5063
Update mathics/eval/makeboxes/makeboxes.py
mmatera Dec 28, 2025
1c8a7f7
Merge branch 'master' into 1d_OutputForm
mmatera Dec 28, 2025
72eb41a
system symbols
mmatera Dec 28, 2025
b1ad184
Merge remote-tracking branch 'origin/master' into 1d_OutputForm
mmatera Dec 29, 2025
4810a6c
tests for MakeBoxes
mmatera Dec 30, 2025
794ca77
add tests for the structure
mmatera Dec 30, 2025
65a1656
another round.
mmatera Dec 30, 2025
8c2d721
Merge remote-tracking branch 'origin/master' into 1d_OutputForm
mmatera Dec 30, 2025
a4963b6
fix parametrize
mmatera Dec 30, 2025
fa6b828
Merge remote-tracking branch 'origin/master' into 1d_OutputForm
mmatera Dec 31, 2025
9232a85
Merge remote-tracking branch 'origin/master' into 1d_OutputForm
mmatera Dec 31, 2025
b3984f3
merge
mmatera Dec 31, 2025
8029135
Merge branch 'test_makeboxes' into 1d_OutputForm
mmatera Dec 31, 2025
38a766a
Merge remote-tracking branch 'origin/master' into 1d_OutputForm
mmatera Dec 31, 2025
8cbe6dd
Merge branch 'master' into test_makeboxes
mmatera Dec 31, 2025
e93512e
basic implementation for OutputForm grid
mmatera Dec 31, 2025
2948b44
fix typos
mmatera Dec 31, 2025
f4a8d60
more typos
mmatera Dec 31, 2025
b56e59a
move more tests to the yaml file
mmatera Jan 2, 2026
5018aef
merge
mmatera Jan 2, 2026
82555bc
merge
mmatera Jan 3, 2026
211f07a
merge
mmatera Jan 3, 2026
7b02dbc
Merge remote-tracking branch 'origin/master' into 1d_OutputForm
mmatera Jan 4, 2026
25454a0
remove default options in boxes
mmatera Jan 4, 2026
5627a81
adjust format renders
mmatera Jan 4, 2026
555588b
add options to InterpretationBox. Add quotes to PaneBox.
mmatera Jan 4, 2026
ec30ffb
Merge branch 'remove_default_options' into 1d_OutputForm
mmatera Jan 4, 2026
f30c754
Merge remote-tracking branch 'origin/master' into 1d_OutputForm
mmatera Jan 5, 2026
67459c1
Merge branch 'master' into 1d_OutputForm
mmatera Jan 5, 2026
5b51ed6
Merge remote-tracking branch 'origin/1d_OutputForm' into 1d_OutputForm
mmatera Jan 5, 2026
6f2ef5e
remove unused imports. lexicographic order functions in `mathics.form…
mmatera Jan 5, 2026
d0857fd
more on mathics.format.outputform
mmatera Jan 6, 2026
ae5533f
Fix evaluation of InterpretationBox with options
mmatera Jan 7, 2026
108731b
merge
mmatera Jan 7, 2026
bf17739
Misc tweaks... (#1599)
rocky Jan 7, 2026
7e401fb
merge
mmatera Jan 8, 2026
340a023
Merge branch 'master' into 1d_OutputForm
mmatera Jan 9, 2026
4046386
Merge remote-tracking branch 'origin/1d_OutputForm' into 1d_OutputForm
mmatera Jan 9, 2026
80160ac
restore
mmatera Jan 9, 2026
736bbc8
comment out a test until we finish fixing TeXForm in another round
mmatera Jan 9, 2026
fa243fe
merge reorganization of mathics.builtin.forms
mmatera Jan 9, 2026
e0d8ce3
comment out
mmatera Jan 9, 2026
c840a6a
mypy
mmatera Jan 9, 2026
5fded9f
isort
mmatera Jan 9, 2026
2480ce5
Merge branch 'master' into 1d_OutputForm
mmatera Jan 9, 2026
5bcb2bb
fix Image.atom_to_boxes
mmatera Jan 10, 2026
8846c13
fix ImageBox.boxes_to_*
mmatera Jan 10, 2026
c098a32
== bool -> is bool
mmatera Jan 10, 2026
b9fd972
DRY input/outputform
mmatera Jan 10, 2026
1e554eb
adjust dtype comparison
mmatera Jan 10, 2026
d4908ca
Merge branch 'Image_to_boxes_1' into 1d_OutputForm
mmatera Jan 10, 2026
83972c6
remove form parameter
mmatera Jan 10, 2026
dbd4173
and more
mmatera Jan 10, 2026
0cdbaf1
phase 2
mmatera Jan 11, 2026
c2a8880
Merge remote-tracking branch 'origin/master' into 1d_OutputForm_phase2
mmatera Jan 11, 2026
f1fd1ee
baseform
mmatera Jan 11, 2026
d61836e
Merge remote-tracking branch 'origin/master' into 1d_OutputForm_phase2
mmatera Jan 11, 2026
0399a4a
trailing prints
mmatera Jan 11, 2026
65bbe5c
remove simple grid. add baseform
mmatera Jan 11, 2026
e0134db
texform
mmatera Jan 11, 2026
b0210ae
bracket->square_bracket
mmatera Jan 11, 2026
1ed63c1
parenthesized
mmatera Jan 11, 2026
ca7eebf
Grid and TableForm
mmatera Jan 11, 2026
3669274
improve StringForm implementation
mmatera Jan 11, 2026
0ecea0b
merge
mmatera Jan 11, 2026
9fc55ad
Definitions fix
mmatera Jan 11, 2026
dcf3a68
numberform1
mmatera Jan 12, 2026
1f0c833
adding tests. Handlind escaped backquotes.
mmatera Jan 12, 2026
2644dd1
Merge remote-tracking branch 'origin/master' into StringForm
mmatera Jan 12, 2026
7d635f9
another trailing dot
mmatera Jan 12, 2026
5794dd9
merge
mmatera Jan 12, 2026
379fd01
NumberForm refactor
mmatera Jan 13, 2026
7a30b07
merge
mmatera Jan 14, 2026
5389363
Update comment for clarity on exponent handling
mmatera Jan 14, 2026
5d69033
Integer
mmatera Jan 14, 2026
83a92e6
more reorganization of tests
mmatera Jan 14, 2026
71e8280
merge
mmatera Jan 14, 2026
5cd8b23
remove trailing export of int_to_string_shorter_repr
mmatera Jan 14, 2026
1fef4c0
merge
mmatera Jan 16, 2026
b15f050
merge
mmatera Jan 16, 2026
93f23b1
restaurate test_series and test.helper
mmatera Jan 16, 2026
f1ecfba
restore numbers.calculus
mmatera Jan 16, 2026
369e8cc
almost ready
mmatera Jan 17, 2026
33d29d7
Improve SeriesData format function
mmatera Jan 17, 2026
ae73cd6
merge
mmatera Jan 17, 2026
0dfe96f
merge
mmatera Jan 17, 2026
d54149b
adjusting documentation
mmatera Jan 17, 2026
4c05064
working
mmatera Jan 18, 2026
62c583c
full
mmatera Jan 18, 2026
d0d0dde
partial
mmatera Jan 18, 2026
b437fba
adding init
mmatera Jan 18, 2026
432b157
mathics.format -> mathics.format.export
mmatera Jan 18, 2026
cb30454
working
mmatera Jan 18, 2026
ad3a50b
mathics.eval.makeboxes-> mathics.format.makeboxes
mmatera Jan 18, 2026
cdae853
mathics.form->mathics.format.forms
mmatera Jan 18, 2026
0109171
moving implementation of format methods to mathics.format.formvalues
mmatera Jan 18, 2026
8def057
missing files
mmatera Jan 18, 2026
ea5fdbd
ruff
mmatera Jan 18, 2026
fc81d43
Format module reorganization tweaks (#1632)
rocky Jan 18, 2026
f62e663
Format module reorganization mypy (#1633)
mmatera Jan 19, 2026
8f4ec34
mathics.format
mmatera Jan 19, 2026
d0b07be
remove export
mmatera Jan 19, 2026
7f43f91
restore eval_makeboxes_outputform
mmatera Jan 19, 2026
e0b91dc
merge
mmatera Jan 19, 2026
ef51080
merge
mmatera Jan 19, 2026
fc32505
merge
mmatera Jan 19, 2026
a285a61
trailing rename
mmatera Jan 19, 2026
fd06ac4
ruff
mmatera Jan 19, 2026
611cfc9
Merge branch 'more_on_inputform' into 1d_OutputForm
mmatera Jan 19, 2026
3722dc6
merge
mmatera Jan 19, 2026
2b7f101
merge
mmatera Jan 19, 2026
059a0dc
Merge branch 'more_on_inputform' into 1d_OutputForm
mmatera Jan 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions mathics/builtin/forms/output.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
StringLParen,
StringRParen,
eval_baseform,
eval_makeboxes_outputform,
eval_mathmlform,
eval_tableform,
eval_texform,
Expand Down Expand Up @@ -490,8 +491,13 @@ class OutputForm(FormBaseClass):
= -Graphics-
"""

formats = {"OutputForm[s_String]": "s"}
summary_text = "plain-text output format"

def eval_makeboxes(self, expr, form, evaluation):
"""MakeBoxes[OutputForm[expr_], form_]"""
return eval_makeboxes_outputform(expr, evaluation, form)


class PythonForm(FormBaseClass):
"""
Expand Down
9 changes: 8 additions & 1 deletion mathics/eval/makeboxes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
eval_generic_makeboxes,
eval_makeboxes,
eval_makeboxes_fullform,
eval_makeboxes_outputform,
format_element,
int_to_string_shorter_repr,
to_boxes,
Expand All @@ -19,20 +20,26 @@
eval_tableform,
eval_texform,
)
from mathics.eval.makeboxes.precedence import builtins_precedence, parenthesize
from mathics.eval.makeboxes.precedence import (
builtins_precedence,
compare_precedence,
parenthesize,
)

__all__ = [
"NumberForm_to_String",
"StringLParen",
"StringRParen",
"_boxed_string",
"builtins_precedence",
"compare_precedence",
"do_format",
"eval_baseform",
"eval_generic_makeboxes",
"eval_infix",
"eval_makeboxes",
"eval_makeboxes_fullform",
"eval_makeboxes_outputform",
"eval_mathmlform",
"eval_postprefix",
"eval_tableform",
Expand Down
33 changes: 33 additions & 0 deletions mathics/eval/makeboxes/makeboxes.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
)
from mathics.core.systemsymbols import ( # SymbolRule, SymbolRuleDelayed,
SymbolComplex,
SymbolOutputForm,
SymbolRational,
SymbolStandardForm,
)
Expand Down Expand Up @@ -136,6 +137,19 @@ def int_to_string_shorter_repr(value: int, form: Symbol, max_digits=640):
return String(value_str)


def eval_makeboxes_outputform(expr, evaluation, form):
"""
Build a 2D representation of the expression using only keyboard characters.
"""
from mathics.builtin.box.layout import InterpretationBox, PaneBox
from mathics.format.outputform import expression_to_outputform_text

text_outputform = str(expression_to_outputform_text(expr, evaluation, form))
elem1 = PaneBox(String(text_outputform))
elem2 = Expression(SymbolOutputForm, expr)
return InterpretationBox(elem1, elem2)


# TODO: evaluation is needed because `atom_to_boxes` uses it. Can we remove this
# argument?
def eval_makeboxes_fullform(
Expand Down Expand Up @@ -265,10 +279,29 @@ def format_element(
"""
Applies formats associated to the expression, and then calls Makeboxes
"""
# Halt any potential evaluation tracing while performing boxing.
evaluation.is_boxing = True
Comment thread
mmatera marked this conversation as resolved.
Outdated
while element.get_head() is form:
element = element.elements[0]

if element.has_form("FullForm", 1):
return eval_makeboxes_fullform(element.elements[0], evaluation)

# In order to work like in WMA, `format_element`
# should evaluate `MakeBoxes[element//form, StandardForm]`
# Then, MakeBoxes[expr_, StandardForm], for any expr,
# should apply Format[...] rules, and then
# MakeBoxes[...] rules. These rules should be stored
# as FormatValues[...]
# As a first step in that direction, let's mimic this behaviour
# just for the case of OutputForm:
if element.has_form("OutputForm", 1):
return eval_makeboxes_outputform(element.elements[0], evaluation, form)

formatted_expr = do_format(element, evaluation, form)
if formatted_expr is None:
return None

result_box = eval_makeboxes(formatted_expr, evaluation, form)
if isinstance(result_box, String):
return result_box
Expand Down
Loading
Loading