code: def test_pipeline_setup_incrementally():
      class SomeStepThatFits(NonTransformableMixin, BaseStep):
          def __init__(self):
              BaseStep.__init__(self)
              self.has_fitted = False
  
          def fit(
              self, data_inputs, expected_outputs=None
          ) -> _FittableStep:
              self.has_fitted = True
              return self
  
      class StepWithSensitiveSetup(Identity):
          """Asserts that step given in argument has fitted before performing setup"""
  
          def __init__(self):
              Identity.__init__(self)
  
          def setup(self, context: CX = None) -> BaseTransformer:
              assert some_step.has_fitted is True
              assert some_step2.has_fitted is False
              return self
  
      some_step = SomeStepThatFits()
      some_step2 = SomeStepThatFits()
  
      p = Pipeline([some_step, StepWithSensitiveSetup(), some_step2])
  
      p.fit_transform(None, None)
  
imports: from typing import Generic
  import numpy
  import pytest
  from neuraxle.base import _FittableStep, _HasChildrenMixin, BaseStep, BaseTransformer, CX, NonTransformableMixin
  from neuraxle.hyperparams.distributions import RandInt, LogUniform
  from neuraxle.hyperparams.space import HyperparameterSpace
  from neuraxle.pipeline import Pipeline
  from neuraxle.steps.misc import TransformCallbackStep, TapeCallbackFunction
  from neuraxle.steps.numpy import NumpyTranspose
  from neuraxle.union import Identity, AddFeatures, ModelStacking
  from testing_neuraxle.mocks.step_mocks import SomeStep, AN_INPUT, AN_EXPECTED_OUTPUT
label_desc: Use image node_id 18 for calling a global function with example usage: test_pipeline_setup_incrementally() and returns: self, self