1- import sifter .grammar
1+ from email .message import Message
2+ from typing import (
3+ TYPE_CHECKING ,
4+ List ,
5+ Optional ,
6+ Union ,
7+ SupportsInt ,
8+ Text
9+ )
10+
11+ from sifter .grammar .command import Command
12+ from sifter .grammar .command_list import CommandList
13+ from sifter .grammar .state import EvaluationState
14+ from sifter .grammar .actions import Actions
15+
16+ if TYPE_CHECKING :
17+ from sifter .grammar .tag import Tag as TagGrammar
18+ from sifter .grammar .string import String
19+ from sifter .grammar .test import Test
220
321__all__ = ('CommandIf' , 'CommandElsIf' , 'CommandElse' ,)
422
523
624# section 3.1
7- class CommandIfBase (sifter .grammar .Command ):
8-
9- def __init__ (self , arguments = None , tests = None , block = None ):
25+ class CommandIfBase (Command ):
26+
27+ def __init__ (
28+ self ,
29+ arguments : Optional [List [Union ['TagGrammar' , SupportsInt , List [Union [Text , 'String' ]]]]] = None ,
30+ tests : Optional [List ['Test' ]] = None ,
31+ block : Optional [CommandList ] = None
32+ ) -> None :
1033 super (CommandIfBase , self ).__init__ (arguments , tests , block )
1134 self .validate_arguments ()
1235 self .validate_tests_size (1 )
1336
14- def evaluate (self , message , state ) :
37+ def evaluate (self , message : Message , state : EvaluationState ) -> Optional [ Actions ] :
1538 if self .tests [0 ].evaluate (message , state ):
1639 result = self .block .evaluate (message , state )
1740 state .last_if = True
1841 return result
19- else :
20- state .last_if = False
21- return None
42+ state .last_if = False
43+ return None
2244
2345
2446class CommandIf (CommandIfBase ):
@@ -33,30 +55,33 @@ class CommandElsIf(CommandIfBase):
3355
3456 RULE_IDENTIFIER = 'ELSIF'
3557
36- def evaluate (self , message , state ) :
58+ def evaluate (self , message : Message , state : EvaluationState ) -> Optional [ Actions ] :
3759 if state .last_if :
3860 return None
39- else :
40- return super (CommandElsIf , self ).evaluate (message , state )
61+ return super (CommandElsIf , self ).evaluate (message , state )
4162
4263
4364CommandElsIf .register ()
4465
4566
46- class CommandElse (sifter . grammar . Command ):
67+ class CommandElse (Command ):
4768
4869 RULE_IDENTIFIER = 'ELSE'
4970
50- def __init__ (self , arguments = None , tests = None , block = None ):
71+ def __init__ (
72+ self ,
73+ arguments : Optional [List [Union ['TagGrammar' , SupportsInt , List [Union [Text , 'String' ]]]]] = None ,
74+ tests : Optional [List ['Test' ]] = None ,
75+ block : Optional [CommandList ] = None
76+ ) -> None :
5177 super (CommandElse , self ).__init__ (arguments , tests , block )
5278 self .validate_arguments ()
5379 self .validate_tests_size (0 )
5480
55- def evaluate (self , message , state ) :
81+ def evaluate (self , message : Message , state : EvaluationState ) -> Optional [ Actions ] :
5682 if state .last_if :
5783 return None
58- else :
59- return self .block .evaluate (message , state )
84+ return self .block .evaluate (message , state )
6085
6186
6287CommandElse .register ()
0 commit comments