diff options
author | Alex Waygood <Alex.Waygood@Gmail.com> | 2023-07-06 21:17:12 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-06 21:17:12 (GMT) |
commit | 5548097925b9924ebf761376d632c5198d01ebd5 (patch) | |
tree | e434af8e6f1006765390d079e3a08856e75796b5 | |
parent | 003ba71dcbe94f0d5cb1d0c56d7f1d5a6dae56f7 (diff) | |
download | cpython-5548097925b9924ebf761376d632c5198d01ebd5.zip cpython-5548097925b9924ebf761376d632c5198d01ebd5.tar.gz cpython-5548097925b9924ebf761376d632c5198d01ebd5.tar.bz2 |
gh-104683: clinic.py: refactor four simple classes as dataclasses (#106476)
-rwxr-xr-x | Tools/clinic/clinic.py | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 306dca8..24d6255 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -13,6 +13,7 @@ import collections import contextlib import copy import cpp +import dataclasses as dc import enum import functools import hashlib @@ -1858,11 +1859,10 @@ class BlockParser: return Block(input_output(), dsl_name, output=output) +@dc.dataclass(slots=True) class BlockPrinter: - - def __init__(self, language, f=None): - self.language = language - self.f = f or io.StringIO() + language: Language + f: io.StringIO = dc.field(default_factory=io.StringIO) def print_block(self, block, *, core_includes=False): input = block.input @@ -2328,15 +2328,13 @@ class PythonParser: block.output = s.getvalue() +@dc.dataclass(repr=False) class Module: - def __init__( - self, - name: str, - module = None - ) -> None: - self.name = name - self.module = self.parent = module + name: str + module: Module | None = None + def __post_init__(self) -> None: + self.parent = self.module self.modules: ModuleDict = {} self.classes: ClassDict = {} self.functions: list[Function] = [] @@ -2345,22 +2343,16 @@ class Module: return "<clinic.Module " + repr(self.name) + " at " + str(id(self)) + ">" +@dc.dataclass(repr=False) class Class: - def __init__( - self, - name: str, - module: Module | None = None, - cls = None, - typedef: str | None = None, - type_object: str | None = None - ) -> None: - self.name = name - self.module = module - self.cls = cls - self.typedef = typedef - self.type_object = type_object - self.parent = cls or module - + name: str + module: Module | None = None + cls: Class | None = None + typedef: str | None = None + type_object: str | None = None + + def __post_init__(self) -> None: + self.parent = self.cls or self.module self.classes: ClassDict = {} self.functions: list[Function] = [] @@ -2606,13 +2598,10 @@ class Parameter: return f'"argument {i}"' +@dc.dataclass class LandMine: # try to access any - def __init__(self, message: str) -> None: - self.__message__ = message - - def __repr__(self) -> str: - return '<LandMine ' + repr(self.__message__) + ">" + __message__: str def __getattribute__(self, name: str): if name in ('__repr__', '__message__'): |