class_docstr: A Term that should be computed from a tuple of inputs.
  
  This is the base class for :class:`catalyst.pipeline.Factor`,
  :class:`catalyst.pipeline.Filter`, and
  :class:`catalyst.pipeline.Classifier`.
class_docstr_tok: ["A","Term","that","should","be","computed","from","a","tuple","of","inputs",".","This","is","the","base","class","for",":","class",":","`","catalyst.pipeline.Factor","`",",",":","class",":","`","catalyst.pipeline.Filter","`",",","and",":","class",":","`","catalyst.pipeline.Classifier","`","."]
code: def __new__(
      cls,
      inputs=inputs,
      outputs=outputs,
      window_length=window_length,
      mask=mask,
      *args,
      **kwargs,
  ):
      if inputs is NotSpecified:
          inputs = cls.inputs
  
      # Having inputs = NotSpecified is an error, but we handle it later
      # in self._validate rather than here.
      if inputs is not NotSpecified:
          # Allow users to specify lists as class-level defaults, but
          # normalize to a tuple so that inputs is hashable.
          inputs = tuple(inputs)
  
      if outputs is NotSpecified:
          outputs = cls.outputs
      if outputs is not NotSpecified:
          outputs = tuple(outputs)
  
      if mask is NotSpecified:
          mask = cls.mask
      if mask is NotSpecified:
          mask = AssetExists()
  
      if window_length is NotSpecified:
          window_length = cls.window_length
  
      return super(ComputableTerm, cls).__new__(
          cls,
          inputs=inputs,
          outputs=outputs,
          mask=mask,
          window_length=window_length,
          *args,
          **kwargs,
      )
  
imports: from abc import ABCMeta, abstractproperty
  from bisect import insort
  from collections import Mapping
  from weakref import WeakValueDictionary
  from numpy import array, dtype, ndarray, searchsorted
  from six import with_metaclass
  from catalyst.assets import Asset
  from catalyst.errors import DTypeNotSpecified, InvalidOutputName, NonExistentAssetInTimeFrame, NonSliceableTerm, NonWindowSafeInput, NotDType, TermInputsNotSpecified, TermOutputsEmpty, UnsupportedDType, WindowLengthNotSpecified
  from catalyst.lib.adjusted_array import can_represent_dtype
  from catalyst.lib.labelarray import LabelArray
  from catalyst.utils.input_validation import expect_types
  from catalyst.utils.memoize import lazyval
  from catalyst.utils.numpy_utils import bool_dtype, categorical_dtype, datetime64ns_dtype, default_missing_value_for_dtype
  from catalyst.utils.sharedoc import templated_docstring, PIPELINE_ALIAS_NAME_DOC, PIPELINE_DOWNSAMPLING_FREQUENCY_DOC
  from .downsample_helpers import expect_downsample_frequency
  from .sentinels import NotSpecified
label_desc: Use image node_id 1 for calling the ComputableTerm obj's underlying member method code with example usage: obj.__new__(cls, inputs, outputs, window_length, mask) and returns: super