code: def test_lr_finder_ends_before_num_training(tmpdir):
      """Tests learning rate finder ends before `num_training` steps."""
  
      class TestModel(BoringModel):
          def __init__(self, learning_rate=0.1):
              super().__init__()
              self.save_hyperparameters()
  
          def on_before_optimizer_step(self, optimizer):
              assert self.global_step < num_training
  
      model = TestModel()
      trainer = Trainer(default_root_dir=tmpdir)
      tuner = Tuner(trainer)
      num_training = 3
      tuner.lr_find(model=model, num_training=num_training)
  
imports: import logging
  import math
  import os
  from copy import deepcopy
  from typing import Any
  from unittest import mock
  import pytest
  import torch
  from lightning.pytorch import Trainer, seed_everything
  from lightning.pytorch.callbacks.lr_finder import LearningRateFinder
  from lightning.pytorch.demos.boring_classes import BoringModel
  from lightning.pytorch.tuner.lr_finder import _LRFinder
  from lightning.pytorch.tuner.tuning import Tuner
  from lightning.pytorch.utilities.exceptions import MisconfigurationException
  from lightning.pytorch.utilities.types import STEP_OUTPUT
  from lightning_utilities.test.warning import no_warning_call
  from tests_pytorch.helpers.datamodules import ClassifDataModule
  from tests_pytorch.helpers.runif import RunIf
  from tests_pytorch.helpers.simple_models import ClassificationModel
  from tests_pytorch.helpers.utils import getattr_recursive
label_desc: Use image node_id 13 for calling a global function with example usage: test_lr_finder_ends_before_num_training(tmpdir) without return types