code: def test_multi_objective_composer(data_fixture, request):
      set_random_seed(42)
  
      data = request.getfixturevalue(data_fixture)
      dataset_to_compose = data
      dataset_to_validate = data
      task_type = TaskTypesEnum.classification
      available_model_types = (
          OperationTypesRepository().suitable_operation(
              task_type=task_type
          )
      )
      req = PipelineComposerRequirements(
          primary=available_model_types,
          secondary=available_model_types,
          max_arity=2,
          max_depth=2,
          num_of_generations=3,
      )
      params = GPAlgorithmParameters(
          pop_size=2,
          genetic_scheme_type=GeneticSchemeTypesEnum.steady_state,
          selection_types=[SelectionTypesEnum.spea2],
      )
  
      composer = (
          ComposerBuilder(task=Task(task_type))
          .with_requirements(req)
          .with_metrics(
              (
                  ClassificationMetricsEnum.ROCAUC,
                  ComplexityMetricsEnum.node_number,
              )
          )
          .with_optimizer_params(params)
          .build()
      )
      pipelines_evo_composed = composer.compose_pipeline(
          data=dataset_to_compose
      )
      pipelines_roc_auc = []
  
      assert isinstance(pipelines_evo_composed, list)
      assert len(composer.optimizer.objective.metrics) > 1
      assert composer.optimizer.objective.is_multi_objective
  
      for pipeline_evo_composed in pipelines_evo_composed:
          pipeline_evo_composed.fit_from_scratch(
              input_data=dataset_to_compose
          )
          predicted_gp_composed = pipeline_evo_composed.predict(
              dataset_to_validate
          )
  
          roc_on_valid_gp_composed = roc_auc(
              y_true=dataset_to_validate.target,
              y_score=predicted_gp_composed.predict,
          )
  
          pipelines_roc_auc.append(roc_on_valid_gp_composed)
  
      assert all([roc_auc > 0.6 for roc_auc in pipelines_roc_auc])
  
imports: import datetime
  from pathlib import Path
  import numpy
  import pandas
  import pytest
  from golem.core.optimisers.genetic.gp_params import GPAlgorithmParameters
  from golem.core.optimisers.genetic.operators.inheritance import GeneticSchemeTypesEnum
  from golem.core.optimisers.genetic.operators.selection import SelectionTypesEnum
  from golem.core.optimisers.random.random_search import RandomSearchOptimizer
  from sklearn.metrics import roc_auc_score
  from fedot import Fedot
  from fedot.core.caching.pipelines_cache import OperationsCache
  from fedot.core.composer.composer_builder import ComposerBuilder
  from fedot.core.composer.random_composer import RandomSearchComposer
  from fedot.core.data.data import InputData
  from fedot.core.optimisers.objective import PipelineObjectiveEvaluate
  from fedot.core.optimisers.objective.data_source_splitter import DataSourceSplitter
  from fedot.core.optimisers.objective.metrics_objective import MetricsObjective
  from fedot.core.pipelines.node import PipelineNode
  from fedot.core.pipelines.pipeline import Pipeline
  from fedot.core.pipelines.pipeline_composer_requirements import PipelineComposerRequirements
  from fedot.core.pipelines.pipeline_graph_generation_params import get_pipeline_generation_params
  from fedot.core.repository.dataset_types import DataTypesEnum
  from fedot.core.repository.operation_types_repository import OperationTypesRepository, get_operations_for_task
  from fedot.core.repository.metrics_repository import ClassificationMetricsEnum, ComplexityMetricsEnum
  from fedot.core.repository.tasks import Task, TaskTypesEnum
  from fedot.core.utils import fedot_project_root, set_random_seed
  from test.unit.pipelines.test_pipeline_comparison import pipeline_first, pipeline_second
label_desc: Use image node_id 8 for calling a global function with example usage: test_multi_objective_composer(data_fixture, request) without return types