class_docstr: A class responsible for creating the inputs necessary to work in a
  `DataFeed`.
  
  Parameters
  ----------
  name : str, optional
      The name fo the stream.
  dtype : str, optional
      The data type of the stream.
  
  Methods
  -------
  source(iterable, dtype=None)
      Creates a stream from an iterable.
  group(streams)
      Creates a group of streams.
  sensor(obj,func,dtype=None)
      Creates a stream from observing a value from an object.
  select(streams,func)
      Selects a stream satisfying particular criteria from a list of
      streams.
  constant(value,dtype)
      Creates a stream to generate a constant value.
  asdtype(dtype)
      Converts the data type to `dtype`.
class_docstr_tok: ["A","class","responsible","for","creating","the","inputs","necessary","to","work","in","a","`","DataFeed","`",".","Parameters","--","--","--","--","--","name",":","str",",","optional","The","name","fo","the","stream",".","dtype",":","str",",","optional","The","data","type","of","the","stream",".","Methods","--","--","--","-","source","(","iterable",",","dtype=None",")","Creates","a","stream","from","an","iterable",".","group","(","streams",")","Creates","a","group","of","streams",".","sensor","(","obj",",","func",",","dtype=None",")","Creates","a","stream","from","observing","a","value","from","an","object",".","select","(","streams",",","func",")","Selects","a","stream","satisfying","particular","criteria","from","a","list","of","streams",".","constant","(","value",",","dtype",")","Creates","a","stream","to","generate","a","constant","value",".","asdtype","(","dtype",")","Converts","the","data","type","to","`","dtype","`","."]
docstr: A function decorator that registers the decorated function with the
  names provided as a method to the `Stream` class.
  
  These methods can be used for any instance of `Stream`.
  
  Parameters
  ----------
  names : `List[str]`
      The list of names to be used as aliases for the same method.
docstr_tok: ["A","function","decorator","that","registers","the","decorated","function","with","the","names","provided","as","a","method","to","the","`","Stream","`","class",".","These","methods","can","be","used","for","any","instance","of","`","Stream","`",".","Parameters","--","--","--","--","--","names",":","`","List","[","str","]","`","The","list","of","names","to","be","used","as","aliases","for","the","same","method","."]
code: def register_generic_method(cls, names: "List[str]"):
      """A function decorator that registers the decorated function with the
      names provided as a method to the `Stream` class.
  
      These methods can be used for any instance of `Stream`.
  
      Parameters
      ----------
      names : `List[str]`
          The list of names to be used as aliases for the same method.
      """
  
      def wrapper(func):
          def method(self, *args, **kwargs):
              args = (self,) + args
              return func(*args, **kwargs)
  
          for name in names:
              setattr(Stream, name, method)
          return method
  
      return wrapper
  
imports: import inspect
  from abc import abstractmethod
  from typing import Generic, Iterable, TypeVar, Dict, Any, Callable, List, Tuple
  from tensortrade.core import Observable
  from tensortrade.feed.core.accessors import CachedAccessor
  from tensortrade.feed.core.mixins import DataTypeMixin
label_desc: Use image node_id 20 for calling the Stream obj's underlying member method code with example usage: obj.register_generic_method(cls, names) and returns: wrapper, method, func