code: def test_explicit_evaluate_in_batches_logger(
      explicit_model,
      test_explicit_interactions,
      test_explicit_predicted_scores,
  ):
      class LightningLoggerFixture:
          """A simple logger base class with a method ``log_metrics``."""
  
          def __init__(self):
              pass
  
          def log_metrics(self, metrics, step):
              """Save ``metrics`` and ``step`` as class-level attributes for testing."""
              self.metrics = metrics
              self.step = step
  
      logger = LightningLoggerFixture()
  
      mse_score, mae_score = explicit_evaluate_in_batches(
          metric_list=[
              torchmetrics.MeanSquaredError(),
              torchmetrics.MeanAbsoluteError(),
          ],
          test_interactions=test_explicit_interactions,
          model=explicit_model,
          logger=logger,
          num_workers=0,
      )
  
      assert mse_score == logger.metrics["MeanSquaredError"]
      assert mae_score == logger.metrics["MeanAbsoluteError"]
  
      assert logger.step == explicit_model.hparams.num_epochs_completed
  
imports: import copy
  from functools import partial
  import re
  from unittest import mock
  import numpy
  import pytest
  from sklearn.metrics import roc_auc_score
  import torch
  import torchmetrics
  from collie.metrics import _get_evaluate_in_batches_device, _get_labels, _get_user_item_pairs, auc, evaluate_in_batches, explicit_evaluate_in_batches, get_preds, mapk, mrr
label_desc: Use image node_id 17 for calling a global function with example usage: test_explicit_evaluate_in_batches_logger(explicit_model, test_explicit_interactions, test_explicit_predicted_scores) without return types