BUG: stats: distribution methods emit unnecessary warnings from Boost

Describe your issue
Several statistical distribution methods emit warnings stemming from Boost. This issue tracks the status of all of them.

[ ] beta.ppf as reported here; should be fixed by boostorg/math#827
[ ] ncf as reported in gh-17101, should be fixed by boostorg/math#846
[ ] nct - I'm not sure that this has been reported separately yet. Is it caused by the same sort of thing?
[ ] ncx2 - Ditto.

gh-17272 will silence the failures in SciPy's tests temporarily, but as many of these marks as possible should be removed when gh-17207 merges.

Original Post
Describe your issue.
macOS CI is failing due to an overflow. I am still trying to reproduce locally.
NumPy was updated to 1.21.3, could be this or another dependency.
https://github.com/scipy/scipy/runs/3960228039
Reproducing Code Example
# from scipy/stats/tests/test_distributions.py:2878: in test_issue_12796
import numpy as np
from scipy import stats
q = 0.999995
a = np.array([ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
b = np.array([99999, 99998, 99997, 99996, 99995, 99994, 99993, 99992, 99991, 99990, 99989, 99988, 99987, 99986, 99985, 99984, 99983, 99982, 99981])
stats.beta.ppf(q, a, b)

Error message
FAILED scipy/stats/tests/test_distributions.py::TestBeta::test_issue_12635 - ...
927
FAILED scipy/stats/tests/test_distributions.py::TestBeta::test_issue_12794 - ...
928
FAILED scipy/stats/tests/test_distributions.py::TestBeta::test_issue_12796 - ...
...
scipy/stats/_continuous_distns.py:626: in _ppf
916
    return _boost._beta_ppf(q, a, b)
917
E   RuntimeWarning: overflow encountered in _beta_ppf

SciPy/NumPy/Python version information
master on macOS/CI

This is getting annoying, I will try to silence these warnings before the PyData Global sprint tomorrow.

I cannot reproduce this on an arm64 machine with macOS 11.6 and XCode 12.5.1.
GitHub Actions uses macOS 11.6. Don't see an XCode version, but I assume it's up-to-date.
Azure has macOS 10.15.7, that's not failing.

The relevant tests and code seems to not have been touched after being introduced in the big Boost PR (gh-13328).

@mckib2 if you have any memory of that code and some idea of what this could be, that would be great to hear (not very high-prio, we can live with just silencing the failures for a while).

@mckib2 if you have any memory of that code and some idea of what this could be, that would be great to hear (not very high-prio, we can live with just silencing the failures for a while).

That warning was introduced by gh-14901, we've seen some other instances of strange behavior when building on different platforms, e.g. gh-14833.  The only levers I know to pull in cases like this are the Boost.Math policy defines in the setup.py.  Hard to experiment without local hardware though

Thanks for the details @mckib2!

That warning was introduced by gh-14901

That's this issue, want to edit your comment to point at the PR you meant?

Thanks for the details @mckib2!

That warning was introduced by gh-14901

That's this issue, want to edit your comment to point at the PR you meant?

Good catch -- edited

So this happened on Intel macOS in CI; I'm seeing them locally with a conda build on arm64 macOS, and gh-14722 sees them on arm64 macOS too (miniforge-from-Homebrew install). Looking at a fix or some skips for 1.7.3.

Looking this over again and am a little confused as to why a RuntimeWarning is being produced by an overflow.  gh-14833 set the Boost.Math policy to throw an OverflowError, so it's currently unclear to me why it's being treated as a runtime exception.  I'm just getting back from a trip and getting settled in, but I will find time this weekend to review this more closely.  beta seems to be the problem child in the Boost distributions...

I cannot reproduce this on an arm64 machine with macOS 11.6 and XCode 12.5.1.

I can however reproduce it after upgrade to macOS 12.0.1.
The PR description of https://github.com/numpy/numpy/pull/19926 explains the type of thing going on here.

We can check if this problem is going away when changing the default -O2 to -O0. That was the case for the reciprocal bug.

Nope, -O0 didn't matter. The full test suite on macOS arm64 is now down to 13 failures, all due to overflow warnings in beta and nbinom from Boost code:
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-beta-arg4] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-rdist-arg85] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-semicircular-arg89] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[beta-args4-ppf] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[beta-args4-isf] - RuntimeWarning: overflow encountered in _beta_isf
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[rdist-args86-ppf] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[rdist-args86-isf] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[semicircular-args90-ppf] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[semicircular-args90-isf] - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_discrete_basic.py::test_discrete_basic[nbinom-arg13-False] - RuntimeWarning: overflow encountered in _nbinom_ppf
FAILED scipy/stats/tests/test_discrete_basic.py::test_moments[nbinom-arg13] - RuntimeWarning: overflow encountered in _nbinom_ppf
FAILED scipy/stats/tests/test_distributions.py::TestFrozen::test_pickling - RuntimeWarning: overflow encountered in _beta_ppf
FAILED scipy/stats/tests/test_distributions.py::TestExpect::test_beta - RuntimeWarning: overflow encountered in _beta_ppf
================================ 13 failed, 35125 passed, 3080 skipped, 11454 deselected, 108 xfailed, 10 xpassed in 350.94s (0:05:50)

gh-15323 should fix the failures on arm64 macOS. Not 100% sure that it fixes everything on x86_64 for macOS 12, but at least CI is already passing there. So this fix should be enough for the 1.8.0 release. I think the issue should remain open for figuring out the root cause (but that is not urgent).

Running into this same issue with gh-15770, this time with PDF of the chi_squared_distribution.  Any C++ snippet I compile and run does not throw/alert about overflow exceptions and the correct answer is being returned.
For some reason Python raises an RuntimeWarning when the code-path using Boost's cylindrical Bessel function is chosen.
I can avoid this Python warning completely by always choosing the series approximation, but this bypasses the built-in heuristic to only choose that method when the non-centrality parameter is large (nc > 50) and I suspect this has performance implications, although I did not measure this.
I cannot find any documentation about when/why CPython raises a RuntimeWarning, but I am currently suspecting this is a Python quirk and not indicative of a real error.  For this reason, I think it's fine to ignore for now -- that's what I'm going to do in gh-15770 as well

This has a lot of incoming links so is clearly annoying, but not a blocker for 1.9.0 - bumping the milestone.

Looking this over again and am a little confused as to why a RuntimeWarning is being produced by an overflow. https://github.com/scipy/scipy/pull/14833 set the Boost.Math policy to throw an OverflowError, so it's currently unclear to me why it's being treated as a runtime exception. I'm just getting back from a trip and getting settled in, but I will find time this weekend to review this more closely. beta seems to be the problem child in the Boost distributions...

We understand these errors a little bit more after resolving gh-15101, so once I get an M1 mac reproducing this, I think we know the strategy to track this down in Boost.Math.

There are several tests failing on cp310-macosx_arm64.
=================================== FAILURES ===================================
_________________ test_stats_boost_ufunc[_beta_ppf-args1-0.5] __________________
scipy/stats/tests/test_boost_ufuncs.py:41: in test_stats_boost_ufunc
    value = func(*args)
E   RuntimeWarning: overflow encountered in _beta_ppf
        args       = [0.6875, 2.0, 3.0]
        expected   = 0.5
        func       = <ufunc '_beta_ppf'>
        rtol       = 3.814697265625e-06
        typ        = <class 'numpy.float32'>
        type_char  = 'f'
        type_chars = ['f', 'd', 'g']
        type_sigs  = ['fff->f', 'ddd->d', 'ggg->g']
______________________ test_cont_basic[500-200-ncf-arg74] ______________________
scipy/stats/tests/test_continuous_basic.py:162: in test_cont_basic
    check_cdf_ppf(distfn, arg, distname)
        arg        = (27, 27, 0.41578441799226107)
        distfn     = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        distname   = 'ncf'
        m          = 1.0966313767196902
        n_fit_samples = 200
        rng        = RandomState(MT19937) at 0x14A668E40
        rvs        = array([0.90888841, 0.87523216, 0.73228753, 1.33584017, 0.93548576,
       1.09504212, 1.15670442, 0.36786914, 0.791225...03, 1.73540023, 0.87035866, 0.73702581, 0.81477748,
       0.87362182, 1.58673099, 1.88455316, 0.61564337, 1.09912842])
        sn         = 500
        v          = 0.2013794025952613
scipy/stats/tests/test_continuous_basic.py:516: in check_cdf_ppf
    npt.assert_almost_equal(distfn.cdf(distfn.ppf(values, *arg), *arg),
        arg        = (27, 27, 0.41578441799226107)
        distfn     = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        msg        = 'ncf'
        values     = [0.001, 0.5, 0.999]
scipy/stats/_distn_infrastructure.py:2333: in ppf
    place(output, cond, self._ppf(*goodargs) * scale + loc)
        _a         = 0.0
        _b         = inf
        args       = (array(27), array(27), array(0.41578442))
        cond       = array([ True,  True,  True])
        cond0      = True
        cond1      = array([ True,  True,  True])
        cond2      = array([False, False, False])
        cond3      = array([False, False, False])
        goodargs   = [array([0.001, 0.5  , 0.999]), array([27, 27, 27]), array([27, 27, 27]), array([0.41578442, 0.41578442, 0.41578442])]
        kwds       = {}
        loc        = array([0, 0, 0])
        lower_bound = 0.0
        output     = array([nan, nan, nan])
        q          = array([0.001, 0.5  , 0.999])
        scale      = array([1, 1, 1])
        self       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        upper_bound = inf
scipy/stats/_continuous_distns.py:6604: in _ppf
    return _boost._ncf_ppf(q, dfn, dfd, nc)
E   RuntimeWarning: overflow encountered in _ncf_ppf
        dfd        = array([27, 27, 27])
        dfn        = array([27, 27, 27])
        nc         = array([0.41578442, 0.41578442, 0.41578442])
        q          = array([0.001, 0.5  , 0.999])
        self       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
______________________ test_cont_basic[500-200-nct-arg75] ______________________
scipy/stats/tests/test_continuous_basic.py:162: in test_cont_basic
    check_cdf_ppf(distfn, arg, distname)
        arg        = (14, 0.24045031331198066)
        distfn     = <scipy.stats._continuous_distns.nct_gen object at 0x1231046d0>
        distname   = 'nct'
        m          = 0.2543673273832776
        n_fit_samples = 200
        rng        = RandomState(MT19937) at 0x17F91B140
        rvs        = array([ 8.73534081e-01, -1.04204572e+00,  8.32185889e-01,  1.83689614e+00,
       -1.81244028e-01,  7.69549733e-01,  8...9293e+00,  8.20972491e-01, -7.63240067e-01,
        1.27150283e+00,  1.30239072e-01,  1.64179170e+00,  1.18497579e+00])
        sn         = 500
        v          = 1.1694163414603564
scipy/stats/tests/test_continuous_basic.py:516: in check_cdf_ppf
    npt.assert_almost_equal(distfn.cdf(distfn.ppf(values, *arg), *arg),
        arg        = (14, 0.24045031331198066)
        distfn     = <scipy.stats._continuous_distns.nct_gen object at 0x1231046d0>
        msg        = 'nct'
        values     = [0.001, 0.5, 0.999]
scipy/stats/_distn_infrastructure.py:2333: in ppf
    place(output, cond, self._ppf(*goodargs) * scale + loc)
        _a         = -inf
        _b         = inf
        args       = (array(14), array(0.24045031))
        cond       = array([ True,  True,  True])
        cond0      = True
        cond1      = array([ True,  True,  True])
        cond2      = array([False, False, False])
        cond3      = array([False, False, False])
        goodargs   = [array([0.001, 0.5  , 0.999]), array([14, 14, 14]), array([0.24045031, 0.24045031, 0.24045031])]
        kwds       = {}
        loc        = array([0, 0, 0])
        lower_bound = -inf
        output     = array([nan, nan, nan])
        q          = array([0.001, 0.5  , 0.999])
        scale      = array([1, 1, 1])
        self       = <scipy.stats._continuous_distns.nct_gen object at 0x1231046d0>
        upper_bound = inf
scipy/stats/_continuous_distns.py:6800: in _ppf
    return _boost._nct_ppf(q, df, nc)
E   RuntimeWarning: overflow encountered in _nct_ppf
        df         = array([14, 14, 14])
        nc         = array([0.24045031, 0.24045031, 0.24045031])
        q          = array([0.001, 0.5  , 0.999])
        self       = <scipy.stats._continuous_distns.nct_gen object at 0x1231046d0>
_____________________ test_cont_basic[500-200-ncx2-arg76] ______________________
scipy/stats/tests/test_continuous_basic.py:162: in test_cont_basic
    check_cdf_ppf(distfn, arg, distname)
        arg        = (21, 1.0560465975116415)
        distfn     = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        distname   = 'ncx2'
        m          = 22.056046597511642
        n_fit_samples = 200
        rng        = RandomState(MT19937) at 0x17F91B240
        rvs        = array([24.18228087, 28.6893038 , 24.17456852, 14.84747842, 18.70623905,
       16.16763421,  9.29241683, 14.62038405, ...716689, 25.11697161, 27.96343751, 35.36238425,
       17.36403196, 25.81839268, 23.01798747, 22.53534591, 20.49078605])
        sn         = 500
        v          = 46.22418639004657
scipy/stats/tests/test_continuous_basic.py:516: in check_cdf_ppf
    npt.assert_almost_equal(distfn.cdf(distfn.ppf(values, *arg), *arg),
        arg        = (21, 1.0560465975116415)
        distfn     = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        msg        = 'ncx2'
        values     = [0.001, 0.5, 0.999]
scipy/stats/_distn_infrastructure.py:2160: in cdf
    place(output, cond, self._cdf(*goodargs))
        _a         = 0.0
        _b         = inf
        args       = (array(21), array(1.0560466))
        cond       = array([ True,  True,  True])
        cond0      = True
        cond1      = array([ True,  True,  True])
        cond2      = array([False, False, False])
        dtyp       = dtype('float64')
        goodargs   = [array([ 6.77671634, 21.36270226, 49.09451392]), array([21, 21, 21]), array([1.0560466, 1.0560466, 1.0560466])]
        kwds       = {}
        loc        = array(0)
        output     = array([0., 0., 0.])
        scale      = array(1)
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array([ 6.77671634, 21.36270226, 49.09451392])
scipy/stats/_continuous_distns.py:6502: in _cdf
    return _lazywhere(cond, (x, df, nc), f=_boost._ncx2_cdf,
        cond       = array([ True,  True,  True])
        df         = array([21, 21, 21])
        nc         = array([1.0560466, 1.0560466, 1.0560466])
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array([ 6.77671634, 21.36270226, 49.09451392])
scipy/_lib/_util.py:69: in _lazywhere
    np.place(out, cond, f(*temp))
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        args       = [array([ True,  True,  True]), array([ 6.77671634, 21.36270226, 49.09451392]), array([21, 21, 21]), array([1.0560466, 1.0560466, 1.0560466])]
        arrays     = [array([ 6.77671634, 21.36270226, 49.09451392]), array([21, 21, 21]), array([1.0560466, 1.0560466, 1.0560466])]
        cond       = array([ True,  True,  True])
        f          = <ufunc '_ncx2_cdf'>
        f2         = <function ncx2_gen._cdf.<locals>.<lambda> at 0x17f9825f0>
        fillvalue  = nan
        out        = array([nan, nan, nan])
        tcode      = 'd'
        temp       = (array([ 6.77671634, 21.36270226, 49.09451392]), array([21, 21, 21]), array([1.0560466, 1.0560466, 1.0560466]))
___________________ test_methods_with_lists[ncf-args75-ppf] ____________________
scipy/stats/tests/test_continuous_basic.py:714: in test_methods_with_lists
    result = f(x, *shape2, loc=loc, scale=scale)
        args       = (27, 27, 0.41578441799226107)
        dist       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        distname   = 'ncf'
        f          = <bound method rv_continuous.ppf of <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>>
        loc        = [0, 0.1]
        method     = 'ppf'
        scale      = [1, 1.01]
        shape2     = [[27, 27], [27, 27], [0.41578441799226107, 0.41578441799226107]]
        x          = [0.1, 0.2]
scipy/stats/_distn_infrastructure.py:2333: in ppf
    place(output, cond, self._ppf(*goodargs) * scale + loc)
        _a         = 0.0
        _b         = inf
        args       = (array([27, 27]), array([27, 27]), array([0.41578442, 0.41578442]))
        cond       = array([ True,  True])
        cond0      = array([ True,  True])
        cond1      = array([ True,  True])
        cond2      = array([False, False])
        cond3      = array([False, False])
        goodargs   = [array([0.1, 0.2]), array([27, 27]), array([27, 27]), array([0.41578442, 0.41578442])]
        kwds       = {'loc': [0, 0.1], 'scale': [1, 1.01]}
        loc        = array([0. , 0.1])
        lower_bound = array([0. , 0.1])
        output     = array([nan, nan])
        q          = array([0.1, 0.2])
        scale      = array([1.  , 1.01])
        self       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        upper_bound = array([inf, inf])
scipy/stats/_continuous_distns.py:6604: in _ppf
    return _boost._ncf_ppf(q, dfn, dfd, nc)
E   RuntimeWarning: overflow encountered in _ncf_ppf
        dfd        = array([27, 27])
        dfn        = array([27, 27])
        nc         = array([0.41578442, 0.41578442])
        q          = array([0.1, 0.2])
        self       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
___________________ test_methods_with_lists[ncf-args75-isf] ____________________
scipy/stats/tests/test_continuous_basic.py:714: in test_methods_with_lists
    result = f(x, *shape2, loc=loc, scale=scale)
        args       = (27, 27, 0.41578441799226107)
        dist       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        distname   = 'ncf'
        f          = <bound method rv_continuous.isf of <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>>
        loc        = [0, 0.1]
        method     = 'isf'
        scale      = [1, 1.01]
        shape2     = [[27, 27], [27, 27], [0.41578441799226107, 0.41578441799226107]]
        x          = [0.1, 0.2]
scipy/stats/_distn_infrastructure.py:2378: in isf
    place(output, cond, self._isf(*goodargs) * scale + loc)
        _a         = 0.0
        _b         = inf
        args       = (array([27, 27]), array([27, 27]), array([0.41578442, 0.41578442]))
        cond       = array([ True,  True])
        cond0      = array([ True,  True])
        cond1      = array([ True,  True])
        cond2      = array([False, False])
        cond3      = array([False, False])
        goodargs   = [array([0.1, 0.2]), array([27, 27]), array([27, 27]), array([0.41578442, 0.41578442])]
        kwds       = {'loc': [0, 0.1], 'scale': [1, 1.01]}
        loc        = array([0. , 0.1])
        lower_bound = array([0. , 0.1])
        output     = array([nan, nan])
        q          = array([0.1, 0.2])
        scale      = array([1.  , 1.01])
        self       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        upper_bound = array([inf, inf])
scipy/stats/_continuous_distns.py:6610: in _isf
    return _boost._ncf_isf(x, dfn, dfd, nc)
E   RuntimeWarning: overflow encountered in _ncf_isf
        dfd        = array([27, 27])
        dfn        = array([27, 27])
        nc         = array([0.41578442, 0.41578442])
        self       = <scipy.stats._continuous_distns.ncf_gen object at 0x123106c20>
        x          = array([0.1, 0.2])
___________________ test_discrete_basic[skellam-arg17-True] ____________________
scipy/stats/tests/test_discrete_basic.py:47: in test_discrete_basic
    check_cdf_ppf(distfn, arg, supp, distname + ' cdf_ppf')
        arg        = (15, 8)
        distfn     = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        distname   = 'skellam'
        first_case = True
        m          = 7.0
        rvs        = array([ 4,  6, 10, ...,  5, 14, 15])
        supp       = array([-10,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,   3,   4,
         5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,
        18,  19,  20,  21,  22,  25])
        v          = 23.0
scipy/stats/tests/test_discrete_basic.py:185: in check_cdf_ppf
    npt.assert_array_equal(distfn.ppf(distfn.cdf(supp, *arg), *arg),
        arg        = (15, 8)
        distfn     = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        msg        = 'skellam cdf_ppf'
        supp       = array([-10,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,   3,   4,
         5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,
        18,  19,  20,  21,  22,  25])
scipy/stats/_distn_infrastructure.py:3433: in cdf
    place(output, cond, np.clip(self._cdf(*goodargs), 0, 1))
        _          = 1
        _a         = -inf
        _b         = inf
        args       = (array(15), array(8))
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,... True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True])
        cond0      = True
        cond1      = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,... True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True])
        cond2      = array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False,...False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False])
        cond3      = array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False,...False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False])
        goodargs   = [array([-10,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,   3,   4,
         5,   6,   7,   8,   9,  10,  11,  12..., 15]), array([8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
       8, 8, 8, 8, 8, 8, 8, 8, 8, 8])]
        k          = array([-10,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,   3,   4,
         5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,
        18,  19,  20,  21,  22,  25])
        kwds       = {}
        loc        = array(0)
        output     = array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
scipy/stats/_discrete_distns.py:1437: in _cdf
    _boost._ncx2_cdf(2*mu2, -2*x, 2*mu1),
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        mu1        = array([15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
       15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15])
        mu2        = array([8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
       8, 8, 8, 8, 8, 8, 8, 8, 8, 8])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        x          = array([-10.,  -7.,  -6.,  -5.,  -4.,  -3.,  -2.,  -1.,   0.,   1.,   2.,
         3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.,  12.,  13.,
        14.,  15.,  16.,  17.,  18.,  19.,  20.,  21.,  22.,  25.])
_________________________ test_moments[skellam-arg17] __________________________
scipy/stats/tests/test_discrete_basic.py:89: in test_moments
    check_normalization(distfn, arg, distname)
        arg        = (15, 8)
        distfn     = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        distname   = 'skellam'
        k          = 0.043478260869565216
        m          = 7.0
        s          = 0.06346090862606624
        v          = 23.0
scipy/stats/tests/common_tests.py:32: in check_normalization
    normalization_expect = distfn.expect(lambda x: 1, args=args)
        args       = (15, 8)
        atol       = 1e-07
        distfn     = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        distname   = 'skellam'
        norm_moment = 1.0
        rtol       = 1e-07
scipy/stats/_distn_infrastructure.py:3739: in expect
    x0 = self.ppf(0.5, *args)
        _a         = -inf
        _b         = inf
        args       = (15, 8)
        chunksize  = 32
        conditional = False
        fun        = <function rv_discrete.expect.<locals>.fun at 0x2840aaa70>
        func       = <function check_normalization.<locals>.<lambda> at 0x2840aa8c0>
        invfac     = 1.0
        lb         = -inf
        loc        = 0
        maxcount   = 1000
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        tolerance  = 1e-10
        ub         = inf
scipy/stats/_distn_infrastructure.py:3592: in ppf
    place(output, cond, self._ppf(*goodargs) + loc)
        _          = 1
        _a         = -inf
        _b         = inf
        args       = (array(15), array(8))
        cond       = True
        cond0      = True
        cond1      = True
        cond2      = False
        goodargs   = [array([0.5]), array([15]), array([8])]
        kwds       = {}
        loc        = array([0])
        output     = array(nan)
        q          = array(0.5)
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
scipy/stats/_distn_infrastructure.py:989: in _ppf
    return self._ppfvec(q, *args)
        args       = (array([15]), array([8]))
        q          = array([0.5])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
/Users/admin/scipy-dev/lib/python3.10/site-packages/numpy/lib/function_base.py:2328: in __call__
    return self._vectorize_call(func=func, args=vargs)
        args       = (<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>, array([0.5]), array([15]), array([8]))
        excluded   = set()
        func       = <function _drv2_ppfsingle at 0x126867c70>
        kwargs     = {}
        self       = <numpy.vectorize object at 0x1269cd960>
        vargs      = (<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>, array([0.5]), array([15]), array([8]))
/Users/admin/scipy-dev/lib/python3.10/site-packages/numpy/lib/function_base.py:2411: in _vectorize_call
    outputs = ufunc(*inputs)
        args       = (<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>, array([0.5]), array([15]), array([8]))
        func       = <function _drv2_ppfsingle at 0x126867c70>
        inputs     = [array(<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>,
      dtype=object), array([0.5], dtype=object), array([15], dtype=object), array([8], dtype=object)]
        otypes     = 'd'
        self       = <numpy.vectorize object at 0x1269cd960>
        ufunc      = <ufunc '_drv2_ppfsingle (vectorized)'>
scipy/stats/_distn_infrastructure.py:2943: in _drv2_ppfsingle
    qb = self._cdf(b, *args)
        _a         = -inf
        _b         = inf
        a          = -inf
        args       = (15, 8)
        b          = 50
        q          = 0.5
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
scipy/stats/_discrete_distns.py:1438: in _cdf
    1 - _boost._ncx2_cdf(2*mu1, 2*(x+1), 2*mu2))
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        mu1        = 15
        mu2        = 8
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        x          = 50.0
_____________________________ test_skellam_gh11474 _____________________________
scipy/stats/tests/test_discrete_distns.py:238: in test_skellam_gh11474
    cdf = skellam.cdf(0, mu, mu)
        mu         = [1, 10, 100, 1000, 5000, 5050, ...]
scipy/stats/_distn_infrastructure.py:3433: in cdf
    place(output, cond, np.clip(self._cdf(*goodargs), 0, 1))
        _          = 1
        _a         = -inf
        _b         = inf
        args       = (array([   1,   10,  100, 1000, 5000, 5050, 5100, 5250, 6000]), array([   1,   10,  100, 1000, 5000, 5050, 5100, 5250, 6000]))
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True])
        cond0      = array([ True,  True,  True,  True,  True,  True,  True,  True,  True])
        cond1      = True
        cond2      = False
        cond3      = False
        goodargs   = [array([0, 0, 0, 0, 0, 0, 0, 0, 0]), array([   1,   10,  100, 1000, 5000, 5050, 5100, 5250, 6000]), array([   1,   10,  100, 1000, 5000, 5050, 5100, 5250, 6000])]
        k          = array(0)
        kwds       = {}
        loc        = array(0)
        output     = array([0., 0., 0., 0., 0., 0., 0., 0., 0.])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
scipy/stats/_discrete_distns.py:1438: in _cdf
    1 - _boost._ncx2_cdf(2*mu1, 2*(x+1), 2*mu2))
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        mu1        = array([   1,   10,  100, 1000, 5000, 5050, 5100, 5250, 6000])
        mu2        = array([   1,   10,  100, 1000, 5000, 5050, 5100, 5250, 6000])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        x          = array([0., 0., 0., 0., 0., 0., 0., 0., 0.])
_____________________________ TestSkellam.test_cdf _____________________________
scipy/stats/tests/test_distributions.py:3249: in test_cdf
    assert_almost_equal(stats.skellam.cdf(k, mu1, mu2), skcdfR, decimal=5)
        k          = array([-10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,
         3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14])
        mu1        = 10
        mu2        = 5
        self       = <scipy.stats.tests.test_distributions.TestSkellam object at 0x14aba4520>
        skcdfR     = array([6.40614754e-05, 1.78109860e-04, 4.67906118e-04, 1.15967690e-03,
       2.70774851e-03, 5.94897601e-03, 1.228634...799e-01, 8.77852572e-01,
       9.21121265e-01, 9.51369425e-01, 9.71360859e-01, 9.83877736e-01,
       9.91316724e-01])
scipy/stats/_distn_infrastructure.py:3433: in cdf
    place(output, cond, np.clip(self._cdf(*goodargs), 0, 1))
        _          = 1
        _a         = -inf
        _b         = inf
        args       = (array(10), array(5))
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True])
        cond0      = True
        cond1      = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True])
        cond2      = array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False])
        cond3      = array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False])
        goodargs   = [array([-10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,
         3,   4,   5,   6,   7,   8,   9,  10...0, 10, 10, 10, 10, 10, 10]), array([5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
       5, 5, 5])]
        k          = array([-10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,
         3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14])
        kwds       = {}
        loc        = array(0)
        output     = array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0.])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
scipy/stats/_discrete_distns.py:1437: in _cdf
    _boost._ncx2_cdf(2*mu2, -2*x, 2*mu1),
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        mu1        = array([10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
       10, 10, 10, 10, 10, 10, 10, 10])
        mu2        = array([5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
       5, 5, 5])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        x          = array([-10.,  -9.,  -8.,  -7.,  -6.,  -5.,  -4.,  -3.,  -2.,  -1.,   0.,
         1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.,
        12.,  13.,  14.])
___________________________ TestExpect.test_skellam ____________________________
scipy/stats/tests/test_distributions.py:4833: in test_skellam
    m1 = stats.skellam.expect(lambda x: x, args=(p1, p2))
        p1         = 18
        p2         = 22
        self       = <scipy.stats.tests.test_distributions.TestExpect object at 0x149f402b0>
scipy/stats/_distn_infrastructure.py:3739: in expect
    x0 = self.ppf(0.5, *args)
        _a         = -inf
        _b         = inf
        args       = (18, 22)
        chunksize  = 32
        conditional = False
        fun        = <function rv_discrete.expect.<locals>.fun at 0x2852a5120>
        func       = <function TestExpect.test_skellam.<locals>.<lambda> at 0x2852a4ca0>
        invfac     = 1.0
        lb         = -inf
        loc        = 0
        maxcount   = 1000
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        tolerance  = 1e-10
        ub         = inf
scipy/stats/_distn_infrastructure.py:3592: in ppf
    place(output, cond, self._ppf(*goodargs) + loc)
        _          = 1
        _a         = -inf
        _b         = inf
        args       = (array(18), array(22))
        cond       = True
        cond0      = True
        cond1      = True
        cond2      = False
        goodargs   = [array([0.5]), array([18]), array([22])]
        kwds       = {}
        loc        = array([0])
        output     = array(nan)
        q          = array(0.5)
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
scipy/stats/_distn_infrastructure.py:989: in _ppf
    return self._ppfvec(q, *args)
        args       = (array([18]), array([22]))
        q          = array([0.5])
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
/Users/admin/scipy-dev/lib/python3.10/site-packages/numpy/lib/function_base.py:2328: in __call__
    return self._vectorize_call(func=func, args=vargs)
        args       = (<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>, array([0.5]), array([18]), array([22]))
        excluded   = set()
        func       = <function _drv2_ppfsingle at 0x126867c70>
        kwargs     = {}
        self       = <numpy.vectorize object at 0x1269cd960>
        vargs      = (<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>, array([0.5]), array([18]), array([22]))
/Users/admin/scipy-dev/lib/python3.10/site-packages/numpy/lib/function_base.py:2411: in _vectorize_call
    outputs = ufunc(*inputs)
        args       = (<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>, array([0.5]), array([18]), array([22]))
        func       = <function _drv2_ppfsingle at 0x126867c70>
        inputs     = [array(<scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>,
      dtype=object), array([0.5], dtype=object), array([18], dtype=object), array([22], dtype=object)]
        otypes     = 'd'
        self       = <numpy.vectorize object at 0x1269cd960>
        ufunc      = <ufunc '_drv2_ppfsingle (vectorized)'>
scipy/stats/_distn_infrastructure.py:2943: in _drv2_ppfsingle
    qb = self._cdf(b, *args)
        _a         = -inf
        _b         = inf
        a          = -inf
        args       = (18, 22)
        b          = 50
        q          = 0.5
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
scipy/stats/_discrete_distns.py:1438: in _cdf
    1 - _boost._ncx2_cdf(2*mu1, 2*(x+1), 2*mu2))
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        mu1        = 18
        mu2        = 22
        self       = <scipy.stats._discrete_distns.skellam_gen object at 0x1269cde70>
        x          = 50.0
__________________________ test_ncx2_tails_ticket_955 __________________________
scipy/stats/tests/test_distributions.py:6292: in test_ncx2_tails_ticket_955
    a = stats.ncx2.cdf(np.arange(20, 25, 0.2), 2, 1.07458615e+02)
scipy/stats/_distn_infrastructure.py:2160: in cdf
    place(output, cond, self._cdf(*goodargs))
        _a         = 0.0
        _b         = inf
        args       = (array(2), array(107.458615))
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True])
        cond0      = True
        cond1      = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True])
        cond2      = array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False])
        dtyp       = dtype('float64')
        goodargs   = [array([20. , 20.2, 20.4, 20.6, 20.8, 21. , 21.2, 21.4, 21.6, 21.8, 22. ,
       22.2, 22.4, 22.6, 22.8, 23. , 23.2, 2...5, 107.458615, 107.458615, 107.458615, 107.458615,
       107.458615, 107.458615, 107.458615, 107.458615, 107.458615])]
        kwds       = {}
        loc        = array(0)
        output     = array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0.])
        scale      = array(1)
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array([20. , 20.2, 20.4, 20.6, 20.8, 21. , 21.2, 21.4, 21.6, 21.8, 22. ,
       22.2, 22.4, 22.6, 22.8, 23. , 23.2, 23.4, 23.6, 23.8, 24. , 24.2,
       24.4, 24.6, 24.8])
scipy/stats/_continuous_distns.py:6502: in _cdf
    return _lazywhere(cond, (x, df, nc), f=_boost._ncx2_cdf,
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True])
        df         = array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2])
        nc         = array([107.458615, 107.458615, 107.458615, 107.458615, 107.458615,
       107.458615, 107.458615, 107.458615, 107.4586...15, 107.458615, 107.458615, 107.458615, 107.458615,
       107.458615, 107.458615, 107.458615, 107.458615, 107.458615])
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array([20. , 20.2, 20.4, 20.6, 20.8, 21. , 21.2, 21.4, 21.6, 21.8, 22. ,
       22.2, 22.4, 22.6, 22.8, 23. , 23.2, 23.4, 23.6, 23.8, 24. , 24.2,
       24.4, 24.6, 24.8])
scipy/_lib/_util.py:69: in _lazywhere
    np.place(out, cond, f(*temp))
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        args       = [array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True...5, 107.458615, 107.458615, 107.458615, 107.458615,
       107.458615, 107.458615, 107.458615, 107.458615, 107.458615])]
        arrays     = [array([20. , 20.2, 20.4, 20.6, 20.8, 21. , 21.2, 21.4, 21.6, 21.8, 22. ,
       22.2, 22.4, 22.6, 22.8, 23. , 23.2, 2...5, 107.458615, 107.458615, 107.458615, 107.458615,
       107.458615, 107.458615, 107.458615, 107.458615, 107.458615])]
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True])
        f          = <ufunc '_ncx2_cdf'>
        f2         = <function ncx2_gen._cdf.<locals>.<lambda> at 0x2852a6f80>
        fillvalue  = nan
        out        = array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
       nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])
        tcode      = 'd'
        temp       = (array([20. , 20.2, 20.4, 20.6, 20.8, 21. , 21.2, 21.4, 21.6, 21.8, 22. ,
       22.2, 22.4, 22.6, 22.8, 23. , 23.2, 2...5, 107.458615, 107.458615, 107.458615, 107.458615,
       107.458615, 107.458615, 107.458615, 107.458615, 107.458615]))
______________________________ test_ncx2_gh12731 _______________________________
scipy/stats/tests/test_distributions.py:6345: in test_ncx2_gh12731
    assert_equal(stats.ncx2.cdf(1e4, df=1, nc=nc), 0)
        nc         = array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>])
scipy/stats/_distn_infrastructure.py:2160: in cdf
    place(output, cond, self._cdf(*goodargs))
        _a         = 0.0
        _b         = inf
        args       = (array(1), array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>]))
        cond       = array([ True,  True,  True,  True,  True])
        cond0      = array([ True,  True,  True,  True,  True])
        cond1      = True
        cond2      = array([False, False, False, False, False])
        dtyp       = dtype('float64')
        goodargs   = [array([10000., 10000., 10000., 10000., 10000.]), array([1, 1, 1, 1, 1]), array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>])]
        kwds       = {'df': 1, 'nc': array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>])}
        loc        = array(0)
        output     = array([0., 0., 0., 0., 0.])
        scale      = array(1)
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array(10000.)
scipy/stats/_continuous_distns.py:6502: in _cdf
    return _lazywhere(cond, (x, df, nc), f=_boost._ncx2_cdf,
        cond       = array([ True,  True,  True,  True,  True])
        df         = array([1, 1, 1, 1, 1])
        nc         = array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>])
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array([10000., 10000., 10000., 10000., 10000.])
scipy/_lib/_util.py:69: in _lazywhere
    np.place(out, cond, f(*temp))
E   RuntimeWarning: overflow encountered in _ncx2_cdf
        args       = [array([ True,  True,  True,  True,  True]), array([10000., 10000., 10000., 10000., 10000.]), array([1, 1, 1, 1, 1]), array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>])]
        arrays     = [array([10000., 10000., 10000., 10000., 10000.]), array([1, 1, 1, 1, 1]), array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>])]
        cond       = array([ True,  True,  True,  True,  True])
        f          = <ufunc '_ncx2_cdf'>
        f2         = <function ncx2_gen._cdf.<locals>.<lambda> at 0x2852a6830>
        fillvalue  = nan
        out        = array([nan, nan, nan, nan, nan])
        tcode      = 'd'
        temp       = (array([10000., 10000., 10000., 10000., 10000.]), array([1, 1, 1, 1, 1]), array([    100000,    1000000,   10000000,  100000000,<PHONE_NUMBER>]))
_______________________________ test_ncx2_gh8665 _______________________________
scipy/stats/tests/test_distributions.py:6357: in test_ncx2_gh8665
    sf = stats.ncx2.sf(x, df=nu, nc=lam)
        lam        =<PHONE_NUMBER>6556196
        nu         = 20
        x          = array([4.99515382e+00, 1.07617327e+01, 2.31854502e+01, 4.99515382e+01,
       1.07617327e+02, 2.31854502e+02, 4.99515382e+02, 1.07617327e+03,
       2.31854502e+03, 4.99515382e+03, 1.07617327e+04, 2.31854502e+04,
       4.99515382e+04])
scipy/stats/_distn_infrastructure.py:2243: in sf
    place(output, cond, self._sf(*goodargs))
        _a         = 0.0
        _b         = inf
        args       = (array(20), array(499.51538167))
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True])
        cond0      = True
        cond1      = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True])
        cond2      = array([False, False, False, False, False, False, False, False, False,
       False, False, False, False])
        dtyp       = dtype('float64')
        goodargs   = [array([4.99515382e+00, 1.07617327e+01, 2.31854502e+01, 4.99515382e+01,
       1.07617327e+02, 2.31854502e+02, 4.99515...8167,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7])]
        kwds       = {'df': 20, 'nc':<PHONE_NUMBER>6556196}
        loc        = array(0)
        output     = array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
        scale      = array(1)
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array([4.99515382e+00, 1.07617327e+01, 2.31854502e+01, 4.99515382e+01,
       1.07617327e+02, 2.31854502e+02, 4.99515382e+02, 1.07617327e+03,
       2.31854502e+03, 4.99515382e+03, 1.07617327e+04, 2.31854502e+04,
       4.99515382e+04])
scipy/stats/_continuous_distns.py:6515: in _sf
    return _lazywhere(cond, (x, df, nc), f=_boost._ncx2_sf,
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True])
        df         = array([20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20])
        nc         = array([499.51538167,<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7])
        self       = <scipy.stats._continuous_distns.ncx2_gen object at 0x123168490>
        x          = array([4.99515382e+00, 1.07617327e+01, 2.31854502e+01, 4.99515382e+01,
       1.07617327e+02, 2.31854502e+02, 4.99515382e+02, 1.07617327e+03,
       2.31854502e+03, 4.99515382e+03, 1.07617327e+04, 2.31854502e+04,
       4.99515382e+04])
scipy/_lib/_util.py:69: in _lazywhere
    np.place(out, cond, f(*temp))
E   RuntimeWarning: overflow encountered in _ncx2_sf
        args       = [array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True]), array([4.9...8167,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7])]
        arrays     = [array([4.99515382e+00, 1.07617327e+01, 2.31854502e+01, 4.99515382e+01,
       1.07617327e+02, 2.31854502e+02, 4.99515...8167,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7])]
        cond       = array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True])
        f          = <ufunc '_ncx2_sf'>
        f2         = <function ncx2_gen._sf.<locals>.<lambda> at 0x2852a7be0>
        fillvalue  = nan
        out        = array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])
        tcode      = 'd'
        temp       = (array([4.99515382e+00, 1.07617327e+01, 2.31854502e+01, 4.99515382e+01,
       1.07617327e+02, 2.31854502e+02, 4.99515...8167,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,<PHONE_NUMBER>7,
<PHONE_NUMBER>7]))
=========================== short test summary info ============================
FAILED scipy/stats/tests/test_boost_ufuncs.py::test_stats_boost_ufunc[_beta_ppf-args1-0.5]
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ncf-arg74]
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-nct-arg75]
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ncx2-arg76]
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[ncf-args75-ppf]
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[ncf-args75-isf]
FAILED scipy/stats/tests/test_discrete_basic.py::test_discrete_basic[skellam-arg17-True]
FAILED scipy/stats/tests/test_discrete_basic.py::test_moments[skellam-arg17]
FAILED scipy/stats/tests/test_discrete_distns.py::test_skellam_gh11474 - Runt...
FAILED scipy/stats/tests/test_distributions.py::TestSkellam::test_cdf - Runti...
FAILED scipy/stats/tests/test_distributions.py::TestExpect::test_skellam - Ru...
FAILED scipy/stats/tests/test_distributions.py::test_ncx2_tails_ticket_955 - ...
FAILED scipy/stats/tests/test_distributions.py::test_ncx2_gh12731 - RuntimeWa...
FAILED scipy/stats/tests/test_distributions.py::test_ncx2_gh8665 - RuntimeWar...

Thee test fails are observed in this CI run. They appear to be related to this issue.

It does look related.  Upstream fix in the pipeline, we'll need to pull into boost-headers-only

@mckib2 patch has been merged into Boost.Math. Let me know if there's anything else that needs assistance.

Just thought we'd track the status of all the similar warnings here. Currently, on the macos_arm64 tests, we still see the following warnings:
FAILED scipy/stats/tests/test_boost_ufuncs.py::test_stats_boost_ufunc[_beta_ppf-args1-0.5]
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ncf-arg74]
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-nct-arg75]
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ncx2-arg76]
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[ncf-args75-ppf]
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[ncf-args75-isf]
FAILED scipy/stats/tests/test_discrete_basic.py::test_discrete_basic[skellam-arg17-True]
FAILED scipy/stats/tests/test_discrete_basic.py::test_moments[skellam-arg17]
FAILED scipy/stats/tests/test_discrete_distns.py::test_skellam_gh11474 - Runt...
FAILED scipy/stats/tests/test_distributions.py::TestSkellam::test_cdf - Runti...
FAILED scipy/stats/tests/test_distributions.py::TestExpect::test_skellam - Ru...
FAILED scipy/stats/tests/test_distributions.py::test_ncx2_tails_ticket_955 - ...
FAILED scipy/stats/tests/test_distributions.py::test_ncx2_gh12731 - RuntimeWa...
FAILED scipy/stats/tests/test_distributions.py::test_ncx2_gh8665 - RuntimeWar..

beta.ppf
ncf
nct
ncx2

@mdhaber did https://github.com/boostorg/math/pull/827 not solve the original issue? Are any of these other failures propagating up from boost code? I have an M1 machine I can test on.

I believe that PR to Boost will resolve this issue, but we haven't updated the commit of the Boost submodule in SciPy main yet, so it's we still see these failures in SciPy main right now. We'll close this issue when they're all passing here. Thanks for your help @mborland!

@mborland actually can you try running scipy/stats/tests/test_continuous_basic.py with --mode full and see if you get any failures in nct or ncx2?

@mdhaber Do you know how to specify the architecture when building the scipy environment? I am getting the following error:
python dev.py build
💻  ninja -C /Users/mborland/Documents/scipy/build
ninja: Entering directory `/Users/mborland/Documents/scipy/build'
[1/1293] Linking target scipy/linalg/_fblas.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[2/1293] Linking target scipy/special/_test_round.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[4/1293] Generating scipy/generate-version with a custom command
fatal: bad revision '^v1.8.0'
[6/1293] Linking target scipy/linalg/_flapack.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[8/1293] Linking target scipy/special/cython_special.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[40/1293] Linking target scipy/linalg/_interpolative.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[41/1293] Linking target scipy/_lib/_uarray/_uarray.cpython-310-darwin.so
FAILED: scipy/_lib/_uarray/_uarray.cpython-310-darwin.so
x86_64-apple-darwin13.4.0-clang++  -o scipy/_lib/_uarray/_uarray.cpython-310-darwin.so scipy/_lib/_uarray/_uarray.cpython-310-darwin.so.p/_uarray_dispatch.cxx.o scipy/_lib/_uarray/_uarray.cpython-310-darwin.so.p/vectorcall.cxx.o -L/Users/mborland/opt/anaconda3/envs/scipy-dev/lib -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,dynamic_lookup -bundle -Wl,-undefined,dynamic_lookup -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/Users/mborland/opt/anaconda3/envs/scipy-dev/lib -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 /Users/mborland/opt/anaconda3/envs/scipy-dev/include -D_FORTIFY_SOURCE=2 /Users/mborland/opt/anaconda3/envs/scipy-dev/include
ld: warning: -pie being ignored. It is only used when linking a main executable
ld: can't map file, errno=22 file '/Users/mborland/opt/anaconda3/envs/scipy-dev/include' for architecture x86_64
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
[42/1293] Linking target scipy/special/_ufuncs_cxx.cpython-310-darwin.so
FAILED: scipy/special/_ufuncs_cxx.cpython-310-darwin.so
x86_64-apple-darwin13.4.0-clang++  -o scipy/special/_ufuncs_cxx.cpython-310-darwin.so scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/meson-generated__ufuncs_cxx.cpp.o scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/_faddeeva.cxx.o scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/_wright.cxx.o scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/ellint_carlson_wrap.cxx.o scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/Faddeeva.cc.o scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/sf_error.cc.o scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/wright.cc.o -L/Users/mborland/opt/anaconda3/envs/scipy-dev/lib -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,dynamic_lookup -bundle -Wl,-undefined,dynamic_lookup -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/Users/mborland/opt/anaconda3/envs/scipy-dev/lib -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 /Users/mborland/opt/anaconda3/envs/scipy-dev/include -D_FORTIFY_SOURCE=2 /Users/mborland/opt/anaconda3/envs/scipy-dev/include
ld: warning: -pie being ignored. It is only used when linking a main executable
ld: can't map file, errno=22 file '/Users/mborland/opt/anaconda3/envs/scipy-dev/include' for architecture x86_64
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
[49/1293] Compiling C object scipy/linalg/_solve_toeplitz.cpython-310-darwin.so.p/meson-generated__solve_toeplitz.c.o
In file included from scipy/linalg/_solve_toeplitz.cpython-310-darwin.so.p/_solve_toeplitz.c:746:
In file included from /Users/mborland/opt/anaconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/arrayobject.h:5:
In file included from /Users/mborland/opt/anaconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/ndarrayobject.h:12:
In file included from /Users/mborland/opt/anaconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/ndarraytypes.h:1948:
/Users/mborland/opt/anaconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with "          "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it with " \
 ^
1 warning generated.
[52/1293] Generating 'scipy/linalg/cython_lapack.cpython-310-darwin.so.p/cython_lapack.c'.
ninja: build stopped: subcommand failed.
Build failed!

Looks like it is trying to compile x86_64 instead of ARM

Hmm no I have not looked into that. Maybe @andyfaff knows? (how to specify the architecture when building SciPy)

Assuming that you are on an M1 macOS running at least Monterey.

you can find out what architecture you're running in terminal by typing arch. Mine returns arm64.
you can find out the architecture of the Python interpreter you're using by typing  lipo -info /path/to/python. Mine returns Non-fat file: /Users/andrew/miniconda3/envs/dev3/bin/python is architecture: arm64.
you can force Python to start as arm64 by typing arch -arm64 python.
I don't use compilers installed via conda, I use Apple clang: xcode-select --install. Once you've installed that you can check what clang you're going to use:

(base) 192-168-1-113:refnx andrew$ clang --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: arm64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

I install a gfortran from https://github.com/fxcoudert/gfortran-for-macOS/releases

I then download and build OpenBLAS from source. This may require other packages, I'm not sure.

I then setup a miniconda environment with the correct Python version and build as normal.

I'm not sure I follow the build suggestions from the scipy dev pages.

As of 4e114c8da97412ebaefbc9c61e1552a136f04169 I get the following test fails:
$ python dev.py test -t scipy/stats/tests/test_continuous_basic.py --mode full
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ncf-arg74] - RuntimeWarning: overflow encountered in _...
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-nct-arg75] - RuntimeWarning: overflow encountered in _...
FAILED scipy/stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ncx2-arg76] - RuntimeWarning: overflow encountered in ...
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[ncf-args75-ppf] - RuntimeWarning: overflow encountered...
FAILED scipy/stats/tests/test_continuous_basic.py::test_methods_with_lists[ncf-args75-isf] - RuntimeWarning: overflow encountered...

I can try out any boost fixes if you tell me how to update the headers in the subrepo.

My guess is that the anaconda/miniconda that was downloaded was x86_64

My guess is that the anaconda/miniconda that was downloaded was x86_64

Anaconda doesn't have an explicit ARM package so I tried miniconda because it does. I already have openblas and gfortran on my system so no issues there. I get a similar error, but at least the architecture is correct.
python dev.py build
💻  meson setup /Users/mborland/Documents/scipy/build --prefix /Users/mborland/Documents/scipy/build-install
The Meson build system
Version: 0.63.3
Source dir: /Users/mborland/Documents/scipy
Build dir: /Users/mborland/Documents/scipy/build
Build type: native build
Project name: SciPy
Project version: 1.10.0.dev0
C compiler for the host machine: arm64-apple-darwin20.0.0-clang (clang 14.0.4 "clang version 14.0.4")
C linker for the host machine: arm64-apple-darwin20.0.0-clang ld64 609
C++ compiler for the host machine: arm64-apple-darwin20.0.0-clang++ (clang 14.0.4 "clang version 14.0.4")
C++ linker for the host machine: arm64-apple-darwin20.0.0-clang++ ld64 609
Host machine cpu family: aarch64
Host machine cpu: arm64
Compiler for C supports arguments -Wno-unused-but-set-variable: YES
Compiler for C supports arguments -Wno-unused-function: YES
Compiler for C supports arguments -Wno-conversion: YES
Compiler for C supports arguments -Wno-misleading-indentation: YES
Compiler for C supports arguments -Wno-incompatible-pointer-types: YES
Library m found: YES
Fortran compiler for the host machine: /Users/mborland/miniconda3/envs/scipy-dev/bin/arm64-apple-darwin20.0.0-gfortran (gcc 11.3.0 "GNU Fortran (GCC) 11.3.0")
Fortran linker for the host machine: /Users/mborland/miniconda3/envs/scipy-dev/bin/arm64-apple-darwin20.0.0-gfortran ld64 609
Compiler for Fortran supports arguments -Wno-conversion: YES
Checking if "-Wl,--version-script" : links: NO
Program cython found: YES (/Users/mborland/miniconda3/envs/scipy-dev/bin/cython)
Program pythran found: YES (/Users/mborland/miniconda3/envs/scipy-dev/bin/pythran)
Program cp found: YES (/bin/cp)
Program python3 found: YES (/Users/mborland/miniconda3/envs/scipy-dev/bin/python3.10)
Found pkg-config: /Users/mborland/miniconda3/envs/scipy-dev/bin/pkg-config (0.29.2)
Run-time dependency threads found: YES
Library npymath found: YES
Library npyrandom found: YES
Run-time dependency openblas found: YES 0.3.21
Dependency openblas found: YES 0.3.21 (cached)
Program _build_utils/cythoner.py found: YES (/Users/mborland/miniconda3/envs/scipy-dev/bin/python3.10 /Users/mborland/Documents/scipy/scipy/_build_utils/cythoner.py)
Compiler for C supports arguments -Wno-maybe-uninitialized: NO
Compiler for C supports arguments -Wno-discarded-qualifiers: NO
Compiler for C supports arguments -Wno-empty-body: YES
Compiler for C supports arguments -Wno-implicit-function-declaration: YES
Compiler for C supports arguments -Wno-parentheses: YES
Compiler for C supports arguments -Wno-switch: YES
Compiler for C supports arguments -Wno-unused-label: YES
Compiler for C supports arguments -Wno-unused-variable: YES
Compiler for C++ supports arguments -Wno-cpp: NO
Compiler for C++ supports arguments -Wno-deprecated-declarations: NO
Compiler for C++ supports arguments -Wno-class-memaccess: NO
Compiler for C++ supports arguments -Wno-format-truncation: NO
Compiler for C++ supports arguments -Wno-non-virtual-dtor: NO
Compiler for C++ supports arguments -Wno-sign-compare: NO
Compiler for C++ supports arguments -Wno-switch: NO
Compiler for C++ supports arguments -Wno-terminate: NO
Compiler for C++ supports arguments -Wno-unused-but-set-variable: NO
Compiler for C++ supports arguments -Wno-unused-function: NO
Compiler for C++ supports arguments -Wno-unused-local-typedefs: NO
Compiler for C++ supports arguments -Wno-unused-variable: NO
Compiler for C++ supports arguments -Wno-int-in-bool-context: NO
Compiler for Fortran supports arguments -Wno-argument-mismatch: YES
Compiler for Fortran supports arguments -Wno-conversion: YES (cached)
Compiler for Fortran supports arguments -Wno-intrinsic-shadow: YES
Compiler for Fortran supports arguments -Wno-maybe-uninitialized: YES
Compiler for Fortran supports arguments -Wno-surprising: YES
Compiler for Fortran supports arguments -Wno-uninitialized: YES
Compiler for Fortran supports arguments -Wno-unused-dummy-argument: YES
Compiler for Fortran supports arguments -Wno-unused-label: YES
Compiler for Fortran supports arguments -Wno-unused-variable: YES
Compiler for Fortran supports arguments -Wno-tabs: YES
Compiler for Fortran supports arguments -Wno-argument-mismatch: YES (cached)
Compiler for Fortran supports arguments -Wno-conversion: YES (cached)
Compiler for Fortran supports arguments -Wno-maybe-uninitialized: YES (cached)
Compiler for Fortran supports arguments -Wno-unused-dummy-argument: YES (cached)
Compiler for Fortran supports arguments -Wno-unused-label: YES (cached)
Compiler for Fortran supports arguments -Wno-unused-variable: YES (cached)
Compiler for Fortran supports arguments -Wno-tabs: YES (cached)
Checking for function "open_memstream" : YES
Configuring messagestream_config.h using configuration
Compiler for Fortran supports arguments -w: YES
Checking for size of "void*" : -1
Compiler for C supports arguments -Wno-unused-variable: YES (cached)
Compiler for C supports arguments -Wno-parentheses: YES (cached)
Compiler for C supports arguments -Wno-unused-label: YES (cached)
Compiler for C supports arguments -Wno-implicit-function-declaration: YES (cached)
Compiler for C supports arguments -Wno-switch: YES (cached)
Compiler for Fortran supports arguments -w: YES (cached)
Checking for size of "void*" : -1
Build targets in project: 206

SciPy 1.10.0.dev0

  User defined options
    prefix: /Users/mborland/Documents/scipy/build-install

Found ninja-1.11.0 at /Users/mborland/miniconda3/envs/scipy-dev/bin/ninja
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_lib_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_lib_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_ufuncs_pxi_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_ufuncs_pxi_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_ufuncs_pxi_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_ufuncs_pxi_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_ufuncs_pxi_pxd' has more than one output! Using the first one.
WARNING: custom_target '_stats_pxd' has more than one output! Using the first one.
WARNING: custom_target 'cython_special' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_stats_gen_pyx' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_lib_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_spatial_pxd' has more than one output! Using the first one.
WARNING: custom_target '_lib_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_spatial_pxd' has more than one output! Using the first one.
WARNING: custom_target '_lib_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target 'cython_linalg' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_lib_pxd' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_dummy_init_cyoptimize' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
WARNING: custom_target '_cython_tree' has more than one output! Using the first one.
Meson build setup OK
💻  ninja -C /Users/mborland/Documents/scipy/build
ninja: Entering directory `/Users/mborland/Documents/scipy/build'
[4/1562] Generating scipy/generate-version with a custom command
fatal: bad revision '^v1.8.0'
[8/1562] Compiling C++ object scipy/_lib/_uarray/_uarray.cpython-310-darwin.so.p/vectorcall.cxx.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
[12/1562] Linking target scipy/_lib/_fpumode.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[16/1562] Linking target scipy/_lib/_test_ccallback.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[90/1562] Linking target scipy/_lib/_test_deprecation_call.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[99/1562] Linking target scipy/_lib/_test_deprecation_def.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[204/1562] Linking target scipy/_lib/messagestream.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[207/1562] Linking target scipy/_lib/_ccallback_c.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[208/1562] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/sf_error.cc.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
[211/1562] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/_faddeeva.cxx.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
[213/1562] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/_wright.cxx.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
[214/1562] Compiling C++ object scipy/_lib/_uarray/_uarray.cpython-310-darwin.so.p/_uarray_dispatch.cxx.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
../scipy/_lib/_uarray/_uarray_dispatch.cxx:53:15: warning: unused function 'operator==' [-Wunused-function]
  friend bool operator==(PyObject * lhs, const py_ref & rhs) {
              ^
../scipy/_lib/_uarray/_uarray_dispatch.cxx:62:15: warning: unused function 'operator!=' [-Wunused-function]
  friend bool operator!=(PyObject * lhs, const py_ref & rhs) {
              ^
../scipy/_lib/_uarray/_uarray_dispatch.cxx:86:12: warning: unused function 'py_get' [-Wunused-function]
PyObject * py_get(PyObject * obj) { return obj; }
           ^
3 warnings generated.
[219/1562] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/wright.cc.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
[220/1562] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/Faddeeva.cc.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
[228/1562] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/ellint_carlson_wrap.cxx.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
[234/1562] Linking target scipy/_lib/_uarray/_uarray.cpython-310-darwin.so
FAILED: scipy/_lib/_uarray/_uarray.cpython-310-darwin.so
arm64-apple-darwin20.0.0-clang++  -o scipy/_lib/_uarray/_uarray.cpython-310-darwin.so scipy/_lib/_uarray/_uarray.cpython-310-darwin.so.p/_uarray_dispatch.cxx.o scipy/_lib/_uarray/_uarray.cpython-310-darwin.so.p/vectorcall.cxx.o -L/Users/mborland/miniconda3/envs/scipy-dev/lib -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,dynamic_lookup -bundle -Wl,-undefined,dynamic_lookup -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/Users/mborland/miniconda3/envs/scipy-dev/lib -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 /Users/mborland/miniconda3/envs/scipy-dev/include -D_FORTIFY_SOURCE=2 /Users/mborland/miniconda3/envs/scipy-dev/include
ld: warning: -pie being ignored. It is only used when linking a main executable
ld: can't map file, errno=22 file '/Users/mborland/miniconda3/envs/scipy-dev/include' for architecture arm64
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
[236/1562] Linking target scipy/special/_comb.cpython-310-darwin.so
ld: warning: -pie being ignored. It is only used when linking a main executable
[238/1562] Compiling C object scipy/special/_ellip_harm_2.cpython-310-darwin.so.p/meson-generated__ellip_harm_2.c.o
In file included from scipy/special/_ellip_harm_2.cpython-310-darwin.so.p/_ellip_harm_2.c:751:
In file included from /Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/arrayobject.h:5:
In file included from /Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/ndarrayobject.h:12:
In file included from /Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/ndarraytypes.h:1948:
/Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with "          "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it with " \
 ^
1 warning generated.
[240/1562] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/meson-generated__ufuncs_cxx.cpp.o
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
clang-14: warning: /Users/mborland/miniconda3/envs/scipy-dev/include: 'linker' input unused [-Wunused-command-line-argument]
In file included from scipy/special/_ufuncs_cxx.cpython-310-darwin.so.p/_ufuncs_cxx.cpp:762:
In file included from /Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/arrayobject.h:5:
In file included from /Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/ndarrayobject.h:12:
In file included from /Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/ndarraytypes.h:1948:
/Users/mborland/miniconda3/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with "          "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it with " \
 ^
1 warning generated.
[245/1562] Generating scipy/linalg/flapack_module with a custom command
ninja: build stopped: subcommand failed.
Build failed!

This is getting to past my knowledge now. How did you install numpy/cython/pybind11/pythran. Could I suggest you experiment with pip installing them?
There's also the GitHub workflow to mimic, https://github.com/scipy/scipy/blob/main/.github/workflows/macos_meson.yml

This is getting to past my knowledge now. How did you install numpy/cython/pybind11/pythran. Could I suggest you experiment with pip installing them?
There's also the GitHub workflow to mimic, https://github.com/scipy/scipy/blob/main/.github/workflows/macos_meson.yml

I'll play around with it. I appreciate the help.

@mckib2 some of these have been fixed in Boost, do you know if the fixes have made their way into SciPy yet?

nct should be fixed by https://github.com/boostorg/math/pull/892. I'll look at ncx2 this week.

@mdhaber please make sure I am reading this right. I used this CI run's values where df = 21, nc = 1.0560466, and x = 6.77671634 or 21.36270226 or 49.09451392 to generate overflow. I was not able to re-produce overflow (only FE_INEXACT) with the following platform:
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: arm64-apple-darwin22.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Are there other test values that are know to cause overflow with ncx2? The other distribution's test cases have all be integers that caused denominators to be 0.

Do you have the test cases that cause those two to overflow? If they are like the others it is floating-point environment oddities.

I think you already looked into these (https://github.com/scipy/scipy/issues/14901#issuecomment-1337520432), so I don't think there's anything new to be done yet.
It difficult for me to give you a test case associated with those because I can't reproduce locally, but based on the log, it looks like sf of ncx2 raise the warning with df = 1.0, nc = 1.0, loc=0, scale=1, and x as one of the following:
[2.7, 0.2, 6.5, 0.4, 0.1, 8., 0.6, 1.]

For nct.sf, that's df=0.4125, nc=1.571875, loc=0, scale=1. and x as one of the following:
[1., 2., 3., 5., 8., 10., 25.,]

I think for those I would disable failure. They were setting the flag for FE_DIVBYZERO, but now the only one I can reproduce is FE_INEXACT which is defined as: "inexact result: rounding was necessary to store the result of an earlier floating-point operation". I don't think I would worry about that.

Let's hope that this got ameliorated by https://github.com/scipy/scipy/pull/17865, but unless that gets backported, this issue is not for 1.10 anymore - I adapted the milestone.

No, gh-17865 just treated one of the symptoms, silencing warnings in two tests. The np.errstate context I added should be removed when this issue is resolved.

@mckib2 was there anything else you wanted to investigate here (e.g. I'm not sure if you saw https://github.com/scipy/scipy/pull/17432#issuecomment-1439238686), or do we just wait for upstream changes?
@tupui Do you think https://github.com/scipy/scipy/pull/17432#issuecomment-1435438821 and the np.errstates we added in gh-17432 close this issue?

Thanks everyone!

I still have problems with Boost warnings on macOS running on M2 using SciPy 1.11.3. The following code throws a warning:
import scipy.stats as st
st.ncf.cdf(1.0, 9.3068452315593326, 2.5033839617676019, 2.2008593797340321, loc=-0.00428410694979, scale=2.96164351766)

The warnings looks like:
~/miniconda3/envs/scipy-test/lib/python3.11/site-packages/scipy/stats/_continuous_distns.py:7087: RuntimeWarning: overflow encountered in _ncf_cdf
  return _boost._ncf_cdf(x, dfn, dfd, nc)

Tested the same code on a Linux machine and no warnings.

This might be a similar/identical issue
from scipy.stats import ncf

In [2]: ncf.cdf(1, 1.5, 2.5, 5)
Out[2]: 0.12644056682002736

In [3]: ncf.sf([2.5],[1],[1],[2.])
../3.11.6/envs/.../python3.11/site-packages/scipy/stats/_continuous_distns.py:7094: RuntimeWarning: divide by zero encountered in _ncf_sf
  return _boost._ncf_sf(x, dfn, dfd, nc)
Out[3]: array([0.58431814])

scipy version: 1.11.3  (scipy-1.11.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl)
python version: 3.11.6
OS: linux
Arch: 13th Gen Intel(R) Core(TM) i7-1365U

@mborland looks like we have another one of these warnings.
from scipy.stats import ncf
ncf.sf(2., 1., 1., 1.)

Can you help us? Thank you!

@mborland looks like we have another one of these warnings.
from scipy.stats import ncf
ncf.sf(2., 1., 1., 1.)

Can you help us? Thank you!

I will take a look

@mdhaber Fix for has been merged on my end.

Thanks @mborland!


Switch logging from glog to go-kit/log

As described under #30, glog package does not support outputting logs as JSON, making it quite difficult to capture logs of JIRAlert in cloud-native deployments.
The PR replaces glog with go-kit/kit/log package, which is used both by Prometheus and Thanos. This change introduces additional command line options: --log.level and --log.format that allow configuring logging verbosity and output format. In addition, all log messages were updated to use structured logging.

Hi, @free / @bwplotka
Could you look into this when you have some time?

Thanks for the comments. I've tried addressing all of them, but let me know if I've missed something or if further changes are required.

Hello, @free ,
Sorry for the delay. Could you please let me know if any further changes are still required? I've committed your suggestions and the only two remaining comments, according to GitHub, are on outdated files.


fix: sanitize component names in OpenAPI spec

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#206  👈
#205
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @pevisscher and the rest of your teammates on  Graphite

Merge activity

Sep 3, 3:23 PM GMT+2: @pevisscher started a stack merge that includes this pull request via Graphite.


Custom theme not applied

I'm trying to apply a custom theme using react-toolbox-themr, but none of the changes I make are being applied to the components.. Here's my config:
App.js:
...
import Layout from 'react-toolbox/lib/layout/Layout';
import Button from 'react-toolbox/lib/button/Button';
...
import custom from '../assets/theme/theme.js';
import ThemeProvider from 'react-toolbox/lib/ThemeProvider';
...
<ThemeProvider theme={custom}>
  <Layout>
      <NavDrawer active={this.state.drawerActive}
          pinned={this.state.drawerPinned} permanentAt='xxxl'
          onOverlayClick={ this.toggleDrawerActive }>
      <Menu />
      </NavDrawer>
      <Panel bodyScroll={ true }>
          <AppBar leftIcon='menu' onLeftIconClick={ this.toggleDrawerActive } className={ styles.header }/>

              { this.props.children }
              <Button>Hello</Button>

      </Panel>
      <Sidebar pinned={ this.state.sidebarPinned } width={ 5 }>

<IconButton icon='close' onClick={ this.toggleSidebar }/>

Supplemental content goes here.

      </Sidebar>
  </Layout>
</ThemeProvider>

webpack.config.js
module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /(node_modules|bower_components)/,
        include: resolve(__dirname, 'src'),
        use: 'babel-loader'
      },
      {
        test: /\.css$/,
        use: [
          "style-loader",
          {
            loader: "css-loader",
            options: {
              modules: true,
              sourceMap: true,
              importLoaders: 1,
              localIdentName: "[name]--[local]--[hash:base64:8]"
            }
          },
          "postcss-loader"
        ]
      }
    ]
  },
...

postcss.config.js
module.exports = {
  plugins: {
    'postcss-import': {
      root: __dirname,
    },
    'postcss-mixins': {},
    'postcss-each': {},
    'postcss-cssnext': {
      features: {
          customProperties: {
            variables: {
              'background-color': '#000' // for example
            },
          },
        }
    },
    'postcss-reporter': {
      clearMessages: true
    }
  },
};

package.json
"reactToolbox": {
    "include": [
      "BUTTON",
      "LAYOUT"
    ],
    "customProperties": {
      "color-primary": "var(--palette-pink-700)"
    },
    "output": "src/assets/theme"
  }

I'm running react-toolbox-themr and the assets are being generated, although no custom styles are included. Classes are also applied to the components as far as I can see, but again, components look the same no matter what I do.. The generated CSS file is included in my index' head, of course.
I'm pretty sure I'm missing something obvious here..

I believe your webpack config and postcss config are pointless here because react-toolbox-themr doesn't use them.  Why aren't you adding the background-color variable to your customProperties of reactToolbox in package.json?

Thanks for looking into this. Thing is, not even "color-primary": "var(--palette-pink-700)" is being used/evaluated by react-toolbox-themr ..

Same problem here, no matter what I try I can't seem to make the theme take effect:
import theme from 'rttheme';
import ThemeProvider from 'react-toolbox/lib/ThemeProvider';

const CoreLayout = () => (
  <ThemeProvider theme={theme}>
    <REACT_TOOLBOX_ELEMENTS />
  </ThemeProvider>
);

I can confirm that theme is a big javascript object of the elements I want themed:

But they never take effect... here is my theme prefs:
{
  "include": [
    "AUTOCOMPLETE",
    "AVATAR",
    "BUTTON",
    "CARD",
    "CHECKBOX",
    "CHIP",
    "DATE_PICKER",
    "DIALOG",
    "DRAWER",
    "DROPDOWN",
    "INPUT",
    "LAYOUT",
    "LINK",
    "LIST",
    "MENU",
    "NAVIGATION",
    "OVERLAY",
    "PROGRESS_BAR",
    "RADIO",
    "RIPPLE",
    "SLIDER",
    "SNACKBAR",
    "SWITCH",
    "TABLE",
    "TABS",
    "TIME_PICKER",
    "TOOLTIP"
  ],
  "customProperties": {
    "animation-duration": "0.25s",
    "color-text": "#fff",
    "color-background": "#000",
    "color-primary": "var(--palette-pink-700)",
    "color-accent": "var(--palette-pink-a200)",
    "color-accent-dark": "var(--palette-pink-700)",
    "color-primary-contrast": "var(--color-dark-contrast)",
    "color-accent-contrast": "var(--color-dark-contrast)"
  }
}

Edit: I've also tried importing raw RT components as outlined here
but then I end up with no styles at all!

@icd2k3 You need to import the css file generated by themr
import '../../../assets/react-toolbox/theme.css';

Having same issue here.  Trying to change the typeface but running into issues.  My files...
package.json
{
  "name": "movementa-ui",
  "version": "0.1.0",
  "private": true,
  "engines": {
    "node": "6.10.0",
    "npm": "3.10.10"
  },
  "dependencies": {
    "flexboxgrid": "^6.3.1",
    "flexboxgrid-helpers": "^1.1.1",
    "history": "^3.0.0",
    "material-design-icons-iconfont": "^3.0.3",
    "postcss": "^5.2.15",
    "postcss-cssnext": "^2.9.0",
    "react": "^15.4.2",
    "react-dom": "^15.4.2",
    "react-redux": "^5.0.3",
    "react-router": "^3.0.2",
    "react-toolbox": "^2.0.0-beta.6",
    "react-toolbox-themr": "^1.0.2",
    "redux": "^3.6.0",
    "roboto-fontface": "^0.7.0",
    "typeface-jura": "0.0.22"
  },
  "devDependencies": {
    "@kadira/storybook": "^2.21.0",
    "eslint": "^3.17.0",
    "postcss-loader": "^1.3.3",
    "react-scripts": "0.9.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "toolbox": "react-toolbox-themr",
    "storybook": "start-storybook -p 9009 -s public",
    "build-storybook": "build-storybook -s public"
  },
  "reactToolbox": {
		"include": [
			"AUTOCOMPLETE",
			"AVATAR",
			"BUTTON",
			"CARD",
			"CHECKBOX",
			"CHIP",
			"DATE_PICKER",
			"DIALOG",
			"DRAWER",
			"DROPDOWN",
			"INPUT",
			"LAYOUT",
			"LINK",
			"LIST",
			"MENU",
			"NAVIGATION",
			"OVERLAY",
			"PROGRESS_BAR",
			"RADIO",
			"RIPPLE",
			"SLIDER",
			"SNACKBAR",
			"SWITCH",
			"TABLE",
			"TABS",
			"TIME_PICKER",
			"TOOLTIP"
		],
    "customProperties": {
      "variables": {
        "preferred-font": "'Jura', sans-serif;"
      }
    },
		"output": "src/toolbox"
	}
}

Styles in Chrome

No matter what custom property I try to set, none of them take hold.
The default theme is being applied though, because the components are styled, but just not with the updated properties:

Using create-react-app, if that makes a difference.
Wondering what I can do to get this to work?

Having the same issue. I just downloaded the lib and im having troubles on getting the custom theme on red-500 for all the components.
I have my package.json:
...
  "scripts": {
    "sturto": "node_modules/.bin/cross-env NODE_ENV=development node_modules/.bin/webpack-dev-server --colors --config webpack.config.js",
    "start": "start npm run dev:server & start npm run gulp",
    "dev:server": "webpack-dev-server --history-api-fallback",
    "build": "node_modules/.bin/cross-env NODE_ENV=production UV_THREADPOOL_SIZE=100 webpack --config webpack.config.js",
    "deploy": "gh-pages -d build",
    "gulp": "gulp",
    "prod:build": "webpack --optimize-minimize --progress --colors",
    "toolbox": "react-toolbox-themr"
  },
  "reactToolbox":{
    "include": [
      "BUTTON",
      "DATE_PICKER",
      "INPUT"
    ],
    "customProperties": {
      "color-primary": "var(--palette-red-500)",
      "color-primary-dark": "var(--palette-red-700)",
      "color-accent": "var(--palette-pink-a200)",
      "color-accent-dark": "var(--palette-pink-700)",
      "color-primary-contrast": "var(--color-dark-contrast)",
      "color-accent-contrast": "var(--color-dark-contrast)"
    },
    "output": "src/css/toolbox"
  },
...

My webpack config (using version 2):
const path = require('path');
const webpack = require('webpack');

const settings = {
  entry: {
    bundle: [
      "react-hot-loader/patch",
      "./src/index.js"
    ]
  },
  output: {
    filename: "[name].js",
    publicPath: "/",
    path: path.join(path.join(__dirname, 'dist'), 'js'),
    libraryTarget: "amd",
  },
  resolve: {
    //extensions: [".js", ".json", ".css"]
    extensions: ['.scss', '.css', '.js', '.json','.webpack.js', '.web.js', '.js', '.jsx']

  },
  //devtool: 'inline-source-map',
  devtool: 'source-map',
  module: {
    rules: [
      {
        //test: /\.js?$/,
         test: /(\.js|\.jsx)$/,
        loader: 'babel-loader',
        options: {
          presets: [
            ["es2015", { modules: false }],
            "stage-2", "stage-1",
            "react"
          ],
          plugins: [
            "transform-node-env-inline"
          ],
          env: {
            development: {
              plugins: ["react-hot-loader/babel"]
            }
          }
        }
      },
      {
      //  test: /\.css$/,
      test: /(\.scss|\.css)$/,
        use: [
          "style-loader",
          {
            loader: "css-loader",
            options: {
              modules: true,
              sourceMap: true,
              importLoaders: 1,
              localIdentName: "[name]--[local]--[hash:base64:8]"
            }
          },
          "postcss-loader" // has separate config, see postcss.config.js nearby
        ]
      }
    ]
  },
  externals: [
      function(context, request, callback) {
          if (/^dojo/.test(request) ||
              /^dojox/.test(request) ||
              /^dijit/.test(request) ||
              /^esri/.test(request)
          ) {
              return callback(null, "amd " + request);
          }
          callback();
      }
  ],
  devServer: {
  //  contentBase: path.resolve("src/www"),
  //  publicPath: "http://localhost:8080/", // full URL is necessary for Hot Module Replacement if additional path will be added.
  /*  quiet: false,
    hot: true,
    port: 443,
    host: "<IP_ADDRESS>",

    historyApiFallback: true,
    inline: true
    */

    inline: true,
    port: 443,
    host: "<IP_ADDRESS>",
    historyApiFallback: true

  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(),
    new webpack.LoaderOptionsPlugin({
      debug: true
    }),
  ],
};

module.exports = settings;

I had this problem as well, and I realized I forgot to link the generated css in my html file.

To follow up with what @danielmichaelni said, it's important to note that react-toolbox-themr creates two files, a css file and a js file. The js file is used to create a provider, which is in turn used to apply the classNames that get set.
The css file is used for expressing the styles. It's up to you for where to stick it, but there are a couple options:

Stick it directly in your html:
In my case, I literally put it in my public folder, and added:
<link rel="stylesheet" href="/react-toolbox/theme.css" />

Stick it in a css import if you're using webpack or gulp.  I'll elaborate more on this if I get it to work.

Well after many years I have encountered the same issue. Were you able to solve it?