
    sh                        S r SSKJr  SSKJrJr  SSKJrJrJ	r	J
r
  SSKJrJr  SSKJrJr  SSKJrJr  SSKJr  SS	KJrJr  S
 r\" \R4                  5      S 5       r\" \R8                  5      S 5       r\" \R4                  5      \" \R8                  5      S 5       5       r\" \R>                  5      \" \R@                  5      \" \RB                  5      \" \RD                  5      S 5       5       5       5       r#\" \RH                  5      \" \RJ                  5      S 5       5       r&\" \RH                  5      S 5       r'\" \RJ                  5      S 5       r(\" \RR                  5      S 5       r*\" \RV                  5      S 5       r,\" \RR                  5      \" \RV                  5      S 5       5       r-\" \R\                  5      S 5       r/\" \R\                  5      \" \R`                  5      S 5       5       r1\" \R`                  5      S 5       r2\" \Rf                  5      S 5       r4\" \Rf                  5      \" \Rj                  5      S 5       5       r6\" \Rn                  5      S 5       r8\" \Rn                  5      S 5       r9\" \Rt                  5      S 5       r;\" \Rt                  5      S 5       r<\" \Rz                  5      S 5       r>\" \R~                  5      S 5       r@\" \R~                  5      S  5       rA\" \R                  5      S! 5       rC\" \R                  5      S" 5       rE\" \R                  5      S# 5       rF\" \R                  5      S$ 5       rH\" \R                  5      S% 5       rI\" \R                  5      S& 5       rK\" \R                  5      S' 5       rM\" \R                  5      S( 5       rN\" \R                  5      S) 5       rP\" \R                  5      S* 5       rQ\" \R                  5      S+ 5       rS\" \R                  5      S, 5       rU\" \R                  5      S- 5       rW\" \R                  5      S. 5       rY\" \R                  5      S/ 5       r[\" \R                  5      S0 5       r\\" \R                  5      \" \R                  5      S1 5       5       r_\" \R                  5      \" \R                  5      S2 5       5       rb\" \R                  5      S3 5       rd\" \R                  5      S4 5       rf " S5 S6\g5      rhS7 ri\" \R                  5      S8 5       rj\	" \R                  5      S9 5       rkS: rl\" \R                  5      S; 5       rnS< ro\" \R                  5      S= 5       rp\	" \R                  5      S> 5       rq\" \R                  5      S? 5       rs\" \R                  5      S@ 5       rt\" \R                  5      SA 5       rv\" \R                  5      SB 5       rw\" \R                  5      SC 5       ry\" \R                  5      SD 5       rz\" \R                  5      \" \R                  5      SE 5       5       r}\" \R                  5      \" \R                  5      SF 5       5       r~\" \R                  5      SG 5       r\" \GR                  5      SH 5       r\" \GR                  5      SI 5       r\" \GR                  5      SJ 5       r\" \GR                  5      SK 5       r}SL rSM r\" \GR                  5      SN 5       r\" \GR                  5      SO 5       r\" \GR                  5      SP 5       r\" \GR                  5      SQ 5       r\" \GR                  5      SR 5       r\" \GR"                  5      SS 5       r\GR"                  " ST5      r\" \GR(                  5      SU 5       r\" \GR(                  5      SV 5       rgW)XzG
Boxing and unboxing of native Numba values to / from CPython objects.
    )ir)typescgutils)boxunboxreflectNativeValue)NumbaNotImplementedErrorTypingError)typeofPurpose)setobjlistobj)numpy_support)contextmanager	ExitStackc           	         U" XAU5      n[         R                  " UR                  UR                  R	                  5       5      n[         R
                  " UR                  [         R                  " UR                  U5      5         UR                  R                  UR                  R                  S5      nUR                  R                  U5      n[         R
                  " UR                  [         R                  " UR                  U5      5         U R                  R                  S5      S   n	UR                  R                  X5      n
UR                  R                  U5        [         R
                  " UR                  [         R                  " UR                  U
5      5         UR                  R                  UR                  R!                  X45      U5        UR                  R                  U
5        S S S 5        S S S 5        UR                  R                  U5        S S S 5        UR                  R#                  U5      $ ! , (       d  f       NT= f! , (       d  f       N]= f! , (       d  f       NK= f)Nnumpynp_   )r   alloca_once_valuebuilderpyapiborrow_none	if_likelyis_not_nullcontextinsert_const_stringmoduleimport_modulenamesplitobject_getattr_stringdecrefstorecall_function_objargsload)typvalcpy_boxing_funcpy_type	py_scalar	np_scalar
numpy_namenumpy_moduletype_strnp_scalar_constructors              i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/core/new_boxing.pybox_np_scalarsr4      s   wQ/I))!))QWW5H5H5JKI			199g&9&9!))Y&O	PYY221993C3CWM
ww,,Z8qyy'*=*=aii*VWxx~~e,Q/H$%GG$A$A,$Y!GGNN<(""199g.A.A!))Mb.cd		 = =>SUa bdmn45 e	 X 	
y! 
Q 99>>)$$	 ed	 XW 
Q	Ps?   BI&BI$AI6I>#I&
II
I#	I&&
I4c                 8    UR                   R                  U5      $ N)r   bool_from_boolr(   r)   r*   s      r3   box_py_boolr9   &   s    77!!#&&    c                 B    [        XU[        [        R                  5      $ r6   )r4   r9   r   py_boolr8   s      r3   box_np_boolr=   +   s    #A{EMMBBr:   c                     UR                   R                  U5      n[        R                  " UR                  S5      nUR
                  R                  SX45      n[        XRR                   R                  5       S9$ )Nr   !=is_error)	r   object_istruer   Constanttyper   icmp_signedr	   c_api_error)r(   objr*   istruezeror)   s         r3   unbox_booleanrJ   0   sZ     WW""3'F;;v{{A&D
))

f
3CsWW%8%8%:;;r:   c                     UR                   R                  UR                  XU R                  5      nUR	                  U R                  U5      $ r6   )r   castr   literal_typer   r8   s      r3   box_literal_integerrN   9   s;    
 ))..Cc.>.>
?C55!!3''r:   c                    UR                   R                  U 5      n[        R                  " UR                  U5      nUR
                  R                  U5      nUR
                  R                  U5         U R                  (       a  UR
                  R                  U5      nOUR
                  R                  U5      nUR
                  R                  U5        UR                  R                  UR                  R                  Xc5      U5        S S S 5        [        UR                  R                  U5      UR
                  R!                  5       S9$ ! , (       d  f       NI= fNr@   )r   get_argument_typer   alloca_oncer   r   number_longif_object_oksignedlong_as_longlonglong_as_ulonglongr$   r%   truncr	   r'   rF   )r(   rG   r*   ll_typer)   longobjllvals          r3   unbox_integerr\   B   s     ii))#.G


aii
1Cgg!!#&G	
		g	&::GG,,W5EGG--g6E	w					7= 
' qyy~~c* ! 3 3 57 7 
'	&s   3BE
Ec                     UR                   R                  XR                  R                  5      nUR                  R	                  U5      $ r6   )r   sextr   longlonglong_from_longlong)r(   r)   r*   ivals       r3   box_py_integerrb   S   s3    99>>#ww//0D77%%d++r:   c                 B    [        XU[        [        R                  5      $ r6   )r4   rb   r   py_intr8   s      r3   box_np_integerre   Y   s    #A~u||DDr:   c                 8    UR                   R                  U5      $ r6   )r   float_from_doubler8   s      r3   box_py_floatrh   ^   s    77$$S))r:   c                     U R                   S::  a/  UR                  R                  XR                  R                  5      n[        XU[        [        R                  5      $ )N    )	bitwidthr   fpextr   doubler4   rh   r   py_floatr8   s      r3   box_np_floatro   c   s=    
||riiooc77>>2#A|U^^DDr:   c                 v   UR                   R                  U5      nUR                   R                  U5      nUR                   R                  U5        U R                  S::  a6  UR
                  R                  UUR                  R                  U 5      5      nOUn[        XRR                   R                  5       S9$ )Nrj   r@   )r   number_floatfloat_as_doubler$   rk   r   fptruncr   rQ   r	   rF   )r(   rG   r*   fobjdbvalr)   s         r3   unbox_floatrv   j   s     77$DGG##D)EGGNN4
||rii !		 ; ;C @B sWW%8%8%:;;r:   c                     UR                   R                  UR                  XS9nU [        R                  :X  d   eUR
                  UR                  pTUR                  R                  XE5      $ Nvalue)	r   make_complexr   r   
py_complexrealimagr   complex_from_doubles)r(   r)   r*   cvalfrealfimags         r3   box_py_complexr   x   sW    99!!!))S!<D%"""""99dii577''55r:   c                    UR                   R                  UR                  [        R                  5      nUR
                  R                  XR                  5       5      n[        R                  " UR                  U5      n[        R                  " UR                  U5         UR
                  R                  SSU < S35        S S S 5        U [        R                  :X  a  UR                   R                  UR                  U 5      nUR                   R                  UR                  UR                  [        R                  [        R                   5      Ul        UR                   R                  UR                  UR"                  [        R                  [        R                   5      Ul        OUn[%        UR'                  5       US9$ ! , (       d  f       GN
= f)NPyExc_TypeErrorzconversion to z failedr@   )r   r{   r   r   r|   r   complex_adaptor_getpointerr   is_falseif_unlikelyerr_set_stringnp_complex64rL   r}   rn   
np_float32r~   r	   	_getvalue)r(   rG   r*   c128okfailedcplxs          r3   unbox_py_complexr      s:    99!!!))U-=-=>D	
	 	 &6&6&8	9Baii,F			QYY	/	0<?A	C 
0 e   yy%%aii5IINN199dii#(>>53C3CE	IINN199dii#(>>53C3CE	 t~~'&99 
0	/s    "G
Gc                    UR                   R                  UR                  XS9nU [        R                  :X  au  UR                  R                  UR                  UR                  R                  5      nUR                  R                  UR                  UR                  R                  5      nO-U [        R                  :X  d   eUR                  UR                  pTUR                  R                  XE5      n[        R                  " UR                  UR                  R                  5       5      n[        R                  " UR                  [        R                   " UR                  U5      5         UR                   R#                  UR                  R$                  S5      nUR                  R'                  U5      n	U R(                  R+                  S5      S   n
UR                  R-                  X5      n[        R                  " UR                  [        R                   " UR                  U5      5         UR                  R/                  UR                  R1                  X45      U5        UR                  R3                  U5        S S S 5        UR                  R3                  U5        S S S 5        UR                  R5                  U5      $ ! , (       d  f       NL= f! , (       d  f       N:= f)Nry   r   r   r   )r   r{   r   r   r   rl   r}   r   rm   r~   np_complex128r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r$   r'   )r(   r)   r*   r   r   r   r-   r.   r/   r0   r1   r2   s               r3   box_np_complexr      s   99!!!))S!<D
e   				177>>:				177>>:e)))))yy$))u,,U:I))!))QWW5H5H5JKI			199g&9&9!))Y&O	PYY221993C3CWM
ww,,Z888>>%(+ ! = =l Uqyy'*=*=aiiI^*_`IIOOAGG99:OQ]^`ijGGNN01 a 	
y! 
Q 99>>)$$	 a` 
Q	Ps&   /CK4AK#K
K	K
K+c                 6    UR                   R                  5       $ r6   )r   	make_noner8   s      r3   box_noner      s    77r:   c                 H    [        UR                  R                  5       5      $ r6   r	   r   get_dummy_valuer8   s      r3   
unbox_noner           qyy00233r:   c                 L    UR                   R                  XR                  5      $ r6   )r   create_np_datetime	unit_coder8   s      r3   box_npdatetimer      s    77%%c==99r:   c                 z    UR                   R                  U5      n[        X2R                   R                  5       S9$ rP   )r   extract_np_datetimer	   rF   r(   rG   r*   r)   s       r3   unbox_npdatetimer      s.    
''
%
%c
*CsWW%8%8%:;;r:   c                 L    UR                   R                  XR                  5      $ r6   )r   create_np_timedeltar   r8   s      r3   box_nptimedeltar      s    77&&sMM::r:   c                 z    UR                   R                  U5      n[        X2R                   R                  5       S9$ rP   )r   extract_np_timedeltar	   rF   r   s       r3   unbox_nptimedeltar      s.    
''
&
&s
+CsWW%8%8%:;;r:   c                     UR                   R                  [        R                  5      nUR                  R                  X5      nUR                  [        R                  U5      $ )z(
Convert a raw pointer to a Python int.
)r   get_value_typer   uintpr   ptrtointr   )r(   r)   r*   ll_intpaddrs        r3   box_raw_pointerr      sE    
 ii&&u{{3G99c+D55d##r:   c                     UR                  U R                  U5      nUR                  R                  UR                  R	                  U R
                  5      5      nUR                  R                  XC45      $ )z.
Fetch an enum member given its native value.
)r   dtyper   unserializeserialize_objectinstance_classr&   )r(   r)   r*   valobjcls_objs        r3   box_enumr      sX    
 UU399c"Fgg!!!''":":3;M;M"NOG77(()<<r:   c                 r    UR                   R                  US5      nUR                  U R                  U5      $ )z5
Convert an enum member's value to its native value.
rz   )r   r#   r   r   )r(   rG   r*   r   s       r3   
unbox_enumr      s/    
 WW**38F77399f%%r:   c                     Sn[        U5      e)z7This type cannot be boxed, there's no Python equivalentzJUndefVar type cannot be boxed, there is no Python equivalent of this type.)r   )r(   r)   r*   msgs       r3   box_undefvarr      s    C
c
r:   c                 ~   [         R                  " [         R                  " S5      UR                  R                  R
                  5      nUR                  R                  U[         R                  " [         R                  " S5      5      5      nUR                  R                  XCU R                  UR                  5      $ )Nrj      )r   rC   IntTyperD   pointeecountr   bitcastPointerTyper   recreate_recordr   env_manager)r(   r)   r*   sizeptrs        r3   
box_recordr      st     ;;rzz"~sxx'7'7'='=>D
))

C

1!>
?C77""3ciiGGr:   c                 B  ^^ TR                   R                  5       mTR                   R                  UT5      n[        R                  " TR
                  U5      nTR                  R                  U 5      nTR
                  R                  X55      nUU4S jn[        XgUS9$ )Nc                  <   > TR                   R                  T 5        g r6   r   release_bufferbufr*   s   r3   cleanupunbox_record.<locals>.cleanup      	s#r:   r   rA   )
r   alloca_bufferextract_record_datar   is_nullr   r   r   r   r	   )	r(   rG   r*   r   rA   ltypr)   r   r   s	     `     @r3   unbox_recordr      sy    
''


!C
''
%
%c3
/Cqyy#.H99##C(D
))

C
&C$sh??r:   c           
      r   UR                   R                  UR                   R                  UR                   R                  S.[        R
                     nUR                  R                  [        R                  U5      n[        R                  " UR                  US9nUR                  R                  XRR                   R                  5      nUR                  R                  [        R                  U R                   5      nUR#                  S5      nUR#                  S5      n	UR#                  [        R
                  5      n
[        R                  " UR                  U5      n[        R$                  " UR                  U/UR"                  5       u  nUR                  R'                  UR                  R)                  XbR                  R+                  X5      /5      5      nUR                  R-                  [        R.                  " UR                  U5      5         UR                  R1                  UR                  R3                  X5      U5        S S S 5        S S S 5        UR                  R'                  U5      nUR                   R5                  XFU5      $ ! , (       d  f       NM= f! , (       d  f       NV= f)N)r         ry   r   r   )r   py_unicode_1byte_kindpy_unicode_2byte_kindpy_unicode_4byte_kindr   sizeof_unicode_charr   get_constantr   int32r   r   r   r   cstringintpr   rD   	loop_nestr'   gepmulif_thenr   r%   addstring_from_kind_and_data)r(   r)   r*   unicode_kindkindrawptrstrptrfullsizerI   onestepr   idxchstrlens                  r3   box_unicodecharseqr     s    77((77((77((* +8*K*KML 99!!%++|<D&&qyy<FYYvww7Fyy%%ejj#))<H==D
--
C==::;D%%aii6E			199xj(--	@ESYY^^AIIMM&99==3K2LMNYYw22199bABIIOOAIIMM#3U; C	 
A YY^^E"F77,,T6BB CB	 
A	@s%   BJ(6JJ(
J%	!J((
J6c                 &   UR                   R                  U 5      nUR                  R                  U5      u  pEpgp[        R
                  " UR                  U5         [        R                  " UR                  U R                  5      n
UR                  R                  SXj5      nUR                  R                  XU
5      n[        R                  " US 5      n[        R                  " UR                  U5      n[        R                  " UR                  UR                  R                  XR                  5      XV5        S S S 5        UR                  R!                  W5      n[#        XR                  R%                  U5      S9$ ! , (       d  f       NK= fNz<=r@   )r   r   r   string_as_string_size_and_kindr   r   r   r   rC   rD   r   icmp_unsignedselectr   memcpyr   r'   r	   not_)r(   rG   r*   ltyr   bufferr   r   is_asciihashvstorage_size	size_fitsnull_stringoutspacerets                  r3   unbox_unicodecharseqr  '  s    
))
"
"3
'C 	
..s3 ,BH 
		199b	){{499cii8II++D$E	 yy	> kk#t,--aiiE 	qyy		))(KK@	& 
*$ ))..
"CsYY^^B%788' 
*	)s   C!F
Fc                    UR                   R                  UR                  X5      nUR                  R	                  UR
                  UR                  5      nUR                   R                  R                  UR                  X5        U$ r6   )	r   make_helperr   r   bytes_from_string_and_sizedatanitemsnrtr$   )r(   r)   r*   rG   r  s        r3   	box_bytesr  E  s[    
))

		3
4C
''
,
,SXXszz
BCIIMMC-Jr:   c                    [         R                  " UR                  US9nUR                  R                  X2R                  R
                  5      nUR                  R                  [        R                  U R                  5      nUR                  S5      nUR                  S5      n[         R                  " UR                  U5      n[         R                  " UR                  U/UR                  5       u  n	UR                  R                  UR                  R                  XI/5      5      n
UR                  R                  [         R                   " UR                  U
5      5         UR                  R#                  UR                  R%                  X5      U5        S S S 5        S S S 5        UR                  R                  U5      nUR                  R'                  XK5      $ ! , (       d  f       NL= f! , (       d  f       NU= f)Nry   r   r   )r   r   r   r   r   r   r   r   r   r   r   rD   r   r'   r   r   r   r%   r   r
  )r(   r)   r*   r   r   r   rI   r   r   r   r   r   s               r3   box_charseqr  M  sR   &&qyy<FYYvww7Fyy%%ejj#))<H==D
--
C%%aii6E
 
		199xj(--	@ESYY^^AIIMM&%89YYw22199bABIIOOAIIMM#3U; C	 
A YY^^E"F77--f==	 CB	 
A	@s%   3A2G2%6G!G2!
G/	+G22
H c                 $   UR                   R                  U 5      nUR                  R                  U5      u  pEn[        R
                  " UR                  U5         [        R                  " UR                  U R                  5      nUR                  R                  SXg5      nUR                  R                  XU5      n[        R                  " US 5      n	[        R                  " UR                  U	5      n
[        R                  " UR                  UR                  R                  XR                  5      XV5        S S S 5        UR                  R!                  W
5      n[#        XR                  R%                  U5      S9$ ! , (       d  f       NK= fr   )r   r   r   string_as_string_and_sizer   r   r   r   rC   rD   r   r   r   r   r   r   r'   r	   r   )r(   rG   r*   r   r   r   r   r  r  r  r  r  s               r3   unbox_charseqr  d  s   
))
"
"3
'Cww88=B 
		199b	){{499cii8II++D$E	 yy	> kk#t,--aiiE 	qyyyy((;;?	% 
*$ ))..
"CsYY^^B%788' 
*	)s   C!F
Fc                    UR                   R                  UR                  X5      n[        R                  " UR                  UR
                  R                  5       5      nUR                  R                  UR                  5       u  pVU   UR                  U R                  UR                  5      nUR                  R                  Xt5        S S S 5        U   UR                  R                  UR
                  R                  5       U5        S S S 5        S S S 5        UR                  R                  U5      $ ! , (       d  f       Np= f! , (       d  f       NB= f! , (       d  f       NK= fr6   )r   r	  r   r   r   r   r   if_elsevalidr   rD   r  r%   r   r'   )r(   r)   r*   optvalr  then	otherwisevalidress           r3   box_optionalr    s    YY""199c7F

#
#AIIqww/B/B/D
EC	
		6<<	(,=TuuSXXv{{3HIIOOH*  IIOOAGG--/5 	 
) 99>># T Y	 
)	(s=   E
AD6
E5EE6
E	 E
E	E
E&c                 x  ^^^ TR                   R                  TR                  U R                  5      nTR                  R	                  SUTR
                  R                  5       5      m[        R                  " TR                  UR                  5      n[        R                  " TR                  [        R                  5      nTR                  R                  T5       u  pgU   TR                  U R                  U5      mTR                   R                  TR                  U R                  TR                  5      nTR                  R                  X5        TR                  R                  TR                   U5        SSS5        U   TR                  R                  X45        SSS5        SSS5        TR"                  b	  UUU4S jn	OSn	TR                  R%                  U5      n
['        U
TR                  R%                  U5      U	S9$ ! , (       d  f       N= f! , (       d  f       N~= f! , (       d  f       N= f)z6
Convert object *obj* to a native optional structure.
r?   Nc                     > T R                   R                  T5         TR                  5         S S S 5        g ! , (       d  f       g = fr6   )r   r   r   )r*   is_not_nonenatives   r3   r   unbox_optional.<locals>.cleanup  s+    "";/  0//s	   7
ArA   r   )r   make_optional_noner   rD   rE   r   r   r   rR   r   	false_bitr  r   make_optional_valuerz   r%   rA   r   r'   r	   )r(   rG   r*   nonevalretptrerrptrr  orelsejustr   r  r  r  s     `        @@r3   unbox_optionalr*    s   
 ii**199chh?G))''c1773F3F3HIK  GLL9F&&qyy'2C2CDF	
		;	'>DWWSXXs+F9900146<<IDIIOOD)IIOOFOOV4  IIOOG,  
( ~~!	! 	! 
))..
 CsQYY^^F%;&( (% T V 
(	's=   H+#BH	<
H+H"H+	
H	H+
H(	$H++
H9c                    SSK Jn  UR                  R                  U5      u  pEpgUR                  R                  UR                  U 5      nXXl        Xhl        Xxl	        [        UR                  5       UR                  R                  U5      S9$ )z3
Convert object *obj* to a native slice structure.
r   )slicingr@   )numba.cpythonr,  r   slice_as_intsr   r	  r   startstopr   r	   r   r   )	r(   rG   r*   r,  r   r/  r0  r   slis	            r3   unbox_slicer2    si    
 &GG11#6Bt
))

		3
/CIHHs}}1CDDr:   c           
         U R                   nS H6  n[        X45      n[        U[        5      (       d  M%   [	        U[
        5        M8     U R                   R                  5       u  pxUR                  R                  U5      n	UR                  R                  U5      n
UR                  R                  U	5      nUR                  R                  U
5      nUR                  R                  X5      nUR                  R                  U5        UR                  R                  U5        U$ ! [         a  n[        SU S[        U5       35      eS nAff = f)N)r/  r0  r   z7Unable to create literal slice. Error encountered with z attribute. )literal_valuegetattr
isinstanceintr   r   
ValueErrorstr
__reduce__r   r   r   callr$   )r(   r)   r*   	slice_lit
field_name	field_objepy_ctorpy_argsserialized_ctorserialized_argsctorargsrG   s                 r3   box_slice_literalrF    s    !!I/
I2	i%%y'*	 0 ((335Ggg..w7Ogg..w7O77/D77/D
'',,t
"CGGNN4GGNN4J   ..8\ :""%a&+ s   D$$
E.EEc                 H    [        UR                  R                  5       5      $ r6   r   r(   rG   r*   s      r3   unbox_string_literalrI    r   r:   c                 <   UR                   R                  U 5      nU" UR                   UR                  US9nUR                   R                  (       a  [        R
                  " U R                  5      nUR                  R                  UR                  R                  U5      5      nUR                  R                  XU5      nUR                   R                  R                  UR                  X5        U$ UR                  nUR                  R                  U5        U$ rx   )r   
make_arrayr   
enable_nrtr   as_dtyper   r   
read_const	add_constr   nrt_adapt_ndarray_to_pythonr  r$   parentincref)	r(   r)   r*   nativearycls	nativearynp_dtypedtypeptrnewaryrQ  s	            r3   	box_arrayrX    s    99'',LQYY		=Iyy ))#))4==++AMM,C,CH,MN44SxH			QYY1!!	vr:   c                 J  ^^
 TR                   R                  5       m
TR                   R                  UT
5      n[        R                  " TR
                  U5      nTR                  R                  U 5      nU" TR                  TR
                  5      nUR                  5       n[        R                  " TR
                  TR
                  R                  U5      5         TR
                  R                  UTR                   R                  5      nTR                  R                  (       a  TR                   R                  T
U5        OTR                   R                  T
U5        SSS5        U
U4S jn	[!        TR
                  R#                  U5      UU	S9$ ! , (       d  f       N9= f)zC
Convert a Py_buffer-providing object to a native array structure.
Nc                  <   > TR                   R                  T 5        g r6   r   r   s   r3   r   unbox_buffer.<locals>.cleanup  r   r:   r!  )r   r   
get_bufferr   r   r   r   rK  r   r   r   r   voidptrrL  nrt_adapt_buffer_from_pythonnumba_buffer_adaptorr	   r'   )r(   rG   r*   resrA   rS  rT  aryptrr   r   r   s     `       @r3   unbox_bufferrb    s%   
 ''


!C
''

S#
&C""199c2H99'',LQYY		2I""$F			199aiinnX&>	?ii899GG00c:GG((c2 
@$ qyy~~f-&( ( 
@	?s   BF
F"c                 
   UR                   R                  U 5      nU" UR                   UR                  5      nUR                  5       nUR                  R	                  XRR
                  R                  5      nUR                   R                  (       a  UR
                  R                  X5      nOUR
                  R                  X5      n [        R                  " U R                  5      R                  nUR                  R                  U5      nUR                  R                  SUR                  U5      n	UR                  R'                  ["        R(                  " UR                  U5      U	5      n
UR                  R+                  U
SS9   UR
                  R-                  SS5        SSS5        [/        UR                  R1                  U5      U
S9$ ! [          a    ["        R$                  n	 Nf = f! , (       d  f       NQ= f)z;
Convert a Numpy array object to a native array structure.
r?   Flikelyr   zXcan't unbox array from PyObject into native value.  The object maybe of a different typeNr@   )r   rK  r   r   r   r   r]  rL  nrt_adapt_ndarray_from_pythonnumba_array_adaptorr   rM  r   itemsizerD   r   r
   r   r#  or_r   r   r   r	   r'   )r(   rG   r*   rS  rT  ra  r   errcodeexpected_itemsizeitemsize_mismatchr   s              r3   unbox_arrayrm    s    99'',LQYY		2I""$F
))

FGGOO
4Cyy''77A''--c7)22399=FF
 &..334EFII33 YY]]AIIw/F
 
		6%		0	0 0	1 
1
 qyy~~f-??+ $ .#--.  
1	0s   *G G4G10G14
Hc                    UR                   R                  U R                  5      n[        U 5       HM  u  pEUR                  R                  X5      nUR                  XV5      nUR                   R                  X4U5        MO     U$ )z<
Convert native array or structure *val* to a tuple object.
)r   	tuple_newr   	enumerater   extract_valuer   tuple_setitem)r(   r)   r*   	tuple_valir   itemrG   s           r3   	box_tuplerv  =  sj     !!#)),IcNyy&&s.eeE 	iC0 #
 r:   c                 <   UR                   R                  UR                   R                  U R                  5      5      n[	        XU5      nUR                   R                  X45      nUR                   R                  U5        UR                   R                  U5        U$ )zA
Convert native array or structure *val* to a namedtuple object.
)r   r   r   r   rv  r;  r$   )r(   r)   r*   r   	tuple_objrG   s         r3   box_namedtuplery  L  sp     gg!!!''":":3;M;M"NOG#A&I
'',,w
*CGGNN7GGNN9Jr:   c                 6  ^ [        U 5      n/ n/ mUR                  R                  U 5      n[        R                  " UR
                  [        R                  5      n[        R                  " UR
                  U5      nUR                  R                  U5      nUR
                  R                  SU[        R                  " UR                  U5      5      n	UR
                  R                  UR
                  R                  U	5      SS9   UR                  R!                  SSU4-  U5        UR
                  R#                  [        R$                  U5        SSS5        ['        U 5       H  u  pUR                  R)                  X5      nUR+                  X5      nUR-                  UR.                  5        UR
                  R                  UR0                  SS9   UR
                  R#                  [        R$                  U5        SSS5        UR2                  c  M  TR-                  UR2                  5        M     UR                  R5                  UR
                  X5      nUR
                  R#                  X5        T(       a*  UR
                  R                  U	SS9   U4S jnSSS5        OSn[7        UR
                  R9                  U5      WUR
                  R9                  U5      S	9$ ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nn= f)
zF
Convert tuple *obj* to a native array (if homogeneous) or structure.
z==Frd  PyExc_ValueErrorz<size mismatch for tuple, expected %d element(s) but got %%zdNTc                  8   > [        T5       H
  n U " 5         M     g r6   )reversed)funccleanupss    r3   r   unbox_tuple.<locals>.cleanup  s    $X.DF /r:   r   )lenr   r   r   r   r   r#  rR   r   
tuple_sizer   r   rC   rD   r   r   
err_formatr%   true_bitrp  tuple_getitemr   appendrz   rA   r   
make_tupler	   r'   )r(   rG   r*   nvaluesr   is_error_ptr	value_ptractual_sizesize_matchesrt  eltypeelemr  rz   r   r  s                   @r3   unbox_tupler  Z  sA   
 	CAFH
))
"
"3
'C,,QYY8I8IJL##AIIs3I ''$$S)K99**4,.KK8H8H!,LNL	
		199>>,7		F	JaTQ	 	
		((,7 
G s^	ww$$S,&fll#YYvu=IIOOG,,l; >>>%OOFNN+ $ II  C8EIIOOE%YY|D9 :9
 qyy~~i0' !		| <> >; 
G	F >= :9s%   AK'+K9L
'
K69
L	

Lc           	         [         R                  " UR                  UR                  X5      nUR                  n[
        R                  " UR                  U5      nUR                  R                  [
        R                  " UR                  U5      5       u  pgU   UR                  R                  U5        SSS5        U   UR                  nUR                  R                  U5      nUR                  R                  [
        R                  " UR                  U5      SS9   [
        R                  " UR                  U5       n	UR                  U	R                   5      n
UR#                  U
5        UR%                  U R&                  U
5      nUR                  R)                  XIR                   U5        SSS5        SSS5        UR                  R+                  XE5        SSS5        SSS5        UR                  R,                  R/                  UR                  X5        UR                  R1                  U5      $ ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)z-
Convert native list *val* to a list object.
NTrd  )r   ListInstancer   r   rQ  r   r   r  r   r   rR  r   list_newr   	for_rangegetitemindexincref_valuer   r   list_setitemr%   r  r$   r'   )r(   r)   r*   listrG   r`  
has_parentr  r  loopru  itemobjs               r3   box_listr    s   
 		199c?D
++C

#
#AIIs
3C	
		7..qyy#>	?CZJ GGNN3	  YYF''""6*C""7#6#6qyy##F*. # 0&&qyy&9T<<

3D%%d+eeCIIt4GGG((jj'B	 :0 IIOOC%  
@, IIMMC-99>>#- Z :90 0	 Y 
@	?sn   I<H75
I<?A!I+ "IA/I		1I9#I+I<7
I	I<	
II
I($I++
I9	5I<<
J
c                   0    \ rS rSrSrS rS rS rS rSr	g)	_NumbaTypeHelperi  a  A helper for acquiring `numba.typeof` for type checking.

Usage
-----

    # `c` is the boxing context.
    with _NumbaTypeHelper(c) as nth:
        # This contextmanager maintains the lifetime of the `numba.typeof`
        # function.
        the_numba_type = nth.typeof(some_object)
        # Do work on the type object
        do_checks(the_numba_type)
        # Cleanup
        c.pyapi.decref(the_numba_type)
    # At this point *nth* should not be used.
c                     Xl         g r6   )r*   )selfr*   s     r3   __init___NumbaTypeHelper.__init__  s    r:   c                 .   U R                   nUR                  R                  UR                  R                  S5      nUR
                  R                  U5      nUR
                  R                  US5      nX@l        UR
                  R                  U5        U $ )Nnumbar   )
r*   r   r   r   r   r   r    r#   	typeof_fnr$   )r  r*   
numba_name	numba_modr  s        r3   	__enter___NumbaTypeHelper.__enter__  so    FFYY221993C3CWM
GG))*5	GG11)XF	"	y!r:   c                 f    U R                   nUR                  R                  U R                  5        g r6   )r*   r   r$   r  )r  rE  kwargsr*   s       r3   __exit___NumbaTypeHelper.__exit__  s    FF	t~~&r:   c                 h    U R                   R                  R                  U R                  U/5      nU$ r6   )r*   r   r&   r  )r  rG   r`  s      r3   r   _NumbaTypeHelper.typeof  s'    ffll00#G
r:   )r*   r  N)
__name__
__module____qualname____firstlineno____doc__r  r  r  r   __static_attributes__ r:   r3   r  r    s     'r:   r  c                   ^^^ UUU4S jn[         R                  R                  TR                  TR                  X5      u  pxTR                  R                  USS9 u  pU	   X8l        [        R                  " UR                  S5      nTR                  R                  TR                  R                  SX;5      SS9   [        T5       nUR                  TR                  R                  X5      5      n[         R"                  " TR                  U5       mTR                  R                  UTR$                  5      nU" XU5        TR'                  U R(                  U5      nTR                  R                  UR*                  SS9   TR                  R-                  [         R.                  T5        TR1                  5         SSS5        UR3                  TR$                  UR4                  SS9  SSS5        TR                  R7                  U5        SSS5        SSS5        U R8                  (       a  Xl        TR                  R                  TR                  R=                  TR                  R?                  T5      5      SS9   TR                  RA                  XRB                  5        SSS5        URE                  S5        TR                  R-                  UR4                  U5        SSS5        U
   TR                  R-                  [         R.                  T5        SSS5        SSS5        TR                  R                  TR                  R?                  T5      5         TR                  RF                  R7                  TR                  XR4                  5        SSS5        g! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNK= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       g= f)	z1
Construct a new native list from a Python list.
c                   > U R                  U5      nTR                  R                  [        R                  " TR                  U5      SS9   TR                  R                  [        R                  T5        TR                  5         S S S 5        TR                  R                  SX25      nTR                  R                  USS9   TR                  R                  [        R                  T5        TR                  R                  SSX#5        TR                  R                  U5        TR                  5         S S S 5        TR                  R                  U5        g ! , (       d  f       N= f! , (       d  f       N;= f)NFrd  r?   r   z(can't unbox heterogeneous list: %S != %S)r   r   r   r   r   r%   r  do_breakrE   r   r  r$   )nthr  expected_typobjtypobjtype_mismatchr*   errorptrr  s        r3   check_element_type2_python_list_to_native.<locals>.check_element_type  s   G$YY		62   IIOOG,,h7MMO 		--dFLYY}U;IIOOG,,h7GG!:
 GGNN6"MMO < 	
v%  <;s   ;EA3E-
E*-
E;Trd  r   >FN)rR  )$r   r  allocate_exr   r   r  r   r   rC   rD   r   rE   r  r   r   list_getitemr   r  r  r   r   rA   r%   r  r  setitemrz   r$   	reflectedrQ  r   r'   object_set_private_datameminfo	set_dirtyr  )r(   rG   r*   r   listptrr  r  r   r  if_ok	if_not_okrI   r  r  r  r  r  s     `  `          @r3   _python_list_to_nativer    s   0 ##//		199cPHB	
		2d		+/AI;;tyy!,D""199#8#8d#I*. # 0 &a(C&)jj1E1Ec1P&QO **199d;t"#''"6"6sDJJ"G*3I "#G!<YY..vu.MIIOOG,<,<hG MMO N TZZeL < GGNN?3 )0& }}! ""199>>!))..2J#K9> # @//\\B@ NN5!IIOODJJ0= @ IIOOG,,h7 C 
,J 
		199>>(3	4			QYYZZ8 
5	4) NM <; )(0 0.@ @5 U@ YC 
,	+J 
5	4s   P#"AP >O
AO
	A0N8;N&-N8.#O
	OA+P &O.*?P )
P#3+PP#";P5&
N50N88
OO
	

OO
O+&P .
O=8P  
P	
P#
P 	P##
P25
Qc           
        ^^ TR                   R                  T5      n[        R                  " TR                  [        R
                  5      n[        R                  " TR                  TR                  R                  U 5      5      nTR                   R                  T5      nTR                  R                  [        R                  " TR                  U5      5       u  pxU   [        R                  R                  TR                  TR                  X5      n	X9l        U R                   (       a  TU	l        TR                  R%                  U	R&                  U5        SSS5        U   [)        U TTX5U5        SSS5        SSS5        UU4S jn
[+        TR                  R-                  U5      TR                  R-                  U5      U
S9$ ! , (       d  f       Nt= f! , (       d  f       Nk= f! , (       d  f       Nt= f)z
Convert list *obj* to a native list.

If list was previously unboxed, we reuse the existing native list
to ensure consistency.
Nc                  <   > T R                   R                  T5        g r6   r   object_reset_private_datar*   rG   s   r3   r   unbox_list.<locals>.cleanup8      	))#.r:   r!  )r   	list_sizer   r   r   r#  rR   r   r   object_get_private_datar  r   r   r  from_meminfor   r  rQ  r%   rz   r  r	   r'   )r(   rG   r*   r   r  r  r   has_meminfor  r  r   s    ``        r3   
unbox_listr    s[    77S!D((G4E4EFH!!!))QYY-E-Ec-JKG ''
)
)#
.C	
		7..qyy#>	?#K''44QYY		3TDI}}!IIOODJJ0  "3QxH  
@/ qyy~~g. !		x 8&( ( [ Y 
@	?s=   G+!A:G	
G+%G5G+	
G	G+
G(	$G++
G9c           	      
   U R                   (       d  gU R                  R                   (       a  SR                  U 5      n[        U5      e[        R
                  " UR                  UR                  X5      nUR                  R                  UR                  SS9   UR                  nUR                  R                  U5      nUR                  nUR                  R                  Xv5      nUR                  R                  SU[         R"                  " UR$                  S5      5      n	UR                  R'                  U	5       u  pU
   [(        R*                  " UR                  U5       nUR-                  UR.                  5      nUR1                  U5        UR3                  U R                  U5      nUR                  R5                  X\R.                  U5        SSS5        [(        R*                  " UR                  U5       nUR                  R7                  XlR.                  5      nUR-                  U5      nUR1                  U5        UR3                  U R                  U5      nUR                  R9                  X^5        UR                  R;                  U5        SSS5        SSS5        U   UR                  R=                  XWUS5        [(        R*                  " UR                  U5       nUR-                  UR.                  5      nUR1                  U5        UR3                  U R                  U5      nUR                  R5                  X\R.                  U5        SSS5        SSS5        SSS5        UR?                  S5        SSS5        g! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       Nn= f! , (       d  f       Nw= f! , (       d  f       N= f! , (       d  f       g= f)z<
Reflect the native list's contents into the Python object.
Nz2cannot reflect element of reflected container: {}
Frd  z>=r   ) r  r   format	TypeErrorr   r  r   r   r   dirtyrQ  r   r  r   subrE   r   rC   rD   r  r   r  r  r  r  r   r  r   list_appendr$   list_setslicer  )r(   r)   r*   r   r  rG   r   new_sizediff	diff_gt_0if_grow	if_shrinkr  ru  r  r   s                   r3   reflect_listr  A  s   
 ==
yyCJJ3On		199c?D	
		4::e		4kkww  %99yy}}X,II))$*,++dii*CE	YYy)-Ag&&qyy$74<<

3D%%d+eeCIIt4GGG((jj'B	 8 &&qyy$74))--jj9C<<,D%%d+eeCIIt4GGG''5GGNN7+ 8   %%cT4@&&qyy(;t<<

3D%%d+eeCIIt4GGG((jj'B	 <	 % *: 	uI 
5	4 87 87 ( <;	 % *) 
5	4s   B&O4 O#"N/'A/N	)N/?BN	N/!
O#+?O*A/O	O!O#)O4
NN/
N,'N//
N>9O#
OO
O O##
O1	-O44
Pc                 	   [         R                  R                  UR                  UR                  X5      u  pgUR                  R                  USS9 u  pU   [        R                  " UR                  [        R                  " UR                  R                  S5      5      n
UR                  R                  U5       nUR                  nUR                  R                  U5      nUR                  R                  U
5      nUR                  R                  [        R                   " UR                  U5      SS9 u  nnU   UR                  R#                  X5        SSS5        U   UR                  R%                  SUU5      nUR                  R'                  USS9   UR                  R#                  [        R(                  U5        UR                  R+                  SS5        UR-                  5         SSS5        SSS5        SSS5        UR/                  U R0                  U5      nUR                  R'                  UR2                  SS9   UR                  R#                  [        R(                  U5        SSS5        UR5                  UR                  UR                  SS9  SSS5        U R6                  (       a  Xl        UR                  R'                  UR                  R;                  UR                  R                  U5      5      SS9   UR                  R=                  XR>                  5        SSS5        URA                  S5        UR                  R#                  UR                  U5        SSS5        U	   UR                  R#                  [        R(                  U5        SSS5        SSS5        UR                  R'                  UR                  R                  U5      5         UR                  RB                  RE                  UR                  XR                  5        SSS5        g! , (       d  f       GN= f! , (       d  f       GNV= f! , (       d  f       GN`= f! , (       d  f       GNj= f! , (       d  f       GN	= f! , (       d  f       GN= f! , (       d  f       GNo= f! , (       d  f       GNB= f! , (       d  f       GN= f! , (       d  f       GN)= f! , (       d  f       g= f)	z/
Construct a new native set from a Python set.
Trd  NFr?   r   zcan't unbox heterogeneous set)	do_resize)#r   SetInstancer  r   r   r  r   r   r   rC   r   pyobjset_iteraterz   get_typer'   r   r%   rE   r   r  r   r  r   r   rA   	add_pyapir  rQ  r   r  r  r  r  r$   )r(   rG   r*   r   setptrr  r   instr  r  	typobjptrr  r  r  r  if_firstif_not_firstr  r  s                      r3   _python_set_to_nativer  t  s[   
 !!--aiiCNHB	
		2d		+/A11!))24++aggmmT2RTI $$S)T**))'2"#))..";YY&&OOAII?  ' "%=h!		: " &()		(=(=dF>M)OYY..}U.KIIOOG,<,<hGGG223D3RT MMO	 L	 &"& G4YY&&vu&EIIOOG$4$4h? FqwwF9 *< }}!""199>>!))..2J#K*/ # 1//\\B1 NN5!IIOODJJ/U X IIOOG,,h7 [ 
,b 
		199>>(3	4			QYYZZ8 
5	4E " LK	 &" "( FE5 *)B1 1M UX Y[ 
,	+b 
5	4s   SA&R/=A<R9Q'	?P1
Q'	%8QAQ4Q<Q'	AR+Q9	7-R$A+R/&R5?R/4
S>+S)S-;S%1
Q ;Q'	
QQ
Q$Q'	'
Q61R9
RR
RR/
R,'R//
R>	9S
S	S
S"%
S3c           
        ^^ TR                   R                  T5      n[        R                  " TR                  [        R
                  5      n[        R                  " TR                  TR                  R                  U 5      5      nTR                   R                  T5      nTR                  R                  [        R                  " TR                  U5      5       u  pxU   [        R                  R                  TR                  TR                  X5      n	U R                  (       a  TU	l        TR                  R#                  U	R$                  U5        SSS5        U   ['        U TTX5U5        SSS5        SSS5        UU4S jn
[)        TR                  R+                  U5      TR                  R+                  U5      U
S9$ ! , (       d  f       Nt= f! , (       d  f       Nk= f! , (       d  f       Nt= f)z|
Convert set *obj* to a native set.

If set was previously unboxed, we reuse the existing native set
to ensure consistency.
Nc                  <   > T R                   R                  T5        g r6   r  r  s   r3   r   unbox_set.<locals>.cleanup  r  r:   r!  )r   set_sizer   r   r   r#  rR   r   r   r  r  r   r   r  r  r  rQ  r%   rz   r  r	   r'   )r(   rG   r*   r   r  r  r   r  r  r  r   s    ``        r3   	unbox_setr    sV    77C D((G4E4EFH  AII,D,DS,IJF ''
)
)#
.C	
		7..qyy#>	?#K%%22199aiiRD}}!IIOODJJ/  !#sAtXF  
@/ qyy~~f- !		x 8&( ( [ Y 
@	?s=   G%!A4G
G%G/G%
G	G%
G"	G%%
G3c           	         UR                   nUR                  R                  U5      n[        R                  " UR
                  U5      nUR
                  R                  USS9   [        R                  " UR
                  [        R                  " UR                  S5      5      nUR                  5        nUR
                  R                  U5      nUR                  R                  n	UR                  R                   R#                  UR
                  U R$                  U	5        UR'                  U R$                  U	5      n
UR                  R)                  XHU
5        UR
                  R+                  U[        R                  " UR                  S5      5      nUR
                  R-                  X5        SSS5        SSS5        XT4$ ! , (       d  f       N= f! , (       d  f       XT4$ = f)z1
Create a Python list from a native set's items.
Trd  r   r   N)usedr   r  r   r   r   r   r   r   rC   rD   _iterater'   entrykeyr   r  rR  r   r   r  r   r%   )r(   payloadr*   r  r   r   r  r  rt  ru  r  s              r3   _native_set_to_python_listr    sQ    \\Fggv&G			QYY	0B	
		2d		+))!))*,++fkk1*EG4		u%A::>>DIIMM  CIIt<eeCIIt,GGG  W5		aQVVQ!78AIIOOA%   
, ;   
,	+ ;s&   #AG4C;G/G
G	G
G#c                    [         R                  " UR                  UR                  X5      nUR                  n[
        R                  " UR                  U5      nUR                  R                  [
        R                  " UR                  U5      5       u  pgU   UR                  R                  U5        SSS5        U   UR                  n[        XU5      u  pUR                  R                  U	SS9   UR                  R                  U
5      nUR                  R                  U
5        UR                  R!                  XE5        SSS5        SSS5        SSS5        UR                  R"                  R                  UR                  X5        UR                  R%                  U5      $ ! , (       d  f       N= f! , (       d  f       Nz= f! , (       d  f       N= f! , (       d  f       N= f)z+
Convert native set *val* to a set object.
NTrd  )r   r  r   r   rQ  r   r   r  r   r   rR  r  r  r   set_newr$   r%   r  r'   )r(   r)   r*   r  rG   r`  r  r  r  r   r   s              r3   box_setr    sJ   
 aiiC=D
++C

#
#AIIs
3C	
		7..qyy#>	?CZJ GGNN3	  llG4S1EKB""2d"3ggoog.w'		) 4	  
@" IIMMC-99>>## Z 43	 Y 
@	?sU   GF)5
G?5G4AF:GG)
F7	3G:
GG
G	G
G*c                 t   U R                   (       d  g[        R                  " UR                  UR                  X5      nUR
                  nUR                  R                  UR                  SS9   UR                  nUR                  R                  U5        [        XU5      u  pgUR                  R                  USS9   UR                  R                  XW5        UR                  R                  U5        SSS5        UR                  S5        SSS5        g! , (       d  f       N(= f! , (       d  f       g= f)z;
Reflect the native set's contents into the Python object.
NFrd  T)r  r   r  r   r   r  r   r  rQ  r   	set_clearr  
set_updater$   r  )r(   r)   r*   r  r  rG   r   r   s           r3   reflect_setr    s    
 ==aiiC=DllG	
		7==		7kk	# 1qAYYr$/GGs,GGNN7# 0
 	u 
8	7 0/ 
8	7s%   /AD)?7D6D)
D&	"D))
D7c                 b    UR                   R                  XUR                  R                  5      $ r6   )r   from_native_generatorr   env_ptrr8   s      r3   box_generatorr
  %  s#    77((1==3H3HIIr:   c                 8    UR                   R                  X5      $ r6   )r   to_native_generatorrH  s      r3   unbox_generatorr  )  s    77&&s00r:   c                     [         R                  " U R                  5      nUR                  R	                  UR                  R                  U5      5      $ r6   r   rM  r   r   r   r   r(   r)   r*   rU  s       r3   	box_dtyper  .  :    %%cii0H77qww77ABBr:   c                 H    [        UR                  R                  5       5      $ r6   r   r8   s      r3   unbox_dtyper  3      qyy00233r:   c                     [         R                  " U R                  5      nUR                  R	                  UR                  R                  U5      5      $ r6   r  r  s       r3   box_number_classr  8  r  r:   c                 H    [        UR                  R                  5       5      $ r6   r   r8   s      r3   unbox_number_classr  =  r  r:   c                     U$ r6   r  r8   s      r3   box_pyobjectr  B  s	     Jr:   c                     [        U5      $ r6   r	   rH  s      r3   unbox_pyobjectr  G       sr:   c                 t   U R                   c  [        U 5      eUR                  R                  U 5      n[        R
                  " UR                  [        R                  " US 5      SS9nUR                  R                  U R                   5      nUR                  R                  U5      n[        R                  " UR                  [        R                  " UR                  U5      5         UR                  R                  Xa45      nUR                  R                  U5        [        R                  " UR                  [        R                  " UR                  U5      5         UR                  R!                  U5      nUR                  R                  U5        UR                  R#                  UR                  R%                  X5      U5        S S S 5        S S S 5        ['        UR                  R)                  U5      UR                  R+                  5       S9$ ! , (       d  f       NQ= f! , (       d  f       NZ= f)Nfnptr)r!   r@   )get_pointerNotImplementedErrorr   get_function_pointer_typer   r   r   r   rC   r   r   r   r   r   r&   r$   long_as_voidptrr%   r   r	   r'   rF   )	r(   rG   r*   ptrtyr  serr"  intobjr   s	            r3   unbox_funcptrr)  M  s   
!#&& II//4E

#
#AII$&KKt$<)02C ''
"
"3??
3C''%%c*K			199"..qyy+F
H..{FC	{#qyy&22199fEG''))&1CGGNN6"IIOOAII--c93?	G	
H qyy~~c*QWW5H5H5JKKG G	
H 
Hs&   )A8H)!A,HH)
H&	"H))
H7c                     UR                   R                  U R                  5       UR                  R	                  US/5      UR
                  S9nU$ )Nr   )r   )r   from_native_valuegetr   rq  r   )r(   r)   r*   outs       r3   box_deferredr.  d  sG    
''
#
#CGGI$%II$;$;C!$E01 $ ?C Jr:   c                 .   UR                   R                  U R                  5       U5      nUR                  R                  U    nUR                  UR                  UR                  5       UR                  5      n[        XSR                  UR                  S9$ )Nr!  )r   to_native_valuer,  r   data_model_managersetr   make_uninitializedrz   r	   rA   r   )r(   rG   r*   native_valuemodelr`  s         r3   unbox_deferredr6  l  su    77**3779c:LII((-E
))AIIu779<;M;M
NCs%:%:+335 5r:   c                     [        U5      $ r6   r  rH  s      r3   unbox_dispatcherr8  u  r  r:   c                 <    UR                   R                  U5        U$ r6   )r   rR  r8   s      r3   r  r  {  s    GGNN3Jr:   c                     UR                   R                  SSR                  U 5      5        UR                  R	                  U 5      n[        U[        R                  S9$ )Nr   zcan't unbox {!r} typer@   )r   r   r  r   get_constant_nullr	   r   r  )r(   rG   r*   r`  s       r3   unbox_unsupportedr<    sM    GG,299#>@
))
%
%c
*CsW%5%566r:   c                     SU < S3nUR                   R                  SU5        UR                   R                  5       nU$ )Nzcannot convert native z to Python objectr   )r   r   get_null_object)r(   r)   r*   r   r`  s        r3   box_unsupportedr?    s6    9<
>CGG,c2
''
!
!
#CJr:   c                     U R                   nUR                  R                  UR                  R                  U5      5      $ r6   )r4  r   r   r   )r(   r)   r*   retvals       r3   box_literalrB    s3     F77qww77?@@r:   c                 8    UR                   R                  U5      $ r6   )r   nrt_meminfo_as_pyobjectr8   s      r3   box_meminfo_pointerrE    s    77**3//r:   c                     UR                   R                  U5      n[        R                  " UR                  U5      n[        X4S9$ rP   )r   nrt_meminfo_from_pyobjectr   r   r   r	   )r(   rG   r*   r`  erroreds        r3   unbox_meminfo_pointerrI    s5    
''
+
+C
0Cooaii-Gs--r:   c                 b    [        UR                  R                  5       [        R                  S9$ rP   )r	   r   r   r   r#  r8   s      r3   unbox_typerefrK    s"    qyy002W=N=NOOr:   c                     [        XU5      $ r6   )r?  r8   s      r3   box_LiteralStrKeyDictrM    s    3Q''r:   c           
        ^^	^
^^^^^^^^ [         R                  " TR                  [         R                  5      m/ mUU4S jm	UU	U4S jm[	        5        mUU4S jm[         R
                  " U 5      " TR                  TR                  5      mUTl        T" US5      m[         R                  " TR                  TT5         T" 5         SSS5        T" TS5      n[         R                  " TR                  TU5         T" 5         SSS5        [        TSTR                  [        R                  U5      R                  5        T" TS5      n[         R                  " TR                  TU5         T" 5         SSS5        T" US5      n[         R                  " TR                  TU5         T" 5         SSS5        [        TSTR                  [        R                  U5      R                  5        TR                  R                  TR                  R                  S5      nTR                   R#                  U5      nTR%                  U5        [         R                  " TR                  TU5         T" 5         SSS5        T" US	5      m
[         R                  " TR                  TT
5         T" 5         SSS5        T" US
5      m[         R                  " TR                  TT5         T" 5         SSS5        UU
UUUUUUU4	S jnU" S5        U" S5        U" S5        T	" 5         SSS5        ['        TR)                  5       TR                  R+                  T5      S9$ ! , (       d  f       GN= f! , (       d  f       GNk= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN3= f! , (       d  f       GN
= f! , (       d  f       N= f! , (       d  f       N= f)aN  
The bit_generator instance has a `.ctypes` attr which is a namedtuple
with the following members (types):
* state_address (Python int)
* state (ctypes.c_void_p)
* next_uint64 (ctypes.CFunctionType instance)
* next_uint32 (ctypes.CFunctionType instance)
* next_double (ctypes.CFunctionType instance)
* bit_generator (ctypes.c_void_p)
c                  N   > T H  n TR                   R                  U 5        M      g r6   )r   r$   )_refr*   
extra_refss    r3   clear_extra_refs9unbox_numpy_random_bitgenerator.<locals>.clear_extra_refs  s    DGGNN4  r:   c                  h   > T R                   R                  [        R                  T5        T" 5         g r6   )r   r%   r   r  )r*   rR  r  s   r3   handle_failure7unbox_numpy_random_bitgenerator.<locals>.handle_failure  s!    			((,7r:   c                 `   > TR                   R                  X5      nTR                  U5        U$ r6   )r   r#   r  )rG   attrattr_objr*   rQ  s      r3   object_getattr_safely>unbox_numpy_random_bitgenerator.<locals>.object_getattr_safely  s*    ww44S?Hh'Or:   ctypesNstate_addressstaterz   rL   c_void_pc                   >	 TR                   R                  TU 5      nT	R                  U5        [        R                  " TR
                  TU5         T
" 5         S S S 5        TR                   R                  UT/5      n[        R                  " TR
                  TU5         T
" 5         S S S 5        TR                   R                  TU5      nT" US5      n[        R                  " TR
                  TU5         T
" 5         S S S 5        [        TSU  3TR                  [        R                  U5      R                  5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ni= f)Nrz   fnptr_)r   r#   r  r   early_exit_if_nullr   
tuple_packr;  setattrr   r   r   rz   )r!   interface_next_fnrE  interface_next_fn_castedinterface_next_fn_casted_valuer*   ct_castct_voidptr_tyctypes_bindingrQ  rU  rZ  stack
struct_ptrs        r3   wire_in_fnptrs7unbox_numpy_random_bitgenerator.<locals>.wire_in_fnptrs  s(    ! = =!& /0++AIIu>OP  Q
 77%%'8-&HID++AIIudC  D ()ww||GT'B$ .C('.3*++AIIu>\]  ^ J&GGEKK)GHNNP) QP DC ^]s$   E  E7E" 
E
E"
E0next_doublenext_uint64next_uint32r@   )r   r   r   r#  r   create_struct_proxyr   rQ  rb  rd  r   r   r   rz   r   r   r   r    r  r	   r   r'   )r(   rG   r*   interface_state_addressinterface_stateinterface_state_valuectypes_namectypes_modulerm  rR  rh  ri  rj  rQ  rU  r  rZ  rk  rl  s     `      @@@@@@@@@@r3   unbox_numpy_random_bitgeneratorrx    s    ,,QYY8I8IJLJ! 
	
 005aiiK

 /sH=''		5.I J #8O#-''		5:QR S 	
O%<=CC	E 0H''		5/J K !6W!&''		5:OP QGG%'',u	. ii33AII4D4DhO--k:-(''		5-H I (v>''		5'B C .mZH''		5-H I	P 	P< 	}%}%}%{ 
~ z++-		|8TUUg JI SR KJ
 QP  IH CB IHo 
s   A+OM	3O<M(A(O,M:43O'N/B;O*N23O%N0-3O O(5O
M%	 O(
M7	2O:
N		O
N	O
N-	(O0
N?	:O
O	O
O!bit_generatorc                 j   [         R                  " UR                  [         R                  5      n[	        5        n[         R
                  " U 5      " UR                  UR                  5      nUR                  R                  US5      n[         R                  " UR                  XF5         UR                  R                  [         R                  U5        SSS5        UR                  [        U5      R                  nXul        Xl        [         R"                  " S5      nUR                  R%                  UU5      Ul        UR                  R)                  U5        SSS5        [+        WR-                  5       UR                  R/                  U5      S9$ ! , (       d  f       N= f! , (       d  f       NP= f)a{  
Here we're creating a NumPyRandomGeneratorType StructModel with following fields:
* ('bit_generator', _bit_gen_type): The unboxed BitGenerator associated with
                                    this Generator object instance.
* ('parent', types.pyobject): Pointer to the original Generator PyObject.
* ('meminfo', types.MemInfoPointer(types.voidptr)): The information about the memory
    stored at the pointer (to the original Generator PyObject). This is useful for
    keeping track of reference counts within the Python runtime. Helps prevent cases
    where deletion happens in Python runtime without NRT being awareness of it.
ry  Nr@   )r   r   r   r#  r   rr  r   r   r#   rb  r%   r  r   _bit_gen_typerz   ry  rQ  	voidptr_tnrt_meminfo_new_from_pyobjectr  r$   r	   r   r'   )	r(   rG   r*   r  rk  rl  bit_gen_instunboxedNULLs	            r3   unbox_numpy_random_generatorr  )  s+    ,,QYY8I8IJL	005aiiK
ww44S/J''		5GIIOOG,,l; H''-6<<#*   &WWBB


 	
|$ 
  z++-		|8TUU HG 
s%   A/F$)+FBF$
F!	F$$
F2c                 t   UR                   R                  UR                  X5      nUR                  n[        R
                  " UR                  U5      nUR                  R                  U5        UR                   R                  R                  UR                  X5        UR                  R                  U5      $ r6   )r   r	  r   rQ  r   r   r   rR  r  r$   r'   )r(   r)   r*   r  rG   r`  s         r3   box_numpy_random_generatorr  J  sz    99  C5D
++C

#
#AIIs
3CGGNN3IIMMC-99>>#r:   N)r  llvmliter   
numba.corer   r   numba.core.pythonapir   r   r   r	   numba.core.errorsr
   r   numba.core.typing.typeofr   r   r-  r   r   numba.npr   
contextlibr   r   r4   PythonBooleanr9   NumPyBooleanr=   rJ   PythonIntegerLiteralPythonBooleanLiteralNumPyIntegerLiteralNumPyBooleanLiteralrN   PythonIntegerNumPyIntegerr\   rb   re   PythonFloatrh   
NumPyFloatro   rv   PythonComplexr   NumPyComplexr   r   NoneTyper   EllipsisTyper   
NPDatetimer   r   NPTimedeltar   r   
RawPointerr   
EnumMemberr   r   UndefVarr   Recordr   r   UnicodeCharSeqr   r  Bytesr  CharSeqr  r  Optionalr  r*  	SliceTyper2  SliceLiteralrF  StringLiteralrI  ArrayrX  Bufferrb  rm  TupleUniTuplerv  
NamedTupleNamedUniTuplery  	BaseTupler  Listr  objectr  r  r  r  r  Setr  r  r  r  	Generatorr
  r  DTyper  r  NumberClassr  r  PyObjectObjectr  r  ExternalFunctionPointerr)  DeferredTyper.  r6  
Dispatcherr8  r<  r?  LiteralrB  MemInfoPointerrE  rI  TypeRefrK  LiteralStrKeyDictrM  NumPyRandomBitGeneratorTyperx  r{  NumPyRandomGeneratorTyper  r  r  r:   r3   <module>r     sl	    % A A C 4 ) " 0%" U' ' UC C uu<  < U U UU(     ! !(
 uu7  7 U, ,
 UE E U* * UE E uu	<  	< U6 6 uu:  :, U% %, U^^  u~~u4  4 U: : u< <
 U; ; u< <
 U$ $ U= = u& & U^^  U\\H H u||
@ 
@ UC C2 u9 9: U[[  U]]> >, u}}9 96 U^^	 	 u~~( (B u
E 
E U 2 u4 4 U[[   u||( (2 u{{,@ ,@^ U[[U^^   UU	  	 u.> .>b UZZ B#v #LC9L uzz#( #(L 	/ /d89v uyy"( "(J, UYY 8 	 8 U__J J u1 1 U[[C C u{{4 4 UC C u4 4 U^^U\\   u~~u||   u$$%L &L, U  u5 5 u 
 U 
7 U]]A A U0 0 u. .
 u}}P P U( (
 u(()vV *vVp 11/Bu%%&V 'V@ U##$ %r:   