Skip to content

Commit 145a484

Browse files
authored
♻️ REFACTOR: __slots__ for dataclasses (#214)
1 parent 2a67873 commit 145a484

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

markdown_it/_compat.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from __future__ import annotations
2+
3+
from collections.abc import Mapping
4+
import sys
5+
from typing import Any
6+
7+
if sys.version_info >= (3, 10):
8+
DATACLASS_KWARGS: Mapping[str, Any] = {"slots": True}
9+
else:
10+
DATACLASS_KWARGS: Mapping[str, Any] = {}

markdown_it/ruler.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ class Ruler
2121
from dataclasses import dataclass, field
2222
from typing import TYPE_CHECKING
2323

24+
from markdown_it._compat import DATACLASS_KWARGS
25+
2426
if TYPE_CHECKING:
2527
from markdown_it import MarkdownIt
2628

@@ -50,7 +52,7 @@ def src(self, value: str) -> None:
5052
RuleFunc = Callable
5153

5254

53-
@dataclass()
55+
@dataclass(**DATACLASS_KWARGS)
5456
class Rule:
5557
name: str
5658
enabled: bool

markdown_it/rules_inline/state_inline.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from dataclasses import dataclass
66
from typing import TYPE_CHECKING
77

8+
from .._compat import DATACLASS_KWARGS
89
from ..common.utils import isMdAsciiPunct, isPunctChar, isWhiteSpace
910
from ..ruler import StateBase
1011
from ..token import Token
@@ -13,7 +14,7 @@
1314
from markdown_it import MarkdownIt
1415

1516

16-
@dataclass()
17+
@dataclass(**DATACLASS_KWARGS)
1718
class Delimiter:
1819
# Char code of the starting marker (number).
1920
marker: int

markdown_it/token.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from typing import Any
66
import warnings
77

8+
from markdown_it._compat import DATACLASS_KWARGS
9+
810

911
def convert_attrs(value: Any) -> Any:
1012
"""Convert Token.attrs set as ``None`` or ``[[key, value], ...]`` to a dict.
@@ -18,7 +20,7 @@ def convert_attrs(value: Any) -> Any:
1820
return value
1921

2022

21-
@dc.dataclass()
23+
@dc.dataclass(**DATACLASS_KWARGS)
2224
class Token:
2325

2426
type: str

0 commit comments

Comments
 (0)