From 13bead9c92a31915d44b11b00813fcdcec05648c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Chapoton?= Date: Sat, 7 Jun 2025 20:13:59 +0200 Subject: [PATCH 1/2] remove unused parentheses in for etc --- mathics/builtin/atomic/numbers.py | 8 +++----- mathics/builtin/atomic/strings.py | 6 +++--- mathics/builtin/directories/directory_names.py | 2 +- mathics/builtin/directories/directory_operations.py | 2 +- mathics/builtin/files_io/filesystem.py | 2 +- mathics/builtin/files_io/importexport.py | 12 ++++++------ mathics/builtin/manipulate.py | 2 +- mathics/builtin/numbers/algebra.py | 2 +- mathics/builtin/numbers/linalg.py | 10 +++++----- .../testing_expressions/numerical_properties.py | 2 +- mathics/core/convert/regex.py | 2 +- mathics/eval/drawing/plot3d.py | 4 ++-- mathics/format/latex.py | 2 +- 13 files changed, 27 insertions(+), 29 deletions(-) diff --git a/mathics/builtin/atomic/numbers.py b/mathics/builtin/atomic/numbers.py index c10f06f7e..67c5b9ac8 100644 --- a/mathics/builtin/atomic/numbers.py +++ b/mathics/builtin/atomic/numbers.py @@ -406,14 +406,12 @@ def eval_rational_with_base(self, n, b, evaluation): return self.eval_with_base(n, b, evaluation) else: exp = log_n_b(py_n, py_b) - (head, tails) = convert_repeating_decimal( + head, tails = convert_repeating_decimal( py_n.as_numer_denom()[0], py_n.as_numer_denom()[1], py_b ) - elements = [] - for x in head: - if x != "0": - elements.append(Integer(int(x))) + elements = [Integer(int(x)) for x in head if x != "0"] + elements.append(from_python(tails)) list_expr = ListExpression(*elements) return ListExpression(list_expr, Integer(exp)) diff --git a/mathics/builtin/atomic/strings.py b/mathics/builtin/atomic/strings.py index d77db8f05..3ed064fc4 100644 --- a/mathics/builtin/atomic/strings.py +++ b/mathics/builtin/atomic/strings.py @@ -793,11 +793,11 @@ def eval(self, seq, evaluation: Evaluation): # From `seq`, extract `inp`, `form`, and `head`. py_seq = seq.get_sequence() if len(py_seq) == 1: - (inp, form, head) = (py_seq[0], SymbolInputForm, None) + inp, form, head = (py_seq[0], SymbolInputForm, None) elif len(py_seq) == 2: - (inp, form, head) = (py_seq[0], py_seq[1], None) + inp, form, head = (py_seq[0], py_seq[1], None) elif len(py_seq) == 3: - (inp, form, head) = (py_seq[0], py_seq[1], py_seq[2]) + inp, form, head = (py_seq[0], py_seq[1], py_seq[2]) else: assert len(py_seq) > 3 # 0 case handled by apply_empty evaluation.message( diff --git a/mathics/builtin/directories/directory_names.py b/mathics/builtin/directories/directory_names.py index 75a15d0af..d6f57ccb4 100644 --- a/mathics/builtin/directories/directory_names.py +++ b/mathics/builtin/directories/directory_names.py @@ -64,7 +64,7 @@ def eval_with_n(self, name, n, evaluation: Evaluation, options: dict): result = py_name for i in range(py_n): - (result, tmp) = osp.split(result) + result, tmp = osp.split(result) return String(result) diff --git a/mathics/builtin/directories/directory_operations.py b/mathics/builtin/directories/directory_operations.py index f2d6da685..0461a1e2b 100644 --- a/mathics/builtin/directories/directory_operations.py +++ b/mathics/builtin/directories/directory_operations.py @@ -173,7 +173,7 @@ def eval(self, dirs, evaluation): if len(seq) != 2: evaluation.message("RenameDirectory", "argr", "RenameDirectory", 2) return - (dir1, dir2) = (s.to_python() for s in seq) + dir1, dir2 = (s.to_python() for s in seq) if not (isinstance(dir1, str) and dir1[0] == dir1[-1] == '"'): evaluation.message("RenameDirectory", "fstr", seq[0]) diff --git a/mathics/builtin/files_io/filesystem.py b/mathics/builtin/files_io/filesystem.py index 97db1bb8d..ffe2ebe5a 100644 --- a/mathics/builtin/files_io/filesystem.py +++ b/mathics/builtin/files_io/filesystem.py @@ -109,7 +109,7 @@ def eval(self, dirs, evaluation): if len(seq) != 2: evaluation.message("CopyDirectory", "argr", "CopyDirectory", 2) return - (dir1, dir2) = (s.to_python() for s in seq) + dir1, dir2 = (s.to_python() for s in seq) if not (isinstance(dir1, str) and dir1[0] == dir1[-1] == '"'): evaluation.message("CopyDirectory", "fstr", seq[0]) diff --git a/mathics/builtin/files_io/importexport.py b/mathics/builtin/files_io/importexport.py index d87095906..882fbd146 100644 --- a/mathics/builtin/files_io/importexport.py +++ b/mathics/builtin/files_io/importexport.py @@ -1156,7 +1156,7 @@ def eval(self, formatname, function, posts, evaluation: Evaluation, options): conditionals = { elem.get_string_value(): expr - for (elem, expr) in (x.get_elements() for x in elements[:-1]) + for elem, expr in (x.get_elements() for x in elements[:-1]) } default = elements[-1] posts = {} @@ -1428,7 +1428,7 @@ def _import(findfile, determine_filetype, elements, evaluation, options, data=No return SymbolFailed # Load the importer - (conditionals, default_function, posts, importer_options) = IMPORTERS[filetype] + conditionals, default_function, posts, importer_options = IMPORTERS[filetype] stream_options, custom_options = _importer_exporter_options( importer_options.get("System`Options"), options, "System`Import", evaluation @@ -1513,12 +1513,12 @@ def get_results(tmp_function, findfile): evaluation.predetermined_out = current_predetermined_out return None - # return {a.get_string_value() : b for (a,b) in map(lambda x: + # return {a.get_string_value() : b for a,b in map(lambda x: # x.get_elements(), tmp)} evaluation.predetermined_out = current_predetermined_out - return dict( - (a.get_string_value(), b) for (a, b) in [x.get_elements() for x in tmp] - ) + return { + a.get_string_value(): b for a, b in (x.get_elements() for x in tmp) + } # Perform the import defaults = None diff --git a/mathics/builtin/manipulate.py b/mathics/builtin/manipulate.py index ce0ac17fe..8fa6b6eb5 100644 --- a/mathics/builtin/manipulate.py +++ b/mathics/builtin/manipulate.py @@ -154,7 +154,7 @@ # def new_callback(**kwargs): # callback( -# **dict((name, parsers[name](value)) for (name, value) in kwargs.items()) +# **dict((name, parsers[name](value)) for name, value in kwargs.items()) # ) # return new_callback diff --git a/mathics/builtin/numbers/algebra.py b/mathics/builtin/numbers/algebra.py index 18f1293a0..ebd5d78e6 100644 --- a/mathics/builtin/numbers/algebra.py +++ b/mathics/builtin/numbers/algebra.py @@ -309,7 +309,7 @@ def find_vars(e, e_sympy): if lv_sympy is not None: find_vars(lv, lv_sympy) elif e.has_form("Power", 2): - (a, b) = e.elements # a^b + a, b = e.elements # a^b a_sympy, b_sympy = a.to_sympy(), b.to_sympy() if a_sympy is None or b_sympy is None: return diff --git a/mathics/builtin/numbers/linalg.py b/mathics/builtin/numbers/linalg.py index 358d3c3ea..b14edff90 100644 --- a/mathics/builtin/numbers/linalg.py +++ b/mathics/builtin/numbers/linalg.py @@ -171,7 +171,7 @@ def eval(self, m, evaluation, options={}) -> Expression: return eigenvalues = list(sympy_matrix.eigenvals().items()) - if all(v.is_complex for (v, _) in eigenvalues): + if all(v.is_complex for v, _ in eigenvalues): # Try to sort the eigenvalues in the Mathematica convention: largest first. try: eigenvalues.sort( @@ -179,19 +179,19 @@ def eval(self, m, evaluation, options={}) -> Expression: ) eigenvalues = [ - from_sympy(v) for (v, c) in eigenvalues for _ in range(c) + from_sympy(v) for v, c in eigenvalues for _ in range(c) ] return ListExpression(*eigenvalues) except TypeError: pass - eigenvalues = [(from_sympy(v), c) for (v, c) in eigenvalues] + eigenvalues = [(from_sympy(v), c) for v, c in eigenvalues] # Sort the eigenvalues by their sort key eigenvalues.sort(key=lambda v: v[0].get_sort_key()) - eigenvalues = [v for (v, c) in eigenvalues for _ in range(c)] + eigenvalues = [v for v, c in eigenvalues for _ in range(c)] return ListExpression(*eigenvalues) @@ -244,7 +244,7 @@ def eval(self, m, evaluation: Evaluation): return # Try to sort the eigenvectors by their corresponding eigenvalues - if all(v.is_complex for (v, _, _) in eigenvects): + if all(v.is_complex for v, _, _ in eigenvects): try: eigenvects.sort( key=lambda v: (abs(v[0]), -re(v[0]), -im(v[0])), reverse=True diff --git a/mathics/builtin/testing_expressions/numerical_properties.py b/mathics/builtin/testing_expressions/numerical_properties.py index ea9a6cbe0..0cb3fd8a7 100644 --- a/mathics/builtin/testing_expressions/numerical_properties.py +++ b/mathics/builtin/testing_expressions/numerical_properties.py @@ -68,7 +68,7 @@ def eval(self, args, evaluation: Evaluation): if not all(isinstance(i, int) or isinstance(i, complex) for i in py_args): return SymbolFalse - if all(sympy.gcd(n, m) == 1 for (n, m) in combinations(py_args, 2)): + if all(sympy.gcd(n, m) == 1 for n, m in combinations(py_args, 2)): return SymbolTrue else: return SymbolFalse diff --git a/mathics/core/convert/regex.py b/mathics/core/convert/regex.py index 7af3145a6..0e468961e 100644 --- a/mathics/core/convert/regex.py +++ b/mathics/core/convert/regex.py @@ -156,7 +156,7 @@ def recurse(x: Expression, quantifiers=q) -> Optional[str]: return REGEXP_FOR_SYMBOLS.get(expr) if expr.has_form("CharacterRange", 2): - (start, stop) = (element.get_string_value() for element in expr.elements) + start, stop = (element.get_string_value() for element in expr.elements) if all(x is not None and len(x) == 1 for x in (start, stop)): return f"[{re.escape(start)}-{re.escape(stop)}]" diff --git a/mathics/eval/drawing/plot3d.py b/mathics/eval/drawing/plot3d.py index 1dbde17de..cf0e7a56c 100644 --- a/mathics/eval/drawing/plot3d.py +++ b/mathics/eval/drawing/plot3d.py @@ -220,7 +220,7 @@ def triangle(x1, y1, x2, y2, x3, y3, depth=0): # important too. Use first strategy if 1 or 4 are undefined # and strategy 2 if either 2 or 3 are undefined. # - (x1, x2, x3, x4) = ( + x1, x2, x3, x4 = ( xstart + value * (xstop - xstart) for value in ( xi / numx, @@ -229,7 +229,7 @@ def triangle(x1, y1, x2, y2, x3, y3, depth=0): (xi + 1) / numx, ) ) - (y1, y2, y3, y4) = ( + y1, y2, y3, y4 = ( ystart + value * (ystop - ystart) for value in ( yi / numy, diff --git a/mathics/format/latex.py b/mathics/format/latex.py index 36cf65917..86218e1c3 100644 --- a/mathics/format/latex.py +++ b/mathics/format/latex.py @@ -543,7 +543,7 @@ def graphics3dbox(self, elements=None, **options) -> str: path = "--".join(["({0},{1},{2})".format(*coords) for coords in line]) boundbox_asy += "draw(({0}), {1});\n".format(path, pen) - (height, width) = (400, 400) # TODO: Proper size + height, width = (400, 400) # TODO: Proper size # Background color if self.background_color: From 1cb1db17c425dc6e1e127e6802316909cfbfd53d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Chapoton?= Date: Sat, 7 Jun 2025 21:54:07 +0200 Subject: [PATCH 2/2] black fixes --- mathics/builtin/files_io/importexport.py | 4 +--- mathics/builtin/numbers/linalg.py | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/mathics/builtin/files_io/importexport.py b/mathics/builtin/files_io/importexport.py index 882fbd146..c76ea6dd0 100644 --- a/mathics/builtin/files_io/importexport.py +++ b/mathics/builtin/files_io/importexport.py @@ -1516,9 +1516,7 @@ def get_results(tmp_function, findfile): # return {a.get_string_value() : b for a,b in map(lambda x: # x.get_elements(), tmp)} evaluation.predetermined_out = current_predetermined_out - return { - a.get_string_value(): b for a, b in (x.get_elements() for x in tmp) - } + return {a.get_string_value(): b for a, b in (x.get_elements() for x in tmp)} # Perform the import defaults = None diff --git a/mathics/builtin/numbers/linalg.py b/mathics/builtin/numbers/linalg.py index b14edff90..c01a9b9c0 100644 --- a/mathics/builtin/numbers/linalg.py +++ b/mathics/builtin/numbers/linalg.py @@ -178,9 +178,7 @@ def eval(self, m, evaluation, options={}) -> Expression: key=lambda v: (abs(v[0]), -re(v[0]), -im(v[0])), reverse=True ) - eigenvalues = [ - from_sympy(v) for v, c in eigenvalues for _ in range(c) - ] + eigenvalues = [from_sympy(v) for v, c in eigenvalues for _ in range(c)] return ListExpression(*eigenvalues) except TypeError: