From c262030aad2d0c0f7451efbd606bd68d9e17491e Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 20 Oct 2025 08:18:25 +0100 Subject: [PATCH 01/13] Bump arm build to include 314 --- .github/workflows/build-wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 2c330e7..74518bb 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -18,8 +18,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel] - python: [cp310, cp311, cp312, cp313, cp314] + python: [cp313, cp314] + os: [windows-11-arm] python_impl: [Python] include: - python: cp312 From a34a52fc854efb557db2083cda7c8279f11693f7 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 20 Oct 2025 09:30:23 +0100 Subject: [PATCH 02/13] More changes --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 74518bb..1e53a4d 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -10,7 +10,7 @@ on: jobs: build_wheels: - name: ${{ matrix.os }}, ${{matrix.python_impl }} ${{ matrix.python }} + name: ${{ matrix.os }}, Python ${{matrix.python_impl }} ${{ matrix.python }} runs-on: ${{ matrix.os }} defaults: run: From 1bcff8e4a6c46654e57312ab2d78f0eb5aa4de32 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 20 Oct 2025 09:47:02 +0100 Subject: [PATCH 03/13] Enabel tests for win-arm --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 1e53a4d..74518bb 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -10,7 +10,7 @@ on: jobs: build_wheels: - name: ${{ matrix.os }}, Python ${{matrix.python_impl }} ${{ matrix.python }} + name: ${{ matrix.os }}, ${{matrix.python_impl }} ${{ matrix.python }} runs-on: ${{ matrix.os }} defaults: run: From 73214028846ab1bea3821338b9d3d07364b2754b Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Thu, 30 Oct 2025 17:00:43 +0000 Subject: [PATCH 04/13] Try special --- .github/workflows/build-wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 74518bb..1fed46f 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -26,7 +26,7 @@ jobs: os: ubuntu-latest python_impl: Pyodide env: - BUILD_COMMIT: "main" # or a specific version, e.g., v0.13.1 + BUILD_COMMIT: "special-test" # or a specific version, e.g., v0.13.1 CIBW_BUILD: ${{ matrix.python }}-* CIBW_ARCHS_LINUX: "x86_64 aarch64" CIBW_ARCHS_MACOS: native @@ -34,7 +34,7 @@ jobs: # Skip musl for 3.8 and 3.9 since no upstream wheels CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" CIBW_TEST_REQUIRES: pytest pytest-xdist - CIBW_TEST_COMMAND: python -c "import statsmodels; statsmodels.test(['-m','(not slow and not example)','-n','2'], exit=True)" + CIBW_TEST_COMMAND: python -c "import statsmodels; statsmodels.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" # Avoid testing on emulated architectures and Pyodide CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*" CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'auditwheel repair --strip -w {dest_dir} {wheel}' From 95cd081d4972d1827be2611178c6be8c30ad0362 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Thu, 30 Oct 2025 17:01:47 +0000 Subject: [PATCH 05/13] Try special --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 1fed46f..25d8a79 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -34,7 +34,7 @@ jobs: # Skip musl for 3.8 and 3.9 since no upstream wheels CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" CIBW_TEST_REQUIRES: pytest pytest-xdist - CIBW_TEST_COMMAND: python -c "import statsmodels; statsmodels.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" + CIBW_TEST_COMMAND: python -c "import statsmodels.base; statsmodels.base.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" # Avoid testing on emulated architectures and Pyodide CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*" CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'auditwheel repair --strip -w {dest_dir} {wheel}' From 42e1982f3409417f26a155518f79dff9488e6ab6 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Sun, 29 Mar 2026 16:07:19 +0100 Subject: [PATCH 06/13] Update statsmodel sub --- statsmodels | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/statsmodels b/statsmodels index e1efaa5..ba664a0 160000 --- a/statsmodels +++ b/statsmodels @@ -1 +1 @@ -Subproject commit e1efaa5741df495ad6afeb4fc0867d3d87c93cfe +Subproject commit ba664a0303ccb0b0137a50d85e14604307fef681 From 3a960d45eca9a1760d8633d8b71b5eb5acec0a22 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Sun, 29 Mar 2026 16:09:26 +0100 Subject: [PATCH 07/13] Update branch --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 25d8a79..f07fd4b 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -26,7 +26,7 @@ jobs: os: ubuntu-latest python_impl: Pyodide env: - BUILD_COMMIT: "special-test" # or a specific version, e.g., v0.13.1 + BUILD_COMMIT: "main" # or a specific version, e.g., v0.13.1 CIBW_BUILD: ${{ matrix.python }}-* CIBW_ARCHS_LINUX: "x86_64 aarch64" CIBW_ARCHS_MACOS: native From ca08202a2a0979337dbd365a5b772a9904fd907f Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 30 Mar 2026 15:39:22 +0100 Subject: [PATCH 08/13] More print --- .github/workflows/build-wheels.yml | 2 +- .gitmodules | 2 +- statsmodels | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index f07fd4b..0f1a3f4 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -26,7 +26,7 @@ jobs: os: ubuntu-latest python_impl: Pyodide env: - BUILD_COMMIT: "main" # or a specific version, e.g., v0.13.1 + BUILD_COMMIT: "test-special" # or a specific version, e.g., v0.13.1 CIBW_BUILD: ${{ matrix.python }}-* CIBW_ARCHS_LINUX: "x86_64 aarch64" CIBW_ARCHS_MACOS: native diff --git a/.gitmodules b/.gitmodules index 20045ac..994c495 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "statsmodels"] path = statsmodels - url = https://github.com/statsmodels/statsmodels.git + url = https://github.com/bashtage/statsmodels.git diff --git a/statsmodels b/statsmodels index ba664a0..92cb371 160000 --- a/statsmodels +++ b/statsmodels @@ -1 +1 @@ -Subproject commit ba664a0303ccb0b0137a50d85e14604307fef681 +Subproject commit 92cb37177f6b6be72a5fe7a3d7c55da455777c52 From 35186608423be30924ca9d04c01d7a5fa6678542 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 30 Mar 2026 17:07:37 +0100 Subject: [PATCH 09/13] pytest-randomly --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 0f1a3f4..18c37ef 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -33,7 +33,7 @@ jobs: # No support for pypy, musl, Win32 for 3.10+ # Skip musl for 3.8 and 3.9 since no upstream wheels CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" - CIBW_TEST_REQUIRES: pytest pytest-xdist + CIBW_TEST_REQUIRES: pytest pytest-xdist pytest-randomly CIBW_TEST_COMMAND: python -c "import statsmodels.base; statsmodels.base.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" # Avoid testing on emulated architectures and Pyodide CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*" From d889ebceafc1dacae93d3f3cf5cb61219eb00807 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 30 Mar 2026 18:30:22 +0100 Subject: [PATCH 10/13] Add show runtime --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 18c37ef..85276e0 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -34,7 +34,7 @@ jobs: # Skip musl for 3.8 and 3.9 since no upstream wheels CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" CIBW_TEST_REQUIRES: pytest pytest-xdist pytest-randomly - CIBW_TEST_COMMAND: python -c "import statsmodels.base; statsmodels.base.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" + CIBW_TEST_COMMAND: python -c "import numpy; numpy.show_runtime(); import statsmodels.base; statsmodels.base.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" # Avoid testing on emulated architectures and Pyodide CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*" CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'auditwheel repair --strip -w {dest_dir} {wheel}' From ef34d7a3f75850ee0a2f11491f26a77b59829802 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 30 Mar 2026 18:31:07 +0100 Subject: [PATCH 11/13] Remove parallel --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 85276e0..e69c4e8 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -33,7 +33,7 @@ jobs: # No support for pypy, musl, Win32 for 3.10+ # Skip musl for 3.8 and 3.9 since no upstream wheels CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" - CIBW_TEST_REQUIRES: pytest pytest-xdist pytest-randomly + CIBW_TEST_REQUIRES: pytest pytest-randomly CIBW_TEST_COMMAND: python -c "import numpy; numpy.show_runtime(); import statsmodels.base; statsmodels.base.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" # Avoid testing on emulated architectures and Pyodide CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*" From dadce08c56d42f0959724e8cb2deb42499777f62 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 30 Mar 2026 18:32:40 +0100 Subject: [PATCH 12/13] Add xdist and set -n 0 --- .github/workflows/build-wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index e69c4e8..037b9c6 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -33,8 +33,8 @@ jobs: # No support for pypy, musl, Win32 for 3.10+ # Skip musl for 3.8 and 3.9 since no upstream wheels CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" - CIBW_TEST_REQUIRES: pytest pytest-randomly - CIBW_TEST_COMMAND: python -c "import numpy; numpy.show_runtime(); import statsmodels.base; statsmodels.base.test(['-v','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" + CIBW_TEST_REQUIRES: pytest pytest-xdist pytest-randomly + CIBW_TEST_COMMAND: python -c "import numpy; numpy.show_runtime(); import statsmodels.base; statsmodels.base.test(['-v','-n','0','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" # Avoid testing on emulated architectures and Pyodide CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*" CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'auditwheel repair --strip -w {dest_dir} {wheel}' From 52c817557927eb7048b09783aa16768078b8e983 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Mon, 30 Mar 2026 18:40:01 +0100 Subject: [PATCH 13/13] Add threadpoolctrl --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 037b9c6..5af6961 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -33,7 +33,7 @@ jobs: # No support for pypy, musl, Win32 for 3.10+ # Skip musl for 3.8 and 3.9 since no upstream wheels CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" - CIBW_TEST_REQUIRES: pytest pytest-xdist pytest-randomly + CIBW_TEST_REQUIRES: pytest pytest-xdist pytest-randomly threadpoolctl CIBW_TEST_COMMAND: python -c "import numpy; numpy.show_runtime(); import statsmodels.base; statsmodels.base.test(['-v','-n','0','-s','-m', '(not slow and not example)', '--max-worker-restart','50'], exit=True)" # Avoid testing on emulated architectures and Pyodide CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*"