Skip to content

Commit 7e9c8cf

Browse files
committed
Merge branch 'develop'
2 parents e906269 + d0eeab1 commit 7e9c8cf

32 files changed

+570
-402
lines changed

.binder/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# Docker image:
1010
# https://mybinder.readthedocs.io/en/latest/using/config_files.html
1111

12-
FROM ubuntu:18.04
12+
FROM ubuntu:24.04
1313

1414
ARG NB_USER=jovyan
1515
ARG NB_UID=1000

.github/workflows/tests.yml

+183-45
Original file line numberDiff line numberDiff line change
@@ -7,98 +7,236 @@ on:
77

88
jobs:
99
tests:
10-
name: ${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.version }}-python-${{ matrix.python-version }}-${{ matrix.castxml-epic }}
10+
name: ${{ matrix.os }} ${{ matrix.compiler }}${{ matrix.clang-version }} ${{ matrix.cppstd }} Python ${{ matrix.python-version }} Epic ${{ matrix.castxml-epic }}
1111
runs-on: ${{ matrix.os }}
1212

1313
strategy:
1414
fail-fast: false
1515
matrix:
1616
include:
17-
- os: ubuntu-20.04
18-
compiler: gcc
19-
version: "9"
20-
python-version: "3.7"
21-
castxml: "castxml"
17+
# UBUNTU 22.04 - CASTXML EPIC 0
18+
- os: ubuntu-22.04
19+
arch: x86_64
20+
compiler: clang++
21+
clang-version: 13
22+
python-version: "3.13"
23+
castxml-epic: 0
24+
cppstd: "-std=c++98"
25+
26+
- os: ubuntu-22.04
27+
arch: x86_64
28+
compiler: clang++
29+
clang-version: 14
30+
python-version: "3.13"
2231
castxml-epic: 0
2332
cppstd: "-std=c++98"
2433

25-
- os: ubuntu-20.04
26-
compiler: gcc
27-
version: "9"
28-
python-version: "3.8"
29-
castxml: "castxml"
34+
- os: ubuntu-22.04
35+
arch: x86_64
36+
compiler: clang++
37+
clang-version: 15
38+
python-version: "3.13"
3039
castxml-epic: 0
3140
cppstd: "-std=c++98"
3241

33-
- os: ubuntu-20.04
34-
compiler: gcc
35-
version: "9"
42+
- os: ubuntu-22.04
43+
arch: x86_64
44+
compiler: clang++
45+
clang-version: 15
46+
python-version: "3.13"
47+
castxml-epic: 1
48+
cppstd: "-std=c++98"
49+
50+
# UBUNTU 24.04 - CASTXML EPIC 0
51+
- os: ubuntu-24.04
52+
arch: x86_64
53+
compiler: clang++
54+
clang-version: 16
3655
python-version: "3.9"
37-
castxml: "castxml"
3856
castxml-epic: 0
3957
cppstd: "-std=c++98"
4058

41-
- os: ubuntu-20.04
42-
compiler: gcc
43-
version: "9"
59+
- os: ubuntu-24.04
60+
arch: x86_64
61+
compiler: clang++
62+
clang-version: 16
4463
python-version: "3.10"
45-
castxml: "castxml"
4664
castxml-epic: 0
4765
cppstd: "-std=c++98"
4866

49-
- os: ubuntu-20.04
50-
compiler: gcc
51-
version: "9"
67+
- os: ubuntu-24.04
68+
arch: x86_64
69+
compiler: clang++
70+
clang-version: 16
5271
python-version: "3.11"
53-
castxml: "castxml"
5472
castxml-epic: 0
5573
cppstd: "-std=c++98"
5674

57-
- os: ubuntu-20.04
58-
compiler: gcc
59-
version: "9"
60-
python-version: "3.8"
61-
castxml: "castxml"
75+
- os: ubuntu-24.04
76+
arch: x86_64
77+
compiler: clang++
78+
clang-version: 16
79+
python-version: "3.12"
80+
castxml-epic: 0
81+
cppstd: "-std=c++98"
82+
83+
- os: ubuntu-24.04
84+
arch: x86_64
85+
compiler: clang++
86+
clang-version: 16
87+
python-version: "3.13"
88+
castxml-epic: 0
89+
cppstd: "-std=c++98"
90+
91+
# UBUNTU 24.04 - CASTXML EPIC 0 - c++XX
92+
- os: ubuntu-24.04
93+
arch: x86_64
94+
compiler: clang++
95+
clang-version: 16
96+
python-version: "3.13"
97+
castxml-epic: 0
98+
cppstd: "-std=c++11"
99+
100+
- os: ubuntu-24.04
101+
arch: x86_64
102+
compiler: clang++
103+
clang-version: 16
104+
python-version: "3.13"
105+
castxml-epic: 0
106+
cppstd: "-std=c++14"
107+
108+
- os: ubuntu-24.04
109+
arch: x86_64
110+
compiler: clang++
111+
clang-version: 16
112+
python-version: "3.13"
113+
castxml-epic: 0
114+
cppstd: "-std=c++17"
115+
116+
# UBUNTU 24.04 - CASTXML EPIC 1
117+
- os: ubuntu-24.04
118+
arch: x86_64
119+
compiler: clang++
120+
clang-version: 16
121+
python-version: "3.13"
62122
castxml-epic: 1
63123
cppstd: "-std=c++98"
64124

65-
- os: ubuntu-20.04
66-
compiler: gcc
67-
version: "9"
68-
python-version: "3.8"
69-
castxml: "castxml"
125+
- os: ubuntu-24.04
126+
arch: x86_64
127+
compiler: clang++
128+
clang-version: 16
129+
python-version: "3.13"
130+
castxml-epic: 1
131+
cppstd: "-std=c++11"
132+
133+
# UBUNTU ARM
134+
- os: ubuntu-22.04-arm
135+
arch: aarch64
136+
compiler: clang++
137+
clang-version: 15
138+
python-version: "3.13"
139+
castxml-epic: 0
140+
cppstd: "-std=c++17"
141+
142+
- os: ubuntu-24.04-arm
143+
arch: aarch64
144+
compiler: clang++
145+
clang-version: 16
146+
python-version: "3.13"
147+
castxml-epic: 0
148+
cppstd: "-std=c++17"
149+
150+
# UBUNTU 24.04 - CASTXML EPIC 1
151+
- os: ubuntu-24.04-arm
152+
arch: aarch64
153+
compiler: clang++
154+
clang-version: 16
155+
python-version: "3.13"
70156
castxml-epic: 1
71157
cppstd: "-std=c++11"
72158

159+
# MACOS
73160
- os: macos-13
74-
compiler: xcode
75-
version: "default"
76-
python-version: "3.8"
77-
castxml: "castxml"
161+
compiler: clang++
162+
python-version: "3.13"
163+
castxml-epic: 0
164+
165+
- os: macos-15
166+
compiler: clang++
167+
python-version: "3.13"
78168
castxml-epic: 0
79-
cppstd: "-std=c++98"
80169

81170
steps:
82-
- uses: actions/checkout@v3
171+
- uses: actions/checkout@v4
172+
83173
- name: Set up Python ${{ matrix.python-version }}
84-
uses: actions/setup-python@v4
174+
uses: actions/setup-python@v5
85175
with:
86176
python-version: ${{ matrix.python-version }}
177+
87178
- name: Display Python version
88179
run: python -c "import sys; print(sys.version)"
180+
89181
- name: Install Python lib and test libs
90182
run: |
91183
pip install '.[test]'
184+
92185
- name: Run pycodestyle
93186
run: pycodestyle . --exclude=docs
94-
- name: Setup castxml for Linux
95-
if: matrix.os == 'ubuntu-20.04' && matrix.castxml == 'castxml'
187+
188+
- name: Write xml_generator.cfg
189+
if: contains(matrix.os, 'ubuntu')
190+
run: |
191+
echo "[xml_generator]" > tests/xml_generator.cfg
192+
echo "compiler_path=/usr/bin/${{ matrix.compiler }}-${{ matrix.clang-version }}" >> tests/xml_generator.cfg
193+
echo "ccflags=${{ matrix.cppstd }}" >> tests/xml_generator.cfg
194+
195+
# ─── Setup CastXML for Linux x86_64 ──────────────────────────────
196+
- name: Setup CastXML for Linux x86_64 (Ubuntu 24.04)
197+
if: matrix.os == 'ubuntu-24.04' && matrix.arch == 'x86_64'
198+
run: |
199+
wget -q -O ~/castxml-ubuntu-24.04-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-24.04-x86_64.tar.gz
200+
tar -xzf ~/castxml-ubuntu-24.04-x86_64.tar.gz -C ~/
201+
chmod +x ~/castxml/bin/castxml
202+
203+
- name: Setup CastXML for Linux x86_64 (Ubuntu 22.04)
204+
if: matrix.os == 'ubuntu-22.04' && matrix.arch == 'x86_64'
96205
run: |
97-
wget -q -O - https://data.kitware.com/api/v1/file/hashsum/sha512/bdbb67a10c5f8d1b738cd19cb074f409d4803e8077cb8c1072ef4eaf738fa871a73643f9c8282d58cae28d188df842c82ad6620b6d590b0396a0172a27438dce/download | tar zxf - -C ~/
98-
- name: Setup castxml for Mac
206+
wget -q -O ~/castxml-ubuntu-22.04-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-22.04-x86_64.tar.gz
207+
tar -xzf ~/castxml-ubuntu-22.04-x86_64.tar.gz -C ~/
208+
chmod +x ~/castxml/bin/castxml
209+
210+
# ─── Setup CastXML for Linux aarch64 ──────────────────────────────
211+
- name: Setup CastXML for Linux aarch64 (Ubuntu 24.04)
212+
if: matrix.os == 'ubuntu-24.04-arm' && matrix.arch == 'aarch64'
213+
run: |
214+
wget -q -O ~/castxml-ubuntu-24.04-arm-aarch64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-24.04-arm-aarch64.tar.gz
215+
tar -xzf ~/castxml-ubuntu-24.04-arm-aarch64.tar.gz -C ~/
216+
chmod +x ~/castxml/bin/castxml
217+
218+
- name: Setup CastXML for Linux aarch64 (Ubuntu 22.04)
219+
if: matrix.os == 'ubuntu-22.04-arm' && matrix.arch == 'aarch64'
220+
run: |
221+
wget -q -O ~/castxml-ubuntu-22.04-arm-aarch64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-22.04-arm-aarch64.tar.gz
222+
tar -xzf ~/castxml-ubuntu-22.04-arm-aarch64.tar.gz -C ~/
223+
chmod +x ~/castxml/bin/castxml
224+
225+
# ─── Setup CastXML for MacOS ──────────────────────────────
226+
- name: Setup CastXML for macOS (arm64)
227+
if: matrix.os == 'macos-15'
228+
run: |
229+
wget -q -O ~/castxml-macos-15-arm64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-macos-15-arm64.tar.gz
230+
tar -xzf ~/castxml-macos-15-arm64.tar.gz -C ~/
231+
chmod +x ~/castxml/bin/castxml
232+
233+
- name: Setup CastXML for macOS (x86_64)
99234
if: matrix.os == 'macos-13'
100235
run: |
101-
wget -q -O - https://data.kitware.com/api/v1/file/hashsum/sha512/5d937e938f7b882a3a3e7941e68f8312d0898aaf2082e00003dd362b1ba70b98b0a08706a1be28e71652a6a0f1e66f89768b5eaa20e5a100592d5b3deefec3f0/download | tar zxf - -C ~/
236+
wget -q -O ~/castxml-macos-13-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-macos-13-x86_64.tar.gz
237+
tar -xzf ~/castxml-macos-13-x86_64.tar.gz -C ~/
238+
chmod +x ~/castxml/bin/castxml
239+
102240
- name: Run tests
103241
run: |
104242
export PATH=~/castxml/bin:$PATH

CHANGELOG.md

+24
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,30 @@
11
Changes
22
=======
33

4+
Version 3.0.0
5+
-------------
6+
7+
1. Drop support for `Python 3.7` and `Python 3.8`
8+
9+
2. Add official support for `Python 3.12`, `Python 3.13`
10+
11+
3. Add official support for `arm` processors
12+
13+
4. Make many tests more robust for more combinations of processors / c++ standards
14+
15+
5. Update CI with newer `castxml` versions
16+
17+
5. Removed the `__va_list` declaration on `arm` from the declaration tree
18+
19+
6. Fix issues with spaces in c++ templates (containers traits)
20+
I have seen different scenarios regarding spaces in templates.
21+
On some platforms there might be spaces, on some others not.
22+
This "might" be a breaking change if you used to compare declarations manually,
23+
but from a pygccxml point of view all comparisons / search functions are still
24+
working as before.
25+
Anyway this is a 3.0.0 major version so at least you have been warned.
26+
27+
428
Version 2.6.1
529
-------------
630

README.rst

+4-8
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Install instructions can be found `here <http://pygccxml.readthedocs.io/en/maste
2727
Compatibility
2828
-------------
2929

30-
pygccxml is compatible with Python 3.7, 3.8, 3.9, 3.10, 3.11 and pypy3.
30+
pygccxml is compatible with Python 3.9, 3.10, 3.11, 3.12, 3.13 and pypy3.
3131

3232
Documentation and examples
3333
--------------------------
@@ -73,15 +73,11 @@ The stable version can be found on the master branch.
7373

7474
The develop branch contains the latest improvements but can be unstable. Pull Requests should be done on the develop branch.
7575

76-
Testing and code coverage
77-
-------------------------
78-
79-
The builds are done using the Github Actions infrastructure.
76+
Testing
77+
-------
8078

8179
Running the test suite is done with:
8280

8381
.. code-block::
8482
85-
python3 -m unittests.test_all
86-
87-
Code coverage is also available. It is automatically updated after each commit and can be found `here <https://codecov.io/gh/iMichka/pygccxml>`_.
83+
pytest tests

docs/faq.rst

+3
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ Currently this adds the support for elaborated type specifiers.
9898
\_\_va_list_tag and other hidden declarations (f1)
9999
--------------------------------------------------
100100

101+
!!! This flag has been removed from pygccxml > 2.6
102+
We will now always remove these declarations
103+
101104
When parsing with CastXML, the XML tree can contain declarations named
102105
``__va_list_tag``. If the compiler is llvm 3.9, ``__NSConstantString_tag``
103106
and ``__NSConstantString`` declarations may also be present.

pyproject.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ keywords = [
1818
"CastXML",
1919
"gccxml",
2020
]
21-
version = "2.6.1"
21+
version = "3.0.0"
2222

2323
classifiers = [
2424
"Development Status :: 5 - Production/Stable",
@@ -27,11 +27,11 @@ classifiers = [
2727
"Operating System :: MacOS :: MacOS X",
2828
"Operating System :: Microsoft :: Windows",
2929
"Operating System :: POSIX",
30-
"Programming Language :: Python :: 3.7",
31-
"Programming Language :: Python :: 3.8",
3230
"Programming Language :: Python :: 3.9",
3331
"Programming Language :: Python :: 3.10",
3432
"Programming Language :: Python :: 3.11",
33+
"Programming Language :: Python :: 3.12",
34+
"Programming Language :: Python :: 3.13",
3535
"Programming Language :: Python :: Implementation :: CPython",
3636
"Programming Language :: Python :: Implementation :: PyPy",
3737
"Topic :: Software Development",
@@ -48,7 +48,7 @@ Repository = "https://github.com/CastXML/pygccxml"
4848
Changelog = "https://github.com/CastXML/pygccxml/CHANGELOG.md"
4949

5050
[options]
51-
python_requires = ">=3.7"
51+
python_requires = ">=3.9"
5252

5353
[project.optional-dependencies]
5454
test = [

0 commit comments

Comments
 (0)