code: def test_pipeline_with_preprocessing_serialized_correctly():
      """
      Pipeline with preprocessing blocks must be serializable as well as any other pipeline.
      Pipeline doesn't contain any preprocessing operation in its structure. So, imputation and gap-filling
      (imputation) should be performed as preprocessing
      """
      save_path = (
          "test_pipeline_with_preprocessing_serialized_correctly"
      )
  
      scaling_node = PipelineNode("scaling")
      single_node_pipeline = Pipeline(
          PipelineNode("ridge", nodes_from=[scaling_node])
      )
  
      mixed_input = get_mixed_data(
          task=Task(TaskTypesEnum.regression), extended=True
      )
  
      # Calculate metric before serialization
      single_node_pipeline.fit(mixed_input)
      before_output = single_node_pipeline.predict(mixed_input)
      mae_before = mean_absolute_error(
          mixed_input.target, before_output.predict
      )
  
      single_node_pipeline.save(path=save_path, create_subdir=False)
  
      pipeline_after = Pipeline.from_serialized(
          create_correct_path(save_path)
      )
  
      after_output = pipeline_after.predict(mixed_input)
      mae_after = mean_absolute_error(
          mixed_input.target, after_output.predict
      )
  
      assert np.isclose(mae_before, mae_after)
  
imports: import json
  import os
  import shutil
  import numpy
  import pytest
  from sklearn.metrics import mean_absolute_error
  from fedot import Fedot
  from fedot.core.pipelines.node import PipelineNode
  from fedot.core.pipelines.pipeline import Pipeline
  from fedot.core.pipelines.template import PipelineTemplate, extract_subtree_root
  from fedot.core.repository.tasks import Task, TaskTypesEnum
  from fedot.core.utils import fedot_project_root
  from test.integration.api.test_main_api import get_dataset
  from test.unit.data_operations.test_data_operations_implementations import get_mixed_data
  from test.unit.multimodal.data_generators import get_single_task_multimodal_tabular_data
  from test.unit.pipelines.test_decompose_pipelines import get_classification_data
  from test.unit.preprocessing.test_preprocessing_through_api import data_with_spaces_and_nans_in_features
  from test.unit.tasks.test_forecasting import get_multiscale_pipeline, get_simple_ts_pipeline, get_ts_data
label_desc: Use image node_id 27 for calling a global function with example usage: test_pipeline_with_preprocessing_serialized_correctly() without return types