mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Make dataclasses args optional to support Python 3.9 #6725
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from __future__ import annotations
|
||||
import sys
|
||||
import ifcopenshell.util.unit
|
||||
import ifcopenshell.api.geometry
|
||||
import dataclasses
|
||||
@@ -26,6 +27,8 @@ from ifcopenshell.api.geometry.add_window_representation import create_ifc_windo
|
||||
from math import cos, radians
|
||||
from typing import Any, Optional, Literal, Union, get_args, overload
|
||||
|
||||
DATACLASS_SLOTS = {} if sys.version_info < (3, 10) else {"slots": True}
|
||||
|
||||
|
||||
DOOR_TYPE = Literal[
|
||||
"SINGLE_SWING_LEFT",
|
||||
@@ -96,7 +99,7 @@ def create_ifc_box(
|
||||
|
||||
# we use dataclass as we need default values for arguments
|
||||
# it's okay to use slots since we don't need dynamic attributes
|
||||
@dataclasses.dataclass(slots=True)
|
||||
@dataclasses.dataclass(**DATACLASS_SLOTS)
|
||||
class DoorLiningProperties:
|
||||
LiningDepth: Optional[float] = None
|
||||
"""Optional, defaults to 50mm."""
|
||||
@@ -170,7 +173,7 @@ class DoorLiningProperties:
|
||||
setattr(self, attr, default_value * si_conversion)
|
||||
|
||||
|
||||
@dataclasses.dataclass(slots=True)
|
||||
@dataclasses.dataclass(**DATACLASS_SLOTS)
|
||||
class DoorPanelProperties:
|
||||
PanelDepth: Optional[float] = None
|
||||
"""Frame thickness by Y axis. Optional, defaults to 35 mm."""
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from __future__ import annotations
|
||||
import sys
|
||||
import numpy as np
|
||||
import dataclasses
|
||||
import ifcopenshell.api.geometry
|
||||
@@ -25,6 +26,7 @@ from itertools import chain
|
||||
from ifcopenshell.util.shape_builder import ShapeBuilder, V
|
||||
from typing import Any, Optional, Literal, Union, overload
|
||||
|
||||
DATACLASS_SLOTS = {} if sys.version_info < (3, 10) else {"slots": True}
|
||||
|
||||
# SCHEMAS describe panels setup
|
||||
# where:
|
||||
@@ -238,7 +240,7 @@ def create_ifc_window(
|
||||
|
||||
# we use dataclass as we need default values for arguments
|
||||
# it's okay to use slots since we don't need dynamic attributes
|
||||
@dataclasses.dataclass(slots=True)
|
||||
@dataclasses.dataclass(**DATACLASS_SLOTS)
|
||||
class WindowLiningProperties:
|
||||
LiningDepth: Optional[float] = None
|
||||
"""Optional, defaults to 50mm."""
|
||||
@@ -321,7 +323,7 @@ class WindowLiningProperties:
|
||||
setattr(self, attr, default_value * si_conversion)
|
||||
|
||||
|
||||
@dataclasses.dataclass(slots=True)
|
||||
@dataclasses.dataclass(**DATACLASS_SLOTS)
|
||||
class WindowPanelProperties:
|
||||
FrameDepth: Optional[float] = None
|
||||
"""Frame thickness by Y axis. Optional, defaults to 35 mm."""
|
||||
|
||||
Reference in New Issue
Block a user