code: def test_correct_order_of_enriched_X(requests_mock: Mocker):
      pd.set_option("display.max_columns", 1000)
      url = "http://fake_url2"
  
      path_to_mock_features = os.path.join(
          os.path.dirname(os.path.realpath(__file__)),
          "test_data/binary/mock_features.parquet",
      )
  
      mock_default_requests(requests_mock, url)
      search_task_id = mock_initial_search(requests_mock, url)
      mock_initial_progress(requests_mock, url, search_task_id)
      ads_search_task_id = mock_initial_summary(
          requests_mock,
          url,
          search_task_id,
      )
      mock_get_metadata(requests_mock, url, search_task_id)
      mock_get_task_metadata_v2(
          requests_mock,
          url,
          ads_search_task_id,
          ProviderTaskMetadataV2(
              features=[
                  FeaturesMetadataV2(
                      name="feature",
                      type="NUMERIC",
                      source="ads",
                      hit_rate=99.0,
                      shap_value=10.1,
                  )
              ],
              hit_rate_metrics=HitRateMetrics(
                  etalon_row_count=10000,
                  max_hit_count=9990,
                  hit_rate=0.999,
                  hit_rate_percent=99.9,
              ),
          ),
      )
      mock_raw_features(
          requests_mock, url, search_task_id, path_to_mock_features
      )
  
      path = os.path.join(
          os.path.dirname(os.path.realpath(__file__)),
          "test_data/binary/data.csv",
      )
      df = pd.read_csv(path, sep=",")
      df = df.sample(frac=1).reset_index(drop=True)
      df.drop(columns="SystemRecordId_473310000", inplace=True)
      train_df = df.head(10000)
      train_features = train_df.drop(columns="target")
      print("Train features")
      print(train_features)
      train_target = train_df["target"]
      eval1_df = df[10000:11000].reset_index(drop=True)
      eval1_features = eval1_df.drop(columns="target")
      eval1_target = eval1_df["target"].reset_index(drop=True)
      eval2_df = df[11000:12000].reset_index(drop=True)
      eval2_features = eval2_df.drop(columns="target")
      eval2_target = eval2_df["target"].reset_index(drop=True)
      eval_set = [
          (eval1_features, eval1_target),
          (eval2_features, eval2_target),
      ]
  
      search_keys = {
          "phone_num": SearchKey.PHONE,
          "rep_date": SearchKey.DATE,
      }
      enricher = FeaturesEnricher(
          search_keys=search_keys,
          endpoint=url,
          api_key="fake_api_key",
          date_format="%Y-%m-%d",
          logs_enabled=False,
      )
  
      enricher.fit(
          train_features,
          train_target,
          eval_set=eval_set,
          calculate_metrics=False,
      )
  
      df_with_eval_set_index = train_features.copy()
      df_with_eval_set_index["eval_set_index"] = 0
      for idx, eval_pair in enumerate(eval_set):
          eval_x, _ = eval_pair
          eval_df_with_index = eval_x.copy()
          eval_df_with_index["eval_set_index"] = idx + 1
          df_with_eval_set_index = pd.concat(
              [df_with_eval_set_index, eval_df_with_index]
          )
  
      validation_search_task_id = mock_validation_search(
          requests_mock, url, search_task_id
      )
      mock_validation_progress(
          requests_mock, url, validation_search_task_id
      )
      mock_validation_summary(
          requests_mock,
          url,
          search_task_id,
          ads_search_task_id,
          validation_search_task_id,
      )
  
      mock_features = pd.read_parquet(path_to_mock_features)
      converter = DateTimeSearchKeyConverter("rep_date")
      df_with_eval_set_index_with_date = converter.convert(
          df_with_eval_set_index
      )
      mock_features["system_record_id"] = pd.util.hash_pandas_object(
          df_with_eval_set_index_with_date[
              sorted(search_keys.keys())
          ].reset_index(drop=True),
          index=False,
      ).astype("Float64")
      mock_validation_raw_features(
          requests_mock, url, validation_search_task_id, mock_features
      )
  
      enriched_df_with_eval_set = enricher.transform(
          df_with_eval_set_index
      )
  
      enriched_X = enriched_df_with_eval_set[
          enriched_df_with_eval_set.eval_set_index == 0
      ]
      enriched_eval_X_1 = enriched_df_with_eval_set[
          enriched_df_with_eval_set.eval_set_index == 1
      ]
      enriched_eval_X_2 = enriched_df_with_eval_set[
          enriched_df_with_eval_set.eval_set_index == 2
      ]
  
      print("Enriched X")
      print(enriched_X)
  
      assert not enriched_X["feature"].isna().any()
      assert not enriched_eval_X_1["feature"].isna().any()
      assert not enriched_eval_X_2["feature"].isna().any()
  
      assert_frame_equal(
          train_features, enriched_X[train_features.columns]
      )
  
      assert_frame_equal(
          eval1_features, enriched_eval_X_1[eval1_features.columns]
      )
  
      assert_frame_equal(
          eval2_features, enriched_eval_X_2[eval2_features.columns]
      )
  
imports: import os
  from datetime import date
  from typing import List, Optional
  import numpy
  import pandas
  import pytest
  from pandas.testing import assert_frame_equal
  from requests_mock.mocker import Mocker
  from upgini import FeaturesEnricher, SearchKey
  from upgini.dataset import Dataset
  from upgini.errors import ValidationError
  from upgini.http import _RestClient
  from upgini.metadata import CVType, FeaturesMetadataV2, HitRateMetrics, ModelEvalSet, ModelTaskType, ProviderTaskMetadataV2, RuntimeParameters
  from upgini.resource_bundle import bundle
  from upgini.search_task import SearchTask
  from upgini.utils.datetime_utils import DateTimeSearchKeyConverter
  from .utils import mock_default_requests, mock_get_metadata, mock_get_task_metadata_v2, mock_initial_and_validation_summary, mock_initial_progress, mock_initial_search, mock_initial_summary, mock_raw_features, mock_validation_progress, mock_validation_raw_features, mock_validation_search, mock_validation_summary
label_desc: Use image node_id 21 for calling a global function with example usage: test_correct_order_of_enriched_X(requests_mock) without return types