From: Debian Science Maintainers Date: Sun, 24 Jul 2022 16:51:07 +0000 (+0100) Subject: DynamicFactor test fail on ppc64el, s390x with pythran, and intermittently on armhf X-Git-Tag: archive/raspbian/0.13.2+dfsg-4+rpi1^2~8 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=34279c42e32e2f33c80438626d881548c0b42abb;p=statsmodels.git DynamicFactor test fail on ppc64el, s390x with pythran, and intermittently on armhf Warn on use and xfail test Bug-Debian: https://bugs.debian.org/1014278 Author: Rebecca N. Palmer Forwarded: no Gbp-Pq: Name xfail_dynamicfactor_ppc64el.patch --- diff --git a/statsmodels/tsa/statespace/dynamic_factor.py b/statsmodels/tsa/statespace/dynamic_factor.py index bec3147..ca698c1 100644 --- a/statsmodels/tsa/statespace/dynamic_factor.py +++ b/statsmodels/tsa/statespace/dynamic_factor.py @@ -23,6 +23,10 @@ from statsmodels.tsa.tsatools import lagmat from statsmodels.tools.decorators import cache_readonly import statsmodels.base.wrapper as wrap from statsmodels.compat.pandas import Appender +import platform +import warnings +import sys +warn_dfactor_platform= "DynamicFactor can give wrong results on ppc64el, armhf (armv7), and s390x: https://bugs.debian.org/1014278" if (((platform.uname()[4].startswith('arm') or platform.uname()[4].startswith('aarch')) and np.log2(sys.maxsize)<=32) or platform.uname()[4].startswith('ppc') or platform.uname()[4].startswith('s390')) else False # pp64el test results at end of https://buildd.debian.org/status/fetch.php?pkg=statsmodels&arch=ppc64el&ver=0.11.0-1&stamp=1580692747&raw=0 , s390x test result in the linked bug class DynamicFactor(MLEModel): @@ -141,6 +145,8 @@ class DynamicFactor(MLEModel): def __init__(self, endog, k_factors, factor_order, exog=None, error_order=0, error_var=False, error_cov_type='diagonal', enforce_stationarity=True, **kwargs): + if warn_dfactor_platform: + warnings.warn(warn_dfactor_platform) # Model properties self.enforce_stationarity = enforce_stationarity diff --git a/statsmodels/tsa/statespace/tests/test_cfa_simulation_smoothing.py b/statsmodels/tsa/statespace/tests/test_cfa_simulation_smoothing.py index 102a7cb..7d7b8c5 100644 --- a/statsmodels/tsa/statespace/tests/test_cfa_simulation_smoothing.py +++ b/statsmodels/tsa/statespace/tests/test_cfa_simulation_smoothing.py @@ -97,6 +97,8 @@ class TestDFM(CheckPosteriorMoments): *args, **kwargs) +import pytest +@pytest.mark.xfail(condition=bool(dynamic_factor.warn_dfactor_platform),reason='known intermittently broken on armhf',strict=False) class TestDFMComplex(CheckPosteriorMoments): @classmethod def setup_class(cls, missing=None, *args, **kwargs): diff --git a/statsmodels/tsa/statespace/tests/test_dynamic_factor.py b/statsmodels/tsa/statespace/tests/test_dynamic_factor.py index beb17a3..5db5cc4 100644 --- a/statsmodels/tsa/statespace/tests/test_dynamic_factor.py +++ b/statsmodels/tsa/statespace/tests/test_dynamic_factor.py @@ -9,6 +9,7 @@ import re import warnings import numpy as np +from statsmodels.tsa.statespace.dynamic_factor import warn_dfactor_platform from numpy.testing import assert_equal, assert_raises, assert_allclose import pandas as pd import pytest @@ -575,7 +576,7 @@ class TestDynamicFactor_general_errors(CheckDynamicFactor): r'cov.chol\[3,3\] +' + forg(params[offset + 5], prec=4), table) - +@pytest.mark.xfail(condition=bool(warn_dfactor_platform),reason='known broken on ppc64el',strict=False) class TestDynamicFactor_ar2_errors(CheckDynamicFactor): """ Test for a dynamic factor model where errors are as general as possible,