diff --git a/src/bcf/bcf/v2/model/extensions.py b/src/bcf/bcf/v2/model/extensions.py index fb25a47c64..14a3015ccd 100644 --- a/src/bcf/bcf/v2/model/extensions.py +++ b/src/bcf/bcf/v2/model/extensions.py @@ -14,11 +14,15 @@ # Currently extensions support for v2 is only read-only. +import sys from dataclasses import dataclass, field, fields from typing import List, NamedTuple, Optional -@dataclass(slots=True, kw_only=True) +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} + + +@dataclass(**DATACLASS_KWARGS) class ExtensionsPriorities: class Meta: global_type = False @@ -35,7 +39,7 @@ class ExtensionsPriorities: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsSnippetTypes: class Meta: global_type = False @@ -52,7 +56,7 @@ class ExtensionsSnippetTypes: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsStages: class Meta: global_type = False @@ -69,7 +73,7 @@ class ExtensionsStages: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsTopicLabels: class Meta: global_type = False @@ -86,7 +90,7 @@ class ExtensionsTopicLabels: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsTopicStatuses: class Meta: global_type = False @@ -103,7 +107,7 @@ class ExtensionsTopicStatuses: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsTopicTypes: class Meta: global_type = False @@ -120,7 +124,7 @@ class ExtensionsTopicTypes: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsUsers: class Meta: global_type = False @@ -137,7 +141,7 @@ class ExtensionsUsers: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Extensions: topic_types: Optional[ExtensionsTopicTypes] = field( default=None, diff --git a/src/bcf/bcf/v2/model/markup.py b/src/bcf/bcf/v2/model/markup.py index 0b8fd987aa..5c825e4edd 100644 --- a/src/bcf/bcf/v2/model/markup.py +++ b/src/bcf/bcf/v2/model/markup.py @@ -1,10 +1,13 @@ +import sys from dataclasses import dataclass, field from typing import List, Optional from xsdata.models.datatype import XmlDateTime +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class BimSnippet: reference: str = field( metadata={ @@ -38,7 +41,7 @@ class BimSnippet: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class CommentViewpoint: class Meta: global_type = False @@ -53,7 +56,7 @@ class CommentViewpoint: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class HeaderFile: class Meta: global_type = False @@ -109,7 +112,7 @@ class HeaderFile: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicDocumentReference: class Meta: global_type = False @@ -147,7 +150,7 @@ class TopicDocumentReference: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicRelatedTopic: class Meta: global_type = False @@ -162,7 +165,7 @@ class TopicRelatedTopic: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ViewPoint: viewpoint: Optional[str] = field( default=None, @@ -198,7 +201,7 @@ class ViewPoint: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Comment: date: XmlDateTime = field( metadata={ @@ -258,7 +261,7 @@ class Comment: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Header: file: List[HeaderFile] = field( default_factory=list, @@ -271,7 +274,7 @@ class Header: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Topic: reference_link: List[str] = field( default_factory=list, @@ -425,7 +428,7 @@ class Topic: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Markup: header: Optional[Header] = field( default=None, diff --git a/src/bcf/bcf/v2/model/project.py b/src/bcf/bcf/v2/model/project.py index e86fb9b009..a27afb7cd6 100644 --- a/src/bcf/bcf/v2/model/project.py +++ b/src/bcf/bcf/v2/model/project.py @@ -1,8 +1,11 @@ +import sys from dataclasses import dataclass, field from typing import Optional +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class Project: name: Optional[str] = field( default=None, @@ -21,7 +24,7 @@ class Project: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ProjectExtension: project: Optional[Project] = field( default=None, diff --git a/src/bcf/bcf/v2/model/version.py b/src/bcf/bcf/v2/model/version.py index 9f55ad5bf9..ea9331bc36 100644 --- a/src/bcf/bcf/v2/model/version.py +++ b/src/bcf/bcf/v2/model/version.py @@ -1,8 +1,11 @@ +import sys from dataclasses import dataclass, field from typing import Optional +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class Version: detailed_version: Optional[str] = field( default=None, diff --git a/src/bcf/bcf/v2/model/visinfo.py b/src/bcf/bcf/v2/model/visinfo.py index e1f13d3a37..d056fa0fa4 100644 --- a/src/bcf/bcf/v2/model/visinfo.py +++ b/src/bcf/bcf/v2/model/visinfo.py @@ -1,14 +1,17 @@ +import sys from dataclasses import dataclass, field from enum import Enum from typing import List, Optional +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} + class BitmapFormat(Enum): PNG = "PNG" JPG = "JPG" -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Component: originating_system: Optional[str] = field( default=None, @@ -35,7 +38,7 @@ class Component: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Direction: x: float = field( metadata={ @@ -60,7 +63,7 @@ class Direction: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Point: x: float = field( metadata={ @@ -85,7 +88,7 @@ class Point: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ViewSetupHints: spaces_visible: Optional[bool] = field( default=None, @@ -110,7 +113,7 @@ class ViewSetupHints: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ClippingPlane: location: Point = field( metadata={ @@ -128,7 +131,7 @@ class ClippingPlane: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentColoringColor: class Meta: global_type = False @@ -151,7 +154,7 @@ class ComponentColoringColor: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentSelection: component: List[Component] = field( default_factory=list, @@ -163,7 +166,7 @@ class ComponentSelection: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentVisibilityExceptions: class Meta: global_type = False @@ -178,7 +181,7 @@ class ComponentVisibilityExceptions: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Line: start_point: Point = field( metadata={ @@ -196,7 +199,7 @@ class Line: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class OrthogonalCamera: """ Attributes @@ -236,7 +239,7 @@ class OrthogonalCamera: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class PerspectiveCamera: """ Attributes @@ -281,7 +284,7 @@ class PerspectiveCamera: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfoBitmap: class Meta: global_type = False @@ -330,7 +333,7 @@ class VisualizationInfoBitmap: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentColoring: color: List[ComponentColoringColor] = field( default_factory=list, @@ -342,7 +345,7 @@ class ComponentColoring: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentVisibility: exceptions: Optional[ComponentVisibilityExceptions] = field( default=None, @@ -360,7 +363,7 @@ class ComponentVisibility: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfoClippingPlanes: class Meta: global_type = False @@ -374,7 +377,7 @@ class VisualizationInfoClippingPlanes: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfoLines: class Meta: global_type = False @@ -389,7 +392,7 @@ class VisualizationInfoLines: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Components: view_setup_hints: Optional[ViewSetupHints] = field( default=None, @@ -421,7 +424,7 @@ class Components: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfo: """ VisualizationInfo documentation. diff --git a/src/bcf/bcf/v3/model/documents.py b/src/bcf/bcf/v3/model/documents.py index 1b18758d0e..c26f2cabdf 100644 --- a/src/bcf/bcf/v3/model/documents.py +++ b/src/bcf/bcf/v3/model/documents.py @@ -1,8 +1,11 @@ +import sys from dataclasses import dataclass, field from typing import List, Optional +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class Document: filename: str = field( metadata={ @@ -34,7 +37,7 @@ class Document: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class DocumentInfoDocuments: class Meta: global_type = False @@ -49,7 +52,7 @@ class DocumentInfoDocuments: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class DocumentInfo: documents: Optional[DocumentInfoDocuments] = field( default=None, diff --git a/src/bcf/bcf/v3/model/extensions.py b/src/bcf/bcf/v3/model/extensions.py index c9c47495ce..cff426e1a6 100644 --- a/src/bcf/bcf/v3/model/extensions.py +++ b/src/bcf/bcf/v3/model/extensions.py @@ -1,8 +1,11 @@ +import sys from dataclasses import dataclass, field from typing import List, Optional +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class ExtensionsPriorities: class Meta: global_type = False @@ -19,7 +22,7 @@ class ExtensionsPriorities: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsSnippetTypes: class Meta: global_type = False @@ -36,7 +39,7 @@ class ExtensionsSnippetTypes: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsStages: class Meta: global_type = False @@ -53,7 +56,7 @@ class ExtensionsStages: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsTopicLabels: class Meta: global_type = False @@ -70,7 +73,7 @@ class ExtensionsTopicLabels: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsTopicStatuses: class Meta: global_type = False @@ -87,7 +90,7 @@ class ExtensionsTopicStatuses: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsTopicTypes: class Meta: global_type = False @@ -104,7 +107,7 @@ class ExtensionsTopicTypes: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ExtensionsUsers: class Meta: global_type = False @@ -121,7 +124,7 @@ class ExtensionsUsers: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Extensions: topic_types: Optional[ExtensionsTopicTypes] = field( default=None, diff --git a/src/bcf/bcf/v3/model/markup.py b/src/bcf/bcf/v3/model/markup.py index 4121b04abe..7e5bb91da4 100644 --- a/src/bcf/bcf/v3/model/markup.py +++ b/src/bcf/bcf/v3/model/markup.py @@ -1,10 +1,13 @@ +import sys from dataclasses import dataclass, field from typing import List, Optional from xsdata.models.datatype import XmlDateTime +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class BimSnippet: reference: str = field( metadata={ @@ -44,7 +47,7 @@ class BimSnippet: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class CommentViewpoint: class Meta: global_type = False @@ -59,7 +62,7 @@ class CommentViewpoint: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class DocumentReference: document_guid: Optional[str] = field( default=None, @@ -100,7 +103,7 @@ class DocumentReference: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class File: filename: Optional[str] = field( default=None, @@ -157,7 +160,7 @@ class File: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicLabels: class Meta: global_type = False @@ -174,7 +177,7 @@ class TopicLabels: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicReferenceLinks: class Meta: global_type = False @@ -191,7 +194,7 @@ class TopicReferenceLinks: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicRelatedTopicsRelatedTopic: class Meta: global_type = False @@ -206,7 +209,7 @@ class TopicRelatedTopicsRelatedTopic: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ViewPoint: viewpoint: Optional[str] = field( default=None, @@ -246,7 +249,7 @@ class ViewPoint: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Comment: date: XmlDateTime = field( metadata={ @@ -312,7 +315,7 @@ class Comment: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class HeaderFiles: class Meta: global_type = False @@ -327,7 +330,7 @@ class HeaderFiles: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicDocumentReferences: class Meta: global_type = False @@ -342,7 +345,7 @@ class TopicDocumentReferences: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicRelatedTopics: class Meta: global_type = False @@ -357,7 +360,7 @@ class TopicRelatedTopics: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicViewpoints: class Meta: global_type = False @@ -372,7 +375,7 @@ class TopicViewpoints: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Header: files: Optional[HeaderFiles] = field( default=None, @@ -384,7 +387,7 @@ class Header: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class TopicComments: class Meta: global_type = False @@ -399,7 +402,7 @@ class TopicComments: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Topic: reference_links: Optional[TopicReferenceLinks] = field( default=None, @@ -596,7 +599,7 @@ class Topic: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Markup: header: Optional[Header] = field( default=None, diff --git a/src/bcf/bcf/v3/model/project.py b/src/bcf/bcf/v3/model/project.py index 76a6922925..ff07fa2c08 100644 --- a/src/bcf/bcf/v3/model/project.py +++ b/src/bcf/bcf/v3/model/project.py @@ -1,8 +1,11 @@ +import sys from dataclasses import dataclass, field from typing import Optional +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class Project: name: Optional[str] = field( default=None, @@ -25,7 +28,7 @@ class Project: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ProjectInfo: project: Project = field( metadata={ diff --git a/src/bcf/bcf/v3/model/version.py b/src/bcf/bcf/v3/model/version.py index f3a44d2ab3..dd8cc713e3 100644 --- a/src/bcf/bcf/v3/model/version.py +++ b/src/bcf/bcf/v3/model/version.py @@ -1,7 +1,10 @@ +import sys from dataclasses import dataclass, field +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} -@dataclass(slots=True, kw_only=True) + +@dataclass(**DATACLASS_KWARGS) class Version: version_id: str = field( metadata={ diff --git a/src/bcf/bcf/v3/model/visinfo.py b/src/bcf/bcf/v3/model/visinfo.py index 1a1dcb72c5..b43a09f5fd 100644 --- a/src/bcf/bcf/v3/model/visinfo.py +++ b/src/bcf/bcf/v3/model/visinfo.py @@ -1,14 +1,18 @@ +import sys from dataclasses import dataclass, field from enum import Enum from typing import List, Optional +DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True} + + class BitmapFormat(Enum): PNG = "png" JPG = "jpg" -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Component: originating_system: Optional[str] = field( default=None, @@ -39,7 +43,7 @@ class Component: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Direction: x: float = field( metadata={ @@ -64,7 +68,7 @@ class Direction: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Point: x: float = field( metadata={ @@ -89,7 +93,7 @@ class Point: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ViewSetupHints: spaces_visible: bool = field( default=False, @@ -114,7 +118,7 @@ class ViewSetupHints: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Bitmap: format: BitmapFormat = field( metadata={ @@ -162,7 +166,7 @@ class Bitmap: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ClippingPlane: location: Point = field( metadata={ @@ -180,7 +184,7 @@ class ClippingPlane: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentColoringColorComponents: class Meta: global_type = False @@ -195,7 +199,7 @@ class ComponentColoringColorComponents: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentSelection: component: List[Component] = field( default_factory=list, @@ -206,7 +210,7 @@ class ComponentSelection: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentVisibilityExceptions: class Meta: global_type = False @@ -220,7 +224,7 @@ class ComponentVisibilityExceptions: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Line: start_point: Point = field( metadata={ @@ -238,7 +242,7 @@ class Line: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class OrthogonalCamera: """ Attributes @@ -288,7 +292,7 @@ class OrthogonalCamera: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class PerspectiveCamera: """ Attributes @@ -344,7 +348,7 @@ class PerspectiveCamera: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentColoringColor: class Meta: global_type = False @@ -366,7 +370,7 @@ class ComponentColoringColor: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentVisibility: view_setup_hints: Optional[ViewSetupHints] = field( default=None, @@ -391,7 +395,7 @@ class ComponentVisibility: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfoBitmaps: class Meta: global_type = False @@ -405,7 +409,7 @@ class VisualizationInfoBitmaps: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfoClippingPlanes: class Meta: global_type = False @@ -419,7 +423,7 @@ class VisualizationInfoClippingPlanes: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfoLines: class Meta: global_type = False @@ -433,7 +437,7 @@ class VisualizationInfoLines: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class ComponentColoring: color: List[ComponentColoringColor] = field( default_factory=list, @@ -444,7 +448,7 @@ class ComponentColoring: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class Components: selection: Optional[ComponentSelection] = field( default=None, @@ -469,7 +473,7 @@ class Components: ) -@dataclass(slots=True, kw_only=True) +@dataclass(**DATACLASS_KWARGS) class VisualizationInfo: """ VisualizationInfo documentation. diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_door_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_door_representation.py index fc60a25bbc..d91b7b0327 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_door_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_door_representation.py @@ -17,6 +17,7 @@ # along with IfcOpenShell. If not, see . 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.""" diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_window_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_window_representation.py index d1ef540ab0..6a1e487506 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_window_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_window_representation.py @@ -17,6 +17,7 @@ # along with IfcOpenShell. If not, see . 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."""