class_docstr: Associative operations, can separate noncommutative and
  commutative parts.
  
  (a op b) op c == a op (b op c) == a op b op c.
  
  Base class for Add and Mul.
  
  This is an abstract base class, concrete derived classes must define
  the attribute `identity`.
  
  .. deprecated:: 1.7
  
     Using arguments that aren't subclasses of :class:`~.Expr` in core
     operators (:class:`~.Mul`, :class:`~.Add`, and :class:`~.Pow`) is
     deprecated. See :ref:`non-expr-args-deprecated` for details.
  
  Parameters
  ==========
  
  *args :
      Arguments which are operated
  
  evaluate : bool, optional
      Evaluate the operation. If not passed, refer to ``global_parameters.evaluate``.
docstr: Return a sequence of elements `args` such that cls(*args) == expr
  
  Examples
  ========
  
  >>> from sympy import Symbol, Mul, Add
  >>> x, y = map(Symbol, 'xy')
  
  >>> Mul.make_args(x*y)
  (x, y)
  >>> Add.make_args(x*y)
  (x*y,)
  >>> set(Add.make_args(x*y + y)) == set([y, x*y])
  True
docstr_tok: ["Return","a","sequence","of","elements","`","args","`","such","that","cls","(","*","args",")","==","expr","Examples","========",">",">",">","from","sympy","import","Symbol",",","Mul",",","Add",">",">",">","x",",","y","=","map","(","Symbol",",","'xy","'",")",">",">",">","Mul.make_args","(","x","*","y",")","(","x",",","y",")",">",">",">","Add.make_args","(","x","*","y",")","(","x","*","y",",",")",">",">",">","set","(","Add.make_args","(","x","*","y","+","y",")",")","==","set","(","[","y",",","x","*","y","]",")","True"]
code: def make_args(cls, expr):
      """
      Return a sequence of elements `args` such that cls(*args) == expr
  
      Examples
      ========
  
      >>> from sympy import Symbol, Mul, Add
      >>> x, y = map(Symbol, 'xy')
  
      >>> Mul.make_args(x*y)
      (x, y)
      >>> Add.make_args(x*y)
      (x*y,)
      >>> set(Add.make_args(x*y + y)) == set([y, x*y])
      True
  
      """
      if isinstance(expr, cls):
          return expr.args
      else:
          return (sympify(expr),)
  
imports: from __future__ import annotations
  from operator import attrgetter
  from collections import defaultdict
  from sympy.utilities.exceptions import sympy_deprecation_warning
  from .sympify import _sympify, sympify
  from .basic import Basic
  from .cache import cacheit
  from .sorting import ordered
  from .logic import fuzzy_and
  from .parameters import global_parameters
  from sympy.utilities.iterables import sift
  from sympy.multipledispatch.dispatcher import Dispatcher, ambiguity_register_error_ignore_dup, str_signature, RaiseNotImplementedError
label_desc: Use image node_id 8 for calling the AssocOp obj's underlying member method code with example usage: obj.make_args(cls, expr) and returns: expr, sympify