@@ -22,16 +22,12 @@ jobs:
2222 strategy :
2323 fail-fast : false
2424 matrix :
25- # TODO: Revert this, temporarily testing only what I need
26- # python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
27- # architecture: [x64, x86, arm64]
28- # include:
29- # - os: windows-2019
30- # - architecture: arm64
31- # os: windows-11-arm
32- python-version : ["3.11"]
33- architecture : [x64]
34- os : [windows-11-arm]
25+ python-version : ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
26+ architecture : [x64, x86, arm64]
27+ include :
28+ - architecture : arm64
29+ os : windows-11-arm
30+ - os : windows-2019
3531
3632 steps :
3733 - uses : actions/checkout@v4
@@ -53,22 +49,22 @@ jobs:
5349 echo $ScriptsPath
5450 Add-Content $env:GITHUB_PATH $ScriptsPath
5551
56- # - name: Build and install
57- # run: pip install . -v --user
52+ - name : Build and install
53+ run : pip install . -v --user
5854
59- # # This needs to happen *after* installing pywin32 since
60- # # AutoDuck/py2d.py currently relies on runtime imports for introspection
61- # # This isn't included in the wheel (TODO: could we?)
62- # # and only serves as a PR test for the docs.yaml workflow
63- # - name: Generate PyWin32.chm help file
64- # run: python AutoDuck/make.py
55+ # This needs to happen *after* installing pywin32 since
56+ # AutoDuck/py2d.py currently relies on runtime imports for introspection
57+ # This isn't included in the wheel (TODO: could we?)
58+ # and only serves as a PR test for the docs.yaml workflow
59+ - name : Generate PyWin32.chm help file
60+ run : python AutoDuck/make.py
6561
66- # # Smokescreen test to validate postinstall doesn't crash, dlls can be found, and both pathless invocation methods work
67- # - name: Run postinstall install/remove
68- # run: |
69- # $UserSite = "$(python -m site --user-site)"
70- # python -m win32.scripts.pywin32_postinstall -install -destination "$UserSite"
71- # pywin32_postinstall -remove -destination "$UserSite"
62+ # Smokescreen test to validate postinstall doesn't crash, dlls can be found, and both pathless invocation methods work
63+ - name : Run postinstall install/remove
64+ run : |
65+ $UserSite = "$(python -m site --user-site)"
66+ python -m win32.scripts.pywin32_postinstall -install -destination "$UserSite"
67+ pywin32_postinstall -remove -destination "$UserSite"
7268
7369 # Compilation and registration of the PyCOMTest server dll
7470 - name : Set up MSVC
9389 - name : Build and register the PyCOMTest server dll
9490 run : |
9591 msbuild com/TestSources/PyCOMTest/PyCOMTest.sln -property:Configuration=Release
96- # regsvr32 com/TestSources/PyCOMTest/x64/Release/PyCOMTest.dll
92+ regsvr32 com/TestSources/PyCOMTest/x64/Release/PyCOMTest.dll
9793
9894 - name : Run tests
9995 # Run the tests directly from the source dir so support files (eg, .wav files etc)
@@ -111,108 +107,108 @@ jobs:
111107 path : dist/*.whl
112108 if-no-files-found : error
113109
114- # # Do a single ARM64 cross-compilation to ensure we still support it
115- # test_cross_compile:
116- # name: Cross-compile ARM
117- # runs-on: windows-2019
118- # timeout-minutes: 25
119- # steps:
120- # - uses: actions/checkout@v4
121-
122- # - name: Set up latest stable Python
123- # uses: actions/setup-python@v5
124- # with:
125- # python-version: 3.x
126- # architecture: x64
127- # cache: pip
128- # cache-dependency-path: .github/workflows/main.yml
129- # check-latest: true
130-
131- # - name: Install build module
132- # run: pip install --upgrade build
133-
134- # - name: Obtain ARM64 library files
135- # run: python .github\workflows\download-arm64-libs.py .\arm64libs
136-
137- # - name: Build wheels
138- # run: python -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=-L.\arm64libs --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64
139-
140- # merge:
141- # runs-on: windows-latest
142- # needs: [test]
143- # steps:
144- # - name: Merge Artifacts
145- # uses: actions/upload-artifact/merge@v4
146- # with:
147- # name: artifacts
148- # pattern: artifacts-*
149- # - name: Delete standalone Artifacts
150- # uses: geekyeggo/delete-artifact@v5
151- # with:
152- # name: artifacts-*
153-
154- # # This job can be run locally by running `pre-commit run`
155- # checkers:
156- # runs-on: windows-2019
157- # timeout-minutes: 25
158- # steps:
159- # - uses: actions/checkout@v4
160- # - uses: actions/setup-python@v5
161- # with:
162- # # This job only needs to target the oldest supported version
163- # python-version: "3.8"
164- # cache: pip
165- # cache-dependency-path: .github/workflows/main.yml
166- # - run: pip install clang-format==18.1.* pycln
167- # - run: pycln . --config=pycln.toml --check
168- # - uses: astral-sh/ruff-action@v3
169- # with:
170- # version: "0.8.4"
171- # - run: ruff format --check
172- # # Too many files to fit in a single command, also exclude vendored Scintilla and MAPIStubLibrary
173- # - run: |
174- # clang-format --Werror --dry-run $(git ls-files '*.cpp' ':!:com/win32comext/mapi/src/MAPIStubLibrary/')
175- # if ($LastExitCode -ne 0) { exit $LastExitCode }
176- # clang-format --Werror --dry-run $(git ls-files '*.h' ':!:Pythonwin/Scintilla/' ':!:com/win32comext/mapi/src/MAPIStubLibrary/')
177- # if ($LastExitCode -ne 0) { exit $LastExitCode }
178-
179- # mypy:
180- # runs-on: windows-2019
181- # timeout-minutes: 25
182- # strategy:
183- # fail-fast: false
184- # matrix:
185- # python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
186- # steps:
187- # - uses: actions/checkout@v4
188- # - uses: actions/setup-python@v5
189- # with:
190- # python-version: ${{ matrix.python-version }}
191- # cache: pip
192- # cache-dependency-path: .github/workflows/main.yml
193- # check-latest: true
194- # - run: pip install types-setuptools PyOpenGL mypy[faster-cache]==1.14.*
195- # - run: mypy . --python-version=${{ matrix.python-version }}
196-
197- # pyright:
198- # runs-on: windows-2019
199- # timeout-minutes: 25
200- # strategy:
201- # fail-fast: false
202- # matrix:
203- # python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
204- # steps:
205- # - uses: actions/checkout@v4
206- # - uses: actions/setup-python@v5
207- # with:
208- # python-version: ${{ matrix.python-version }}
209- # cache: pip
210- # cache-dependency-path: .github/workflows/main.yml
211- # check-latest: true
212- # # pyright vendors typeshed, but let's make sure we have the most up to date stubs
213- # - run: pip install types-setuptools PyOpenGL
214- # - uses: jakebailey/pyright-action@v2
215- # with:
216- # python-version: ${{ matrix.python-version }}
217- # version: "1.1.396"
218- # annotate: errors
110+ # Do a single ARM64 cross-compilation to ensure we still support it
111+ test_cross_compile :
112+ name : Cross-compile ARM
113+ runs-on : windows-2019
114+ timeout-minutes : 25
115+ steps :
116+ - uses : actions/checkout@v4
117+
118+ - name : Set up latest stable Python
119+ uses : actions/setup-python@v5
120+ with :
121+ python-version : 3.x
122+ architecture : x64
123+ cache : pip
124+ cache-dependency-path : .github/workflows/main.yml
125+ check-latest : true
126+
127+ - name : Install build module
128+ run : pip install --upgrade build
129+
130+ - name : Obtain ARM64 library files
131+ run : python .github\workflows\download-arm64-libs.py .\arm64libs
132+
133+ - name : Build wheels
134+ run : python -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=-L.\arm64libs --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64
135+
136+ merge :
137+ runs-on : windows-latest
138+ needs : [test]
139+ steps :
140+ - name : Merge Artifacts
141+ uses : actions/upload-artifact/merge@v4
142+ with :
143+ name : artifacts
144+ pattern : artifacts-*
145+ - name : Delete standalone Artifacts
146+ uses : geekyeggo/delete-artifact@v5
147+ with :
148+ name : artifacts-*
149+
150+ # This job can be run locally by running `pre-commit run`
151+ checkers :
152+ runs-on : windows-2019
153+ timeout-minutes : 25
154+ steps :
155+ - uses : actions/checkout@v4
156+ - uses : actions/setup-python@v5
157+ with :
158+ # This job only needs to target the oldest supported version
159+ python-version : " 3.8"
160+ cache : pip
161+ cache-dependency-path : .github/workflows/main.yml
162+ - run : pip install clang-format==18.1.* pycln
163+ - run : pycln . --config=pycln.toml --check
164+ - uses : astral-sh/ruff-action@v3
165+ with :
166+ version : " 0.8.4"
167+ - run : ruff format --check
168+ # Too many files to fit in a single command, also exclude vendored Scintilla and MAPIStubLibrary
169+ - run : |
170+ clang-format --Werror --dry-run $(git ls-files '*.cpp' ':!:com/win32comext/mapi/src/MAPIStubLibrary/')
171+ if ($LastExitCode -ne 0) { exit $LastExitCode }
172+ clang-format --Werror --dry-run $(git ls-files '*.h' ':!:Pythonwin/Scintilla/' ':!:com/win32comext/mapi/src/MAPIStubLibrary/')
173+ if ($LastExitCode -ne 0) { exit $LastExitCode }
174+
175+ mypy :
176+ runs-on : windows-2019
177+ timeout-minutes : 25
178+ strategy :
179+ fail-fast : false
180+ matrix :
181+ python-version : ["3.9", "3.10", "3.11", "3.12", "3.13"]
182+ steps :
183+ - uses : actions/checkout@v4
184+ - uses : actions/setup-python@v5
185+ with :
186+ python-version : ${{ matrix.python-version }}
187+ cache : pip
188+ cache-dependency-path : .github/workflows/main.yml
189+ check-latest : true
190+ - run : pip install types-setuptools PyOpenGL mypy[faster-cache]==1.14.*
191+ - run : mypy . --python-version=${{ matrix.python-version }}
192+
193+ pyright :
194+ runs-on : windows-2019
195+ timeout-minutes : 25
196+ strategy :
197+ fail-fast : false
198+ matrix :
199+ python-version : ["3.9", "3.10", "3.11", "3.12", "3.13"]
200+ steps :
201+ - uses : actions/checkout@v4
202+ - uses : actions/setup-python@v5
203+ with :
204+ python-version : ${{ matrix.python-version }}
205+ cache : pip
206+ cache-dependency-path : .github/workflows/main.yml
207+ check-latest : true
208+ # pyright vendors typeshed, but let's make sure we have the most up to date stubs
209+ - run : pip install types-setuptools PyOpenGL
210+ - uses : jakebailey/pyright-action@v2
211+ with :
212+ python-version : ${{ matrix.python-version }}
213+ version : " 1.1.396"
214+ annotate : errors
0 commit comments