
    shV                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKJ r J!r!J"r"  S S	K#J$r$  S S
K#Jr  S SK%J&r&J'r'J(r(J)r)  S r*\RV                  4S jr,0 S\RZ                  _S\R\                  _S\R^                  _S\R`                  _S\Rb                  _S\Rd                  _S\Rf                  _S\Rh                  _S\Rj                  _S\Rl                  _S\Rn                  _S\Rp                  _S\Rr                  _S\Rt                  _S\Rv                  _S\Rx                  _S\Rz                  _\R|                  \R~                  \R                  \R                  \R                  S.ErC\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  S .rQ0 \CE\QErR\R                  \R                  \R                  \R                  \R                  S!.rX0 \RZ                  S_\R                  S"_\R\                  S_\R                  S#_\R^                  S_\R                  S$_\R`                  S_\R                  S%_\Rb                  S_\R                  S&_\Rd                  S_\R                  S'_\Rf                  S_\R                  S(_\Rh                  S_\R                  S)_\Rj                  S_0 \R                  S*_\Rl                  S_\R                  S+_\Rn                  S_\R                  S,_\Rp                  S_\R                  S-_\Rr                  S_\Rt                  S_\Rv                  S_\Rx                  S_\Rz                  S_\R|                  S._\R~                  S/_\R                  S0_\R                  S1_\R                  S_E\R                  S\R                  S2\R                  S3\R                  S40ErYS5qZS6 r[\\4S7 jr]\
R                  " S8 S9 5        \ R                  " \[5         " S: S;5      r` " S< S=\a5      rbSbS> jrc\R                  " S?5      re " S@ SA\(\e   5      rf " SB SC\(\e   \R                  \e   5      rh\R                  " SD5      ri\R                  " SE5      rj " SF SG\&\i\j4   \R                  \i\j4   5      rk " SH SI\)\i\j4   \R                  \i\j4   5      rl " SJ SK\m5      rnSL roSM rpSN rq " SO SP\a5      rrSQ rsScSR jrtSSru\" \u5      rv\\vlw        ST rxSU rySV rzSdSW jr{ " SX SY\5      r|SZ r} " S[ S\\R                  5      rS] r " S^ S_\a5      r " S` Sa\GR                  5      rg)e    N)pformat)
ModuleType)import_module)	signature)	Signature)	Parameter)	PYVERSIONMACHINE_BITSDEVELOPER_MODE)config)types)MappingSequence
MutableSetMutableMappingc                 ~    U R                   b   [        R                  " U R                   5        U R                  S5      $ )zK
Erase the traceback and hanging locals from the given exception instance.
N)__traceback__	tracebackclear_frameswith_traceback)	exc_values    d/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/core/utils.pyerase_tracebackr   #   s5     *y667##D))    c                     S nU" U 5      nU" U5      nX4:w  a  [         R                  R                  U 5      $ [         R                  R                  XS9$ )z
Produces a "safe" relative path, on windows relpath doesn't work across
drives as technically they don't share the same root.
See: https://bugs.python.org/issue7195 for details.
c                     [         R                  R                  [         R                  R                  U 5      5      S   $ )Nr   )ospath
splitdriveabspath)xs    r   <lambda>safe_relpath.<locals>.<lambda>4   s%    RWW//0BCAFr   )start)r   r   r    relpath)r   r$   drive_letter
drive_pathdrive_starts        r   safe_relpathr)   ,   sL     GLd#Ju%K wwt$$wwt11r   +-*z///%z**&|^z<<z>>z==z!=<z<=>)>=isis notin@)+=-=*=//=/=%=**=&=|=^=<<=>>=z@=)r*   r+   ~notis_truer9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r4   r5   r6   r7   rE   rF   rG   Fc                      Sq g NT)_shutting_down r   r   _at_shutdownrL      s    Nr   c                 L    U " 5       R                  S5      nUSL =(       d    USL $ )z
Whether the interpreter is currently shutting down.
For use in finalizers, __del__ methods, and similar; it is advised
to early bind this function rather than look it up when calling it,
since at shutdown module globals may be cleared.
rJ   TN)get)globalsvs     r   shutting_downrQ      s(     		&'A9!T	!r   c                      g NrK   rK   r   r   r"   r"      s    r   c                      g rS   rK   rK   r   r   r"   r"      s    tr   c                      ^  \ rS rSr% Sr\R                  " 5       r\\	S'   0 r
U 4S jrS rS rS rS rS	 r\R$                  S
 5       rSrU =r$ )ThreadLocalStack   zXA TLS stack container.

Uses the BORG pattern and stores states in threadlocal storage.

stack_namec                   > [         TU ]  " S0 UD6  XR                  ;  d   SU S35       eXl        X R                  U'   g )Nzstack_name: 'z' already in userK   )super__init_subclass___registeredrX   )clsrX   kwargs	__class__s      r   r[   "ThreadLocalStack.__init_subclass__   sH    !+F+0 	9J<'78	90#&)
#r   c                     [        U 5      [        Ld   eU R                  nSU R                   3n [	        X5      nX0l        g ! [
         a    [        5       n[        XU5         N)f = f)Nstack_)	typerV   _tlsrX   getattrAttributeErrorlistsetattr_stack)selftlsattr	tls_stacks       r   __init__ThreadLocalStack.__init__   sg    Dz!1111ii()	**I
  	  	*ICy)	*s   A  A&%A&c                 :    U R                   R                  U5        g)zPush to the stack
        N)ri   appendrj   states     r   pushThreadLocalStack.push   s     	5!r   c                 6    U R                   R                  5       $ )zPop from the stack
        )ri   poprj   s    r   rw   ThreadLocalStack.pop   s     {{  r   c                      U R                   S   $ )z~Get the top item on the stack.

Raises IndexError if the stack is empty. Users should check the size
of the stack beforehand.
ri   rx   s    r   topThreadLocalStack.top   s     {{2r   c                 ,    [        U R                  5      $ rS   )lenri   rx   s    r   __len__ThreadLocalStack.__len__   s    4;;r   c              #      #    U R                  U5         Sv   U R                  5         g! U R                  5         f = f7f)zHA contextmanager that pushes ``state`` for the duration of the
context.
N)rt   rw   rr   s     r   enterThreadLocalStack.enter   s-     
 			%	HHJDHHJs   ?* ?<?r|   )__name__
__module____qualname____firstlineno____doc__	threadinglocalrd   str__annotations__r\   r[   rn   rt   rw   r}   r   
contextlibcontextmanagerr   __static_attributes____classcell__r_   s   @r   rV   rV      sX     ??DOK* "
!
   r   rV   c                   l   ^  \ rS rSr0 rS rSS jrS rS rS r	U 4S jr
S rS	 rS
 rS rS rSrU =r$ )ConfigOptions   c                 B    U R                   R                  5       U l        g rS   )OPTIONScopy_valuesrx   s    r   rn   ConfigOptions.__init__  s    ||((*r   c                 Z    XR                   ;  a  [        SU-  5      eX R                  U'   g NzInvalid flag: %s)r   	NameErrorr   )rj   namevalues      r   setConfigOptions.set  s)    ||#.566"Tr   c                 (    U R                  US5        g )NF)r   rj   r   s     r   unsetConfigOptions.unset  s    ur   c                 >    XR                   ;  a  [        SU-  5      eg r   )r   rf   r   s     r   _check_attrConfigOptions._check_attr  s"    ||# !3d!:;; $r   c                 B    U R                  U5        U R                  U   $ rS   )r   r   r   s     r   __getattr__ConfigOptions.__getattr__  s    ||D!!r   c                    > UR                  S5      (       a  [        [        U ]  X5        g U R	                  U5        X R
                  U'   g )N_)
startswithrZ   r   __setattr__r   r   )rj   r   r   r_   s      r   r   ConfigOptions.__setattr__  s;    ??3-24?T"!&LLr   c                 h    SSR                  S U R                  R                  5        5       5      -  $ )Nz	Flags(%s)z, c              3   F   #    U  H  u  pUS Ld  M  U< SU< 3v   M     g7f)F=NrK   .0krP   s      r   	<genexpr>)ConfigOptions.__repr__.<locals>.<genexpr>  s'      ':3G41*+5. (8!Q'73Gs   !!)joinr   itemsrx   s    r   __repr__ConfigOptions.__repr__  s4    TYY ':37<<3E3E3G': : : 	:r   c                 d    [        U 5      " 5       nU R                  R                  5       Ul        U$ rS   )rc   r   r   )rj   r   s     r   r   ConfigOptions.copy"  s&    Dz|||((*r   c                 b    [        U[        5      =(       a    UR                  U R                  :H  $ rS   )
isinstancer   r   rj   others     r   __eq__ConfigOptions.__eq__'  s&    5-0 .-	/r   c                     X:X  + $ rS   rK   r   s     r   __ne__ConfigOptions.__ne__+  s      r   c                 l    [        [        [        U R                  R	                  5       5      5      5      $ rS   )hashtuplesortedr   r   rx   s    r   __hash__ConfigOptions.__hash__.  s$    E&!3!3!56788r   r   T)r   r   r   r   r   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r      sD    G+#
<"':

/!9 9r   r   c                   ^  U/ :X  a  / $ SSK Jn  Sn/ n[        U5       HX  u  pg[        US0 5      nUR	                  SU5      n	U	c  M)  X9   n
T R                  U
5      (       d  ME  UR                  XzU45        MZ     U 4S jn[        X[S9 Vs/ s H  oS   PM	     nnU(       d  SU S	T  S
3nSSKJ	n  U" U5      eU$ s  snf )zThis orders the given templates from most to least specific against the
current "target". "fnkey" is an indicative typing key for use in the
exception message in the case that there's no usable templates for the
current "target".
r   )target_registrygenericmetadatatargetc                 @   > TR                   R                  U S   5      $ N   )__mro__index)r!   r   s    r   key(order_by_target_specificity.<locals>.keyL  s    ~~##AaD))r   )r   z:Function resolution cannot find any matches for function 'z' for the current target: 'z'.)UnsupportedError)
numba.core.target_extensionr   	enumeratere   rN   inherits_fromrq   r   numba.core.errorsr   )r   	templatesfnkeyr   DEFAULT_TARGETusableixtemp_clsmdhwhw_clazzr   r!   ordermsgr   s   `               r   order_by_target_specificityr   2  s     B	; NF!),Xz2.VVHn->&*H##H--x267 -*!&232aqT2E3'4VHB@6s##L 4s   B<Tc                   ^    \ rS rSrSS\R
                  \   4S jjrS rS r	S r
S rS rS	rg
)
OrderedSeti\  iterablec                 :    [         R                  US 5      U l        g rS   )dictfromkeys_data)rj   r   s     r   rn   OrderedSet.__init__^  s    ]]8T2
r   c                     XR                   ;   $ rS   r   )rj   r   s     r   __contains__OrderedSet.__contains__b  s    jj  r   c                 ,    [        U R                  5      $ rS   )iterr   rx   s    r   __iter__OrderedSet.__iter__e  s    DJJr   c                 ,    [        U R                  5      $ rS   )r   r   rx   s    r   r   OrderedSet.__len__h  s    4::r   c                 "    S U R                   U'   g rS   r   rj   items     r   addOrderedSet.addk  s    

4r   c                 <    U R                   R                  US 5        g rS   )r   rw   r  s     r   discardOrderedSet.discardn  s    

tT"r   r   NrK   )r   r   r   r   _tpIterabler   rn   r   r   r   r  r  r   rK   r   r   r   r   \  s/    3a 3!  #r   r   c                       \ rS rSrSrSS\R                  \   4S jjrS r	S r
S\S\4S	 jrS\4S
 jrS\4S jrS rSrg)MutableSortedSetir  zMutable Sorted Set
    valuesc                 $    [        U5      U l        g rS   )r   r   rj   r  s     r   rn   MutableSortedSet.__init__v  s    6{r   c                 ,    [        U R                  5      $ rS   r   r   rx   s    r   r   MutableSortedSet.__len__y      4<<  r   c                 L    [        S [        U R                  5       5       5      $ )Nc              3   $   #    U  H  ov   M     g 7frS   rK   r   r   s     r   r   ,MutableSortedSet.__iter__.<locals>.<genexpr>}  s     43!A3   )r   r   r   rx   s    r   r   MutableSortedSet.__iter__|  s    4vdll3444r   r!   returnc                 8    U R                   R                  U5      $ rS   )r   r   rj   r!   s     r   r   MutableSortedSet.__contains__  s    ||((++r   c                 8    U R                   R                  U5      $ rS   )r   r  r  s     r   r  MutableSortedSet.add  s    ||""r   r   c                 :    U R                   R                  U5        g rS   )r   r  )rj   r   s     r   r  MutableSortedSet.discard  s    U#r   c                 :    U R                   R                  U5        g rS   )r   updater  s     r   r%  MutableSortedSet.update  s    F#r   r   Nr	  )r   r   r   r   r   r
  r  r   rn   r   r   boolr   r  r  r%  r   rK   r   r   r  r  r  sU    #s||A #!5,a ,D ,#Q #$Q $$r   r  TkTvc                   0    \ rS rSrSrS rS rS rS rSr	g)		SortedMapi  zImmutable
    c                     / U l         0 U l        [        [        U5      5       H2  u  nu  p4X R                  U'   U R                   R	                  X445        M4     g rS   )r   _indexr   r   rq   )rj   seqir   rP   s        r   rn   SortedMap.__init__  sH    "6#;/IAvKKNLL' 0r   c                 D    U R                   U   nU R                  U   S   $ r   r-  r   )rj   r   r/  s      r   __getitem__SortedMap.__getitem__  s"    KKN||Aq!!r   c                 ,    [        U R                  5      $ rS   r  rx   s    r   r   SortedMap.__len__  r  r   c                 :    [        S U R                   5       5      $ )Nc              3   *   #    U  H	  u  pUv   M     g 7frS   rK   r   s      r   r   %SortedMap.__iter__.<locals>.<genexpr>  s     /,$!A,s   )r   r   rx   s    r   r   SortedMap.__iter__  s    /$,,///r   r2  N)
r   r   r   r   r   rn   r3  r   r   r   rK   r   r   r+  r+    s    ("!0r   r+  c                   l    \ rS rSrSS jrS\S\4S jrS\S\4S jrS\4S	 jr	S\
4S
 jrS\
4S jrSrg)MutableSortedMapi  Nc                     Uc  0 nXl         g rS   _dct)rj   dcts     r   rn   MutableSortedMap.__init__  s    ;C"%	r   r   r  c                      U R                   U   $ rS   r>  rj   r   s     r   r3  MutableSortedMap.__getitem__  s    yy|r   rP   c                      X R                   U'   g rS   r>  )rj   r   rP   s      r   __setitem__MutableSortedMap.__setitem__  s    		!r   c                     U R                   U	 g rS   r>  rC  s     r   __delitem__MutableSortedMap.__delitem__  s    IIaLr   c                 ,    [        U R                  5      $ rS   )r   r?  rx   s    r   r   MutableSortedMap.__len__  s    499~r   c                 L    [        S [        U R                  5       5       5      $ )Nc              3   $   #    U  H  ov   M     g 7frS   rK   r  s     r   r   ,MutableSortedMap.__iter__.<locals>.<genexpr>  s     10!A0r  )r   r   r?  rx   s    r   r   MutableSortedMap.__iter__  s    1vdii0111r   r>  rS   )r   r   r   r   rn   r(  r)  r3  rF  rI  intr   r   r   rK   r   r   r<  r<    sQ    &
R B R B R  2# 2r   r<  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )
UniqueDicti  c                 T   > X;   a  [        SU< 35      e[        [        U ]  X5        g )Nzkey already in dictionary: )AssertionErrorrZ   rS  rF  )rj   r   r   r_   s      r   rF  UniqueDict.__setitem__  s%    ; C!IJJj$+C7r   rK   )r   r   r   r   rF  r   r   r   s   @r   rS  rS    s    8 8r   rS  c                 X   ^ ^ [         R                  " T 5      U U4S j5       mSTl        T$ )Nc                  h   > TR                   (       d  T" 5       n U Tl        STl         TR                  $ rI   )_ran_result)resfninners    r   r]  runonce.<locals>.inner  s)    zz$CEMEJ}}r   F)	functoolswrapsrY  )r\  r]  s   `@r   runoncera    s,    __R  EJLr   c                     [        U [        5      (       d   eU S:  a  [        [        U 5      5      S-
  $ [        [        U * S-
  5      5      S-
  $ )zD
Return the number of bits necessary to represent integer `intval`.
r      r   )r   rQ  r   bin)intvals    r   
bit_lengthrf    sM     fc""""{3v;!##3w{#$q((r   c              #   P   ^ #    U 4S jnSn [        T 5      nU" X#5      v   UnM  7f)a  
Given a list, return an infinite iterator of iterators.
Each iterator iterates over the list from the last seen point up to
the current end-of-list.

In effect, each iterator will give the newly appended elements from the
previous iterator instantiation time.
c                    > [        TX 5      $ rS   )r   )r$   stoplsts     r   sublist_iterator%stream_list.<locals>.sublist_iterator  s    CO$$r   r   )r   )rj  rk  r$   ri  s   `   r   stream_listrm    s3     % E
3xu++ s   #&c                        \ rS rSrS rS rSrg)BenchmarkResulti  c                     Xl         X0l        [        R                  " U5      U-  U l        [        R
                  " U R                  5      U l        g rS   )funcloopnparrayrecordsminbest)rj   rq  ru  rr  s       r   rn   BenchmarkResult.__init__  s5    		xx(4/FF4<<(	r   c                     [        U R                  SU R                  5      nXR                  U R                  R                  [        U R                  5      4nSU-  $ )Nr   z)%20s: %10d loops, best of %d: %s per loop)re   rq  rr  ru  sizeformat_timerw  )rj   r   argss      r   r   BenchmarkResult.__repr__  sF    tyy*dii8ii!2!2K		4JK:TAAr   )rw  rq  rr  ru  N)r   r   r   r   rn   r   r   rK   r   r   ro  ro    s    )Br   ro  c                 r    SR                  5       nSnUS S  H  nX:  a    OUS-  nM     US   nSX-  U4-  $ )Nzs ms us ns psr   r{   i  z%.1f%s)split)tmunitsbaseunits       r   r{  r{    sS    !!#EDcr
: 
 Ryry$'''r   c                    [         R                  " U 5      nSnUR                  SU5      n[        U5      U-  S:X  a+  US-  nUR                  SU5      n[        U5      U-  S:X  a  M+  [        U5      U-  nXQ:  a  [	        XU5      $ US-  U-  n[        Xe-  S-  S5      n[        S[        R                  " [        R                  " U5      5      -  5      nUR                  SU5      n[	        XU5      $ )Nr   r   
      )
timeitTimerrepeatrv  ro  maxrQ  mathceillog10)rq  maxsectimernumberresultrw  max_per_run_timeru  s           r   	benchmarkr    s    LLEF\\!V$F
f+
!
#"a( f+
!
# v;D~tV44zF*!(1,a0FtyyF!3445Fll1f%G4&11r   z	<dynamic>c                 (    [         (       a  Xl        U $ )zsSet the __cause__ attribute on *new_exc* for explicit exception
chaining.  Returns the inplace modified *new_exc*.
)r   	__cause__)new_excold_excs     r   chain_exceptionr  !  s     ~#Nr   c                     [        U 5      nSnSnUR                  R                  5        H-  nUS-  nUR                  [        R
                  :X  d  M(  US-  nM/     X#4$ )zOReturn the minimal and maximal number of Python function
positional arguments.
r   r   )pysignature
parametersr  defaultinspect_empty)pyfuncsig	min_nargs	max_nargsps        r   get_nargs_ranger  *  s\     f
CII^^""$Q	99&NI % r   c                 @    [        U 5      nUc  U $ U4[        U 5      -  $ )a{  Return a normalized tuple of Numba function types so that

    Tuple(numba_types)

becomes

    UniTuple(dtype=<unified function type>, count=len(numba_types))

If the above transformation would be incorrect, return the
original input as given. For instance, if the input tuple contains
types that are not function or dispatcher type, the transformation
is considered incorrect.
)unified_function_typer   )numba_typesdtypes     r   unify_function_typesr  8  s+     "+.E}8c+&&&r   c                 T   SSK Jn  [        U [        5      (       aA  [	        U 5      S:  a2  [        U S   [
        R                  [
        R                  45      (       d  g[        R                  " SUS9  Su  p4[        5       nSnSnU  GH0  n[        U[
        R                  5      (       ak  [        UR                  R                  5      u  pUc  XpCO
X44X4:X  d    gUR                  UR                  5        UR                  R                  5       nUc  M  [        U[
        R                  5      (       a  Uc  UR                   =p4OX4s=:X  a  UR                   :X  d     g    g[        U[
        R"                  5      (       a&  Uc  UnO  gUR%                  UR&                  5        GM  Uc  UnGM'  Xh:X  d   eGM1    g   U(       a  Ub  Ub  gUb#  Ub  UR                   UR                   :X  d   eUnU$ Ub  UR&                  R%                  U5        UnU$ [
        R"                  " X55      nU$ )al  Returns a unified Numba function type if possible.

Parameters
----------
numba_types : Sequence of numba Type instances.
require_precise : bool
  If True, the returned Numba function type must be precise.

Returns
-------
typ : {numba.core.types.Type, None}
  A unified Numba function type. Or ``None`` when the Numba types
  cannot be unified, e.g. when the ``numba_types`` contains at
  least two different Numba function type instances.

If ``numba_types`` contains a Numba dispatcher type, the unified
Numba function type will be an imprecise ``UndefinedFunctionType``
instance, or None when ``require_precise=True`` is specified.

Specifying ``require_precise=False`` enables unifying imprecise
Numba dispatcher instances when used in tuples or if-then branches
when the precise Numba function cannot be determined on the first
occurrence that is not a call expression.
r   )NumbaExperimentalFeatureWarningNz1First-class function type feature is experimental)category)NN)r   r  r   r   r   r   
DispatcherFunctionTypewarningswarnr   r  
dispatcherpy_funcr  get_function_typenargsUndefinedFunctionTyper%  dispatchers)r  require_preciser  mnargsmxargsr  functionundefined_functiontmnargs1mxargs1s              r   r  r  L  s   2 B{H--q {1~((%*<*<=? ?MME:<  NF%KHa))**.q||/C/CDG~!(%');;OOALL)..0Aya++,,~"#'')1!''1 2!U8899%-)*& ""1==1# H#=(=; < H,0B0N)>>%7%=%====)H O 
	'&&--k:% O ..vCOr   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )_RedirectSubpackagei  a  Redirect a subpackage to a subpackage.

This allows all references like:

>>> from numba.old_subpackage import module
>>> module.item

>>> import numba.old_subpackage.module
>>> numba.old_subpackage.module.item

>>> from numba.old_subpackage.module import item
c                 &  > US   n[         T	U ]  U5        0 U l        X l        [	        U5      nUR
                  R                  5        H[  u  pV[        XU5        [        U[        5      (       d  M(  [        R                  UR                     [        R                  U SU 3'   M]     UR                  5        HW  u  pxUR                  S5      (       d  M  UR                  S5      (       d  M5  US:w  d  M=  [        XU5        XR                  U'   MY     g )Nr   .____builtins__)rZ   rn   &_RedirectSubpackage__old_module_states_RedirectSubpackage__new_moduler   __dict__r   rh   r   r   sysmodulesr   r   endswith)
rj   old_module_locals
new_module
old_modulenew_mod_objr   rP   rl   r   r_   s
            r   rn   _RedirectSubpackage.__init__  s    &z2
$#% &#J/  ((..0DA DQ!Z(( 47;;qzz3Jzl!A3/0 1 -224KDt$$t)<)<>)D.5:,,T2	 5r   c                 B    U R                   U R                  4n[        U4$ rS   )r  r  r  )rj   r|  s     r   
__reduce___RedirectSubpackage.__reduce__  s#    (($*;*;<"D((r   )__new_module__old_module_states)	r   r   r   r   r   rn   r  r   r   r   s   @r   r  r    s    ;4) )r   r  c                 T     [        U 5        U $ ! [         a    [        U 5      s $ f = f)z
Given a value, returns a key that can be used
as a hash. If the value is hashable, we return
the value, otherwise we return id(value).

See discussion in gh #6957
)r   	TypeErrorid)r   s    r   get_hashable_keyr    s0    U   %ys    ''c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )threadsafe_cached_propertyi  c                 Z   > [         TU ]  " U0 UD6  [        R                  " 5       U l        g rS   )rZ   rn   r   RLock_lockrj   r|  r^   r_   s      r   rn   #threadsafe_cached_property.__init__  s#    $)&)__&
r   c                 r   > U R                      [        TU ]  " U0 UD6sS S S 5        $ ! , (       d  f       g = frS   )r  rZ   __get__r  s      r   r  "threadsafe_cached_property.__get__  s%    ZZ7?D3F3 ZZs   (
6)r  )r   r   r   r   rn   r  r   r   r   s   @r   r  r    s    '4 4r   r  c           
      ^   [        SU -  R                  SS5      5        [        R                  (       aI   SSKJn  SSKJn  SSKJ	n  SSK
Jn  [        U" UR                  5       U" 5       U" U" 5       S	95      5        O[        U5        [        S5        g ! [         a    S
n[        U5      ef = f)NzLLVM DUMP %sP   r+   r   )	highlight)	LlvmLexer)Terminal256Formatter)by_colorscheme)stylez0Please install pygments to see highlighted dumpszP================================================================================)printcenterr   HIGHLIGHT_DUMPSpygmentsr  pygments.lexersr  pygments.formattersr  numba.misc.dump_styler  r   ImportError
ValueError)fndescmoduler  lexerr  r  r   s          r   	dump_llvmr    s    	>F"
*
*2s
34		"*:@<)FOO-uw08HIK L 	f	(O  	"DCS/!	"s   AB B,c                        \ rS rSrS rS rSrg)_lazy_pformati  c                     Xl         X l        g rS   r|  r^   )rj   r|  r^   s      r   rn   _lazy_pformat.__init__  s    	r   c                 @    [        U R                  0 U R                  D6$ rS   )r   r|  r^   rx   s    r   __str___lazy_pformat.__str__  s    		1T[[11r   r  N)r   r   r   r   rn   r  r   rK   r   r   r  r    s    2r   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )_LazyJSONEncoderi  c                 b   > [        U[        5      (       a  [        U5      $ [        TU ]  U5      $ rS   )r   r  r   rZ   r  )rj   objr_   s     r   r  _LazyJSONEncoder.default  s(    c=))s8Ows##r   rK   )r   r   r   r   r  r   r   r   s   @r   r   r     s    $ $r   r   ) )r   r   )atexitbuiltinsr_  r  r   operatorr  r  r  r   weakrefr  r   r   jsontypingr
  pprintr   r   r   	importlibr   numpyrs  r   r  r   pySignaturer   pyParameternumba.core.configr	   r
   r   
numba.corer   collections.abcr   r   r   r   r   curdirr)   r  submulfloordivtruedivmodpowand_or_xorlshiftrshifteqneltlegtgeis_is_notcontainsmatmulBINOPS_TO_OPERATORSiaddisubimul	ifloordivitruedivimodipowiandiorixorilshiftirshiftimatmulINPLACE_BINOPS_TO_OPERATORSALL_BINOPS_TO_OPERATORSposneginvertnot_truthUNARY_BUITINS_TO_OPERATORSOPERATORS_TO_BUILTINSrJ   rL   rO   rQ   finalizeregisterrV   objectr   r   TypeVarr   r   Genericr  r(  r)  r+  r<  r   rS  ra  rf  rm  ro  r{  r  _dynamic_modname_dynamic_moduler  r  r  r  r  r  r  cached_propertyr  r  r  JSONEncoderr   rK   r   r   <module>rI     sm       	    
          #  , , ,/ /   I I*  YY 2(  	(

	
 		  	(,,    	(// 	(// 	(++ 	(++   	(++!" #$ ++
,,oo


	/ 6 --
--
--



--==
--
,,
--


 ":0 :8: 
 
		==~~ )LL#)MM4) LL#) MM4	)
 LL#) MM4) t) ) c) t) LL#) MM4) LL$) MM5) MM3)  MM4!)" LL##)$ LL$%)& LL#')( MM4))* OOT+), e-). OOT/)0 e1)2 KK3)4 KK5)6 KK7)8 KK9): KK;)< KK=)> LL$?)@ OOXA)D tE)H LL#I)J LL#OOSMM5NNIQ) X 
 " 	"$   | ,  < <~/9F /9d$N KK#A #,$z!}ckk!n $4 	[[[[0BRV!4 0,2~b"f-s{{2r6/B 2,8 8
)&
Bf 
B	(2*  -.'  '(Sl))* ))X 4!:!: 4$2F 2$t'' $r   