code: def factor_sum(
      self,
      limits=None,
      radical=False,
      clear=False,
      fraction=False,
      sign=True,
  ):
      """Return Sum with constant factors extracted.
  
      If ``limits`` is specified then ``self`` is the summand; the other
      keywords are passed to ``factor_terms``.
  
      Examples
      ========
  
      >>> from sympy import Sum
      >>> from sympy.abc import x, y
      >>> from sympy.simplify.simplify import factor_sum
      >>> s = Sum(x*y, (x, 1, 3))
      >>> factor_sum(s)
      y*Sum(x, (x, 1, 3))
      >>> factor_sum(s.function, s.limits)
      y*Sum(x, (x, 1, 3))
      """
      # XXX deprecate in favor of direct call to factor_terms
      kwargs = {
          "radical": radical,
          "clear": clear,
          "fraction": fraction,
          "sign": sign,
      }
      expr = Sum(self, *limits) if limits else self
      return factor_terms(expr, **kwargs)
  
imports: from collections import defaultdict
  from sympy.concrete.products import Product
  from sympy.concrete.summations import Sum
  from sympy.core import Basic, S, Add, Mul, Pow, Symbol, sympify, expand_func, Function, Dummy, Expr, factor_terms, expand_power_exp, Eq
  from sympy.core.exprtools import factor_nc
  from sympy.core.parameters import global_parameters
  from sympy.core.function import expand_log, count_ops, _mexpand, nfloat, expand_mul, expand
  from sympy.core.numbers import Float, I, pi, Rational
  from sympy.core.relational import Relational
  from sympy.core.rules import Transform
  from sympy.core.sorting import ordered
  from sympy.core.sympify import _sympify
  from sympy.core.traversal import bottom_up, walk
  from sympy.functions import gamma, exp, sqrt, log, exp_polar, re
  from sympy.functions.combinatorial.factorials import CombinatorialFunction
  from sympy.functions.elementary.complexes import unpolarify, Abs, sign
  from sympy.functions.elementary.exponential import ExpBase
  from sympy.functions.elementary.hyperbolic import HyperbolicFunction
  from sympy.functions.elementary.integers import ceiling
  from sympy.functions.elementary.piecewise import Piecewise, piecewise_fold, piecewise_simplify
  from sympy.functions.elementary.trigonometric import TrigonometricFunction
  from sympy.functions.special.bessel import BesselBase, besselj, besseli, besselk, bessely, jn
  from sympy.functions.special.tensor_functions import KroneckerDelta
  from sympy.integrals.integrals import Integral
  from sympy.matrices.expressions import MatrixExpr, MatAdd, MatMul, MatPow, MatrixSymbol
  from sympy.polys import together, cancel, factor
  from sympy.polys.numberfields.minpoly import _is_sum_surds, _minimal_polynomial_sq
  from sympy.simplify.combsimp import combsimp
  from sympy.simplify.cse_opts import sub_pre, sub_post
  from sympy.simplify.hyperexpand import hyperexpand
  from sympy.simplify.powsimp import powsimp
  from sympy.simplify.radsimp import radsimp, fraction, collect_abs
  from sympy.simplify.sqrtdenest import sqrtdenest
  from sympy.simplify.trigsimp import trigsimp, exptrigsimp
  from sympy.utilities.decorator import deprecated
  from sympy.utilities.iterables import has_variety, sift, subsets, iterable
  from sympy.utilities.misc import as_int
  import mpmath
label_desc: Use image node_id 11 for calling a global function with example usage: factor_sum(limits, radical, clear, fraction, sign) and returns: factor_terms