code: def find_size(
      shape: Optional[StrongShape],
      size: Optional[StrongSize],
      ndim_supp: int,
  ) -> Optional[StrongSize]:
      """Determines the size keyword argument for creating a Distribution.
  
      Parameters
      ----------
      shape
          A tuple specifying the final shape of a distribution
      size
          A tuple specifying the size of a distribution
      ndim_supp : int
          The support dimension of the distribution.
          0 if a univariate distribution, 1 or higher for multivariate distributions.
  
      Returns
      -------
      size : tuble of int or TensorVariable, optional
          The size argument for creating the Distribution
      """
  
      if size is not None:
          return size
  
      if shape is not None:
          ndim_expected = len(tuple(shape))
          ndim_batch = ndim_expected - ndim_supp
          return tuple(shape)[:ndim_batch]
  
      return None
  
imports: import warnings
  from functools import singledispatch
  from typing import Any, Optional, Sequence, Tuple, Union, cast
  import numpy
  from pytensor import config
  from pytensor import tensor
  from pytensor.graph.basic import Variable
  from pytensor.graph.op import Op, compute_test_value
  from pytensor.raise_op import Assert
  from pytensor.tensor.random.op import RandomVariable
  from pytensor.tensor.shape import SpecifyShape
  from pytensor.tensor.variable import TensorVariable
  from typing_extensions import TypeAlias
  from pymc.model import modelcontext
  from pymc.pytensorf import convert_observed_data
  from pymc.exceptions import ShapeError
  from pymc.pytensorf import PotentialShapeType
  from pymc.util import _add_future_warning_tag
label_desc: Use image node_id 8 for calling a global function with example usage: find_size(shape, size, ndim_supp) and returns: None, size, tuple