Make dataclasses args optional to support Python 3.9 #6725

This commit is contained in:
Andrej
2025-05-30 12:25:00 +05:00
parent 3d77fc7c7d
commit ad7473ff1f
13 changed files with 134 additions and 94 deletions
+12 -8
View File
@@ -14,11 +14,15 @@
# Currently extensions support for v2 is only read-only. # Currently extensions support for v2 is only read-only.
import sys
from dataclasses import dataclass, field, fields from dataclasses import dataclass, field, fields
from typing import List, NamedTuple, Optional 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 ExtensionsPriorities:
class Meta: class Meta:
global_type = False global_type = False
@@ -35,7 +39,7 @@ class ExtensionsPriorities:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsSnippetTypes: class ExtensionsSnippetTypes:
class Meta: class Meta:
global_type = False global_type = False
@@ -52,7 +56,7 @@ class ExtensionsSnippetTypes:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsStages: class ExtensionsStages:
class Meta: class Meta:
global_type = False global_type = False
@@ -69,7 +73,7 @@ class ExtensionsStages:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsTopicLabels: class ExtensionsTopicLabels:
class Meta: class Meta:
global_type = False global_type = False
@@ -86,7 +90,7 @@ class ExtensionsTopicLabels:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsTopicStatuses: class ExtensionsTopicStatuses:
class Meta: class Meta:
global_type = False global_type = False
@@ -103,7 +107,7 @@ class ExtensionsTopicStatuses:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsTopicTypes: class ExtensionsTopicTypes:
class Meta: class Meta:
global_type = False global_type = False
@@ -120,7 +124,7 @@ class ExtensionsTopicTypes:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsUsers: class ExtensionsUsers:
class Meta: class Meta:
global_type = False global_type = False
@@ -137,7 +141,7 @@ class ExtensionsUsers:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Extensions: class Extensions:
topic_types: Optional[ExtensionsTopicTypes] = field( topic_types: Optional[ExtensionsTopicTypes] = field(
default=None, default=None,
+13 -10
View File
@@ -1,10 +1,13 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import List, Optional from typing import List, Optional
from xsdata.models.datatype import XmlDateTime 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: class BimSnippet:
reference: str = field( reference: str = field(
metadata={ metadata={
@@ -38,7 +41,7 @@ class BimSnippet:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class CommentViewpoint: class CommentViewpoint:
class Meta: class Meta:
global_type = False global_type = False
@@ -53,7 +56,7 @@ class CommentViewpoint:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class HeaderFile: class HeaderFile:
class Meta: class Meta:
global_type = False global_type = False
@@ -109,7 +112,7 @@ class HeaderFile:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicDocumentReference: class TopicDocumentReference:
class Meta: class Meta:
global_type = False global_type = False
@@ -147,7 +150,7 @@ class TopicDocumentReference:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicRelatedTopic: class TopicRelatedTopic:
class Meta: class Meta:
global_type = False global_type = False
@@ -162,7 +165,7 @@ class TopicRelatedTopic:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ViewPoint: class ViewPoint:
viewpoint: Optional[str] = field( viewpoint: Optional[str] = field(
default=None, default=None,
@@ -198,7 +201,7 @@ class ViewPoint:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Comment: class Comment:
date: XmlDateTime = field( date: XmlDateTime = field(
metadata={ metadata={
@@ -258,7 +261,7 @@ class Comment:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Header: class Header:
file: List[HeaderFile] = field( file: List[HeaderFile] = field(
default_factory=list, default_factory=list,
@@ -271,7 +274,7 @@ class Header:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Topic: class Topic:
reference_link: List[str] = field( reference_link: List[str] = field(
default_factory=list, default_factory=list,
@@ -425,7 +428,7 @@ class Topic:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Markup: class Markup:
header: Optional[Header] = field( header: Optional[Header] = field(
default=None, default=None,
+5 -2
View File
@@ -1,8 +1,11 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Optional 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: class Project:
name: Optional[str] = field( name: Optional[str] = field(
default=None, default=None,
@@ -21,7 +24,7 @@ class Project:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ProjectExtension: class ProjectExtension:
project: Optional[Project] = field( project: Optional[Project] = field(
default=None, default=None,
+4 -1
View File
@@ -1,8 +1,11 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Optional 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: class Version:
detailed_version: Optional[str] = field( detailed_version: Optional[str] = field(
default=None, default=None,
+21 -18
View File
@@ -1,14 +1,17 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from enum import Enum from enum import Enum
from typing import List, Optional from typing import List, Optional
DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True}
class BitmapFormat(Enum): class BitmapFormat(Enum):
PNG = "PNG" PNG = "PNG"
JPG = "JPG" JPG = "JPG"
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Component: class Component:
originating_system: Optional[str] = field( originating_system: Optional[str] = field(
default=None, default=None,
@@ -35,7 +38,7 @@ class Component:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Direction: class Direction:
x: float = field( x: float = field(
metadata={ metadata={
@@ -60,7 +63,7 @@ class Direction:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Point: class Point:
x: float = field( x: float = field(
metadata={ metadata={
@@ -85,7 +88,7 @@ class Point:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ViewSetupHints: class ViewSetupHints:
spaces_visible: Optional[bool] = field( spaces_visible: Optional[bool] = field(
default=None, default=None,
@@ -110,7 +113,7 @@ class ViewSetupHints:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ClippingPlane: class ClippingPlane:
location: Point = field( location: Point = field(
metadata={ metadata={
@@ -128,7 +131,7 @@ class ClippingPlane:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentColoringColor: class ComponentColoringColor:
class Meta: class Meta:
global_type = False global_type = False
@@ -151,7 +154,7 @@ class ComponentColoringColor:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentSelection: class ComponentSelection:
component: List[Component] = field( component: List[Component] = field(
default_factory=list, default_factory=list,
@@ -163,7 +166,7 @@ class ComponentSelection:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentVisibilityExceptions: class ComponentVisibilityExceptions:
class Meta: class Meta:
global_type = False global_type = False
@@ -178,7 +181,7 @@ class ComponentVisibilityExceptions:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Line: class Line:
start_point: Point = field( start_point: Point = field(
metadata={ metadata={
@@ -196,7 +199,7 @@ class Line:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class OrthogonalCamera: class OrthogonalCamera:
""" """
Attributes Attributes
@@ -236,7 +239,7 @@ class OrthogonalCamera:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class PerspectiveCamera: class PerspectiveCamera:
""" """
Attributes Attributes
@@ -281,7 +284,7 @@ class PerspectiveCamera:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfoBitmap: class VisualizationInfoBitmap:
class Meta: class Meta:
global_type = False global_type = False
@@ -330,7 +333,7 @@ class VisualizationInfoBitmap:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentColoring: class ComponentColoring:
color: List[ComponentColoringColor] = field( color: List[ComponentColoringColor] = field(
default_factory=list, default_factory=list,
@@ -342,7 +345,7 @@ class ComponentColoring:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentVisibility: class ComponentVisibility:
exceptions: Optional[ComponentVisibilityExceptions] = field( exceptions: Optional[ComponentVisibilityExceptions] = field(
default=None, default=None,
@@ -360,7 +363,7 @@ class ComponentVisibility:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfoClippingPlanes: class VisualizationInfoClippingPlanes:
class Meta: class Meta:
global_type = False global_type = False
@@ -374,7 +377,7 @@ class VisualizationInfoClippingPlanes:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfoLines: class VisualizationInfoLines:
class Meta: class Meta:
global_type = False global_type = False
@@ -389,7 +392,7 @@ class VisualizationInfoLines:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Components: class Components:
view_setup_hints: Optional[ViewSetupHints] = field( view_setup_hints: Optional[ViewSetupHints] = field(
default=None, default=None,
@@ -421,7 +424,7 @@ class Components:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfo: class VisualizationInfo:
""" """
VisualizationInfo documentation. VisualizationInfo documentation.
+6 -3
View File
@@ -1,8 +1,11 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import List, Optional 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: class Document:
filename: str = field( filename: str = field(
metadata={ metadata={
@@ -34,7 +37,7 @@ class Document:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class DocumentInfoDocuments: class DocumentInfoDocuments:
class Meta: class Meta:
global_type = False global_type = False
@@ -49,7 +52,7 @@ class DocumentInfoDocuments:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class DocumentInfo: class DocumentInfo:
documents: Optional[DocumentInfoDocuments] = field( documents: Optional[DocumentInfoDocuments] = field(
default=None, default=None,
+11 -8
View File
@@ -1,8 +1,11 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import List, Optional 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 ExtensionsPriorities:
class Meta: class Meta:
global_type = False global_type = False
@@ -19,7 +22,7 @@ class ExtensionsPriorities:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsSnippetTypes: class ExtensionsSnippetTypes:
class Meta: class Meta:
global_type = False global_type = False
@@ -36,7 +39,7 @@ class ExtensionsSnippetTypes:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsStages: class ExtensionsStages:
class Meta: class Meta:
global_type = False global_type = False
@@ -53,7 +56,7 @@ class ExtensionsStages:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsTopicLabels: class ExtensionsTopicLabels:
class Meta: class Meta:
global_type = False global_type = False
@@ -70,7 +73,7 @@ class ExtensionsTopicLabels:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsTopicStatuses: class ExtensionsTopicStatuses:
class Meta: class Meta:
global_type = False global_type = False
@@ -87,7 +90,7 @@ class ExtensionsTopicStatuses:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsTopicTypes: class ExtensionsTopicTypes:
class Meta: class Meta:
global_type = False global_type = False
@@ -104,7 +107,7 @@ class ExtensionsTopicTypes:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ExtensionsUsers: class ExtensionsUsers:
class Meta: class Meta:
global_type = False global_type = False
@@ -121,7 +124,7 @@ class ExtensionsUsers:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Extensions: class Extensions:
topic_types: Optional[ExtensionsTopicTypes] = field( topic_types: Optional[ExtensionsTopicTypes] = field(
default=None, default=None,
+20 -17
View File
@@ -1,10 +1,13 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import List, Optional from typing import List, Optional
from xsdata.models.datatype import XmlDateTime 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: class BimSnippet:
reference: str = field( reference: str = field(
metadata={ metadata={
@@ -44,7 +47,7 @@ class BimSnippet:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class CommentViewpoint: class CommentViewpoint:
class Meta: class Meta:
global_type = False global_type = False
@@ -59,7 +62,7 @@ class CommentViewpoint:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class DocumentReference: class DocumentReference:
document_guid: Optional[str] = field( document_guid: Optional[str] = field(
default=None, default=None,
@@ -100,7 +103,7 @@ class DocumentReference:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class File: class File:
filename: Optional[str] = field( filename: Optional[str] = field(
default=None, default=None,
@@ -157,7 +160,7 @@ class File:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicLabels: class TopicLabels:
class Meta: class Meta:
global_type = False global_type = False
@@ -174,7 +177,7 @@ class TopicLabels:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicReferenceLinks: class TopicReferenceLinks:
class Meta: class Meta:
global_type = False global_type = False
@@ -191,7 +194,7 @@ class TopicReferenceLinks:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicRelatedTopicsRelatedTopic: class TopicRelatedTopicsRelatedTopic:
class Meta: class Meta:
global_type = False global_type = False
@@ -206,7 +209,7 @@ class TopicRelatedTopicsRelatedTopic:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ViewPoint: class ViewPoint:
viewpoint: Optional[str] = field( viewpoint: Optional[str] = field(
default=None, default=None,
@@ -246,7 +249,7 @@ class ViewPoint:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Comment: class Comment:
date: XmlDateTime = field( date: XmlDateTime = field(
metadata={ metadata={
@@ -312,7 +315,7 @@ class Comment:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class HeaderFiles: class HeaderFiles:
class Meta: class Meta:
global_type = False global_type = False
@@ -327,7 +330,7 @@ class HeaderFiles:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicDocumentReferences: class TopicDocumentReferences:
class Meta: class Meta:
global_type = False global_type = False
@@ -342,7 +345,7 @@ class TopicDocumentReferences:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicRelatedTopics: class TopicRelatedTopics:
class Meta: class Meta:
global_type = False global_type = False
@@ -357,7 +360,7 @@ class TopicRelatedTopics:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicViewpoints: class TopicViewpoints:
class Meta: class Meta:
global_type = False global_type = False
@@ -372,7 +375,7 @@ class TopicViewpoints:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Header: class Header:
files: Optional[HeaderFiles] = field( files: Optional[HeaderFiles] = field(
default=None, default=None,
@@ -384,7 +387,7 @@ class Header:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class TopicComments: class TopicComments:
class Meta: class Meta:
global_type = False global_type = False
@@ -399,7 +402,7 @@ class TopicComments:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Topic: class Topic:
reference_links: Optional[TopicReferenceLinks] = field( reference_links: Optional[TopicReferenceLinks] = field(
default=None, default=None,
@@ -596,7 +599,7 @@ class Topic:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Markup: class Markup:
header: Optional[Header] = field( header: Optional[Header] = field(
default=None, default=None,
+5 -2
View File
@@ -1,8 +1,11 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Optional 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: class Project:
name: Optional[str] = field( name: Optional[str] = field(
default=None, default=None,
@@ -25,7 +28,7 @@ class Project:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ProjectInfo: class ProjectInfo:
project: Project = field( project: Project = field(
metadata={ metadata={
+4 -1
View File
@@ -1,7 +1,10 @@
import sys
from dataclasses import dataclass, field 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: class Version:
version_id: str = field( version_id: str = field(
metadata={ metadata={
+24 -20
View File
@@ -1,14 +1,18 @@
import sys
from dataclasses import dataclass, field from dataclasses import dataclass, field
from enum import Enum from enum import Enum
from typing import List, Optional from typing import List, Optional
DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True}
class BitmapFormat(Enum): class BitmapFormat(Enum):
PNG = "png" PNG = "png"
JPG = "jpg" JPG = "jpg"
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Component: class Component:
originating_system: Optional[str] = field( originating_system: Optional[str] = field(
default=None, default=None,
@@ -39,7 +43,7 @@ class Component:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Direction: class Direction:
x: float = field( x: float = field(
metadata={ metadata={
@@ -64,7 +68,7 @@ class Direction:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Point: class Point:
x: float = field( x: float = field(
metadata={ metadata={
@@ -89,7 +93,7 @@ class Point:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ViewSetupHints: class ViewSetupHints:
spaces_visible: bool = field( spaces_visible: bool = field(
default=False, default=False,
@@ -114,7 +118,7 @@ class ViewSetupHints:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Bitmap: class Bitmap:
format: BitmapFormat = field( format: BitmapFormat = field(
metadata={ metadata={
@@ -162,7 +166,7 @@ class Bitmap:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ClippingPlane: class ClippingPlane:
location: Point = field( location: Point = field(
metadata={ metadata={
@@ -180,7 +184,7 @@ class ClippingPlane:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentColoringColorComponents: class ComponentColoringColorComponents:
class Meta: class Meta:
global_type = False global_type = False
@@ -195,7 +199,7 @@ class ComponentColoringColorComponents:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentSelection: class ComponentSelection:
component: List[Component] = field( component: List[Component] = field(
default_factory=list, default_factory=list,
@@ -206,7 +210,7 @@ class ComponentSelection:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentVisibilityExceptions: class ComponentVisibilityExceptions:
class Meta: class Meta:
global_type = False global_type = False
@@ -220,7 +224,7 @@ class ComponentVisibilityExceptions:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Line: class Line:
start_point: Point = field( start_point: Point = field(
metadata={ metadata={
@@ -238,7 +242,7 @@ class Line:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class OrthogonalCamera: class OrthogonalCamera:
""" """
Attributes Attributes
@@ -288,7 +292,7 @@ class OrthogonalCamera:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class PerspectiveCamera: class PerspectiveCamera:
""" """
Attributes Attributes
@@ -344,7 +348,7 @@ class PerspectiveCamera:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentColoringColor: class ComponentColoringColor:
class Meta: class Meta:
global_type = False global_type = False
@@ -366,7 +370,7 @@ class ComponentColoringColor:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentVisibility: class ComponentVisibility:
view_setup_hints: Optional[ViewSetupHints] = field( view_setup_hints: Optional[ViewSetupHints] = field(
default=None, default=None,
@@ -391,7 +395,7 @@ class ComponentVisibility:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfoBitmaps: class VisualizationInfoBitmaps:
class Meta: class Meta:
global_type = False global_type = False
@@ -405,7 +409,7 @@ class VisualizationInfoBitmaps:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfoClippingPlanes: class VisualizationInfoClippingPlanes:
class Meta: class Meta:
global_type = False global_type = False
@@ -419,7 +423,7 @@ class VisualizationInfoClippingPlanes:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfoLines: class VisualizationInfoLines:
class Meta: class Meta:
global_type = False global_type = False
@@ -433,7 +437,7 @@ class VisualizationInfoLines:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class ComponentColoring: class ComponentColoring:
color: List[ComponentColoringColor] = field( color: List[ComponentColoringColor] = field(
default_factory=list, default_factory=list,
@@ -444,7 +448,7 @@ class ComponentColoring:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class Components: class Components:
selection: Optional[ComponentSelection] = field( selection: Optional[ComponentSelection] = field(
default=None, default=None,
@@ -469,7 +473,7 @@ class Components:
) )
@dataclass(slots=True, kw_only=True) @dataclass(**DATACLASS_KWARGS)
class VisualizationInfo: class VisualizationInfo:
""" """
VisualizationInfo documentation. VisualizationInfo documentation.
@@ -17,6 +17,7 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>. # along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
from __future__ import annotations from __future__ import annotations
import sys
import ifcopenshell.util.unit import ifcopenshell.util.unit
import ifcopenshell.api.geometry import ifcopenshell.api.geometry
import dataclasses import dataclasses
@@ -26,6 +27,8 @@ from ifcopenshell.api.geometry.add_window_representation import create_ifc_windo
from math import cos, radians from math import cos, radians
from typing import Any, Optional, Literal, Union, get_args, overload from typing import Any, Optional, Literal, Union, get_args, overload
DATACLASS_SLOTS = {} if sys.version_info < (3, 10) else {"slots": True}
DOOR_TYPE = Literal[ DOOR_TYPE = Literal[
"SINGLE_SWING_LEFT", "SINGLE_SWING_LEFT",
@@ -96,7 +99,7 @@ def create_ifc_box(
# we use dataclass as we need default values for arguments # we use dataclass as we need default values for arguments
# it's okay to use slots since we don't need dynamic attributes # it's okay to use slots since we don't need dynamic attributes
@dataclasses.dataclass(slots=True) @dataclasses.dataclass(**DATACLASS_SLOTS)
class DoorLiningProperties: class DoorLiningProperties:
LiningDepth: Optional[float] = None LiningDepth: Optional[float] = None
"""Optional, defaults to 50mm.""" """Optional, defaults to 50mm."""
@@ -170,7 +173,7 @@ class DoorLiningProperties:
setattr(self, attr, default_value * si_conversion) setattr(self, attr, default_value * si_conversion)
@dataclasses.dataclass(slots=True) @dataclasses.dataclass(**DATACLASS_SLOTS)
class DoorPanelProperties: class DoorPanelProperties:
PanelDepth: Optional[float] = None PanelDepth: Optional[float] = None
"""Frame thickness by Y axis. Optional, defaults to 35 mm.""" """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/>. # along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
from __future__ import annotations from __future__ import annotations
import sys
import numpy as np import numpy as np
import dataclasses import dataclasses
import ifcopenshell.api.geometry import ifcopenshell.api.geometry
@@ -25,6 +26,7 @@ from itertools import chain
from ifcopenshell.util.shape_builder import ShapeBuilder, V from ifcopenshell.util.shape_builder import ShapeBuilder, V
from typing import Any, Optional, Literal, Union, overload from typing import Any, Optional, Literal, Union, overload
DATACLASS_SLOTS = {} if sys.version_info < (3, 10) else {"slots": True}
# SCHEMAS describe panels setup # SCHEMAS describe panels setup
# where: # where:
@@ -238,7 +240,7 @@ def create_ifc_window(
# we use dataclass as we need default values for arguments # we use dataclass as we need default values for arguments
# it's okay to use slots since we don't need dynamic attributes # it's okay to use slots since we don't need dynamic attributes
@dataclasses.dataclass(slots=True) @dataclasses.dataclass(**DATACLASS_SLOTS)
class WindowLiningProperties: class WindowLiningProperties:
LiningDepth: Optional[float] = None LiningDepth: Optional[float] = None
"""Optional, defaults to 50mm.""" """Optional, defaults to 50mm."""
@@ -321,7 +323,7 @@ class WindowLiningProperties:
setattr(self, attr, default_value * si_conversion) setattr(self, attr, default_value * si_conversion)
@dataclasses.dataclass(slots=True) @dataclasses.dataclass(**DATACLASS_SLOTS)
class WindowPanelProperties: class WindowPanelProperties:
FrameDepth: Optional[float] = None FrameDepth: Optional[float] = None
"""Frame thickness by Y axis. Optional, defaults to 35 mm.""" """Frame thickness by Y axis. Optional, defaults to 35 mm."""