diff --git a/.github/workflows/ci-black-formatting.yaml b/.github/workflows/ci-black-formatting.yaml index 283acd56bc..90a0b95431 100644 --- a/.github/workflows/ci-black-formatting.yaml +++ b/.github/workflows/ci-black-formatting.yaml @@ -14,7 +14,7 @@ jobs: - name: Action - install python uses: actions/setup-python@v6 with: - python-version: "3.9" + python-version: "3.10" - name: Action - install python uses: actions/setup-python@v6 @@ -33,7 +33,7 @@ jobs: id: syntax-errors run: | ERROR=0 - python3.9 -W error -m compileall -q src/ifcopenshell-python || ERROR=1 + python3.10 -W error -m compileall -q src/ifcopenshell-python || ERROR=1 python3.11 -W error -m compileall -q src/bonsai || ERROR=1 exit $ERROR continue-on-error: true diff --git a/nix/build-all.py b/nix/build-all.py index 3bd12885c3..0b159d1e9f 100644 --- a/nix/build-all.py +++ b/nix/build-all.py @@ -139,7 +139,7 @@ PROJECT_NAME = "IfcOpenShell" USE_CURRENT_PYTHON_VERSION = os.getenv("USE_CURRENT_PYTHON_VERSION") ADD_COMMIT_SHA = os.getenv("ADD_COMMIT_SHA") -PYTHON_VERSIONS = ["3.9.11", "3.10.3", "3.11.8", "3.12.1", "3.13.6", "3.14.0"] +PYTHON_VERSIONS = ["3.10.3", "3.11.8", "3.12.1", "3.13.6", "3.14.0"] JSON_VERSION = "3.11.3" OCE_VERSION = "0.18.3" OCCT_VERSION = "7.8.1" diff --git a/src/bsdd/pyproject.toml b/src/bsdd/pyproject.toml index 76e0e5353a..d64d667a20 100644 --- a/src/bsdd/pyproject.toml +++ b/src/bsdd/pyproject.toml @@ -10,15 +10,16 @@ authors = [ ] description = "Library to interact with the buildingSMART Data Dictionary" readme = "README.md" -requires-python = ">=3.9" +requires-python = ">=3.10" keywords = ["IFC", "bSDD", "BIM"] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst b/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst index 9ff9b917e2..8d75712f71 100644 --- a/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst +++ b/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst @@ -34,8 +34,6 @@ ZIP packages +-------------+---------------------------------+-------------------------------+---------------------------------+-----------------------------------+ | | Linux 64bit | Windows 64bit | MacOS Intel 64bit | MacOS Silicon 64bit | +=============+=================================+===============================+=================================+===================================+ - | Python 3.9 | :ios_python_url:`py39-linux64` | :ios_python_url:`py39-win64` | :ios_python_url:`py39-macos64` | :ios_python_url:`py39-macosm164` | - +-------------+---------------------------------+-------------------------------+---------------------------------+-----------------------------------+ | Python 3.10 | :ios_python_url:`py310-linux64` | :ios_python_url:`py310-win64` | :ios_python_url:`py310-macos64` | :ios_python_url:`py310-macosm164` | +-------------+---------------------------------+-------------------------------+---------------------------------+-----------------------------------+ | Python 3.11 | :ios_python_url:`py311-linux64` | :ios_python_url:`py311-win64` | :ios_python_url:`py311-macos64` | :ios_python_url:`py311-macosm164` | diff --git a/src/ifcopenshell-python/ifcopenshell/api/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/__init__.py index 0eb95b2c65..85e60be9c2 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/api/__init__.py @@ -43,7 +43,8 @@ import numpy import inspect import importlib import ifcopenshell -from typing import Callable, Any, Optional, TYPE_CHECKING +from collections.abc import Callable +from typing import Any, Optional, TYPE_CHECKING from functools import partial if TYPE_CHECKING: diff --git a/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py b/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py index 6199ddf3b7..85cd3aa646 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py +++ b/src/ifcopenshell-python/ifcopenshell/api/attribute/edit_attributes.py @@ -20,11 +20,7 @@ import sys import ifcopenshell.api.owner import ifcopenshell.util.element from typing import Any, Union - -if sys.version_info >= (3, 10): - from types import EllipsisType -else: - EllipsisType = type(...) +from types import EllipsisType def edit_attributes(file: ifcopenshell.file, product: ifcopenshell.entity_instance, attributes: dict[str, Any]) -> None: diff --git a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py index 22eb022e99..2de3352e79 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py +++ b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py @@ -27,7 +27,8 @@ import ifcopenshell.util.element import ifcopenshell.util.geolocation import ifcopenshell.util.placement import ifcopenshell.util.unit -from typing import Optional, Any, Union, Literal, get_args, Callable +from typing import Optional, Any, Union, Literal, get_args +from collections.abc import Callable from functools import partial diff --git a/src/ifcopenshell-python/ifcopenshell/util/element.py b/src/ifcopenshell-python/ifcopenshell/util/element.py index 067febd115..9421bc9760 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/element.py +++ b/src/ifcopenshell-python/ifcopenshell/util/element.py @@ -20,8 +20,8 @@ import ifcopenshell import ifcopenshell.guid import ifcopenshell.util.element import ifcopenshell.util.representation -from typing import Any, Callable, Optional, Union, Literal, overload -from collections.abc import Generator, Sequence +from typing import Any, Optional, Union, Literal, overload +from collections.abc import Callable, Generator, Sequence from collections import namedtuple diff --git a/src/ifcopenshell-python/ifcopenshell/util/mvd_info.py b/src/ifcopenshell-python/ifcopenshell/util/mvd_info.py index a4ca36039d..cae535698e 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/mvd_info.py +++ b/src/ifcopenshell-python/ifcopenshell/util/mvd_info.py @@ -26,7 +26,7 @@ try: except ImportError: LARK_AVAILABLE = False -from typing import Callable, Union +from typing import Union import re if LARK_AVAILABLE: @@ -51,9 +51,9 @@ if LARK_AVAILABLE: value: /[A-Za-z0-9 _\.-]+/ - other_keyword: /[^\[\]]+/ - - dynamic_option_word: /[^\[\]]+/ + other_keyword: /[^\[\]]+/ + + dynamic_option_word: /[^\[\]]+/ %import common.WS %ignore WS diff --git a/src/ifcopenshell-python/ifcopenshell/util/selector.py b/src/ifcopenshell-python/ifcopenshell/util/selector.py index a2ce6fb467..7b0acfef7f 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/selector.py +++ b/src/ifcopenshell-python/ifcopenshell/util/selector.py @@ -37,11 +37,7 @@ import ifcopenshell.util.unit from decimal import Decimal from typing import Optional, Any, Union from collections.abc import Iterable - -if sys.version_info >= (3, 10): - from types import EllipsisType -else: - EllipsisType = type(...) +from types import EllipsisType filter_elements_grammar = lark.Lark( diff --git a/src/ifcopenshell-python/ifcopenshell/validate.py b/src/ifcopenshell-python/ifcopenshell/validate.py index 25f9b3a685..526d1a1db7 100644 --- a/src/ifcopenshell-python/ifcopenshell/validate.py +++ b/src/ifcopenshell-python/ifcopenshell/validate.py @@ -55,11 +55,7 @@ from collections import namedtuple from typing import Union, Any, Optional, TYPE_CHECKING from collections.abc import Iterator from logging import Logger, Handler - -if sys.version_info >= (3, 10): - from types import EllipsisType -else: - EllipsisType = type(...) +from types import EllipsisType import ifcopenshell import ifcopenshell.ifcopenshell_wrapper diff --git a/src/ifcopenshell-python/pyproject.toml b/src/ifcopenshell-python/pyproject.toml index 08f8c433fc..790891e350 100644 --- a/src/ifcopenshell-python/pyproject.toml +++ b/src/ifcopenshell-python/pyproject.toml @@ -10,7 +10,7 @@ authors = [ ] description = "Python bindings, utility functions, and high-level API for IfcOpenShell" readme = "README.md" -requires-python = ">=3.9,<3.15" +requires-python = ">=3.10,<3.15" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", diff --git a/win/build-all-win.py b/win/build-all-win.py index 5c2c6ababa..087f869ac4 100644 --- a/win/build-all-win.py +++ b/win/build-all-win.py @@ -11,7 +11,7 @@ from zipfile import ZipFile assert Path.cwd() == Path(__file__).parent, "Run this script from the 'win' directory." -PYTHON_VERSIONS = ["3.9.13", "3.10.3", "3.11.8", "3.12.1", "3.13.0", "3.14.0"] +PYTHON_VERSIONS = ["3.10.3", "3.11.8", "3.12.1", "3.13.0", "3.14.0"] REPO_PATH = Path(__file__).parent.parent REPO_WIN = REPO_PATH / "win" VERSION = (REPO_PATH / "VERSION").read_text().strip()