Drop Python 3.9 support as it reached EOL

This commit is contained in:
Andrej730
2025-12-19 18:01:05 +05:00
parent eba4405310
commit 4db9d60a97
13 changed files with 21 additions and 32 deletions
+2 -2
View File
@@ -14,7 +14,7 @@ jobs:
- name: Action - install python - name: Action - install python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
with: with:
python-version: "3.9" python-version: "3.10"
- name: Action - install python - name: Action - install python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
@@ -33,7 +33,7 @@ jobs:
id: syntax-errors id: syntax-errors
run: | run: |
ERROR=0 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 python3.11 -W error -m compileall -q src/bonsai || ERROR=1
exit $ERROR exit $ERROR
continue-on-error: true continue-on-error: true
+1 -1
View File
@@ -139,7 +139,7 @@ PROJECT_NAME = "IfcOpenShell"
USE_CURRENT_PYTHON_VERSION = os.getenv("USE_CURRENT_PYTHON_VERSION") USE_CURRENT_PYTHON_VERSION = os.getenv("USE_CURRENT_PYTHON_VERSION")
ADD_COMMIT_SHA = os.getenv("ADD_COMMIT_SHA") 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" JSON_VERSION = "3.11.3"
OCE_VERSION = "0.18.3" OCE_VERSION = "0.18.3"
OCCT_VERSION = "7.8.1" OCCT_VERSION = "7.8.1"
+3 -2
View File
@@ -10,15 +10,16 @@ authors = [
] ]
description = "Library to interact with the buildingSMART Data Dictionary" description = "Library to interact with the buildingSMART Data Dictionary"
readme = "README.md" readme = "README.md"
requires-python = ">=3.9" requires-python = ">=3.10"
keywords = ["IFC", "bSDD", "BIM"] keywords = ["IFC", "bSDD", "BIM"]
classifiers = [ classifiers = [
"Development Status :: 4 - Beta", "Development Status :: 4 - Beta",
"Programming Language :: Python", "Programming Language :: Python",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy", "Programming Language :: Python :: Implementation :: PyPy",
"License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)",
@@ -34,8 +34,6 @@ ZIP packages
+-------------+---------------------------------+-------------------------------+---------------------------------+-----------------------------------+ +-------------+---------------------------------+-------------------------------+---------------------------------+-----------------------------------+
| | Linux 64bit | Windows 64bit | MacOS Intel 64bit | MacOS Silicon 64bit | | | 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.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` | | Python 3.11 | :ios_python_url:`py311-linux64` | :ios_python_url:`py311-win64` | :ios_python_url:`py311-macos64` | :ios_python_url:`py311-macosm164` |
@@ -43,7 +43,8 @@ import numpy
import inspect import inspect
import importlib import importlib
import ifcopenshell 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 from functools import partial
if TYPE_CHECKING: if TYPE_CHECKING:
@@ -20,11 +20,7 @@ import sys
import ifcopenshell.api.owner import ifcopenshell.api.owner
import ifcopenshell.util.element import ifcopenshell.util.element
from typing import Any, Union from typing import Any, Union
from types import EllipsisType
if sys.version_info >= (3, 10):
from types import EllipsisType
else:
EllipsisType = type(...)
def edit_attributes(file: ifcopenshell.file, product: ifcopenshell.entity_instance, attributes: dict[str, Any]) -> None: def edit_attributes(file: ifcopenshell.file, product: ifcopenshell.entity_instance, attributes: dict[str, Any]) -> None:
@@ -27,7 +27,8 @@ import ifcopenshell.util.element
import ifcopenshell.util.geolocation import ifcopenshell.util.geolocation
import ifcopenshell.util.placement import ifcopenshell.util.placement
import ifcopenshell.util.unit 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 from functools import partial
@@ -20,8 +20,8 @@ import ifcopenshell
import ifcopenshell.guid import ifcopenshell.guid
import ifcopenshell.util.element import ifcopenshell.util.element
import ifcopenshell.util.representation import ifcopenshell.util.representation
from typing import Any, Callable, Optional, Union, Literal, overload from typing import Any, Optional, Union, Literal, overload
from collections.abc import Generator, Sequence from collections.abc import Callable, Generator, Sequence
from collections import namedtuple from collections import namedtuple
@@ -26,7 +26,7 @@ try:
except ImportError: except ImportError:
LARK_AVAILABLE = False LARK_AVAILABLE = False
from typing import Callable, Union from typing import Union
import re import re
if LARK_AVAILABLE: if LARK_AVAILABLE:
@@ -51,9 +51,9 @@ if LARK_AVAILABLE:
value: /[A-Za-z0-9 _\.-]+/ value: /[A-Za-z0-9 _\.-]+/
other_keyword: /[^\[\]]+/ other_keyword: /[^\[\]]+/
dynamic_option_word: /[^\[\]]+/ dynamic_option_word: /[^\[\]]+/
%import common.WS %import common.WS
%ignore WS %ignore WS
@@ -37,11 +37,7 @@ import ifcopenshell.util.unit
from decimal import Decimal from decimal import Decimal
from typing import Optional, Any, Union from typing import Optional, Any, Union
from collections.abc import Iterable from collections.abc import Iterable
from types import EllipsisType
if sys.version_info >= (3, 10):
from types import EllipsisType
else:
EllipsisType = type(...)
filter_elements_grammar = lark.Lark( filter_elements_grammar = lark.Lark(
@@ -55,11 +55,7 @@ from collections import namedtuple
from typing import Union, Any, Optional, TYPE_CHECKING from typing import Union, Any, Optional, TYPE_CHECKING
from collections.abc import Iterator from collections.abc import Iterator
from logging import Logger, Handler from logging import Logger, Handler
from types import EllipsisType
if sys.version_info >= (3, 10):
from types import EllipsisType
else:
EllipsisType = type(...)
import ifcopenshell import ifcopenshell
import ifcopenshell.ifcopenshell_wrapper import ifcopenshell.ifcopenshell_wrapper
+1 -1
View File
@@ -10,7 +10,7 @@ authors = [
] ]
description = "Python bindings, utility functions, and high-level API for IfcOpenShell" description = "Python bindings, utility functions, and high-level API for IfcOpenShell"
readme = "README.md" readme = "README.md"
requires-python = ">=3.9,<3.15" requires-python = ">=3.10,<3.15"
classifiers = [ classifiers = [
"Programming Language :: Python :: 3", "Programming Language :: Python :: 3",
"License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)",
+1 -1
View File
@@ -11,7 +11,7 @@ from zipfile import ZipFile
assert Path.cwd() == Path(__file__).parent, "Run this script from the 'win' directory." 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_PATH = Path(__file__).parent.parent
REPO_WIN = REPO_PATH / "win" REPO_WIN = REPO_PATH / "win"
VERSION = (REPO_PATH / "VERSION").read_text().strip() VERSION = (REPO_PATH / "VERSION").read_text().strip()