class_docstr: An array flattening pre-processor.
  
  :param observation_space: The observation space to pre-process.
  :param num_flatten_dims: The number of dimensions to flatten out (from right).
class_docstr_tok: ["An","array","flattening","pre-processor",".",":","param","observation_space",":","The","observation","space","to","pre-process",".",":","param","num_flatten_dims",":","The","number","of","dimensions","to","flatten","out","(","from","right",")","."]
docstr: implementation of :class:`~maze.core.wrappers.observation_preprocessing.preprocessors.base.PreProcessor` interface
          
docstr_tok: ["implementation","of",":","class",":","`","~maze.core.wrappers.observation_preprocessing.preprocessors.base.PreProcessor","`","interface"]
code: def processed_shape(self) -> Tuple[int, ...]:
      """implementation of :class:`~maze.core.wrappers.observation_preprocessing.preprocessors.base.PreProcessor` interface"""
      num_flattened_features = np.product(
          self._original_observation_space.shape[
              -self.num_flatten_dims :
          ]
      )
      return tuple(
          list(
              self._original_observation_space.shape[
                  : -self.num_flatten_dims
              ]
          )
          + [num_flattened_features]
      )
  
file_path: maze/maze/core/wrappers/observation_preprocessing/preprocessors/flatten.py
imports: from typing import Tuple
  import numpy
  from gym import spaces
  from maze.core.wrappers.observation_preprocessing.preprocessors.base import PreProcessor
  from maze.core.annotations import override
label_desc: Use image node_id 2 for calling the FlattenPreProcessor obj's underlying member method code with example usage: obj.processed_shape() and returns: tuple