88
99import fnmatch
1010from collections import OrderedDict
11- from typing import Any , List , Union
11+ from typing import Any , List , Optional , Union
1212
1313from ramble .language .language_base import DirectiveError
1414
@@ -131,7 +131,11 @@ def require_definition(
131131
132132
133133def require_condition (
134- obj , directive_name : str , single_arg_name : str = None , multiple_arg_name : str = None , ** kwargs
134+ obj ,
135+ directive_name : str ,
136+ single_arg_name : Optional [str ] = None ,
137+ multiple_arg_name : Optional [str ] = None ,
138+ ** kwargs ,
135139):
136140 """Require at least one condition for a type in a directive, and converts all conditions to
137141 when conditions
@@ -155,25 +159,26 @@ def require_condition(
155159 Returns:
156160 List of all when conditions
157161 """
162+ single_arg_val = kwargs .get (single_arg_name ) if single_arg_name else None
163+ multiple_arg_val = kwargs .get (multiple_arg_name ) if multiple_arg_name else None
164+ when_arg_val = kwargs .get ("when" )
158165
159- if not (kwargs [ single_arg_name ] or kwargs [ multiple_arg_name ] or kwargs [ "when" ] ):
166+ if not (single_arg_val or multiple_arg_val or when_arg_val ):
160167 raise DirectiveError (
161168 f"Directive { directive_name } requires at least one of "
162169 f"{ single_arg_name } or { multiple_arg_name } or when to be defined."
163170 )
164171
165- when_list = []
166- if "when" in kwargs :
172+ if when_arg_val is not None :
167173 when_list = build_when_list (kwargs ["when" ], obj , obj .name , directive_name )
168-
169- single_arg_val = kwargs [single_arg_name ] if single_arg_name in kwargs else ""
170- multiple_arg_vals = kwargs [multiple_arg_name ] if multiple_arg_name in kwargs else []
174+ else :
175+ when_list = []
171176
172177 # If args are modifier modes, convert to when conditions
173178 if single_arg_name == "mode" or multiple_arg_name == "modes" :
174179 all_modes = merge_definitions (
175180 single_arg_val ,
176- multiple_arg_vals ,
181+ multiple_arg_val ,
177182 obj .modes ,
178183 "mode" ,
179184 "modes" ,
0 commit comments