class_docstr: A base class for splitting the inputs into iterable tuple of patches and locations
  Extend this class to support operations for `PatchInference`, e.g. SlidingPatchSplitter.
  
  Args:
      patch_size: the size of patches to be generated.
      device: the device where the patches are generated.
class_docstr_tok: ["A","base","class","for","splitting","the","inputs","into","iterable","tuple","of","patches","and","locations","Extend","this","class","to","support","operations","for","`","PatchInference","`",",","e.g",".","SlidingPatchSplitter",".","Args",":","patch_size",":","the","size","of","patches","to","be","generated",".","device",":","the","device","where","the","patches","are","generated","."]
docstr: Return the input spatial shape.
  
  Args:
      inputs: either a tensor of shape BCHW[D], representing a batch of images,
          or a filename (str) or list of filenames to the image(s).
  
  Raises:
      NotImplementedError: When the subclass does not override this method.
docstr_tok: ["Return","the","input","spatial","shape",".","Args",":","inputs",":","either","a","tensor","of","shape","BCHW","[","D","]",",","representing","a","batch","of","images",",","or","a","filename","(","str",")","or","list","of","filenames","to","the","image","(","s",")",".","Raises",":","NotImplementedError",":","When","the","subclass","does","not","override","this","method","."]
code: def get_input_shape(self, inputs: Any) -> tuple:
      """
      Return the input spatial shape.
  
      Args:
          inputs: either a tensor of shape BCHW[D], representing a batch of images,
              or a filename (str) or list of filenames to the image(s).
  
      Raises:
          NotImplementedError: When the subclass does not override this method.
  
      """
      raise NotImplementedError(
          f"Subclass {self.__class__.__name__} must implement this method."
      )
  
imports: from __future__ import annotations
  import os
  import warnings
  from abc import ABC, abstractmethod
  from collections.abc import Callable, Iterable, Sequence
  from inspect import _empty, isclass, signature
  from typing import Any
  import torch
  from monai.data.utils import iter_patch_position
  from monai.data.wsi_reader import BaseWSIReader, WSIReader
  from monai.transforms.utility.array import convert_to_tensor
  from monai.utils.misc import PathLike, ensure_tuple, ensure_tuple_rep
label_desc: Use image node_id 2 for calling the Splitter obj's underlying member method code with example usage: obj.get_input_shape(inputs) without return types