Skip to content

Commit 8a53b41

Browse files
committed
build: Require Python 3.10 minimum (for dataclasses keyword-only arguments)
1 parent 5bbb078 commit 8a53b41

3 files changed

Lines changed: 34 additions & 40 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ authors = [{name = "Timothée Mazzucotelli", email = "dev@pawamoy.fr"}]
99
license = "ISC"
1010
license-files = ["LICENSE"]
1111
readme = "README.md"
12-
requires-python = ">=3.9"
12+
requires-python = ">=3.10"
1313
keywords = []
1414
dynamic = ["version"]
1515
classifiers = [
@@ -18,7 +18,6 @@ classifiers = [
1818
"Programming Language :: Python",
1919
"Programming Language :: Python :: 3",
2020
"Programming Language :: Python :: 3 :: Only",
21-
"Programming Language :: Python :: 3.9",
2221
"Programming Language :: Python :: 3.10",
2322
"Programming Language :: Python :: 3.11",
2423
"Programming Language :: Python :: 3.12",

scripts/make.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from collections.abc import Iterator
1515

1616

17-
PYTHON_VERSIONS = os.getenv("PYTHON_VERSIONS", "3.9 3.10 3.11 3.12 3.13").split()
17+
PYTHON_VERSIONS = os.getenv("PYTHON_VERSIONS", "3.10 3.11 3.12 3.13").split()
1818

1919

2020
def shell(cmd: str, *, capture_output: bool = False, **kwargs: Any) -> str | None:

src/griffe_typedoc/_internal/models.py

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

33
import enum
4-
import sys
54
from dataclasses import dataclass, field
65
from functools import cached_property
76
from pathlib import Path
@@ -18,10 +17,6 @@
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
2722
class 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)
158153
class 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)
171166
class 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)
189184
class 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)
201196
class 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)
214209
class Group:
215210
title: str
216211
children: list[int | Reflection]
217212

218213

219-
@dataclass(**_dataclass_opts)
214+
@dataclass(kw_only=True)
220215
class 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)
245240
class 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)
265260
class 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)
287282
class 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)
360355
class 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)
377372
class 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)
394389
class Namespace(Reflection):
395390
@property
396391
def kind(self) -> ReflectionKind:
397392
return ReflectionKind.NAMESPACE
398393

399394

400-
@dataclass(**_dataclass_opts)
395+
@dataclass(kw_only=True)
401396
class Enum(Reflection):
402397
@property
403398
def kind(self) -> ReflectionKind:
404399
return ReflectionKind.ENUM
405400

406401

407-
@dataclass(**_dataclass_opts)
402+
@dataclass(kw_only=True)
408403
class 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)
415410
class 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)
425420
class 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)
447442
class 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)
460455
class 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)
475470
class 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)
486481
class 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)
499494
class 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)
511506
class 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)
525520
class 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)
535530
class 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)
547542
class 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)
557552
class 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)
567562
class 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)
577572
class 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)
590585
class 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)
601596
class 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)
613608
class 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)
624619
class Reference(Reflection):
625620
target: int # type: ignore[misc]
626621

0 commit comments

Comments
 (0)