Skip to content

Commit 20d628a

Browse files
committed
Merge branch 'main' into develop
2 parents 915b55c + bd64579 commit 20d628a

File tree

8 files changed

+74
-58
lines changed

8 files changed

+74
-58
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: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +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

2621
- name: Build wheels (manylinux)
27-
uses: pypa/cibuildwheel@v2.23.3
22+
uses: pypa/cibuildwheel@v3.0.0
2823
env:
2924
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"
30-
CIBW_BUILD: "*-manylinux_${{ matrix.wheel_arch }}"
25+
CIBW_BUILD: "*-manylinux_x86_64"
3126
CIBW_ENABLE: pypy
32-
# Skip tests for Python 3.10 onwards because SciPy does not have
33-
# 32-bit wheels for Linux.
34-
CIBW_TEST_SKIP: "cp310-manylinux_i686 cp311-manylinux_i686 cp312-manylinux_i686 cp313-manylinux_i686"
3527

3628
- name: Build wheels (musllinux)
37-
uses: pypa/cibuildwheel@v2.23.3
29+
uses: pypa/cibuildwheel@v3.0.0
3830
env:
3931
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"
40-
CIBW_BUILD: "*-musllinux_${{ matrix.wheel_arch }}"
32+
CIBW_BUILD: "*-musllinux_x86_64"
4133
CIBW_TEST_COMMAND: "cd {project} && pip install --prefer-binary '.[test-musl]' && python -m pytest -v tests"
4234

4335
- uses: actions/upload-artifact@v4
4436
with:
45-
name: wheels-linux-${{ matrix.wheel_arch }}
37+
name: wheels-linux-x86_64
4638
path: ./wheelhouse/*.whl
4739

4840
build_wheel_linux_aarch64_manylinux:
@@ -55,7 +47,7 @@ jobs:
5547
fetch-depth: 0
5648

5749
- name: Build wheels (manylinux)
58-
uses: pypa/cibuildwheel@v2.23.3
50+
uses: pypa/cibuildwheel@v3.0.0
5951
env:
6052
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"
6153
CIBW_ARCHS_LINUX: aarch64
@@ -77,7 +69,7 @@ jobs:
7769
fetch-depth: 0
7870

7971
- name: Build wheels (musllinux)
80-
uses: pypa/cibuildwheel@v2.23.3
72+
uses: pypa/cibuildwheel@v3.0.0
8173
env:
8274
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"
8375
CIBW_ARCHS_LINUX: aarch64
@@ -94,7 +86,7 @@ jobs:
9486
runs-on: macos-latest
9587
env:
9688
LLVM_VERSION: "14.0.5"
97-
MACOSX_DEPLOYMENT_TARGET: "10.9"
89+
MACOSX_DEPLOYMENT_TARGET: "10.15"
9890
strategy:
9991
matrix:
10092
include:
@@ -140,7 +132,7 @@ jobs:
140132
cmake --install .
141133
142134
- name: Build wheels
143-
uses: pypa/cibuildwheel@v2.23.3
135+
uses: pypa/cibuildwheel@v3.0.0
144136
env:
145137
CIBW_ARCHS_MACOS: "${{ matrix.wheel_arch }}"
146138
CIBW_BEFORE_BUILD: "pip install -U setuptools && python setup.py build_c_core"
@@ -202,12 +194,12 @@ jobs:
202194
- cmake_arch: Win32
203195
wheel_arch: win32
204196
vcpkg_arch: x86
205-
os: windows-2019
197+
os: windows-2022
206198
test_extra: test
207199
- cmake_arch: x64
208200
wheel_arch: win_amd64
209201
vcpkg_arch: x64
210-
os: windows-2019
202+
os: windows-2022
211203
test_extra: test
212204
- cmake_arch: ARM64
213205
wheel_arch: win_arm64
@@ -246,7 +238,7 @@ jobs:
246238
shell: cmd
247239

248240
- name: Build wheels
249-
uses: pypa/cibuildwheel@v2.23.3
241+
uses: pypa/cibuildwheel@v3.0.0
250242
env:
251243
CIBW_BEFORE_BUILD: "pip install -U setuptools && python setup.py build_c_core"
252244
CIBW_BUILD: "*-${{ matrix.wheel_arch }}"
@@ -339,21 +331,14 @@ jobs:
339331
with:
340332
python-version: "3.12"
341333

342-
- name: Install test dependencies
343-
run: |
344-
pip install --prefer-binary pytest pytest-timeout setuptools
345-
346-
- name: Build C core
347-
env:
348-
IGRAPH_USE_SANITIZERS: 1
349-
run: |
350-
python setup.py build_c_core
351-
352334
- name: Build and install Python extension
353335
env:
354336
IGRAPH_USE_SANITIZERS: 1
355337
run: |
356-
pip install .
338+
pip install --prefer-binary '.[test]'
339+
# Uninstall Matplotlib because Matplotlib-related tests cause false positives in the
340+
# leak sanitizer checks
341+
pip uninstall -y matplotlib
357342
358343
# Only pytest, and nothing else should be run in this section due to the presence of LD_PRELOAD.
359344
# The ASan/UBSan library versions need to be updated when switching to a newer Ubuntu/GCC.

CHANGELOG.md

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
## [main]
44

5+
## [0.11.9] - 2025-06-11
6+
57
### Changed
68

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

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

1215
## [0.11.8] - 2024-10-25
@@ -44,31 +47,31 @@
4447

4548
### Added
4649

47-
- Added `Graph.Hypercube()` for creating n-dimensional hypercube graphs.
50+
- Added `Graph.Hypercube()` for creating n-dimensional hypercube graphs.
4851

49-
- Added `Graph.Chung_Lu()` for sampling from the Chung-Lu model as well as
50-
several related models.
52+
- Added `Graph.Chung_Lu()` for sampling from the Chung-Lu model as well as
53+
several related models.
5154

52-
- Added `Graph.is_complete()` to test if there is a connection between all
53-
distinct pairs of vertices.
55+
- Added `Graph.is_complete()` to test if there is a connection between all
56+
distinct pairs of vertices.
5457

55-
- Added `Graph.is_clique()` to test if a set of vertices forms a clique.
58+
- Added `Graph.is_clique()` to test if a set of vertices forms a clique.
5659

57-
- Added `Graph.is_independent_vertex_set()` to test if some vertices form an
58-
independent set.
60+
- Added `Graph.is_independent_vertex_set()` to test if some vertices form an
61+
independent set.
5962

60-
- Added `Graph.mean_degree()` for a convenient way to compute the average
61-
degree of a graph.
63+
- Added `Graph.mean_degree()` for a convenient way to compute the average
64+
degree of a graph.
6265

6366
### Changed
6467

65-
- The C core of igraph was updated to version 0.10.13.
68+
- The C core of igraph was updated to version 0.10.13.
6669

67-
- `Graph.rewire()` now attempts to perform edge swaps 10 times the number of
68-
edges by default.
70+
- `Graph.rewire()` now attempts to perform edge swaps 10 times the number of
71+
edges by default.
6972

70-
- Error messages issued when an attribute is not found now mention the name
71-
and type of that attribute.
73+
- Error messages issued when an attribute is not found now mention the name
74+
and type of that attribute.
7275

7376
## [0.11.5] - 2024-05-07
7477

@@ -88,18 +91,18 @@
8891

8992
- Deprecated `PyCObject` API calls in the C code were replaced by calls to
9093
`PyCapsule`, thanks to @DavidRConnell in
91-
https://github.com/igraph/python-igraph/pull/763
94+
<https://github.com/igraph/python-igraph/pull/763>
9295

9396
- `get_shortest_path()` documentation was clarified by @JDPowell648 in
94-
https://github.com/igraph/python-igraph/pull/764
97+
<https://github.com/igraph/python-igraph/pull/764>
9598

9699
- It is now possible to link to an existing igraph C core on MSYS2, thanks to
97-
@Kreijstal in https://github.com/igraph/python-igraph/pull/770
100+
@Kreijstal in <https://github.com/igraph/python-igraph/pull/770>
98101

99102
### Fixed
100103

101104
- Bugfix in the NetworkX graph conversion code by @rmmaf in
102-
https://github.com/igraph/python-igraph/pull/767
105+
<https://github.com/igraph/python-igraph/pull/767>
103106

104107
## [0.11.4]
105108

@@ -720,11 +723,12 @@
720723
## [0.8.3]
721724

722725
This is the last released version of `python-igraph` without a changelog file.
723-
Please refer to the commit logs at https://github.com/igraph/python-igraph for
726+
Please refer to the commit logs at <https://github.com/igraph/python-igraph> for
724727
a list of changes affecting versions up to 0.8.3. Notable changes after 0.8.3
725728
are documented above.
726729

727-
[main]: https://github.com/igraph/python-igraph/compare/0.11.8...main
730+
[main]: https://github.com/igraph/python-igraph/compare/0.11.9...main
731+
[0.11.9]: https://github.com/igraph/python-igraph/compare/0.11.8...0.11.9
728732
[0.11.8]: https://github.com/igraph/python-igraph/compare/0.11.7...0.11.8
729733
[0.11.7]: https://github.com/igraph/python-igraph/compare/0.11.6...0.11.7
730734
[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

src/_igraph/edgeseqobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@ PyObject* igraphmodule_EdgeSeq_select(igraphmodule_EdgeSeqObject *self, PyObject
849849
igraph_vector_int_destroy(&v);
850850
} else {
851851
/* Iterators and everything that was not handled directly */
852-
PyObject *iter, *item2;
852+
PyObject *iter = NULL, *item2 = NULL;
853853

854854
/* Allocate stuff */
855855
if (igraph_vector_int_init(&v, 0)) {

src/_igraph/error.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,20 @@ PyObject* igraphmodule_handle_igraph_error() {
6161
void igraphmodule_igraph_warning_hook(const char *reason, const char *file,
6262
int line) {
6363
char buf[4096];
64-
snprintf(buf, sizeof(buf), "%s at %s:%i", reason, file, line);
64+
char end;
65+
size_t len = strlen(reason);
66+
const char* separator = " ";
67+
68+
if (len == 0) {
69+
separator = "";
70+
} else {
71+
end = reason[len - 1];
72+
if (end != '.' && end != '?' && end != '!') {
73+
separator = ". ";
74+
}
75+
}
76+
77+
snprintf(buf, sizeof(buf), "%s%sLocation: %s:%i", reason, separator, file, line);
6578
PY_IGRAPH_WARN(buf);
6679
}
6780

src/igraph/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version_info__ = (0, 11, 8)
1+
__version_info__ = (0, 11, 9)
22
__version__ = ".".join("{0}".format(x) for x in __version_info__)

0 commit comments

Comments
 (0)