Skip to content

Commit 417813a

Browse files
authored
Merge branch 'main' into main
2 parents b6b07e9 + a1b9099 commit 417813a

28 files changed

+408
-177
lines changed

.all-contributorsrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,15 @@
630630
"contributions": [
631631
"code"
632632
]
633+
},
634+
{
635+
"login": "BeaMarton13",
636+
"name": "Bea Márton",
637+
"avatar_url": "https://avatars.githubusercontent.com/u/204701577?v=4",
638+
"profile": "https://github.com/BeaMarton13",
639+
"contributions": [
640+
"code"
641+
]
633642
}
634643
],
635644
"contributorsPerLine": 7

.github/workflows/build.yml

Lines changed: 38 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -5,49 +5,36 @@ on: [push, pull_request]
55
env:
66
CIBW_ENVIRONMENT_PASS_LINUX: PYTEST_TIMEOUT
77
CIBW_TEST_COMMAND: "cd {project} && pip install --prefer-binary '.[test]' && python -m pytest -v tests"
8-
CIBW_SKIP: "cp36-* cp37-* cp38-* pp37-* pp38-*"
8+
CIBW_SKIP: "cp38-* pp38-*"
99
PYTEST_TIMEOUT: 60
1010

1111
jobs:
1212
build_wheel_linux:
13-
name: Build wheels on Linux (${{ matrix.wheel_arch }})
13+
name: Build wheels on Linux (x86_64)
1414
runs-on: ubuntu-22.04
15-
strategy:
16-
fail-fast: false
17-
matrix:
18-
wheel_arch: [x86_64, i686]
19-
2015
steps:
2116
- uses: actions/checkout@v4
2217
with:
2318
submodules: true
2419
fetch-depth: 0
2520

26-
- uses: actions/setup-python@v5
27-
name: Install Python
28-
with:
29-
python-version: '3.9'
30-
3121
- name: Build wheels (manylinux)
32-
uses: pypa/cibuildwheel@v2.23.1
22+
uses: pypa/cibuildwheel@v3.0.1
3323
env:
3424
CIBW_BEFORE_BUILD: "yum install -y flex bison libxml2-devel zlib-devel cairo-devel && pip install -U cmake pip setuptools wheel && python setup.py build_c_core"
35-
CIBW_BUILD: "*-manylinux_${{ matrix.wheel_arch }}"
25+
CIBW_BUILD: "*-manylinux_x86_64"
3626
CIBW_ENABLE: pypy
37-
# Skip tests for Python 3.10 onwards because SciPy does not have
38-
# 32-bit wheels for Linux.
39-
CIBW_TEST_SKIP: "cp310-manylinux_i686 cp311-manylinux_i686 cp312-manylinux_i686 cp313-manylinux_i686"
4027

4128
- name: Build wheels (musllinux)
42-
uses: pypa/cibuildwheel@v2.23.1
29+
uses: pypa/cibuildwheel@v3.0.1
4330
env:
4431
CIBW_BEFORE_BUILD: "apk add flex bison libxml2-dev zlib-dev cairo-dev && pip install -U cmake pip setuptools wheel && python setup.py build_c_core"
45-
CIBW_BUILD: "*-musllinux_${{ matrix.wheel_arch }}"
32+
CIBW_BUILD: "*-musllinux_x86_64"
4633
CIBW_TEST_COMMAND: "cd {project} && pip install --prefer-binary '.[test-musl]' && python -m pytest -v tests"
4734

4835
- uses: actions/upload-artifact@v4
4936
with:
50-
name: wheels-linux-${{ matrix.wheel_arch }}
37+
name: wheels-linux-x86_64
5138
path: ./wheelhouse/*.whl
5239

5340
build_wheel_linux_aarch64_manylinux:
@@ -60,7 +47,7 @@ jobs:
6047
fetch-depth: 0
6148

6249
- name: Build wheels (manylinux)
63-
uses: pypa/cibuildwheel@v2.23.1
50+
uses: pypa/cibuildwheel@v3.0.1
6451
env:
6552
CIBW_BEFORE_BUILD: "yum install -y flex bison libxml2-devel zlib-devel cairo-devel && pip install -U cmake pip setuptools wheel && python setup.py build_c_core"
6653
CIBW_ARCHS_LINUX: aarch64
@@ -82,7 +69,7 @@ jobs:
8269
fetch-depth: 0
8370

8471
- name: Build wheels (musllinux)
85-
uses: pypa/cibuildwheel@v2.23.1
72+
uses: pypa/cibuildwheel@v3.0.1
8673
env:
8774
CIBW_BEFORE_BUILD: "apk add flex bison libxml2-dev zlib-dev cairo-dev && pip install -U cmake pip setuptools wheel && python setup.py build_c_core"
8875
CIBW_ARCHS_LINUX: aarch64
@@ -99,7 +86,7 @@ jobs:
9986
runs-on: macos-latest
10087
env:
10188
LLVM_VERSION: "14.0.5"
102-
MACOSX_DEPLOYMENT_TARGET: "10.9"
89+
MACOSX_DEPLOYMENT_TARGET: "10.15"
10390
strategy:
10491
matrix:
10592
include:
@@ -129,15 +116,9 @@ jobs:
129116
path: ~/local
130117
key: deps-cache-v2-${{ runner.os }}-${{ matrix.cmake_arch }}-llvm${{ env.LLVM_VERSION }}
131118

132-
- uses: actions/setup-python@v5
133-
name: Install Python
134-
with:
135-
python-version: '3.9'
136-
137119
- name: Install OS dependencies
138120
if: steps.cache-c-core.outputs.cache-hit != 'true' || steps.cache-c-deps.outputs.cache-hit != 'true' # Only needed when building the C core or libomp
139-
run:
140-
brew install ninja autoconf automake libtool
121+
run: brew install ninja autoconf automake libtool
141122

142123
- name: Install OpenMP library
143124
if: steps.cache-c-deps.outputs.cache-hit != 'true'
@@ -151,7 +132,7 @@ jobs:
151132
cmake --install .
152133
153134
- name: Build wheels
154-
uses: pypa/cibuildwheel@v2.23.1
135+
uses: pypa/cibuildwheel@v3.0.1
155136
env:
156137
CIBW_ARCHS_MACOS: "${{ matrix.wheel_arch }}"
157138
CIBW_BEFORE_BUILD: "pip install -U setuptools && python setup.py build_c_core"
@@ -177,16 +158,15 @@ jobs:
177158
- uses: actions/setup-python@v5
178159
name: Install Python
179160
with:
180-
python-version: '3.12.1'
161+
python-version: "3.12.1"
181162

182163
- name: Install OS dependencies
183-
run:
184-
sudo apt install ninja-build cmake flex bison
164+
run: sudo apt install ninja-build cmake flex bison
185165

186166
- uses: mymindstorm/setup-emsdk@v14
187167
with:
188-
version: '3.1.58'
189-
actions-cache-folder: 'emsdk-cache'
168+
version: "3.1.58"
169+
actions-cache-folder: "emsdk-cache"
190170

191171
- name: Build wheel
192172
run: |
@@ -208,28 +188,32 @@ jobs:
208188

209189
build_wheel_win:
210190
name: Build wheels on Windows (${{ matrix.cmake_arch }})
211-
runs-on: windows-2019
212191
strategy:
213192
matrix:
214193
include:
215194
- cmake_arch: Win32
216195
wheel_arch: win32
217196
vcpkg_arch: x86
197+
os: windows-2022
198+
test_extra: test
218199
- cmake_arch: x64
219200
wheel_arch: win_amd64
220201
vcpkg_arch: x64
202+
os: windows-2022
203+
test_extra: test
204+
- cmake_arch: ARM64
205+
wheel_arch: win_arm64
206+
vcpkg_arch: arm64
207+
os: windows-11-arm
208+
test_extra: test-win-arm64
209+
runs-on: ${{ matrix.os }}
221210

222211
steps:
223212
- uses: actions/checkout@v4
224213
with:
225214
submodules: true
226215
fetch-depth: 0
227216

228-
- uses: actions/setup-python@v5
229-
name: Install Python
230-
with:
231-
python-version: '3.9'
232-
233217
- name: Cache installed C core
234218
id: cache-c-core
235219
uses: actions/cache@v4
@@ -250,18 +234,18 @@ jobs:
250234
- name: Install VCPKG libraries
251235
run: |
252236
%VCPKG_INSTALLATION_ROOT%\vcpkg.exe integrate install
253-
%VCPKG_INSTALLATION_ROOT%\vcpkg.exe install libxml2:${{ matrix.vcpkg_arch }}-windows-static-md
237+
%VCPKG_INSTALLATION_ROOT%\vcpkg.exe install liblzma:${{ matrix.vcpkg_arch }}-windows-static-md libxml2:${{ matrix.vcpkg_arch }}-windows-static-md
254238
shell: cmd
255239

256240
- name: Build wheels
257-
uses: pypa/cibuildwheel@v2.23.1
241+
uses: pypa/cibuildwheel@v3.0.1
258242
env:
259243
CIBW_BEFORE_BUILD: "pip install -U setuptools && python setup.py build_c_core"
260244
CIBW_BUILD: "*-${{ matrix.wheel_arch }}"
261245
CIBW_ENABLE: pypy
262-
CIBW_TEST_COMMAND: "cd /d {project} && pip install --prefer-binary \".[test]\" && python -m pytest tests"
246+
CIBW_TEST_COMMAND: 'cd /d {project} && pip install --prefer-binary ".[${{ matrix.test_extra }}]" && python -m pytest tests'
263247
# Skip tests for Python 3.10 onwards because SciPy does not have
264-
# 32-bit wheels for Linux.
248+
# 32-bit wheels for Windows any more
265249
CIBW_TEST_SKIP: "cp310-win32 cp311-win32 cp312-win32 cp313-win32"
266250
IGRAPH_CMAKE_EXTRA_ARGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_arch }}-windows-static-md -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -A ${{ matrix.cmake_arch }}
267251
IGRAPH_EXTRA_LIBRARY_PATH: C:/vcpkg/installed/${{ matrix.vcpkg_arch }}-windows-static-md/lib/
@@ -293,13 +277,12 @@ jobs:
293277

294278
- name: Install OS dependencies
295279
if: steps.cache-c-core.outputs.cache-hit != 'true' # Only needed when building the C core
296-
run:
297-
sudo apt install ninja-build cmake flex bison
280+
run: sudo apt install ninja-build cmake flex bison
298281

299282
- uses: actions/setup-python@v5
300283
name: Install Python
301284
with:
302-
python-version: '3.9'
285+
python-version: "3.9"
303286

304287
- name: Build sdist
305288
run: |
@@ -341,30 +324,21 @@ jobs:
341324

342325
- name: Install OS dependencies
343326
if: steps.cache-c-core.outputs.cache-hit != 'true' # Only needed when building the C core
344-
run:
345-
sudo apt install ninja-build cmake flex bison
327+
run: sudo apt install ninja-build cmake flex bison
346328

347329
- uses: actions/setup-python@v5
348330
name: Install Python
349331
with:
350-
python-version: '3.12'
351-
352-
- name: Install test dependencies
353-
run: |
354-
pip install --prefer-binary pytest pytest-timeout setuptools
355-
356-
- name: Build C core
357-
env:
358-
IGRAPH_USE_SANITIZERS: 1
359-
run: |
360-
python setup.py build_c_core
332+
python-version: "3.12"
361333

362334
- name: Build and install Python extension
363335
env:
364336
IGRAPH_USE_SANITIZERS: 1
365337
run: |
366-
# NOTE: install calls "build" first
367-
python setup.py install
338+
# We cannot install the test dependency group because many test dependencies cause
339+
# false positives in the sanitizer
340+
pip install --prefer-binary networkx pytest pytest-timeout
341+
pip install -e .
368342
369343
# Only pytest, and nothing else should be run in this section due to the presence of LD_PRELOAD.
370344
# The ASan/UBSan library versions need to be updated when switching to a newer Ubuntu/GCC.

CHANGELOG.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
# igraph Python interface changelog
22

3-
## [main]
3+
## [0.11.9] - 2025-06-11
44

55
### Changed
66

77
- Dropped support for Python 3.8 as it has now reached its end of life.
88

9-
- The C core of igraph was updated to version 0.10.15.
9+
- The C core of igraph was updated to version 0.10.16.
10+
11+
- Added `Graph.simple_cycles()` to find simple cycles in the graph.
1012

1113
## [0.11.8] - 2024-10-25
1214

@@ -43,30 +45,30 @@
4345

4446
### Added
4547

46-
- Added `Graph.Hypercube()` for creating n-dimensional hypercube graphs.
48+
- Added `Graph.Hypercube()` for creating n-dimensional hypercube graphs.
4749

48-
- Added `Graph.Chung_Lu()` for sampling from the Chung-Lu model as well as
50+
- Added `Graph.Chung_Lu()` for sampling from the Chung-Lu model as well as
4951
several related models.
5052

51-
- Added `Graph.is_complete()` to test if there is a connection between all
53+
- Added `Graph.is_complete()` to test if there is a connection between all
5254
distinct pairs of vertices.
5355

54-
- Added `Graph.is_clique()` to test if a set of vertices forms a clique.
56+
- Added `Graph.is_clique()` to test if a set of vertices forms a clique.
5557

56-
- Added `Graph.is_independent_vertex_set()` to test if some vertices form an
58+
- Added `Graph.is_independent_vertex_set()` to test if some vertices form an
5759
independent set.
5860

59-
- Added `Graph.mean_degree()` for a convenient way to compute the average
61+
- Added `Graph.mean_degree()` for a convenient way to compute the average
6062
degree of a graph.
6163

6264
### Changed
6365

64-
- The C core of igraph was updated to version 0.10.13.
66+
- The C core of igraph was updated to version 0.10.13.
6567

66-
- `Graph.rewire()` now attempts to perform edge swaps 10 times the number of
68+
- `Graph.rewire()` now attempts to perform edge swaps 10 times the number of
6769
edges by default.
6870

69-
- Error messages issued when an attribute is not found now mention the name
71+
- Error messages issued when an attribute is not found now mention the name
7072
and type of that attribute.
7173

7274
## [0.11.5] - 2024-05-07
@@ -87,18 +89,18 @@
8789

8890
- Deprecated `PyCObject` API calls in the C code were replaced by calls to
8991
`PyCapsule`, thanks to @DavidRConnell in
90-
https://github.com/igraph/python-igraph/pull/763
92+
<https://github.com/igraph/python-igraph/pull/763>
9193

9294
- `get_shortest_path()` documentation was clarified by @JDPowell648 in
93-
https://github.com/igraph/python-igraph/pull/764
95+
<https://github.com/igraph/python-igraph/pull/764>
9496

9597
- It is now possible to link to an existing igraph C core on MSYS2, thanks to
96-
@Kreijstal in https://github.com/igraph/python-igraph/pull/770
98+
@Kreijstal in <https://github.com/igraph/python-igraph/pull/770>
9799

98100
### Fixed
99101

100102
- Bugfix in the NetworkX graph conversion code by @rmmaf in
101-
https://github.com/igraph/python-igraph/pull/767
103+
<https://github.com/igraph/python-igraph/pull/767>
102104

103105
## [0.11.4]
104106

@@ -719,11 +721,11 @@
719721
## [0.8.3]
720722

721723
This is the last released version of `python-igraph` without a changelog file.
722-
Please refer to the commit logs at https://github.com/igraph/python-igraph for
724+
Please refer to the commit logs at <https://github.com/igraph/python-igraph> for
723725
a list of changes affecting versions up to 0.8.3. Notable changes after 0.8.3
724726
are documented above.
725727

726-
[main]: https://github.com/igraph/python-igraph/compare/0.11.8...main
728+
[0.11.9]: https://github.com/igraph/python-igraph/compare/0.11.8...0.11.9
727729
[0.11.8]: https://github.com/igraph/python-igraph/compare/0.11.7...0.11.8
728730
[0.11.7]: https://github.com/igraph/python-igraph/compare/0.11.6...0.11.7
729731
[0.11.6]: https://github.com/igraph/python-igraph/compare/0.11.5...0.11.6

CONTRIBUTORS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
9595
<td align="center" valign="top" width="14.28%"><a href="https://github.com/m1-s"><img src="https://avatars.githubusercontent.com/u/94642227?v=4?s=100" width="100px;" alt="Michael Schneider"/><br /><sub><b>Michael Schneider</b></sub></a><br /><a href="https://github.com/igraph/python-igraph/commits?author=m1-s" title="Code">💻</a></td>
9696
<td align="center" valign="top" width="14.28%"><a href="http://thomaskrijnen.com/"><img src="https://avatars.githubusercontent.com/u/1096535?v=4?s=100" width="100px;" alt="Thomas Krijnen"/><br /><sub><b>Thomas Krijnen</b></sub></a><br /><a href="https://github.com/igraph/python-igraph/commits?author=aothms" title="Code">💻</a></td>
9797
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GenieTim"><img src="https://avatars.githubusercontent.com/u/8596965?v=4?s=100" width="100px;" alt="Tim Bernhard"/><br /><sub><b>Tim Bernhard</b></sub></a><br /><a href="https://github.com/igraph/python-igraph/commits?author=GenieTim" title="Code">💻</a></td>
98+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/BeaMarton13"><img src="https://avatars.githubusercontent.com/u/204701577?v=4?s=100" width="100px;" alt="Bea Márton"/><br /><sub><b>Bea Márton</b></sub></a><br /><a href="https://github.com/igraph/python-igraph/commits?author=BeaMarton13" title="Code">💻</a></td>
9899
</tr>
99100
</tbody>
100101
</table>

MANIFEST.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ include scripts/*.sh
88
include scripts/*.py
99
include tests/*.py
1010

11+
include CHANGELOG.md
12+
include CONTRIBUTORS.md
13+
include CITATION.cff
14+
1115
graft vendor/source/igraph
1216

1317
graft doc

doc/examples_sphinx-gallery/cluster_contraction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
# %%
1414
# We begin by load the graph from file. The file containing this network can be
15-
# downloaded `here <http://www-personal.umich.edu/~mejn/netdata/>`_.
15+
# downloaded `here <https://www-personal.umich.edu/~mejn/netdata/>`_.
1616
g = ig.load("./lesmis/lesmis.gml")
1717

1818
# %%

0 commit comments

Comments
 (0)