# Buggy code
def logsf(self, x, *args, **kwds):
    """
    Log of the survival function of the given RV.

    Returns the log of the "survival function," defined as (1 - `cdf`),
    evaluated at `x`.

    Parameters
    ----------
    x : array_like
        quantiles
    arg1, arg2, arg3,... : array_like
        The shape parameter(s) for the distribution (see docstring of the
        instance object for more information)
    loc : array_like, optional
        location parameter (default=0)
    scale : array_like, optional
        scale parameter (default=1)

    Returns
    -------
    logsf : ndarray
        Log of the survival function evaluated at `x`.

    """
    args, loc, scale = self._parse_args(*args, **kwds)
    _a, _b = self._get_support(*args)
    x, loc, scale = map(asarray, (x, loc, scale))
    args = tuple(map(asarray, args))
    dtyp = np.find_common_type([x.dtype, np.float64], [])
    x = np.asarray((x - loc) / scale, dtype=dtyp)
    cond0 = self._argcheck(*args) & (scale > 0)
    cond1 = self._open_support_mask(x, *args) & (scale > 0)
    cond2 = cond0 & (x <= _a)
    cond = cond0 & cond1
    output = empty(shape(cond), dtyp)
    output.fill(NINF)
    place(output, (1 - cond0) + np.isnan(x), self.badvalue)
    place(output, cond2, 0.0)
    if np.any(cond):
        goodargs = argsreduce(cond, *((x,) + args))
        place(output, cond, self._logsf(*goodargs))
    if output.ndim == 0:
        return output[()]
    return output


# Traceback (TypeError)
In [2]: from scipy.stats import boltzmann, hypergeom, randint

In [3]: boltzmann.pmf(0, 2, [10, 11])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-759dbc29a72d> in <module>
----> 1 boltzmann.pmf(0, 2, [10, 11])

~/mc37scipy/lib/python3.7/site-packages/scipy-1.5.0.dev0+23b6191-py3.7-macosx-10.7-x86_64.egg/scipy/stats/_distn_infrastructure.py in pmf(self, k, *args, **kwds)
3018         """
3019         args, loc, _ = self._parse_args(*args, **kwds)
-> 3020         _a, _b = self._get_support(*args)
3021         k, loc = map(asarray, (k, loc))
3022         args = tuple(map(asarray, args))

~/mc37scipy/lib/python3.7/site-packages/scipy-1.5.0.dev0+23b6191-py3.7-macosx-10.7-x86_64.egg/scipy/stats/_discrete_distns.py in _get_support(self, lambda_, N)
730
731     def _get_support(self, lambda_, N):
--> 732         return self.a, N - 1
733
734     def _pmf(self, k, lambda_, N):

TypeError: unsupported operand type(s) for -: 'list' and 'int'

# Fixed code
def logsf(self, x, *args, **kwds):
    """
    Log of the survival function of the given RV.

    Returns the log of the "survival function," defined as (1 - `cdf`),
    evaluated at `x`.

    Parameters
    ----------
    x : array_like
        quantiles
    arg1, arg2, arg3,... : array_like
        The shape parameter(s) for the distribution (see docstring of the
        instance object for more information)
    loc : array_like, optional
        location parameter (default=0)
    scale : array_like, optional
        scale parameter (default=1)

    Returns
    -------
    logsf : ndarray
        Log of the survival function evaluated at `x`.

    """
    args, loc, scale = self._parse_args(*args, **kwds)
    x, loc, scale = map(asarray, (x, loc, scale))
    args = tuple(map(asarray, args))
    _a, _b = self._get_support(*args)
    dtyp = np.find_common_type([x.dtype, np.float64], [])
    x = np.asarray((x - loc) / scale, dtype=dtyp)
    cond0 = self._argcheck(*args) & (scale > 0)
    cond1 = self._open_support_mask(x, *args) & (scale > 0)
    cond2 = cond0 & (x <= _a)
    cond = cond0 & cond1
    output = empty(shape(cond), dtyp)
    output.fill(NINF)
    place(output, (1 - cond0) + np.isnan(x), self.badvalue)
    place(output, cond2, 0.0)
    if np.any(cond):
        goodargs = argsreduce(cond, *((x,) + args))
        place(output, cond, self._logsf(*goodargs))
    if output.ndim == 0:
        return output[()]
    return output