Skip to content

Commit c17530b

Browse files
committed
refactor: Only use dataclasses keyword-only argument on Python 3.10
1 parent 5dbfc74 commit c17530b

1 file changed

Lines changed: 37 additions & 34 deletions

File tree

src/griffe_typedoc/dataclasses.py

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import sys
34
from dataclasses import dataclass, field
45
from enum import Enum
56
from functools import cached_property
@@ -9,6 +10,10 @@
910

1011
# TODO: Use info from https://typedoc.org/api/modules/JSONOutput.html to rebuild models!
1112

13+
_dataclass_opts: dict[str, bool] = {}
14+
if sys.version_info >= (3, 10):
15+
_dataclass_opts["kw_only"] = True
16+
1217

1318
# https://github.com/TypeStrong/typedoc/blob/master/src/lib/models/reflections/kind.ts
1419
class ReflectionKind(Enum):
@@ -138,8 +143,7 @@ class BlockTagContentKind(Enum):
138143
INLINE_TAG = "inline-tag"
139144

140145

141-
142-
@dataclass(kw_only=True)
146+
@dataclass(**_dataclass_opts)
143147
class FileRegistry:
144148
entries: dict[int, str]
145149
reflections: dict[int, int]
@@ -152,7 +156,7 @@ def filepath(self, reflection_id: int) -> str:
152156
return self.entries[self.reverse_reflections[reflection_id]]
153157

154158

155-
@dataclass(kw_only=True)
159+
@dataclass(**_dataclass_opts)
156160
class BlockTagContent:
157161
kind: BlockTagContentKind
158162
text: str
@@ -170,7 +174,7 @@ def markdown(self, symbol_map: dict[int, Reflection] | None = None) -> str:
170174
return self.text
171175

172176

173-
@dataclass(kw_only=True)
177+
@dataclass(**_dataclass_opts)
174178
class BlockTag:
175179
kind: BlockTagKind
176180
content: list[BlockTagContent]
@@ -182,7 +186,7 @@ def markdown(self, **kwargs) -> str:
182186
return "".join(block.markdown(**kwargs) for block in self.summary)
183187

184188

185-
@dataclass(kw_only=True)
189+
@dataclass(**_dataclass_opts)
186190
class Comment:
187191
summary: list[BlockTagContent]
188192
tags: list[BlockTag] | None = None
@@ -195,13 +199,13 @@ def markdown(self, **kwargs) -> str:
195199
return "".join(block.markdown(**kwargs) for block in self.summary)
196200

197201

198-
@dataclass(kw_only=True)
202+
@dataclass(**_dataclass_opts)
199203
class Group:
200204
title: str
201205
children: list[int | Reflection]
202206

203207

204-
@dataclass(kw_only=True)
208+
@dataclass(**_dataclass_opts)
205209
class Source:
206210
file_name: str
207211
line: int
@@ -226,7 +230,7 @@ def contents(self) -> str:
226230
return file.readlines()[self.line - 1]
227231

228232

229-
@dataclass(kw_only=True)
233+
@dataclass(**_dataclass_opts)
230234
class Target:
231235
source_file_name: str
232236
qualified_name: str
@@ -246,7 +250,7 @@ class TypeKind(Enum):
246250
MAPPED = "mapped"
247251

248252

249-
@dataclass(kw_only=True)
253+
@dataclass(**_dataclass_opts)
250254
class Type:
251255
type: TypeKind
252256
name: str | None = None
@@ -268,7 +272,7 @@ class Type:
268272
template_type: Type | None = None
269273

270274

271-
@dataclass(kw_only=True)
275+
@dataclass(**_dataclass_opts)
272276
class Reflection:
273277
id: int
274278
name: str
@@ -341,7 +345,7 @@ def source_contents(self) -> str:
341345
return "\n".join(source.contents for source in self.sources).rstrip().removesuffix("{")
342346

343347

344-
@dataclass(kw_only=True)
348+
@dataclass(**_dataclass_opts)
345349
class Project(Reflection):
346350
package_name: str
347351
readme: list[BlockTagContent] | None = None
@@ -358,7 +362,7 @@ def symbol_map(self) -> dict[int, Reflection]:
358362
return self.symbol_id_map
359363

360364

361-
@dataclass(kw_only=True)
365+
@dataclass(**_dataclass_opts)
362366
class Module(Reflection):
363367
package_version: str | None = None
364368
readme: str | None = None
@@ -375,28 +379,28 @@ def exports(self) -> list[Reflection]:
375379
return []
376380

377381

378-
@dataclass(kw_only=True)
382+
@dataclass(**_dataclass_opts)
379383
class Namespace(Reflection):
380384
@property
381385
def kind(self) -> ReflectionKind:
382386
return ReflectionKind.NAMESPACE
383387

384388

385-
@dataclass(kw_only=True)
389+
@dataclass(**_dataclass_opts)
386390
class Enum(Reflection):
387391
@property
388392
def kind(self) -> ReflectionKind:
389393
return ReflectionKind.ENUM
390394

391395

392-
@dataclass(kw_only=True)
396+
@dataclass(**_dataclass_opts)
393397
class EnumMember(Reflection):
394398
@property
395399
def kind(self) -> ReflectionKind:
396400
return ReflectionKind.ENUM_MEMBER
397401

398402

399-
@dataclass(kw_only=True)
403+
@dataclass(**_dataclass_opts)
400404
class Variable(Reflection):
401405
type: Type
402406
default_value: str | None = None
@@ -406,7 +410,7 @@ def kind(self) -> ReflectionKind:
406410
return ReflectionKind.VARIABLE
407411

408412

409-
@dataclass(kw_only=True)
413+
@dataclass(**_dataclass_opts)
410414
class Function(Reflection):
411415
signatures: list[CallSignature]
412416

@@ -422,7 +426,7 @@ def exports(self) -> list[Reflection]:
422426
]
423427

424428

425-
@dataclass(kw_only=True)
429+
@dataclass(**_dataclass_opts)
426430
class Class(Reflection):
427431
extended_types: list[Type] | None = None
428432
extended_by: list[Type] | None = None
@@ -435,7 +439,7 @@ def kind(self) -> ReflectionKind:
435439
return ReflectionKind.CLASS
436440

437441

438-
@dataclass(kw_only=True)
442+
@dataclass(**_dataclass_opts)
439443
class Interface(Reflection):
440444
extended_types: list[Type] | None = None
441445
extended_by: list[Type] | None = None
@@ -450,7 +454,7 @@ def kind(self) -> ReflectionKind:
450454
return ReflectionKind.INTERFACE
451455

452456

453-
@dataclass(kw_only=True)
457+
@dataclass(**_dataclass_opts)
454458
class Constructor(Reflection):
455459
signatures: list[ConstructorSignature] | None = None
456460
overwrites: Type | None = None
@@ -461,7 +465,7 @@ def kind(self) -> ReflectionKind:
461465
return ReflectionKind.CONSTRUCTOR
462466

463467

464-
@dataclass(kw_only=True)
468+
@dataclass(**_dataclass_opts)
465469
class Property(Reflection):
466470
type: Type
467471
inherited_from: Type | None = None
@@ -474,7 +478,7 @@ def kind(self) -> ReflectionKind:
474478
return ReflectionKind.PROPERTY
475479

476480

477-
@dataclass(kw_only=True)
481+
@dataclass(**_dataclass_opts)
478482
class Method(Reflection):
479483
signatures: list[CallSignature]
480484
overwrites: Type | None = None
@@ -486,7 +490,7 @@ def kind(self) -> ReflectionKind:
486490
return ReflectionKind.METHOD
487491

488492

489-
@dataclass(kw_only=True)
493+
@dataclass(**_dataclass_opts)
490494
class CallSignature(Reflection):
491495
type: Type
492496
parameters: list[Parameter] | None = None
@@ -500,7 +504,7 @@ def kind(self) -> ReflectionKind:
500504
return ReflectionKind.CALL_SIGNATURE
501505

502506

503-
@dataclass(kw_only=True)
507+
@dataclass(**_dataclass_opts)
504508
class IndexSignature(Reflection):
505509
type: Type
506510
parameters: list[Parameter] | None = None
@@ -510,7 +514,7 @@ def kind(self) -> ReflectionKind:
510514
return ReflectionKind.INDEX_SIGNATURE
511515

512516

513-
@dataclass(kw_only=True)
517+
@dataclass(**_dataclass_opts)
514518
class ConstructorSignature(Reflection):
515519
parameters: list[Parameter] | None = None
516520
overwrites: Type | None = None
@@ -522,7 +526,7 @@ def kind(self) -> ReflectionKind:
522526
return ReflectionKind.CONSTRUCTOR_SIGNATURE
523527

524528

525-
@dataclass(kw_only=True)
529+
@dataclass(**_dataclass_opts)
526530
class Parameter(Reflection):
527531
type: Type | None = None
528532
default_value: str | None = None
@@ -532,7 +536,7 @@ def kind(self) -> ReflectionKind:
532536
return ReflectionKind.PARAMETER
533537

534538

535-
@dataclass(kw_only=True)
539+
@dataclass(**_dataclass_opts)
536540
class TypeLiteral(Reflection):
537541
signatures: list[CallSignature] | None = None
538542
index_signatures: list[IndexSignature] | None = None
@@ -542,7 +546,7 @@ def kind(self) -> ReflectionKind:
542546
return ReflectionKind.TYPE_LITERAL
543547

544548

545-
@dataclass(kw_only=True)
549+
@dataclass(**_dataclass_opts)
546550
class TypeParameter(Reflection):
547551
type: Type | None = None
548552
default: Type | None = None
@@ -552,7 +556,7 @@ def kind(self) -> ReflectionKind:
552556
return ReflectionKind.TYPE_PARAMETER
553557

554558

555-
@dataclass(kw_only=True)
559+
@dataclass(**_dataclass_opts)
556560
class Accessor(Reflection):
557561
get_signature: GetSignature | None = None
558562
set_signature: SetSignature | None = None
@@ -565,7 +569,7 @@ def kind(self) -> ReflectionKind:
565569
return ReflectionKind.ACCESSOR
566570

567571

568-
@dataclass(kw_only=True)
572+
@dataclass(**_dataclass_opts)
569573
class GetSignature(Reflection):
570574
overwrites: Type | None = None
571575
implementation_of: Type | None = None
@@ -576,7 +580,7 @@ def kind(self) -> ReflectionKind:
576580
return ReflectionKind.GET_SIGNATURE
577581

578582

579-
@dataclass(kw_only=True)
583+
@dataclass(**_dataclass_opts)
580584
class SetSignature(Reflection):
581585
parameters: list[Parameter] | None = None
582586
overwrites: Type | None = None
@@ -588,7 +592,7 @@ def kind(self) -> ReflectionKind:
588592
return ReflectionKind.SET_SIGNATURE
589593

590594

591-
@dataclass(kw_only=True)
595+
@dataclass(**_dataclass_opts)
592596
class TypeAlias(Reflection):
593597
type: Type
594598
type_parameters: list[TypeParameter] | None = None
@@ -599,11 +603,10 @@ def kind(self) -> ReflectionKind:
599603
return ReflectionKind.TYPE_ALIAS
600604

601605

602-
@dataclass(kw_only=True)
606+
@dataclass(**_dataclass_opts)
603607
class Reference(Reflection):
604608
target: int
605609

606610
@property
607611
def kind(self) -> ReflectionKind:
608612
return ReflectionKind.REFERENCE
609-

0 commit comments

Comments
 (0)