class_docstr: A class that models and constructs operations in a graph.
  
  A `Op` instance has several responsibilities:
  
  * construct `Apply` nodes via :meth:`Op.make_node` method,
  * perform the numeric calculation of the modeled operation via the
    :meth:`Op.perform` method,
  * and (optionally) build the gradient-calculating sub-graphs via the
    :meth:`Op.grad` method.
  
  To see how `Op`, `Type`, `Variable`, and `Apply` fit together see the
  page on :doc:`graph`.
  
  For more details regarding how these methods should behave: see the `Op
  Contract` in the sphinx docs (advanced tutorial on `Op` making).
class_docstr_tok: ["A","class","that","models","and","constructs","operations","in","a","graph",".","A","`","Op","`","instance","has","several","responsibilities",":","*","construct","`","Apply","`","nodes","via",":","meth",":","`","Op.make_node","`","method",",","*","perform","the","numeric","calculation","of","the","modeled","operation","via","the",":","meth",":","`","Op.perform","`","method",",","*","and","(","optionally",")","build","the","gradient-calculating","sub-graphs","via","the",":","meth",":","`","Op.grad","`","method",".","To","see","how","`","Op","`",",","`","Type","`",",","`","Variable","`",",","and","`","Apply","`","fit","together","see","the","page","on",":","doc",":","`","graph","`",".","For","more","details","regarding","how","these","methods","should","behave",":","see","the","`","Op","Contract","`","in","the","sphinx","docs","(","advanced","tutorial","on","`","Op","`","making",")","."]
docstr: Determine whether or not constant folding should be performed for the given node.
  
  This allows each `Op` to determine if it wants to be constant
  folded when all its inputs are constant. This allows it to choose where
  it puts its memory/speed trade-off. Also, it could make things faster
  as constants can't be used for in-place operations (see
  ``*IncSubtensor``).
  
  Parameters
  ----------
  node : Apply
      The node for which the constant folding determination is made.
  
  Returns
  -------
  res : bool
docstr_tok: ["Determine","whether","or","not","constant","folding","should","be","performed","for","the","given","node",".","This","allows","each","`","Op","`","to","determine","if","it","wants","to","be","constant","folded","when","all","its","inputs","are","constant",".","This","allows","it","to","choose","where","it","puts","its","memory\/speed","trade-off",".","Also",",","it","could","make","things","faster","as","constants","ca","n't","be","used","for","in-place","operations","(","see","``","*","IncSubtensor","``",")",".","Parameters","--","--","--","--","--","node",":","Apply","The","node","for","which","the","constant","folding","determination","is","made",".","Returns","--","--","--","-","res",":","bool"]
code: def do_constant_folding(
      self, fgraph: "FunctionGraph", node: Apply
  ) -> bool:
      """Determine whether or not constant folding should be performed for the given node.
  
      This allows each `Op` to determine if it wants to be constant
      folded when all its inputs are constant. This allows it to choose where
      it puts its memory/speed trade-off. Also, it could make things faster
      as constants can't be used for in-place operations (see
      ``*IncSubtensor``).
  
      Parameters
      ----------
      node : Apply
          The node for which the constant folding determination is made.
  
      Returns
      -------
      res : bool
  
      """
      return True
  
imports: import copy
  import sys
  import warnings
  from abc import ABC, abstractmethod
  from collections.abc import Sequence
  from typing import TYPE_CHECKING, Any, Callable, Optional, Protocol, TypeVar, Union, cast
  import pytensor
  from pytensor.configdefaults import config
  from pytensor.graph.basic import Apply, Variable
  from pytensor.graph.utils import MetaObject, TestValueError, add_tag_trace, get_variable_trace_string
label_desc: Use image node_id 8 for calling the Op obj's underlying member method code with example usage: obj.do_constant_folding(fgraph, node) and returns: True