class_docstr: The base class for code-printing subclasses.
class_docstr_tok: ["The","base","class","for","code-printing","subclasses","."]
code: def _print_Assignment(self, expr):
      from sympy.codegen.ast import Assignment
      from sympy.functions.elementary.piecewise import Piecewise
      from sympy.matrices.expressions.matexpr import MatrixSymbol
      from sympy.tensor.indexed import IndexedBase
  
      lhs = expr.lhs
      rhs = expr.rhs
      # We special case assignments that take multiple lines
      if 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)
      elif isinstance(lhs, MatrixSymbol):
          # Here we form an Assignment for each element in the array,
          # printing each one.
          lines = []
          for i, j in self._traverse_matrix_indices(lhs):
              temp = Assignment(lhs[i, j], rhs[i, j])
              code0 = self._print(temp)
              lines.append(code0)
          return "\n".join(lines)
      elif self._settings.get("contract", False) 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 functools import wraps
  from sympy.core import Add, Mul, Pow, S, sympify, Float
  from sympy.core.basic import Basic
  from sympy.core.expr import UnevaluatedExpr
  from sympy.core.function import Lambda
  from sympy.core.mul import _keep_coeff
  from sympy.core.sorting import default_sort_key
  from sympy.core.symbol import Symbol
  from sympy.functions.elementary.complexes import re
  from sympy.printing.str import StrPrinter
  from sympy.printing.precedence import precedence, PRECEDENCE
label_desc: Use image node_id 18 for calling the CodePrinter obj's underlying member method code with example usage: obj._print_Assignment(expr) and returns: self, str, self, self