7
7
DOM classes used by parser.
8
8
"""
9
9
10
+ from __future__ import annotations
11
+
10
12
import abc
11
- import sys
12
13
import typing as t
13
14
from enum import Enum
14
15
from typing import NamedTuple
15
16
16
- if sys .version_info >= (3 , 8 ):
17
- ErrorType = t .Union [
18
- t .Literal ["ignore" ], t .Literal ["message" ], t .Literal ["exception" ]
19
- ]
20
- else :
21
- # Python 3.6/3.7 do not have t.Literal
22
- ErrorType = str # pragma: no cover
17
+ ErrorType = t .Union [t .Literal ["ignore" ] | t .Literal ["message" ] | t .Literal ["exception" ]]
23
18
24
19
25
20
class PluginIdentifier (NamedTuple ):
@@ -47,101 +42,101 @@ class PartType(Enum):
47
42
48
43
class TextPart (NamedTuple ):
49
44
text : str
50
- source : t . Optional [ str ] = None
51
- type : " t.Literal[PartType.TEXT]" = PartType .TEXT
45
+ source : str | None = None
46
+ type : t .Literal [PartType .TEXT ] = PartType .TEXT
52
47
53
48
54
49
class ItalicPart (NamedTuple ):
55
50
text : str
56
- source : t . Optional [ str ] = None
57
- type : " t.Literal[PartType.ITALIC]" = PartType .ITALIC
51
+ source : str | None = None
52
+ type : t .Literal [PartType .ITALIC ] = PartType .ITALIC
58
53
59
54
60
55
class BoldPart (NamedTuple ):
61
56
text : str
62
- source : t . Optional [ str ] = None
63
- type : " t.Literal[PartType.BOLD]" = PartType .BOLD
57
+ source : str | None = None
58
+ type : t .Literal [PartType .BOLD ] = PartType .BOLD
64
59
65
60
66
61
class ModulePart (NamedTuple ):
67
62
fqcn : str
68
- source : t . Optional [ str ] = None
69
- type : " t.Literal[PartType.MODULE]" = PartType .MODULE
63
+ source : str | None = None
64
+ type : t .Literal [PartType .MODULE ] = PartType .MODULE
70
65
71
66
72
67
class PluginPart (NamedTuple ):
73
68
plugin : PluginIdentifier
74
- source : t . Optional [ str ] = None
75
- type : " t.Literal[PartType.PLUGIN]" = PartType .PLUGIN
69
+ source : str | None = None
70
+ type : t .Literal [PartType .PLUGIN ] = PartType .PLUGIN
76
71
77
72
78
73
class URLPart (NamedTuple ):
79
74
url : str
80
- source : t . Optional [ str ] = None
81
- type : " t.Literal[PartType.URL]" = PartType .URL
75
+ source : str | None = None
76
+ type : t .Literal [PartType .URL ] = PartType .URL
82
77
83
78
84
79
class LinkPart (NamedTuple ):
85
80
text : str
86
81
url : str
87
- source : t . Optional [ str ] = None
88
- type : " t.Literal[PartType.LINK]" = PartType .LINK
82
+ source : str | None = None
83
+ type : t .Literal [PartType .LINK ] = PartType .LINK
89
84
90
85
91
86
class RSTRefPart (NamedTuple ):
92
87
text : str
93
88
ref : str
94
- source : t . Optional [ str ] = None
95
- type : " t.Literal[PartType.RST_REF]" = PartType .RST_REF
89
+ source : str | None = None
90
+ type : t .Literal [PartType .RST_REF ] = PartType .RST_REF
96
91
97
92
98
93
class CodePart (NamedTuple ):
99
94
text : str
100
- source : t . Optional [ str ] = None
101
- type : " t.Literal[PartType.CODE]" = PartType .CODE
95
+ source : str | None = None
96
+ type : t .Literal [PartType .CODE ] = PartType .CODE
102
97
103
98
104
99
class OptionNamePart (NamedTuple ):
105
- plugin : t . Optional [ PluginIdentifier ]
106
- entrypoint : t . Optional [ str ] # present iff plugin.type == 'role'
107
- link : t . List [str ]
100
+ plugin : PluginIdentifier | None
101
+ entrypoint : str | None # present iff plugin.type == 'role'
102
+ link : list [str ]
108
103
name : str
109
- value : t . Optional [ str ]
110
- source : t . Optional [ str ] = None
111
- type : " t.Literal[PartType.OPTION_NAME]" = PartType .OPTION_NAME
104
+ value : str | None
105
+ source : str | None = None
106
+ type : t .Literal [PartType .OPTION_NAME ] = PartType .OPTION_NAME
112
107
113
108
114
109
class OptionValuePart (NamedTuple ):
115
110
value : str
116
- source : t . Optional [ str ] = None
117
- type : " t.Literal[PartType.OPTION_VALUE]" = PartType .OPTION_VALUE
111
+ source : str | None = None
112
+ type : t .Literal [PartType .OPTION_VALUE ] = PartType .OPTION_VALUE
118
113
119
114
120
115
class EnvVariablePart (NamedTuple ):
121
116
name : str
122
- source : t . Optional [ str ] = None
123
- type : " t.Literal[PartType.ENV_VARIABLE]" = PartType .ENV_VARIABLE
117
+ source : str | None = None
118
+ type : t .Literal [PartType .ENV_VARIABLE ] = PartType .ENV_VARIABLE
124
119
125
120
126
121
class ReturnValuePart (NamedTuple ):
127
- plugin : t . Optional [ PluginIdentifier ]
128
- entrypoint : t . Optional [ str ] # present iff plugin.type == 'role'
129
- link : t . List [str ]
122
+ plugin : PluginIdentifier | None
123
+ entrypoint : str | None # present iff plugin.type == 'role'
124
+ link : list [str ]
130
125
name : str
131
- value : t . Optional [ str ]
132
- source : t . Optional [ str ] = None
133
- type : " t.Literal[PartType.RETURN_VALUE]" = PartType .RETURN_VALUE
126
+ value : str | None
127
+ source : str | None = None
128
+ type : t .Literal [PartType .RETURN_VALUE ] = PartType .RETURN_VALUE
134
129
135
130
136
131
class HorizontalLinePart (NamedTuple ):
137
- source : t . Optional [ str ] = None
138
- type : " t.Literal[PartType.HORIZONTAL_LINE]" = PartType .HORIZONTAL_LINE
132
+ source : str | None = None
133
+ type : t .Literal [PartType .HORIZONTAL_LINE ] = PartType .HORIZONTAL_LINE
139
134
140
135
141
136
class ErrorPart (NamedTuple ):
142
137
message : str
143
- source : t . Optional [ str ] = None
144
- type : " t.Literal[PartType.ERROR]" = PartType .ERROR
138
+ source : str | None = None
139
+ type : t .Literal [PartType .ERROR ] = PartType .ERROR
145
140
146
141
147
142
AnyPart = t .Union [
@@ -163,7 +158,7 @@ class ErrorPart(NamedTuple):
163
158
]
164
159
165
160
166
- Paragraph = t . List [AnyPart ]
161
+ Paragraph = list [AnyPart ]
167
162
168
163
169
164
class Walker (abc .ABC ):
0 commit comments