Skip to content

Commit 7306edd

Browse files
Merge pull request #573 from robbievanleeuwen/dependencies/python3.14
Dependencies/python3.14
2 parents 5896d0e + 1f8aa29 commit 7306edd

File tree

9 files changed

+1823
-1344
lines changed

9 files changed

+1823
-1344
lines changed

.github/workflows/ci.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
types: [opened, reopened, synchronize]
99

1010
env:
11-
UV_VERSION: 0.6.17
11+
UV_VERSION: 0.9.14
1212
DEFAULT_PYTHON_VERSION: '3.13'
1313

1414
concurrency:
@@ -71,18 +71,22 @@ jobs:
7171
fail-fast: false
7272
matrix:
7373
include:
74+
- {python: '3.14', os: ubuntu-latest, session: tests}
7475
- {python: '3.13', os: ubuntu-latest, session: tests}
7576
- {python: '3.12', os: ubuntu-latest, session: tests}
7677
- {python: '3.11', os: ubuntu-latest, session: tests}
78+
- {python: '3.14', os: windows-latest, session: tests}
7779
- {python: '3.13', os: windows-latest, session: tests}
7880
- {python: '3.12', os: windows-latest, session: tests}
7981
- {python: '3.11', os: windows-latest, session: tests}
82+
- {python: '3.14', os: macos-latest, session: tests}
8083
- {python: '3.13', os: macos-latest, session: tests}
8184
- {python: '3.12', os: macos-latest, session: tests}
8285
- {python: '3.11', os: macos-latest, session: tests}
83-
- {python: '3.13', os: macos-13, session: tests}
84-
- {python: '3.12', os: macos-13, session: tests}
85-
- {python: '3.11', os: macos-13, session: tests}
86+
- {python: '3.14', os: macos-15-intel, session: tests}
87+
- {python: '3.13', os: macos-15-intel, session: tests}
88+
- {python: '3.12', os: macos-15-intel, session: tests}
89+
- {python: '3.11', os: macos-15-intel, session: tests}
8690
- {python: '3.13', os: ubuntu-latest, session: tests-extended}
8791

8892
steps:
@@ -115,8 +119,7 @@ jobs:
115119
- name: Upload coverage data
116120
uses: actions/upload-artifact@v4
117121
with:
118-
name: coverage-data-${{ matrix.session }}-${{ matrix.os }}-${{ matrix.python
119-
}}
122+
name: coverage-data-${{ matrix.session }}-${{ matrix.os }}-${{ matrix.python}}
120123
include-hidden-files: true
121124
path: .coverage.*
122125

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ on:
66
- master
77

88
env:
9-
UV_VERSION: 0.6.17
10-
DEFAULT_PYTHON_VERSION: '3.13'
9+
UV_VERSION: 0.9.14
10+
DEFAULT_PYTHON_VERSION: '3.14'
1111

1212
jobs:
1313
release:

.python-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.13
1+
3.14

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Installation instructions for other methods and Windows can be found [here](http
4545
`uv` can then be used to install the latest compatible version of python:
4646

4747
```shell
48-
uv python install 3.13
48+
uv python install 3.14
4949
```
5050

5151
`sectionproperties` and it's development dependencies can be installed with:

docs/contributing.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Installation instructions for other methods and Windows can be found
5555

5656
.. code:: shell
5757
58-
uv python install 3.13
58+
uv python install 3.14
5959
6060
``sectionproperties`` and it's development dependencies can be installed with:
6161

docs/installation.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Installation
44
============
55

66
These instructions will get you a copy of ``sectionproperties`` up and running on your
7-
machine. You will need a working copy of python 3.11, 3.12 or 3.13 to get started.
7+
machine. You will need a working copy of python 3.11, 3.12, 3.13, or 3.14 to get started.
88

99
Installing ``sectionproperties``
1010
--------------------------------
@@ -61,7 +61,8 @@ included by default in the base installation.
6161
`cad-to-shapely <https://github.com/aegis1980/cad-to-shapely>`_ is used to import
6262
``.dxf`` files, while
6363
`rhino-shapely-interop <https://github.com/normanrichardson/rhino_shapely_interop>`_ is
64-
used to import ``.3dm`` files.
64+
used to import ``.3dm`` files. Note that the ``rhino`` dependencies are not yet
65+
supported for python 3.14 and so can only be installed for 3.13 and lower.
6566

6667
To install ``sectionproperties`` with the above functionality, use the ``dxf`` and/or
6768
``rhino`` options:

pyproject.toml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,17 @@ classifiers = [
2626
"Programming Language :: Python :: 3.11",
2727
"Programming Language :: Python :: 3.12",
2828
"Programming Language :: Python :: 3.13",
29+
"Programming Language :: Python :: 3.14",
2930
]
30-
requires-python = ">=3.11,<3.14"
31+
requires-python = ">=3.11"
3132
dependencies = [
32-
"numpy~=2.2",
33-
"scipy~=1.14",
34-
"matplotlib~=3.9",
35-
"shapely~=2.0",
36-
"cytriangle~=2.0",
37-
"rich[jupyter]~=14.0",
38-
"more-itertools~=10.5",
33+
"numpy",
34+
"scipy",
35+
"matplotlib",
36+
"shapely",
37+
"cytriangle",
38+
"rich[jupyter]",
39+
"more-itertools",
3940
]
4041

4142
[project.urls]
@@ -50,8 +51,8 @@ numba = [
5051
"numba>=0.60.0",
5152
]
5253
rhino = [
53-
"rhino3dm>=8.17.0",
54-
"rhino-shapley-interop>=0.0.4",
54+
"rhino3dm>=8.17.0; python_version < '3.14'",
55+
"rhino-shapley-interop>=0.0.4; python_version < '3.14'",
5556
]
5657
dxf = [
5758
"cad-to-shapely>=0.3.2",
@@ -65,6 +66,7 @@ dev = [
6566
"ipympl==0.9.7",
6667
"notebook==7.4.1",
6768
"sphinx-autobuild==2024.10.03",
69+
"pyqt6==6.10.1",
6870
]
6971
docs = [
7072
"furo==2024.8.6",

tests/geometry/test_geometry.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import json
66
import platform
7+
import sys
78
from pathlib import Path
89

910
import pytest
@@ -489,6 +490,7 @@ def test_geometry_from_dxf():
489490
assert sp_geom.Geometry.from_dxf(section_holes_dxf).geom.wkt == poly
490491

491492

493+
@pytest.mark.skipif(sys.version_info >= (3, 14), reason="Rhino not support for 3.14")
492494
def test_geometry_from_3dm_file_simple():
493495
"""Tests loading geometry from a simple .3dm file."""
494496
section = Path(__file__).parent.absolute() / "3in x 2in.3dm"
@@ -497,6 +499,7 @@ def test_geometry_from_3dm_file_simple():
497499
assert (test.geom - exp).is_empty
498500

499501

502+
@pytest.mark.skipif(sys.version_info >= (3, 14), reason="Rhino not support for 3.14")
500503
def test_geometry_from_3dm_file_complex():
501504
"""Tests loading geometry from a complex .3dm file."""
502505
section_3dm = Path(__file__).parent.absolute() / "complex_shape.3dm"
@@ -508,6 +511,7 @@ def test_geometry_from_3dm_file_complex():
508511
assert (test.geom - exp).is_empty
509512

510513

514+
@pytest.mark.skipif(sys.version_info >= (3, 14), reason="Rhino not support for 3.14")
511515
def test_geometry_from_3dm_file_compound():
512516
"""Tests loading compound geometry from a .3dm file."""
513517
section_3dm = Path(__file__).parent.absolute() / "compound_shape.3dm"
@@ -519,6 +523,7 @@ def test_geometry_from_3dm_file_compound():
519523
assert (MultiPolygon([ii.geom for ii in test.geoms]) - MultiPolygon(exp)).is_empty
520524

521525

526+
@pytest.mark.skipif(sys.version_info >= (3, 14), reason="Rhino not support for 3.14")
522527
def test_geometry_from_3dm_encode():
523528
"""Tests loading compound geometry from a .json file."""
524529
section_3dm = Path(__file__).parent.absolute() / "rhino_data.json"

0 commit comments

Comments
 (0)