# Buggy code
def ppf(self, q, *args, **kwds):
    """
    Percent point function (inverse of `cdf`) at q of the given RV.

    Parameters
    ----------
    q : array_like
        lower tail probability
    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
    -------
    x : array_like
        quantile corresponding to the lower tail probability q.

    """
    args, loc, scale = self._parse_args(*args, **kwds)
    _a, _b = self._get_support(*args)
    q, loc, scale = map(asarray, (q, loc, scale))
    args = tuple(map(asarray, args))
    cond0 = self._argcheck(*args) & (scale > 0) & (loc == loc)
    cond1 = (0 < q) & (q < 1)
    cond2 = cond0 & (q == 0)
    cond3 = cond0 & (q == 1)
    cond = cond0 & cond1
    output = valarray(shape(cond), value=self.badvalue)

    lower_bound = _a * scale + loc
    upper_bound = _b * scale + loc
    place(output, cond2, argsreduce(cond2, lower_bound)[0])
    place(output, cond3, argsreduce(cond3, upper_bound)[0])

    if np.any(cond):  # call only if at least 1 entry
        goodargs = argsreduce(cond, *((q,) + args + (scale, loc)))
        scale, loc, goodargs = goodargs[-2], goodargs[-1], goodargs[:-2]
        place(output, cond, self._ppf(*goodargs) * scale + loc)
    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 ppf(self, q, *args, **kwds):
    """
    Percent point function (inverse of `cdf`) at q of the given RV.

    Parameters
    ----------
    q : array_like
        lower tail probability
    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
    -------
    x : array_like
        quantile corresponding to the lower tail probability q.

    """
    args, loc, scale = self._parse_args(*args, **kwds)
    q, loc, scale = map(asarray, (q, loc, scale))
    args = tuple(map(asarray, args))
    _a, _b = self._get_support(*args)
    cond0 = self._argcheck(*args) & (scale > 0) & (loc == loc)
    cond1 = (0 < q) & (q < 1)
    cond2 = cond0 & (q == 0)
    cond3 = cond0 & (q == 1)
    cond = cond0 & cond1
    output = valarray(shape(cond), value=self.badvalue)

    lower_bound = _a * scale + loc
    upper_bound = _b * scale + loc
    place(output, cond2, argsreduce(cond2, lower_bound)[0])
    place(output, cond3, argsreduce(cond3, upper_bound)[0])

    if np.any(cond):  # call only if at least 1 entry
        goodargs = argsreduce(cond, *((q,) + args + (scale, loc)))
        scale, loc, goodargs = goodargs[-2], goodargs[-1], goodargs[:-2]
        place(output, cond, self._ppf(*goodargs) * scale + loc)
    if output.ndim == 0:
        return output[()]
    return output