Skip to content

Commit 046a435

Browse files
authored
Merge branch 'master' into min_version
2 parents 74f5d87 + 04d21b0 commit 046a435

File tree

134 files changed

+6037
-2995
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+6037
-2995
lines changed

.azure/build.yml

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
# JPype CI pipeline
2+
3+
# NOTE:
4+
# - Some commented-out sections (e.g., Python 3.14, JDK 22) are placeholders for future versions.
5+
# These will be activated once the corresponding tools are available on Azure (usually ~4 months after release).
6+
# - Debug jobs are only activated when issues cannot be replicated locally; otherwise, they remain disabled.
7+
# - macOS coverage is limited to the oldest and newest supported Python/JDK versions, as most issues are platform-independent and our primary support is for Linux.
8+
# - We only test against LTS (Long-Term Support) JDK releases, as newer versions (e.g., JDK 22) are not yet available on Azure.
9+
# - Fast tests are enabled on macOS to avoid long build times, especially for tests with high overhead (e.g., leak checkers).
10+
# - Documentation jobs are run only on Ubuntu, since documentation generation is OS-agnostic and only needs to be validated for HTML publication.
11+
212
trigger:
313
branches:
414
include:
@@ -7,9 +17,9 @@ trigger:
717
paths:
818
include:
919
- .azure/build.yml
20+
- pyproject.toml
21+
- CMakeLists.txt
1022
- doc/*
11-
- setup.py
12-
- setupext/*
1323
- jpype/*
1424
- native/*
1525
- test/*
@@ -18,8 +28,10 @@ variables:
1828
# indicate whether the testsuite should skip long-running tests or not.
1929
- name: jpypetest.fast
2030
value: 'false'
21-
- name: system.debug
22-
value: 'true'
31+
32+
# shall Azure Pipeline verbose debugging output be turned on?
33+
#- name: system.debug
34+
# value: 'true'
2335

2436
jobs:
2537
- job: Deps
@@ -49,14 +61,20 @@ jobs:
4961
- template: scripts/tracing.yml
5062

5163
- job: Test
64+
variables:
65+
# TODO: do we really need this, or can pip cache handle the slash as path?
66+
# - ${{ if eq( variables['Agent.OS'], 'Windows_NT') }}:
67+
# - name: PIP_CACHE_DIR
68+
# value: $(Pipeline.Workspace)\.pip_cache
69+
#
70+
# - ${{ if ne( variables['Agent.OS'], 'Windows_NT') }}:
71+
- name: PIP_CACHE_DIR
72+
value: $(Pipeline.Workspace)/.pip_cache
73+
5274
dependsOn: Deps
5375
strategy:
5476
matrix:
5577
# Linux
56-
linux_py38_jdk11: # todo: 3.8 will be EOL on October 31, 2024
57-
imageName: "ubuntu-latest"
58-
python.version: '3.8'
59-
jdk.version: '11'
6078
linux_py39_jdk11:
6179
imageName: "ubuntu-latest"
6280
python.version: '3.9'
@@ -76,40 +94,37 @@ jobs:
7694
linux_py313_jdk17:
7795
imageName: "ubuntu-latest"
7896
python.version: "3.13"
79-
jdk.version: '17' # jdk 22 is not there yet.
80-
#linux_py314_jdk22:
81-
# imageName: "ubuntu-latest"
82-
# python.version: "3.14.0-alpha.0"
83-
# jdk.version: '22'
97+
jdk.version: '17'
98+
# todo: refresh github token to download python versions.
99+
# linux_py314_jdk22:
100+
# imageName: "ubuntu-latest"
101+
# python.version: "3.14"
102+
# jdk.version: '25'
84103
# Windows
85-
windows_py38_jdk11:
86-
imageName: "windows-2019"
87-
python.version: '3.8' # todo: 3.8 will be EOL on October 31, 2024
88-
jdk.version: '11'
89104
windows_py39_jdk11:
90-
imageName: "windows-2019"
105+
imageName: "windows-2022"
91106
python.version: '3.9'
92107
jdk.version: '11'
93108
windows_py310_jdk11:
94-
imageName: "windows-2019"
109+
imageName: "windows-2022"
95110
python.version: '3.10'
96111
jdk.version: '11'
97112
windows_py311_jdk17:
98-
imageName: "windows-2019"
113+
imageName: "windows-2022"
99114
python.version: '3.11'
100115
jdk.version: '17'
101116
windows_py312_jdk21:
102-
imageName: "windows-2019"
117+
imageName: "windows-2022"
103118
python.version: '3.12'
104119
jdk.version: '21'
105120
# OSX, we only test an old Python version with JDK8 and recent Py with recent JDK.
106-
mac_py38_jdk11:
107-
imageName: "macos-13"
108-
python.version: '3.8' # todo: 3.8 will be EOL on October 31, 2024
121+
mac_py39_jdk11:
122+
imageName: "macos-14"
123+
python.version: '3.9'
109124
jpypetest.fast: 'true'
110125
jdk.version: '11'
111126
mac_py312_jdk17:
112-
imageName: "macos-13"
127+
imageName: "macos-latest"
113128
python.version: '3.12'
114129
jpypetest.fast: 'true'
115130
jdk.version: '17'
@@ -118,6 +133,7 @@ jobs:
118133
vmImage: $(imageName)
119134
steps:
120135

136+
- template: scripts/pip-caching.yml
121137
- template: scripts/deps.yml
122138
- template: scripts/test.yml
123139

@@ -129,7 +145,7 @@ jobs:
129145
linux_py38_jdk11:
130146
imageName: "ubuntu-16.04"
131147
jdk.version: "11"
132-
python.version: '3.8'
148+
python.version: '3.9'
133149
pool:
134150
vmImage: $(imageName)
135151
steps:

.azure/check.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/bash
2+
3+
# Script to verify the integrity of Python wheel files after downloading.
4+
# Prevents the high cost of publishing a bad wheel.
5+
6+
# Ensure 'wheel' is installed
7+
pip show wheel >/dev/null 2>&1 || pip install wheel
8+
9+
for whl in *.whl; do
10+
echo "======================================"
11+
echo "Checking wheel: $whl"
12+
echo "--------------------------------------"
13+
14+
# 1. List contents
15+
unzip -l "$whl"
16+
17+
# 2. Unpack wheel and capture output to get directory name
18+
unpack_output=$(python3 -m wheel unpack "$whl")
19+
echo "$unpack_output"
20+
unpack_dir=$(echo "$unpack_output" | grep "Unpacking to:" | sed 's/Unpacking to: //' | sed 's/\.\.\..*//')
21+
unpack_dir=$(echo "$unpack_dir" | xargs) # trim whitespace
22+
23+
# 3. Check for METADATA and WHEEL files
24+
dist_info_dir=$(find "$unpack_dir" -type d -name "*.dist-info" | head -n 1)
25+
if [ -n "$dist_info_dir" ]; then
26+
echo "Found dist-info directory: $dist_info_dir"
27+
if [ -f "$dist_info_dir/METADATA" ]; then
28+
echo "METADATA file present."
29+
else
30+
echo "WARNING: METADATA file missing!"
31+
fi
32+
if [ -f "$dist_info_dir/WHEEL" ]; then
33+
echo "WHEEL file present."
34+
else
35+
echo "WARNING: WHEEL file missing!"
36+
fi
37+
else
38+
echo "WARNING: dist-info directory not found!"
39+
fi
40+
41+
# 4. Auditwheel check (if available)
42+
if command -v auditwheel >/dev/null 2>&1; then
43+
auditwheel show "$whl"
44+
fi
45+
46+
# Clean up unpacked directory
47+
rm -rf "$unpack_dir"
48+
echo "======================================"
49+
echo
50+
done

.azure/doc-requirements.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
# TODO: consider unpinning these?
2-
Pygments==2.15.0
3-
docutils==0.14
4-
commonmark==0.8.1
5-
recommonmark==0.5.0
1+
Pygments
2+
docutils
3+
commonmark
4+
recommonmark
65
sphinx
76
sphinx-rtd-theme
87
readthedocs-sphinx-ext

0 commit comments

Comments
 (0)