class_docstr: Parallelize the union of many pipeline steps AND concatenate the new features to the received inputs using Identity.
  
  .. code-block:: python
  
      pipeline = Pipeline([
          AddFeatures([
              PCA(n_components=2),
              FastICA(n_components=2),
          ])
      ])
  
  
  .. seealso::
      :class:`FeatureUnion`,
      :class:`ModelStacking`,
      :class:`~neuraxle.base.ForceHandleOnlyMixin`,
      :class:`~neuraxle.base.TruncableSteps`,
      :class:`~neuraxle.base.BaseStep`
class_docstr_tok: ["Parallelize","the","union","of","many","pipeline","steps","AND","concatenate","the","new","features","to","the","received","inputs","using","Identity",".","..","code-block",":",":","python","pipeline","=","Pipeline","(","[","AddFeatures","(","[","PCA","(","n_components=2",")",",","FastICA","(","n_components=2",")",",","]",")","]",")","..","seealso",":",":",":","class",":","`","FeatureUnion","`",",",":","class",":","`","ModelStacking","`",",",":","class",":","`","~neuraxle.base.ForceHandleOnlyMixin","`",",",":","class",":","`","~neuraxle.base.TruncableSteps","`",",",":","class",":","`","~neuraxle.base.BaseStep","`"]
docstr: Create a ``FeatureUnion`` where ``Identity`` is the first step so as to also keep
  the inputs to concatenate them to the outputs.
  :param steps_as_tuple: The steps to be sent to the ``FeatureUnion``. ``Identity()`` is prepended.
  :param kwargs: Other arguments to send to ``FeatureUnion``.
docstr_tok: ["Create","a","``","FeatureUnion","``","where","``","Identity","``","is","the","first","step","so","as","to","also","keep","the","inputs","to","concatenate","them","to","the","outputs",".",":","param","steps_as_tuple",":","The","steps","to","be","sent","to","the","``","FeatureUnion","``",".","``","Identity","(",")","``","is","prepended",".",":","param","kwargs",":","Other","arguments","to","send","to","``","FeatureUnion","``","."]
code: def __init__(self, steps_as_tuple: NamedStepsList, **kwargs):
      """
      Create a ``FeatureUnion`` where ``Identity`` is the first step so as to also keep
      the inputs to concatenate them to the outputs.
      :param steps_as_tuple: The steps to be sent to the ``FeatureUnion``. ``Identity()`` is prepended.
      :param kwargs: Other arguments to send to ``FeatureUnion``.
      """
      super().__init__(
          steps_as_tuple=[Identity()] + steps_as_tuple, **kwargs
      )
  
imports: from typing import Tuple
  from joblib import Parallel, delayed
  from neuraxle.base import CX, DACT, BaseStep, BaseTransformer, ForceHandleOnlyMixin, Identity, NamedStepsList, NonFittableMixin, TruncableSteps, _TruncableServiceWithBodyMixin
  from neuraxle.data_container import ZipDataContainer
  from neuraxle.steps.numpy import NumpyConcatenateInnerFeatures
label_desc: Use image node_id 1 to create a new AddFeatures object from inherited base classes: FeatureUnion with example: obj = AddFeatures(steps_as_tuple)