code: def test_pl_callback_no_validation(temp_workdir):
      with open("keepsake.yaml", "w") as f:
          f.write("repository: file://.keepsake/")
  
      dense_size = 784
      learning_rate = 0.1
  
      model = ModelNoValidation()
      trainer = Trainer(
          checkpoint_callback=False,
          callbacks=[
              KeepsakeCallback(
                  params={
                      "dense_size": dense_size,
                      "learning_rate": learning_rate,
                  },
                  primary_metric=("train_loss", "minimize"),
              )
          ],
          max_epochs=5,
      )
  
      trainer.fit(model)
  
      exp_meta_paths = glob(".keepsake/metadata/experiments/*.json")
      assert len(exp_meta_paths) == 1
      with open(exp_meta_paths[0]) as f:
          exp_meta = json.load(f)
      assert exp_meta["params"]["dense_size"] == 784
      assert exp_meta["params"]["learning_rate"] == 0.1
      assert len(exp_meta["checkpoints"]) == 5
      chkp_meta = exp_meta["checkpoints"][0]
  
      assert chkp_meta["path"] == "model.pth"
      assert chkp_meta["primary_metric"] == {
          "name": "train_loss",
          "goal": "minimize",
      }
      assert set(chkp_meta["metrics"].keys()) == set(
          [
              "train_loss",
              "global_step",
              "epoch",
          ]
      )
      assert os.path.exists(
          ".keepsake/checkpoints/" + chkp_meta["id"] + ".tar.gz"
      )
  
imports: import json
  from glob import glob
  import os
  import torch
  from torch.nn import functional
  from torch import nn
  from pytorch_lightning.core.lightning import LightningModule
  from pytorch_lightning import Trainer
  from torch.optim import Adam
  from torch.utils.data import DataLoader, random_split, Subset
  from torch.utils.data.dataset import Dataset
  from torchvision.datasets import MNIST
  from torchvision import transforms
  import pytest
  import urllib
  from keepsake.pl_callback import KeepsakeCallback
label_desc: Use image node_id 1 for calling a global function with example usage: test_pl_callback_no_validation(temp_workdir) without return types