From 31188b7332a21b2170d6c2bf75008cd6237cac83 Mon Sep 17 00:00:00 2001 From: object-Object Date: Thu, 29 Jun 2023 01:27:55 -0400 Subject: [PATCH] Make PairTag a dataclass --- doc/src/hexcasting/scripts/collate_data.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/src/hexcasting/scripts/collate_data.py b/doc/src/hexcasting/scripts/collate_data.py index 1eb39d57..95ef4b5c 100644 --- a/doc/src/hexcasting/scripts/collate_data.py +++ b/doc/src/hexcasting/scripts/collate_data.py @@ -2,6 +2,7 @@ from __future__ import annotations import io +from dataclasses import InitVar, dataclass from html import escape from typing import IO, Any @@ -40,17 +41,17 @@ def tag_args(kwargs: dict[str, Any]): ) +@dataclass class PairTag: - __slots__ = ["stream", "name", "kwargs"] + stream: IO[str] + name: str + args: InitVar[dict[str, Any]] - # TODO: type - def __init__(self, stream: IO[str], name: str, **kwargs: Any): - self.stream = stream - self.name = name - self.kwargs = tag_args(kwargs) + def __post_init__(self, args: dict[str, Any]): + self.args_str = tag_args(args) def __enter__(self): - print(f"<{self.name}{self.kwargs}>", file=self.stream, end="") + print(f"<{self.name}{self.args_str}>", file=self.stream, end="") def __exit__(self, _1: Any, _2: Any, _3: Any): print(f"", file=self.stream, end="") @@ -76,7 +77,7 @@ class Stream: return self def pair_tag(self, name: str, **kwargs: Any): - return PairTag(self.stream, name, **kwargs) + return PairTag(self.stream, name, kwargs) def pair_tag_if(self, cond: Any, name: str, **kwargs: Any): return self.pair_tag(name, **kwargs) if cond else Empty()