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+
111from 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
725class CommandIfBase (Command ):
826
9- def __init__ (self , arguments = None , tests = None , block = None ):
27+ def __init__ (self , arguments : Optional [ List [ Union [ 'TagGrammar' , SupportsInt , List [ Union [ Text , 'String' ]]]]] = None , tests : Optional [ List [ 'Test' ]] = None , block : Optional [ CommandList ] = None ) -> None :
1028 super (CommandIfBase , self ).__init__ (arguments , tests , block )
1129 self .validate_arguments ()
1230 self .validate_tests_size (1 )
1331
14- def evaluate (self , message , state ) :
32+ def evaluate (self , message : Message , state : EvaluationState ) -> Optional [ Actions ] :
1533 if self .tests [0 ].evaluate (message , state ):
1634 result = self .block .evaluate (message , state )
1735 state .last_if = True
@@ -32,7 +50,7 @@ class CommandElsIf(CommandIfBase):
3250
3351 RULE_IDENTIFIER = 'ELSIF'
3452
35- def evaluate (self , message , state ) :
53+ def evaluate (self , message : Message , state : EvaluationState ) -> Optional [ Actions ] :
3654 if state .last_if :
3755 return None
3856 return super (CommandElsIf , self ).evaluate (message , state )
@@ -45,12 +63,12 @@ class CommandElse(Command):
4563
4664 RULE_IDENTIFIER = 'ELSE'
4765
48- def __init__ (self , arguments = None , tests = None , block = None ):
66+ def __init__ (self , arguments : Optional [ List [ Union [ 'TagGrammar' , SupportsInt , List [ Union [ Text , 'String' ]]]]] = None , tests : Optional [ List [ 'Test' ]] = None , block : Optional [ CommandList ] = None ) -> None :
4967 super (CommandElse , self ).__init__ (arguments , tests , block )
5068 self .validate_arguments ()
5169 self .validate_tests_size (0 )
5270
53- def evaluate (self , message , state ) :
71+ def evaluate (self , message : Message , state : EvaluationState ) -> Optional [ Actions ] :
5472 if state .last_if :
5573 return None
5674 return self .block .evaluate (message , state )
0 commit comments