code: def testFiniteGradientAtDifficultPoints(self):
      def make_fn(dtype, attr):
          x = np.array([1.0]).astype(dtype)
          return (
              lambda m, s, p: getattr(  # pylint: disable=g-long-lambda
                  gev.GeneralizedExtremeValue(
                      loc=m,
                      scale=s,
                      concentration=p,
                      validate_args=True,
                  ),
                  attr,
              )(x)
          )
  
      loc = np.array([1.0], dtype=self._dtype)
      scale = np.array([1.5], dtype=self._dtype)
      conc = np.array([-0.7, 0.0, 0.5, 1.0], dtype=self._dtype)
  
      for attr in ["log_prob", "prob", "cdf", "log_cdf"]:
          value, grads = self.evaluate(
              gradient.value_and_gradient(
                  make_fn(self._dtype, attr),
                  [
                      self.make_tensor(loc),  # loc
                      self.make_tensor(scale),  # scale
                      self.make_tensor(conc),
                  ],
              )
          )  # conc
          self.assertAllFinite(value)
          self.assertAllFinite(grads[0])  # d/d loc
          self.assertAllFinite(grads[1])  # d/d scale
          self.assertAllFinite(grads[2])
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import gev
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 15 for calling the _GEVTest obj's underlying member method code with example usage: obj.testFiniteGradientAtDifficultPoints() and returns: function