code: def test_metrics(self):
      experiment = experiment_factory(
          id="e1",
          checkpoints=[
              checkpoint_factory(id="c1", metrics={"loss": 0.1}),
              checkpoint_factory(id="c2"),
              checkpoint_factory(id="c3", metrics={"foo": "bar"}),
              checkpoint_factory(id="c3", metrics={"loss": 0.2}),
          ],
      )
      assert experiment.checkpoints.metrics["loss"] == [
          0.1,
          None,
          None,
          0.2,
      ]
  
file_path: keepsake/python/tests/test_checkpoint.py
imports: import datetime
  import time
  import os
  import pytest
  from waiting import wait
  from keepsake.checkpoint import Checkpoint, CheckpointList
  from keepsake.exceptions import DoesNotExist
  from keepsake.project import Project
  from tests.factories import experiment_factory, checkpoint_factory
label_desc: Use image node_id 1 for calling the TestCheckpointList obj's underlying member method code with example usage: obj.test_metrics() without return types