Skip to content

Commit ad7473f

Browse files
committed
Make dataclasses args optional to support Python 3.9 #6725
1 parent 3d77fc7 commit ad7473f

13 files changed

Lines changed: 134 additions & 94 deletions

File tree

src/bcf/bcf/v2/model/extensions.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@
1414
# Currently extensions support for v2 is only read-only.
1515

1616

17+
import sys
1718
from dataclasses import dataclass, field, fields
1819
from typing import List, NamedTuple, Optional
1920

2021

21-
@dataclass(slots=True, kw_only=True)
22+
DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True}
23+
24+
25+
@dataclass(**DATACLASS_KWARGS)
2226
class ExtensionsPriorities:
2327
class Meta:
2428
global_type = False
@@ -35,7 +39,7 @@ class Meta:
3539
)
3640

3741

38-
@dataclass(slots=True, kw_only=True)
42+
@dataclass(**DATACLASS_KWARGS)
3943
class ExtensionsSnippetTypes:
4044
class Meta:
4145
global_type = False
@@ -52,7 +56,7 @@ class Meta:
5256
)
5357

5458

55-
@dataclass(slots=True, kw_only=True)
59+
@dataclass(**DATACLASS_KWARGS)
5660
class ExtensionsStages:
5761
class Meta:
5862
global_type = False
@@ -69,7 +73,7 @@ class Meta:
6973
)
7074

7175

72-
@dataclass(slots=True, kw_only=True)
76+
@dataclass(**DATACLASS_KWARGS)
7377
class ExtensionsTopicLabels:
7478
class Meta:
7579
global_type = False
@@ -86,7 +90,7 @@ class Meta:
8690
)
8791

8892

89-
@dataclass(slots=True, kw_only=True)
93+
@dataclass(**DATACLASS_KWARGS)
9094
class ExtensionsTopicStatuses:
9195
class Meta:
9296
global_type = False
@@ -103,7 +107,7 @@ class Meta:
103107
)
104108

105109

106-
@dataclass(slots=True, kw_only=True)
110+
@dataclass(**DATACLASS_KWARGS)
107111
class ExtensionsTopicTypes:
108112
class Meta:
109113
global_type = False
@@ -120,7 +124,7 @@ class Meta:
120124
)
121125

122126

123-
@dataclass(slots=True, kw_only=True)
127+
@dataclass(**DATACLASS_KWARGS)
124128
class ExtensionsUsers:
125129
class Meta:
126130
global_type = False
@@ -137,7 +141,7 @@ class Meta:
137141
)
138142

139143

140-
@dataclass(slots=True, kw_only=True)
144+
@dataclass(**DATACLASS_KWARGS)
141145
class Extensions:
142146
topic_types: Optional[ExtensionsTopicTypes] = field(
143147
default=None,

src/bcf/bcf/v2/model/markup.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import sys
12
from dataclasses import dataclass, field
23
from typing import List, Optional
34

45
from xsdata.models.datatype import XmlDateTime
56

7+
DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True}
68

7-
@dataclass(slots=True, kw_only=True)
9+
10+
@dataclass(**DATACLASS_KWARGS)
811
class BimSnippet:
912
reference: str = field(
1013
metadata={
@@ -38,7 +41,7 @@ class BimSnippet:
3841
)
3942

4043

41-
@dataclass(slots=True, kw_only=True)
44+
@dataclass(**DATACLASS_KWARGS)
4245
class CommentViewpoint:
4346
class Meta:
4447
global_type = False
@@ -53,7 +56,7 @@ class Meta:
5356
)
5457

5558

56-
@dataclass(slots=True, kw_only=True)
59+
@dataclass(**DATACLASS_KWARGS)
5760
class HeaderFile:
5861
class Meta:
5962
global_type = False
@@ -109,7 +112,7 @@ class Meta:
109112
)
110113

111114

112-
@dataclass(slots=True, kw_only=True)
115+
@dataclass(**DATACLASS_KWARGS)
113116
class TopicDocumentReference:
114117
class Meta:
115118
global_type = False
@@ -147,7 +150,7 @@ class Meta:
147150
)
148151

149152

150-
@dataclass(slots=True, kw_only=True)
153+
@dataclass(**DATACLASS_KWARGS)
151154
class TopicRelatedTopic:
152155
class Meta:
153156
global_type = False
@@ -162,7 +165,7 @@ class Meta:
162165
)
163166

164167

165-
@dataclass(slots=True, kw_only=True)
168+
@dataclass(**DATACLASS_KWARGS)
166169
class ViewPoint:
167170
viewpoint: Optional[str] = field(
168171
default=None,
@@ -198,7 +201,7 @@ class ViewPoint:
198201
)
199202

200203

201-
@dataclass(slots=True, kw_only=True)
204+
@dataclass(**DATACLASS_KWARGS)
202205
class Comment:
203206
date: XmlDateTime = field(
204207
metadata={
@@ -258,7 +261,7 @@ class Comment:
258261
)
259262

260263

261-
@dataclass(slots=True, kw_only=True)
264+
@dataclass(**DATACLASS_KWARGS)
262265
class Header:
263266
file: List[HeaderFile] = field(
264267
default_factory=list,
@@ -271,7 +274,7 @@ class Header:
271274
)
272275

273276

274-
@dataclass(slots=True, kw_only=True)
277+
@dataclass(**DATACLASS_KWARGS)
275278
class Topic:
276279
reference_link: List[str] = field(
277280
default_factory=list,
@@ -425,7 +428,7 @@ class Topic:
425428
)
426429

427430

428-
@dataclass(slots=True, kw_only=True)
431+
@dataclass(**DATACLASS_KWARGS)
429432
class Markup:
430433
header: Optional[Header] = field(
431434
default=None,

src/bcf/bcf/v2/model/project.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import sys
12
from dataclasses import dataclass, field
23
from typing import Optional
34

5+
DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True}
46

5-
@dataclass(slots=True, kw_only=True)
7+
8+
@dataclass(**DATACLASS_KWARGS)
69
class Project:
710
name: Optional[str] = field(
811
default=None,
@@ -21,7 +24,7 @@ class Project:
2124
)
2225

2326

24-
@dataclass(slots=True, kw_only=True)
27+
@dataclass(**DATACLASS_KWARGS)
2528
class ProjectExtension:
2629
project: Optional[Project] = field(
2730
default=None,

src/bcf/bcf/v2/model/version.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import sys
12
from dataclasses import dataclass, field
23
from typing import Optional
34

5+
DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True}
46

5-
@dataclass(slots=True, kw_only=True)
7+
8+
@dataclass(**DATACLASS_KWARGS)
69
class Version:
710
detailed_version: Optional[str] = field(
811
default=None,

src/bcf/bcf/v2/model/visinfo.py

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1+
import sys
12
from dataclasses import dataclass, field
23
from enum import Enum
34
from typing import List, Optional
45

6+
DATACLASS_KWARGS = {} if sys.version_info < (3, 10) else {"slots": True, "kw_only": True}
7+
58

69
class BitmapFormat(Enum):
710
PNG = "PNG"
811
JPG = "JPG"
912

1013

11-
@dataclass(slots=True, kw_only=True)
14+
@dataclass(**DATACLASS_KWARGS)
1215
class Component:
1316
originating_system: Optional[str] = field(
1417
default=None,
@@ -35,7 +38,7 @@ class Component:
3538
)
3639

3740

38-
@dataclass(slots=True, kw_only=True)
41+
@dataclass(**DATACLASS_KWARGS)
3942
class Direction:
4043
x: float = field(
4144
metadata={
@@ -60,7 +63,7 @@ class Direction:
6063
)
6164

6265

63-
@dataclass(slots=True, kw_only=True)
66+
@dataclass(**DATACLASS_KWARGS)
6467
class Point:
6568
x: float = field(
6669
metadata={
@@ -85,7 +88,7 @@ class Point:
8588
)
8689

8790

88-
@dataclass(slots=True, kw_only=True)
91+
@dataclass(**DATACLASS_KWARGS)
8992
class ViewSetupHints:
9093
spaces_visible: Optional[bool] = field(
9194
default=None,
@@ -110,7 +113,7 @@ class ViewSetupHints:
110113
)
111114

112115

113-
@dataclass(slots=True, kw_only=True)
116+
@dataclass(**DATACLASS_KWARGS)
114117
class ClippingPlane:
115118
location: Point = field(
116119
metadata={
@@ -128,7 +131,7 @@ class ClippingPlane:
128131
)
129132

130133

131-
@dataclass(slots=True, kw_only=True)
134+
@dataclass(**DATACLASS_KWARGS)
132135
class ComponentColoringColor:
133136
class Meta:
134137
global_type = False
@@ -151,7 +154,7 @@ class Meta:
151154
)
152155

153156

154-
@dataclass(slots=True, kw_only=True)
157+
@dataclass(**DATACLASS_KWARGS)
155158
class ComponentSelection:
156159
component: List[Component] = field(
157160
default_factory=list,
@@ -163,7 +166,7 @@ class ComponentSelection:
163166
)
164167

165168

166-
@dataclass(slots=True, kw_only=True)
169+
@dataclass(**DATACLASS_KWARGS)
167170
class ComponentVisibilityExceptions:
168171
class Meta:
169172
global_type = False
@@ -178,7 +181,7 @@ class Meta:
178181
)
179182

180183

181-
@dataclass(slots=True, kw_only=True)
184+
@dataclass(**DATACLASS_KWARGS)
182185
class Line:
183186
start_point: Point = field(
184187
metadata={
@@ -196,7 +199,7 @@ class Line:
196199
)
197200

198201

199-
@dataclass(slots=True, kw_only=True)
202+
@dataclass(**DATACLASS_KWARGS)
200203
class OrthogonalCamera:
201204
"""
202205
Attributes
@@ -236,7 +239,7 @@ class OrthogonalCamera:
236239
)
237240

238241

239-
@dataclass(slots=True, kw_only=True)
242+
@dataclass(**DATACLASS_KWARGS)
240243
class PerspectiveCamera:
241244
"""
242245
Attributes
@@ -281,7 +284,7 @@ class PerspectiveCamera:
281284
)
282285

283286

284-
@dataclass(slots=True, kw_only=True)
287+
@dataclass(**DATACLASS_KWARGS)
285288
class VisualizationInfoBitmap:
286289
class Meta:
287290
global_type = False
@@ -330,7 +333,7 @@ class Meta:
330333
)
331334

332335

333-
@dataclass(slots=True, kw_only=True)
336+
@dataclass(**DATACLASS_KWARGS)
334337
class ComponentColoring:
335338
color: List[ComponentColoringColor] = field(
336339
default_factory=list,
@@ -342,7 +345,7 @@ class ComponentColoring:
342345
)
343346

344347

345-
@dataclass(slots=True, kw_only=True)
348+
@dataclass(**DATACLASS_KWARGS)
346349
class ComponentVisibility:
347350
exceptions: Optional[ComponentVisibilityExceptions] = field(
348351
default=None,
@@ -360,7 +363,7 @@ class ComponentVisibility:
360363
)
361364

362365

363-
@dataclass(slots=True, kw_only=True)
366+
@dataclass(**DATACLASS_KWARGS)
364367
class VisualizationInfoClippingPlanes:
365368
class Meta:
366369
global_type = False
@@ -374,7 +377,7 @@ class Meta:
374377
)
375378

376379

377-
@dataclass(slots=True, kw_only=True)
380+
@dataclass(**DATACLASS_KWARGS)
378381
class VisualizationInfoLines:
379382
class Meta:
380383
global_type = False
@@ -389,7 +392,7 @@ class Meta:
389392
)
390393

391394

392-
@dataclass(slots=True, kw_only=True)
395+
@dataclass(**DATACLASS_KWARGS)
393396
class Components:
394397
view_setup_hints: Optional[ViewSetupHints] = field(
395398
default=None,
@@ -421,7 +424,7 @@ class Components:
421424
)
422425

423426

424-
@dataclass(slots=True, kw_only=True)
427+
@dataclass(**DATACLASS_KWARGS)
425428
class VisualizationInfo:
426429
"""
427430
VisualizationInfo documentation.

0 commit comments

Comments
 (0)