code: def compress(self, max_steps: int | None, max_epochs: int | None):
      if max_steps is not None:
          assert max_steps >= self.cooldown_begin_step
      else:
          warn_msg = f"Using epochs number as training duration, please make sure the total training steps larger than `cooldown_begin_step`."
          _logger.warning(warn_msg)
      return super().compress(max_steps, max_epochs)
  
imports: from __future__ import annotations
  from collections import defaultdict
  import logging
  from typing import Dict, List, overload
  import torch
  from torch.optim import Adam
  from .scheduled_pruner import ScheduledPruner
  from .tools import is_active_target, generate_sparsity
  from ..base.compressor import Compressor
  from ..base.target_space import TargetType
  from ..base.wrapper import ModuleWrapper
  from ..utils import Evaluator, _EVALUATOR_DOCSTRING
label_desc: Use image node_id 17 for calling the MovementPruner obj's underlying member method code with example usage: obj.compress(max_steps, max_epochs) and returns: super