
    Ǆg                     r    d Z ddlmZmZ  G d de      Z G d de      Z G d d	e      Z G d
 de      Zy)z/
Defines CPU Options for use in the CPU target
    )ABCMetaabstractmethodc                   2    e Zd ZdZedefd       ZdefdZy)AbstractOptionValuez2Abstract base class for custom option values.
    returnc                      y)z*Returns an encoding of the values
        N selfs    ^/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/numba/core/cpu_options.pyencodezAbstractOptionValue.encode
   s     	    c                 V    | j                   j                   d| j                          dS )N())	__class____name__r   r
   s    r   __repr__zAbstractOptionValue.__repr__   s&    ..))*!DKKM?!<<r   N)r   
__module____qualname____doc__r   strr   r   r	   r   r   r   r      s,      
=# =r   r   )	metaclassc                   2    e Zd ZdZd Zd ZeZdefdZd Z	y)FastMathOptionsz9
    Options for controlling fast math optimization.
    c                    h d}t        |t              r |j                  j                         | _        y |du r	dh| _        y |du rt	               | _        y t        |t              r||z
  }|rt        d|z        || _        y t        |t              rXt	        |j                               |z
  }|rt        d|z        |j                         D ch c]
  \  }}|s	| c}}| _        y d}t        |      c c}}w )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__zFastMathOptions.__init__   s    
 e_-))+DJd] DJe^DJs#k)G !BW!LMMDJt$%**,'+5G !BW!LMM-2[[]E	6f!EDJPCS/! Fs   
C8C8c                 ,    t        | j                        S N)boolr&   r
   s    r   __bool__zFastMathOptions.__bool__5   s    DJJr   r   c                 ,    t        | j                        S r5   )r   r&   r
   s    r   r   zFastMathOptions.encode:   s    4::r   c                 l    t        |      t        |       u r| j                  |j                  k(  S t        S r5   )typer&   NotImplementedr   others     r   __eq__zFastMathOptions.__eq__=   +    ;$t*$::,,r   N)
r   r   r   r   r3   r7   __nonzero__r   r   r>   r	   r   r   r   r      s)    "8  K r   r   c                   2    e Zd ZdZdZd Zd Zd ZdefdZ	y)	ParallelOptionsz7
    Options for controlling auto parallelization.
    )	enabledcomprehension	reductioninplace_binopsetitemnumpystencilfusionprangec                    t        |t              r@|| _        || _        || _        || _        || _        || _        || _        || _	        || _
        y t        |t              rd| _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _	        |j                  d	d      | _
        |rd
|j                         z  }t        |      y t        |t              r|j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  | _
        y d}t!        |      )NTrD   rE   rF   rG   rH   rI   rJ   rK   z!Unrecognized parallel options: %sz4Expect parallel option to be either a bool or a dict)r%   r6   rC   rD   rE   rF   rG   rH   rI   rJ   rK   r*   popr+   	NameErrorrB   r)   )r   r-   r2   s      r   r3   zParallelOptions.__init__J   s   eT" DL!&D"DN!&D DLDJ DLDKDK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                 V    | j                   D ci c]  }|t        | |       c}S c c}w )z"Get values as dictionary.
        )	__slots__getattr)r   ks     r   _get_valueszParallelOptions._get_valuesp   s(     .2^^<74##<<<s   &c                 |    t        |      t        |       u r!| j                         |j                         k(  S t        S r5   )r:   rS   r;   r<   s     r   r>   zParallelOptions.__eq__u   s5    ;$t*$##%):):)<<<r   r   c                 j    dj                  d | j                         j                         D              S )Nz, c              3   0   K   | ]  \  }}| d |   yw)=Nr	   ).0rR   r0   s      r   	<genexpr>z)ParallelOptions.encode.<locals>.<genexpr>{   s     K1A3asKs   )joinrS   r,   r
   s    r   r   zParallelOptions.encodez   s)    yyK0@0@0B0H0H0JKKKr   N)
r   r   r   r   rP   r3   rS   r>   r   r   r	   r   r   rB   rB   C   s-    DI$"L=

L Lr   rB   c                   h    e Zd ZdZd Zed        Zed        Zed        Zed        Z	d Z
defd	Zy
)InlineOptionsz*
    Options for controlling inlining
    c                     d}t        |t              r|dv rd}nt        |d      }|r|| _        y d|z  }t	        |      )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   r-   okr2   s       r   r3   zInlineOptions.__init__   sP    eS!++
+B DL$&+,C S/!r   c                      | j                   dk(  S )z&
        True if never inline
        r_   rb   r
   s    r   is_never_inlinezInlineOptions.is_never_inline   s    
 ||w&&r   c                      | j                   dk(  S )z'
        True if always inline
        r^   re   r
   s    r   is_always_inlinezInlineOptions.is_always_inline   s    
 ||x''r   c                 8    | j                   xs | j                   S )z2
        True if a cost model is provided
        )rh   rf   r
   s    r   has_cost_modelzInlineOptions.has_cost_model   s    
 ))AT-A-ABBr   c                     | j                   S )z
        The raw value
        re   r
   s    r   r-   zInlineOptions.value   s    
 ||r   c                 l    t        |      t        |       u r| j                  |j                  k(  S t        S r5   )r:   r-   r;   r<   s     r   r>   zInlineOptions.__eq__   r?   r   r   c                 ,    t        | j                        S r5   )reprrb   r
   s    r   r   zInlineOptions.encode   s    DLL!!r   N)r   r   r   r   r3   propertyrf   rh   rj   r-   r>   r   r   r	   r   r   r\   r\   ~   so    "  ' ' ( ( C C  
" "r   r\   N)r   abcr   r   r   r   rB   r\   r	   r   r   <module>rq      sF    (
=G 
=,) ,^8L) 8Lv7"' 7"r   