class_docstr: A printer to convert expressions to strings of Octave/Matlab code.
class_docstr_tok: ["A","printer","to","convert","expressions","to","strings","of","Octave\/Matlab","code","."]
code: def _print_Assignment(self, expr):
      from sympy.codegen.ast import Assignment
      from sympy.functions.elementary.piecewise import Piecewise
      from sympy.tensor.indexed import IndexedBase
  
      # Copied from codeprinter, but remove special MatrixSymbol treatment
      lhs = expr.lhs
      rhs = expr.rhs
      # We special case assignments that take multiple lines
      if not self._settings["inline"] and isinstance(
          expr.rhs, Piecewise
      ):
          # Here we modify Piecewise so each expression is now
          # an Assignment, and then continue on the print.
          expressions = []
          conditions = []
          for e, c in rhs.args:
              expressions.append(Assignment(lhs, e))
              conditions.append(c)
          temp = Piecewise(*zip(expressions, conditions))
          return self._print(temp)
      if self._settings["contract"] and (
          lhs.has(IndexedBase) or rhs.has(IndexedBase)
      ):
          # Here we check if there is looping to be done, and if so
          # print the required loops.
          return self._doprint_loops(rhs, lhs)
      else:
          lhs_code = self._print(lhs)
          rhs_code = self._print(rhs)
          return self._get_statement("%s = %s" % (lhs_code, rhs_code))
  
imports: from __future__ import annotations
  from typing import Any
  from sympy.core import Mul, Pow, S, Rational
  from sympy.core.mul import _keep_coeff
  from sympy.core.numbers import equal_valued
  from sympy.printing.codeprinter import CodePrinter
  from sympy.printing.precedence import precedence, PRECEDENCE
  from re import search
label_desc: Use image node_id 18 for calling the OctaveCodePrinter obj's underlying member method code with example usage: obj._print_Assignment(expr) and returns: self, self, self