code: def test_delete_primary_node():
      # given
      first = PipelineNode(operation_type="logit")
      second = PipelineNode(operation_type="lda")
      third = PipelineNode(operation_type="knn", nodes_from=[first])
      final = PipelineNode(
          operation_type="rf", nodes_from=[second, third]
      )
      pipeline = Pipeline(final)
  
      # when
      pipeline.delete_node(first)
  
      new_primary_node = [
          node
          for node in pipeline.nodes
          if node.operation.operation_type == "knn"
      ][0]
  
      # then
      assert pipeline.length == 3
      assert isinstance(new_primary_node, PipelineNode)
      assert new_primary_node.is_primary
  
imports: import datetime
  import os
  import platform
  import time
  from copy import deepcopy
  from multiprocessing import set_start_method
  import numpy
  import pytest
  from sklearn.datasets import load_iris
  from fedot.core.data.data import InputData
  from fedot.core.data.data_split import train_test_data_setup
  from fedot.core.pipelines.node import PipelineNode
  from fedot.core.pipelines.pipeline import Pipeline
  from fedot.core.repository.dataset_types import DataTypesEnum
  from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams
  from fedot.core.utils import probs_to_labels
  from fedot.preprocessing.preprocessing import DataPreprocessor
  from test.integration.composer.test_composer import to_categorical_codes
  from test.integration.models.test_model import classification_dataset_with_redundant_features
  from test.unit.dag.test_graph_operator import get_pipeline
  from test.unit.pipelines.test_pipeline_comparison import pipeline_first
  from test.unit.tasks.test_forecasting import get_ts_data
label_desc: Use image node_id 15 for calling a global function with example usage: test_delete_primary_node() without return types