docstr: Get transform from angle and padding for non-inline labels
code: def _get_padding_transform(
      self, padding_angle, loc, xylabel, padding_factor=1
  ):
      """Get transform from angle and padding for non-inline labels"""
  
      # No rotation
      if self.rotate_labels is False and loc != "geo":
          padding_angle = {
              "top": 90.0,
              "right": 0.0,
              "bottom": -90.0,
              "left": 180.0,
          }[loc]
  
      # Padding
      if xylabel == "x":
          padding = (
              self.xpadding
              if self.xpadding is not None
              else matplotlib.rcParams["xtick.major.pad"]
          )
      else:
          padding = (
              self.ypadding
              if self.ypadding is not None
              else matplotlib.rcParams["ytick.major.pad"]
          )
      dx = (
          padding_factor * padding * np.cos(padding_angle * np.pi / 180)
      )
      dy = (
          padding_factor * padding * np.sin(padding_angle * np.pi / 180)
      )
  
      # Final transform
      return mtrans.offset_copy(
          self.axes.transData,
          fig=self.axes.figure,
          x=dx,
          y=dy,
          units="points",
      )
  
imports: import itertools
  import operator
  import warnings
  import matplotlib
  import matplotlib.artist
  import matplotlib.collections
  import matplotlib.text
  import matplotlib.ticker
  import matplotlib.transforms
  import numpy
  import shapely.geometry
  import cartopy
  from cartopy.crs import PlateCarree, Projection, _RectangularProjection
  from cartopy.mpl.ticker import LatitudeFormatter, LatitudeLocator, LongitudeFormatter, LongitudeLocator
label_desc: Use image node_id 23 for calling the Gridliner obj's underlying member method code with example usage: obj._get_padding_transform(padding_angle, loc, xylabel, padding_factor) and returns: mtrans