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: Creates a stream from observing a value from an object.
  
  Parameters
  ----------
  obj : `Any`
      An object to observe values from.
  func : `Callable[[Any], T]`
      A function to extract the data to be observed from the object being
      watched.
  dtype : str, optional
      The data type of the stream.
  
  Returns
  -------
  `Stream[T]`
      The stream of values being observed from the object.
docstr_tok: ["Creates","a","stream","from","observing","a","value","from","an","object",".","Parameters","--","--","--","--","--","obj",":","`","Any","`","An","object","to","observe","values","from",".","func",":","`","Callable","[","[","Any","]",",","T","]","`","A","function","to","extract","the","data","to","be","observed","from","the","object","being","watched",".","dtype",":","str",",","optional","The","data","type","of","the","stream",".","Returns","--","--","--","-","`","Stream","[","T","]","`","The","stream","of","values","being","observed","from","the","object","."]
code: def sensor(
      obj: "Any", func: "Callable[[Any], T]", dtype: str = None
  ) -> "Stream[T]":
      """Creates a stream from observing a value from an object.
  
      Parameters
      ----------
      obj : `Any`
          An object to observe values from.
      func : `Callable[[Any], T]`
          A function to extract the data to be observed from the object being
          watched.
      dtype : str, optional
          The data type of the stream.
  
      Returns
      -------
      `Stream[T]`
          The stream of values being observed from the object.
      """
      return Sensor(obj, func, dtype=dtype)
  
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 12 for calling the Stream obj's underlying member method code with example usage: obj.sensor(obj, func, dtype) and returns: Sensor