Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
types: [opened, reopened, synchronize]

env:
UV_VERSION: 0.6.17
UV_VERSION: 0.9.14
DEFAULT_PYTHON_VERSION: '3.13'

concurrency:
Expand Down Expand Up @@ -71,18 +71,22 @@ jobs:
fail-fast: false
matrix:
include:
- {python: '3.14', os: ubuntu-latest, session: tests}
- {python: '3.13', os: ubuntu-latest, session: tests}
- {python: '3.12', os: ubuntu-latest, session: tests}
- {python: '3.11', os: ubuntu-latest, session: tests}
- {python: '3.14', os: windows-latest, session: tests}
- {python: '3.13', os: windows-latest, session: tests}
- {python: '3.12', os: windows-latest, session: tests}
- {python: '3.11', os: windows-latest, session: tests}
- {python: '3.14', os: macos-latest, session: tests}
- {python: '3.13', os: macos-latest, session: tests}
- {python: '3.12', os: macos-latest, session: tests}
- {python: '3.11', os: macos-latest, session: tests}
- {python: '3.13', os: macos-13, session: tests}
- {python: '3.12', os: macos-13, session: tests}
- {python: '3.11', os: macos-13, session: tests}
- {python: '3.14', os: macos-15-intel, session: tests}
- {python: '3.13', os: macos-15-intel, session: tests}
- {python: '3.12', os: macos-15-intel, session: tests}
- {python: '3.11', os: macos-15-intel, session: tests}
- {python: '3.13', os: ubuntu-latest, session: tests-extended}

steps:
Expand Down Expand Up @@ -115,8 +119,7 @@ jobs:
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
name: coverage-data-${{ matrix.session }}-${{ matrix.os }}-${{ matrix.python
}}
name: coverage-data-${{ matrix.session }}-${{ matrix.os }}-${{ matrix.python}}
include-hidden-files: true
path: .coverage.*

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ on:
- master

env:
UV_VERSION: 0.6.17
DEFAULT_PYTHON_VERSION: '3.13'
UV_VERSION: 0.9.14
DEFAULT_PYTHON_VERSION: '3.14'

jobs:
release:
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Installation instructions for other methods and Windows can be found [here](http
`uv` can then be used to install the latest compatible version of python:

```shell
uv python install 3.13
uv python install 3.14
```

`sectionproperties` and it's development dependencies can be installed with:
Expand Down
2 changes: 1 addition & 1 deletion docs/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Installation instructions for other methods and Windows can be found

.. code:: shell

uv python install 3.13
uv python install 3.14

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

Expand Down
5 changes: 3 additions & 2 deletions docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Installation
============

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

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

To install ``sectionproperties`` with the above functionality, use the ``dxf`` and/or
``rhino`` options:
Expand Down
22 changes: 12 additions & 10 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,17 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
requires-python = ">=3.11,<3.14"
requires-python = ">=3.11"
dependencies = [
"numpy~=2.2",
"scipy~=1.14",
"matplotlib~=3.9",
"shapely~=2.0",
"cytriangle~=2.0",
"rich[jupyter]~=14.0",
"more-itertools~=10.5",
"numpy",
"scipy",
"matplotlib",
"shapely",
"cytriangle",
"rich[jupyter]",
"more-itertools",
]

[project.urls]
Expand All @@ -50,8 +51,8 @@ numba = [
"numba>=0.60.0",
]
rhino = [
"rhino3dm>=8.17.0",
"rhino-shapley-interop>=0.0.4",
"rhino3dm>=8.17.0; python_version < '3.14'",
"rhino-shapley-interop>=0.0.4; python_version < '3.14'",
]
dxf = [
"cad-to-shapely>=0.3.2",
Expand All @@ -65,6 +66,7 @@ dev = [
"ipympl==0.9.7",
"notebook==7.4.1",
"sphinx-autobuild==2024.10.03",
"pyqt6==6.10.1",
]
docs = [
"furo==2024.8.6",
Expand Down
5 changes: 5 additions & 0 deletions tests/geometry/test_geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import json
import platform
import sys
from pathlib import Path

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


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


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


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


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