11from __future__ import annotations
22
33import enum
4- import sys
54from dataclasses import dataclass , field
65from functools import cached_property
76from pathlib import Path
1817# TODO: I have aggressively added type-ignore comments to this file,
1918# they should all be removed and fixed (unless we rewrite the whole thing as per previous comment).
2019
21- _dataclass_opts : dict [str , bool ] = {}
22- if sys .version_info >= (3 , 10 ):
23- _dataclass_opts ["kw_only" ] = True
24-
2520
2621# https://github.com/TypeStrong/typedoc/blob/master/src/lib/models/reflections/kind.ts
2722class ReflectionKind (enum .Enum ):
@@ -154,7 +149,7 @@ class BlockTagContentKind(enum.Enum):
154149 INLINE_TAG = "inline-tag"
155150
156151
157- @dataclass (** _dataclass_opts )
152+ @dataclass (kw_only = True )
158153class FileRegistry :
159154 entries : dict [int , str ]
160155 reflections : dict [int , int ]
@@ -167,7 +162,7 @@ def filepath(self, reflection_id: int) -> str:
167162 return self .entries [self .reverse_reflections [reflection_id ]]
168163
169164
170- @dataclass (** _dataclass_opts )
165+ @dataclass (kw_only = True )
171166class BlockTagContent :
172167 kind : BlockTagContentKind
173168 text : str
@@ -185,7 +180,7 @@ def markdown(self, symbol_map: dict[int, Reflection] | None = None) -> str:
185180 return self .text
186181
187182
188- @dataclass (** _dataclass_opts )
183+ @dataclass (kw_only = True )
189184class BlockTag :
190185 kind : BlockTagKind
191186 content : list [BlockTagContent ]
@@ -197,7 +192,7 @@ def markdown(self, **kwargs: Any) -> str:
197192 return "" .join (block .markdown (** kwargs ) for block in self .summary ) # type: ignore[attr-defined]
198193
199194
200- @dataclass (** _dataclass_opts )
195+ @dataclass (kw_only = True )
201196class Comment :
202197 summary : list [BlockTagContent ]
203198 tags : list [BlockTag ] | None = None
@@ -210,13 +205,13 @@ def markdown(self, **kwargs: Any) -> str:
210205 return "" .join (block .markdown (** kwargs ) for block in self .summary )
211206
212207
213- @dataclass (** _dataclass_opts )
208+ @dataclass (kw_only = True )
214209class Group :
215210 title : str
216211 children : list [int | Reflection ]
217212
218213
219- @dataclass (** _dataclass_opts )
214+ @dataclass (kw_only = True )
220215class Source :
221216 file_name : str
222217 line : int
@@ -241,7 +236,7 @@ def contents(self) -> str:
241236 return file .readlines ()[self .line - 1 ]
242237
243238
244- @dataclass (** _dataclass_opts )
239+ @dataclass (kw_only = True )
245240class Target :
246241 source_file_name : str
247242 qualified_name : str
@@ -261,7 +256,7 @@ class TypeKind(enum.Enum):
261256 MAPPED = "mapped"
262257
263258
264- @dataclass (** _dataclass_opts )
259+ @dataclass (kw_only = True )
265260class Type :
266261 type : TypeKind
267262 name : str | None = None
@@ -283,7 +278,7 @@ class Type:
283278 template_type : Type | None = None
284279
285280
286- @dataclass (** _dataclass_opts )
281+ @dataclass (kw_only = True )
287282class Reflection :
288283 id : int
289284 name : str
@@ -356,7 +351,7 @@ def source_contents(self) -> str:
356351 return "\n " .join (source .contents for source in self .sources ).rstrip ().removesuffix ("{" )
357352
358353
359- @dataclass (** _dataclass_opts )
354+ @dataclass (kw_only = True )
360355class Project (Reflection ):
361356 package_name : str # type: ignore[misc]
362357 readme : list [BlockTagContent ] | None = None
@@ -373,7 +368,7 @@ def symbol_map(self) -> dict[int, Reflection]:
373368 return self .symbol_id_map
374369
375370
376- @dataclass (** _dataclass_opts )
371+ @dataclass (kw_only = True )
377372class Module (Reflection ):
378373 package_version : str | None = None
379374 readme : str | None = None
@@ -390,28 +385,28 @@ def exports(self) -> list[Reflection]:
390385 return []
391386
392387
393- @dataclass (** _dataclass_opts )
388+ @dataclass (kw_only = True )
394389class Namespace (Reflection ):
395390 @property
396391 def kind (self ) -> ReflectionKind :
397392 return ReflectionKind .NAMESPACE
398393
399394
400- @dataclass (** _dataclass_opts )
395+ @dataclass (kw_only = True )
401396class Enum (Reflection ):
402397 @property
403398 def kind (self ) -> ReflectionKind :
404399 return ReflectionKind .ENUM
405400
406401
407- @dataclass (** _dataclass_opts )
402+ @dataclass (kw_only = True )
408403class EnumMember (Reflection ):
409404 @property
410405 def kind (self ) -> ReflectionKind :
411406 return ReflectionKind .ENUM_MEMBER
412407
413408
414- @dataclass (** _dataclass_opts )
409+ @dataclass (kw_only = True )
415410class Variable (Reflection ):
416411 type : Type # type: ignore[misc]
417412 default_value : str | None = None
@@ -421,7 +416,7 @@ def kind(self) -> ReflectionKind:
421416 return ReflectionKind .VARIABLE
422417
423418
424- @dataclass (** _dataclass_opts )
419+ @dataclass (kw_only = True )
425420class Function (Reflection ):
426421 signatures : list [CallSignature ] # type: ignore[misc]
427422
@@ -443,7 +438,7 @@ def exports(self) -> list[Reflection]:
443438 ]
444439
445440
446- @dataclass (** _dataclass_opts )
441+ @dataclass (kw_only = True )
447442class Class (Reflection ):
448443 extended_types : list [Type ] | None = None
449444 extended_by : list [Type ] | None = None
@@ -456,7 +451,7 @@ def kind(self) -> ReflectionKind:
456451 return ReflectionKind .CLASS
457452
458453
459- @dataclass (** _dataclass_opts )
454+ @dataclass (kw_only = True )
460455class Interface (Reflection ):
461456 extended_types : list [Type ] | None = None
462457 extended_by : list [Type ] | None = None
@@ -471,7 +466,7 @@ def kind(self) -> ReflectionKind:
471466 return ReflectionKind .INTERFACE
472467
473468
474- @dataclass (** _dataclass_opts )
469+ @dataclass (kw_only = True )
475470class Constructor (Reflection ):
476471 signatures : list [ConstructorSignature ] | None = None
477472 overwrites : Type | None = None
@@ -482,7 +477,7 @@ def kind(self) -> ReflectionKind:
482477 return ReflectionKind .CONSTRUCTOR
483478
484479
485- @dataclass (** _dataclass_opts )
480+ @dataclass (kw_only = True )
486481class Property (Reflection ):
487482 type : Type # type: ignore[misc]
488483 inherited_from : Type | None = None
@@ -495,7 +490,7 @@ def kind(self) -> ReflectionKind:
495490 return ReflectionKind .PROPERTY
496491
497492
498- @dataclass (** _dataclass_opts )
493+ @dataclass (kw_only = True )
499494class Method (Reflection ):
500495 signatures : list [CallSignature ] # type: ignore[misc]
501496 overwrites : Type | None = None
@@ -507,7 +502,7 @@ def kind(self) -> ReflectionKind:
507502 return ReflectionKind .METHOD
508503
509504
510- @dataclass (** _dataclass_opts )
505+ @dataclass (kw_only = True )
511506class CallSignature (Reflection ):
512507 type : Type # type: ignore[misc]
513508 parameters : list [Parameter ] | None = None
@@ -521,7 +516,7 @@ def kind(self) -> ReflectionKind:
521516 return ReflectionKind .CALL_SIGNATURE
522517
523518
524- @dataclass (** _dataclass_opts )
519+ @dataclass (kw_only = True )
525520class IndexSignature (Reflection ):
526521 type : Type # type: ignore[misc]
527522 parameters : list [Parameter ] | None = None
@@ -531,7 +526,7 @@ def kind(self) -> ReflectionKind:
531526 return ReflectionKind .INDEX_SIGNATURE
532527
533528
534- @dataclass (** _dataclass_opts )
529+ @dataclass (kw_only = True )
535530class ConstructorSignature (Reflection ):
536531 parameters : list [Parameter ] | None = None
537532 overwrites : Type | None = None
@@ -543,7 +538,7 @@ def kind(self) -> ReflectionKind:
543538 return ReflectionKind .CONSTRUCTOR_SIGNATURE
544539
545540
546- @dataclass (** _dataclass_opts )
541+ @dataclass (kw_only = True )
547542class Parameter (Reflection ):
548543 type : Type | None = None
549544 default_value : str | None = None
@@ -553,7 +548,7 @@ def kind(self) -> ReflectionKind:
553548 return ReflectionKind .PARAMETER
554549
555550
556- @dataclass (** _dataclass_opts )
551+ @dataclass (kw_only = True )
557552class TypeLiteral (Reflection ):
558553 signatures : list [CallSignature ] | None = None
559554 index_signatures : list [IndexSignature ] | None = None
@@ -563,7 +558,7 @@ def kind(self) -> ReflectionKind:
563558 return ReflectionKind .TYPE_LITERAL
564559
565560
566- @dataclass (** _dataclass_opts )
561+ @dataclass (kw_only = True )
567562class TypeParameter (Reflection ):
568563 type : Type | None = None
569564 default : Type | None = None
@@ -573,7 +568,7 @@ def kind(self) -> ReflectionKind:
573568 return ReflectionKind .TYPE_PARAMETER
574569
575570
576- @dataclass (** _dataclass_opts )
571+ @dataclass (kw_only = True )
577572class Accessor (Reflection ):
578573 get_signature : GetSignature | None = None
579574 set_signature : SetSignature | None = None
@@ -586,7 +581,7 @@ def kind(self) -> ReflectionKind:
586581 return ReflectionKind .ACCESSOR
587582
588583
589- @dataclass (** _dataclass_opts )
584+ @dataclass (kw_only = True )
590585class GetSignature (Reflection ):
591586 overwrites : Type | None = None
592587 implementation_of : Type | None = None
@@ -597,7 +592,7 @@ def kind(self) -> ReflectionKind:
597592 return ReflectionKind .GET_SIGNATURE
598593
599594
600- @dataclass (** _dataclass_opts )
595+ @dataclass (kw_only = True )
601596class SetSignature (Reflection ):
602597 parameters : list [Parameter ] | None = None
603598 overwrites : Type | None = None
@@ -609,7 +604,7 @@ def kind(self) -> ReflectionKind:
609604 return ReflectionKind .SET_SIGNATURE
610605
611606
612- @dataclass (** _dataclass_opts )
607+ @dataclass (kw_only = True )
613608class TypeAlias (Reflection ):
614609 type : Type # type: ignore[misc]
615610 type_parameters : list [TypeParameter ] | None = None
@@ -620,7 +615,7 @@ def kind(self) -> ReflectionKind:
620615 return ReflectionKind .TYPE_ALIAS
621616
622617
623- @dataclass (** _dataclass_opts )
618+ @dataclass (kw_only = True )
624619class Reference (Reflection ):
625620 target : int # type: ignore[misc]
626621
0 commit comments