+
     i.  c                  s   ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHtH	t	H
t
HtHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ]'       d   ^ RIHt ^ RIHt  ! R R]4      t] ! R R4      4       t  ! R R] 4      t!R# )i    )annotations)	dataclass)Enum)OptionalAnyUnionListLiteralTypeTYPE_CHECKING)EV_KEY)keyboard_layout)
MacroErrorSymbolNotAvailableInTargetError)GlobalUInputs)Macro)Variable)RawValue)Mappingc                  s    ] tR t^+tRtRtRtR# )ArgumentFlagsrequiredspread N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r       L/usr/lib/python3.14/site-packages/inputremapper/injection/macros/argument.pyr   r   +   s    H Fr   r   c                  s    ] tR t^3t$ RtR]R&   R]R&   R]R&   RtR	]R
&   ]P                  t	R]R&   Rt
R	]R&   R R ltR tRtR# )ArgumentConfigz2Definition what kind of arguments a task may take.z)Union[int, Literal[ArgumentFlags.spread]]positionstrnamezList[Optional[Type]]typesFbool	is_symbolr   defaultis_variable_namec                   V ^8  d   QhRR/#    returnr#   r   Zformat   "r   __annotate__ZArgumentConfig.__annotate__C   s     6 6T 6r   c                	<    V P                   \        P                  8H  # N)r%   r   r   self   &r   is_requiredZArgumentConfig.is_requiredC   s    ||}5555r   c                r.   )zEDoes this Argument store all remaining Variables of a Task as a list?)r   r   r   r0   r2   r   	is_spreadZArgumentConfig.is_spreadF   s    }} 4 444r   r   N)r   r   r   r   __doc____annotations__r$   r   r   r%   r&   r3   r4   r   r   r   r   r   r   3   sG    <77
IIt ))GS) #d"65r   r   c                  s    ] tR t^Kt$ RtRtR]R&   R]R&   RtR]R&   R	 R
 ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR%tR# )&ArgumentzKValidation of variables and access to their value for Tasks during runtime.NzOptional[Variable]	_variablezList[Variable]
_variableszOptional[Mapping]_mappingc               s$    V ^8  d   QhRRRRRR/# )r)   argument_configr   mappingr   r*   Noner   r+   r,   r   r-   Argument.__annotate__V   s(      '  
	r   c                	s    VP                   V n         VP                  V n        VP                  V n        VP                  V n        VP                  V n        VP
                  V n        W n        . V n        R # r/   )r   r!   r"   r$   r%   r&   r:   r9   )r1   r;   r<   s   &&&r   __init__ZArgument.__init__V   s_     (00#((	$**
(22&.. / @ @r   c                    V ^8  d   QhRRRR/# )r)   
raw_valueszList[RawValue]r*   r=   r   r+   r,   r   r-   r>   k   s     	- 	-~ 	-$ 	-r   c                sp    V F/  pV P                  V4      pV P                  P                  V4       K1  	  R# )z`If the macro is supposed to contain multiple variables, set them.
Should be done during parsing.N)_parse_raw_valuer9   append)r1   rA   	raw_valuevariable   &&  r   initialize_variablesZArgument.initialize_variablesk   s0     $I,,Y7HOO""8, $r   c               r@   )r)   rD   r   r*   r=   r   r+   r,   r   r-   r>   v   s     " "X "$ "r   c                s4    V P                  V4      pW n        R# )z0Set the Arguments Variable. Done during parsing.N)rB   r8   )r1   rD   rE      && r   initialize_variableZArgument.initialize_variablev   s     ((3!r   c               r'   )r)   r*   r=   r   r+   r,   r   r-   r>      s     " "D "r   c                s@    \        V P                  RR7      pWn        R# )z<Set the Arguments to its default value. Done during parsing.TvalueconstN)r   r%   r8   )r1   rE      & r   initialize_defaultZArgument.initialize_default   s     $,,d;!r   c               r'   )r)   r*   r   r   r+   r,   r   r-   r>      s      3 r   c                s    V P                   P                  4       pV P                   P                  '       g   V P                  V P                   4      pV# )z<To ask for the current value of the variable during runtime.)r8   	get_valuerL   _validate_dynamic_valuer1   rK   rM   r   rO   ZArgument.get_value   s?     ((*~~###00@Er   c               r'   )r)   r*   z	List[Any]r   r+   r,   r   r-   r>      s      I r   c                s    . pV P                    FV  pVP                  '       g#   VP                  V P                  V4      4       K7  VP                  VP	                  4       4       KX  	  V# )z>To ask for the current values of the variables during runtime.)r9   rL   rC   rP   rO   )r1   ZvaluesrE   s   &  r   
get_valuesZArgument.get_values   sS     H>>>d::8DEh0023	 ( r   c               r'   )r)   r*   r    r   r+   r,   r   r-   r>      s     ) )3 )r   c                s6    V P                   P                  4       # )z.If the variable is not const, return its name.)r8   Zget_namer0   r2   r   get_variable_nameZArgument.get_variable_name   s     ~~&&((r   c               r'   r(   r   r+   r,   r   r-   r>      s     = = =r   c                sR    \        V P                  P                  4       \        4      # )z9Does the underlying Variable contain another child-macro?)
isinstancer8   rO   r   r0   r2   r   contains_macroZArgument.contains_macro   s     $..224e<<r   c               s     V ^8  d   QhRRRR/# )r)   rK   r   r*   r   r+   r,   r   r-   r>      s     ( (s (s (r   c                s    V P                   P                  '       d   \        R4      hV P                   P                  V4       R# )zPTo set the value of the underlying Variable during runtime.
Fails for constants.zCan't set value of a constantN)r8   rL   Z	Exception	set_valuerQ      &&r   rV   ZArgument.set_value   s2     >>;<<  'r   c               r@   )r)   symbolr    r*   r=   r   r+   r,   r   r-   r>      s     F Fs Ft Fr   c                s"   \        V4      p\        P                  ! V4      pVf   \        RV R2R7      hV P                  eL   V P                  P
                  pVe0   \        P                  ! V\        V4      '       g   \        W4      hR# R# R# )a  Checks if the key/symbol-name is valid. Like "KEY_A" or "escape".

Using `is_symbol` on the ArgumentConfig is prefered, which causes it to
automatically do this for you. But some macros may be a bit more flexible,
and there we want to assert this ourselves only in certain cases.NzUnknown key ""Zmsg)
r    r   Zgetr   r:   Ztarget_uinputr   Zcan_default_uinput_emitr
   r   )r1   rX   ZcodeZtargetrF   r   assert_is_symbolZArgument.assert_is_symbol   s     V""6*<=!:;;==$]]00F!-*O*O+ + 6fEE+! %r   c               r@   )r)   rD   r   r*   r   r   r+   r,   r   r-   r>      s     =. =.( =.x =.r   c                s   VP                   p\        V\        4      '       d   \        VRR7      # V P                  '       d*   VP                  R4      '       d   V^R p\        VRR7      # VP                  R4      '       d   \        VR,          RR7      # V P                  '       d;   VP                  R4      '       d   V^R pV P                  V4       \        VRR7      # VR8X  g   VR8X  d   R	V P                  9   d   \        R	RR7      # VP                  R4      '       d(   \        V P                  9   d   V^R p\        VRR7      # \        V P                  9   d   R
V9   d    \        \        V4      RR7      # \        V P                  9   d    \        \        V4      RR7      # VP                  R4      '       g(   RV9   g   RV9   d   \        RV P                   2R7      h\        V P                  9   d   \        VRR7      # V P!                  V4      h  \        \        3 d   p R	p?LR	p?ii ; i  \        \        3 d   p R	p?LR	p?ii ; i)zValidate and parse.TrJ   rY   FZ$:i   NNZ r=   NZ.Z(Z)z*A broken macro was passed as parameter to rZ   i)rK   rT   r   r   r&   Z
startswithr$   r[   r"   r    float
ValueErrorZ	TypeErrorZintr   r!   _type_error_factory)r1   rD   rK   ZerF   r   rB   ZArgument._parse_raw_value   s    eU##%t44    $$a%u55C  %)599>>>$$a!!%(%t44RK5F?

0B$d33C  SDJJ%6 !BKE%t44DJJ3%<eEl$?? $**c%j== $$#,#, @L  $**%t44&&u--+ 	*  	* s$   )H H: H72H7:IIc               r@   )r)   rE   r   r*   r   r   r+   r,   r   r-   r>   	  s     . . .S .r   c                s~   VP                  4       pV P                  '       d   \        V4      pV P                  V4       V# RV P                  9   d   Vf   V# \        V4      V P                  9   d   V# \        V4      V P                  9  d!   \        V P                  9   d   \        V4      # V P                  V4      h)znTo make sure the value of a non-const variable, asked for at runtime, is
fitting for the given ArgumentConfig.N)rO   r$   r    r[   r"   typer^   )r1   rE   rK   rH   r   rP   Z Argument._validate_dynamic_value	  s     ""$>>>JE!!%(L4::%-L;$**$L;djj(SDJJ-> u: &&u--r   c               r@   )r)   rK   r    r*   r#   r   r+   r,   r   r-   r>   *  s        r   c                sB     \        V4       R#   \         d     R# i ; i)z/Check if the value can be turned into a number.TF)r\   r]   rQ   rW   r   _is_numeric_stringZArgument._is_numeric_string*  s#    	%L 		s    c               r@   )r)   rK   r   r*   r   r   r+   r,   r   r-   r>   2  s     
 
 
 
r   c                	s    . pV P                    F5  pVf   VP                  R4       K  VP                  VP                  4       K7  	  \        RV P                   RV R\        V4      P                   RV R2	R7      # )Nr=   z
Expected "z" to be one of z
, but got z "rY   rZ   )r"   rC   r   r   r!   r_   )r1   rK   Zformatted_typesZtype_rF   r   r^   ZArgument._type_error_factory2  sz    %'ZZE}&&v.&&u~~6	   TYYK6Gz;''(5'4
 	
r   )	r:   r8   r9   r%   r$   r&   r!   r   r"   )r   r   r   r   r5   r8   r6   r:   r?   rG   rI   rN   rO   rR   rS   rU   rV   r[   rB   rP   r`   r^   r   r   r   r   r7   r7   K   sq    U$(I!( "&H&*	-"")
=
(F&=.~.B
 
r   r7   N)"Z
__future__r    Zdataclassesr   Zenumr   Ztypingr   r   r   r   r   r   r	   Zevdev._ecodesr
   Z%inputremapper.configs.keyboard_layoutr   Z'inputremapper.configs.validation_errorsr   r   Z&inputremapper.injection.global_uinputsr   Z$inputremapper.injection.macros.macror   Z'inputremapper.injection.macros.variabler   Z(inputremapper.injection.macros.raw_valuer   Zinputremapper.configs.mappingr   r   r   r7   r   r   r   <module>ra      sl   * # !  K K K   A A 6 <A5D  5 5 5.u
~ u
r   