
    |h                     l    S r SSKJrJr   " S S\S9r " S S\5      r " S S	\5      r " S
 S\5      rg)z/
Defines CPU Options for use in the CPU target
    )ABCMetaabstractmethodc                   >    \ rS rSrSr\S\4S j5       rS\4S jrSr	g)AbstractOptionValue   z2Abstract base class for custom option values.
    returnc                     g)z*Returns an encoding of the values
        N selfs    P/home/james-whalen/.local/lib/python3.13/site-packages/numba/core/cpu_options.pyencodeAbstractOptionValue.encode
   s     	    c                 V    U R                   R                   SU R                  5        S3$ )N())	__class____name__r   r   s    r   __repr__AbstractOptionValue.__repr__   s&    ..))*!DKKM?!<<r   r
   N)
r   
__module____qualname____firstlineno____doc__r   strr   r   __static_attributes__r
   r   r   r   r      s,      
=# =r   r   )	metaclassc                   <    \ rS rSrSrS rS r\rS\4S jr	S r
Srg	)
FastMathOptions   z1
Options for controlling fast math optimization.
c                 >   1 Skn[        U[        5      (       a   UR                  R                  5       U l        g USL a	  S1U l        g USL a  [	        5       U l        g [        U[        5      (       a   X-
  nU(       a  [        SU-  5      eXl        g [        U[        5      (       ae  [	        UR                  5       5      U-
  nU(       a  [        SU-  5      eUR                  5        VVs1 s H  u  pEU(       d  M  UiM     snnU l        g Sn[        U5      es  snnf )N>   afnnszarcpfastninfnnanreassoccontractTr&   FzUnrecognized fastmath flags: %sz<Expected fastmath option(s) to be either a bool, dict or set)	
isinstancer    flagscopyset
ValueErrordictkeysitems)r   valuevalid_flagsinvalidvenablemsgs          r   __init__FastMathOptions.__init__   s    
 e_--))+DJd] DJe^DJs##)G !BW!LMMJt$$%**,'+5G !BW!LMM-2[[]E]	f!]EDJPCS/! Fs   +D<Dc                 ,    [        U R                  5      $ N)boolr,   r   s    r   __bool__FastMathOptions.__bool__5   s    DJJr   r   c                 ,    [        U R                  5      $ r<   )r   r,   r   s    r   r   FastMathOptions.encode:   s    4::r   c                 n    [        U5      [        U 5      L a  U R                  UR                  :H  $ [        $ r<   )typer,   NotImplementedr   others     r   __eq__FastMathOptions.__eq__=   +    ;$t*$::,,r   )r,   N)r   r   r   r   r   r9   r>   __nonzero__r   r   rG   r   r
   r   r   r    r       s)    "8  K r   r    c                   <    \ rS rSrSrSrS rS rS rS\	4S jr
S	rg
)ParallelOptionsC   z/
Options for controlling auto parallelization.
)	enabledcomprehension	reductioninplace_binopsetitemnumpystencilfusionprangec                    [        U[        5      (       a7  Xl        Xl        Xl        Xl        Xl        Xl        Xl        Xl	        Xl
        g [        U[        5      (       a  SU l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l	        UR                  S	S5      U l
        U(       a  S
UR                  5       -  n[        U5      eg [        U[        5      (       a  UR                  U l        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        UR                  U l        UR                  U l	        UR                  U l
        g Sn[!        U5      e)NTrO   rP   rQ   rR   rS   rT   rU   rV   z!Unrecognized parallel options: %sz4Expect parallel option to be either a bool or a dict)r+   r=   rN   rO   rP   rQ   rR   rS   rT   rU   rV   r0   popr1   	NameErrorrL   r/   )r   r3   r8   s      r   r9   ParallelOptions.__init__J   s   eT"" L!&"N!& LJ LKKt$$DL!&?D!AD"YY{D9DN!&?D!AD 99Y5DL7D1DJ 99Y5DL))Hd3DK))Hd3DK9EJJLHn$  // ==DL!&!4!4D"__DN!&!4!4D ==DLDJ ==DL,,DK,,DKHCS/!r   c                 X    U R                    Vs0 s H  o[        X5      _M     sn$ s  snf )z"Get values as dictionary.
        )	__slots__getattr)r   ks     r   _get_valuesParallelOptions._get_valuesp   s(     .2^^<^74##^<<<s   'c                 ~    [        U5      [        U 5      L a!  U R                  5       UR                  5       :H  $ [        $ r<   )rC   r_   rD   rE   s     r   rG   ParallelOptions.__eq__u   s5    ;$t*$##%):):)<<<r   r   c                 j    SR                  S U R                  5       R                  5        5       5      $ )Nz, c              3   4   #    U  H  u  pU S U 3v   M     g7f)=Nr
   ).0r^   r6   s      r   	<genexpr>)ParallelOptions.encode.<locals>.<genexpr>{   s     K0JA3as0Js   )joinr_   r2   r   s    r   r   ParallelOptions.encodez   s)    yyK0@0@0B0H0H0JKKKr   )	rO   rN   rU   rQ   rS   rV   rP   rR   rT   N)r   r   r   r   r   r\   r9   r_   rG   r   r   r   r
   r   r   rL   rL   C   s-    DI$"L=

L Lr   rL   c                   r    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	\S 5       r
S rS	\4S
 jrSrg)InlineOptions~   z"
Options for controlling inlining
c                     Sn[        U[        5      (       a	  US;   a  SnO[        US5      nU(       a  Xl        g SU-  n[	        U5      e)NF)alwaysneverT__call__z~kwarg 'inline' must be one of the strings 'always' or 'never', or it can be a callable that returns True/False. Found value %s)r+   r   hasattr_inliner/   )r   r3   okr8   s       r   r9   InlineOptions.__init__   sR    eS!!++
+B L$&+,C S/!r   c                      U R                   S:H  $ )z
True if never inline
rp   rs   r   s    r   is_never_inlineInlineOptions.is_never_inline   s    
 ||w&&r   c                      U R                   S:H  $ )z
True if always inline
ro   rw   r   s    r   is_always_inlineInlineOptions.is_always_inline   s    
 ||x''r   c                 J    U R                   =(       d    U R                  (       + $ )z"
True if a cost model is provided
)r{   rx   r   s    r   has_cost_modelInlineOptions.has_cost_model   s    
 ))AT-A-ABBr   c                     U R                   $ )z
The raw value
rw   r   s    r   r3   InlineOptions.value   s    
 ||r   c                 n    [        U5      [        U 5      L a  U R                  UR                  :H  $ [        $ r<   )rC   r3   rD   rE   s     r   rG   InlineOptions.__eq__   rI   r   r   c                 ,    [        U R                  5      $ r<   )reprrs   r   s    r   r   InlineOptions.encode   s    DLL!!r   rw   N)r   r   r   r   r   r9   propertyrx   r{   r~   r3   rG   r   r   r   r
   r   r   rl   rl   ~   so    "  ' ' ( ( C C  
" "r   rl   N)r   abcr   r   r   r    rL   rl   r
   r   r   <module>r      sF    (
=G 
=,) ,^8L) 8Lv7"' 7"r   