class_docstr: Denotes product of base- basis dependent quantity with a scalar.
class_docstr_tok: ["Denotes","product","of","base-","basis","dependent","quantity","with","a","scalar","."]
code: def __new__(cls, *args, **options):
      from sympy.vector import Cross, Dot, Curl, Gradient
  
      count = 0
      measure_number = S.One
      zeroflag = False
      extra_args = []
  
      # Determine the component and check arguments
      # Also keep a count to ensure two vectors aren't
      # being multiplied
      for arg in args:
          if isinstance(arg, cls._zero_func):
              count += 1
              zeroflag = True
          elif arg == S.Zero:
              zeroflag = True
          elif isinstance(arg, (cls._base_func, cls._mul_func)):
              count += 1
              expr = arg._base_instance
              measure_number *= arg._measure_number
          elif isinstance(arg, cls._add_func):
              count += 1
              expr = arg
          elif isinstance(arg, (Cross, Dot, Curl, Gradient)):
              extra_args.append(arg)
          else:
              measure_number *= arg
      # Make sure incompatible types weren't multiplied
      if count > 1:
          raise ValueError("Invalid multiplication")
      elif count == 0:
          return Mul(*args, **options)
      # Handle zero vector case
      if zeroflag:
          return cls.zero
  
      # If one of the args was a VectorAdd, return an
      # appropriate VectorAdd instance
      if isinstance(expr, cls._add_func):
          newargs = [
              cls._mul_func(measure_number, x) for x in expr.args
          ]
          return cls._add_func(*newargs)
  
      obj = super().__new__(
          cls,
          measure_number,
          expr._base_instance,
          *extra_args,
          **options,
      )
      if isinstance(obj, Add):
          return cls._add_func(*obj.args)
      obj._base_instance = expr._base_instance
      obj._measure_number = measure_number
      assumptions = {"commutative": True}
      obj._assumptions = StdFactKB(assumptions)
      obj._components = {expr._base_instance: measure_number}
      obj._sys = expr._base_instance._sys
  
      return obj
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING
  from sympy.simplify import simplify, trigsimp
  from sympy.core.decorators import call_highest_priority, _sympifyit
  from sympy.core.assumptions import StdFactKB
  from sympy.core.function import diff
  from sympy.integrals.integrals import Integral
  from sympy.polys.polytools import factor
  from sympy.core import S, Add, Mul
  from sympy.core.expr import Expr
label_desc: Use image node_id 1 for calling the BasisDependentMul obj's underlying member method code with example usage: obj.__new__(cls) and returns: obj, cls, cls, cls, Mul