ó
    ƒñ:ik3  ã                   ó^  • S SK r S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
  S r\" S5      r\" S5      r\" S5      r\" S5      r\" S	5      r\" S
5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r \" S5      r!\" S5      r"\" S5      r#\" S5      r$\" S5      r%\" S5      r&\" S 5      r'\" S!5      r(\" S"5      r)\" S#5      r*\" S$5      r+\" S%5      r, " S& S'5      r- " S( S)5      r. " S* S+\/5      r0 " S, S-\/5      r1S. r2\ Rf                  SS/ S0:¼  a  \2O\Rh                  r5\0" 5       r6S1 r7S2 r8 " S3 S4\/5      r9 " S5 S6\/5      r:S7 r;S8 r< " S9 S:\/5      r=g);é    N)Ú_decode_stringÚ_is_shutting_down)Úget_library_namec                 óf   • [        U [        R                  40 5      n[        R                  " U5      $ ©N)ÚtypeÚctypesÚ	StructureÚPOINTER)ÚnameÚnewclss     ÚW/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/llvmlite/binding/ffi.pyÚ_make_opaque_refr   
   s(   € Ü�$œ×)Ñ)Ð+¨RÓ0€FÜ�>Š>˜&Ó!Ð!ó    ÚLLVMContextÚ
LLVMModuleÚ	LLVMValueÚLLVMTypeÚLLVMExecutionEngineÚLLVMPassManagerBuilderÚLLVMPassManagerÚLLVMTargetDataÚLLVMTargetLibraryInfoÚ
LLVMTargetÚLLVMTargetMachineÚLLVMMemoryBufferÚLLVMAttributeListIteratorÚLLVMElementIteratorÚLLVMAttributeSetIteratorÚLLVMGlobalsIteratorÚLLVMFunctionsIteratorÚLLVMBlocksIteratorÚLLVMArgumentsIteratorÚLLVMInstructionsIteratorÚLLVMOperandsIteratorÚLLVMIncomingBlocksIteratorÚLLVMTypesIteratorÚLLVMObjectCacheÚLLVMObjectFileÚLLVMSectionIteratorÚLLVMOrcLLJITRefÚLLVMOrcDylibTrackerRefÚLLVMTimePassesHandlerÚLLVMPipeLineTuningOptionsÚLLVMModulePassManagerÚLLVMFunctionPassManagerÚLLVMPassBuilderc                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
Ú	_LLVMLocké2   a"  A Lock to guarantee thread-safety for the LLVM C-API.

This class implements __enter__ and __exit__ for acquiring and releasing
the lock as a context manager.

Also, callbacks can be attached so that every time the lock is acquired
and released the corresponding callbacks will be invoked.
c                 óF   • [         R                  " 5       U l        / U l        g r   )Ú	threadingÚRLockÚ_lockÚ_cblist©Úselfs    r   Ú__init__Ú_LLVMLock.__init__;   s   € ô —_’_Ó&ˆŒ
Øˆ�r   c                 ó<   • U R                   R                  X45        g)z–Register callbacks that are invoked immediately after the lock is
acquired (``acq_fn()``) and immediately before the lock is released
(``rel_fn()``).
N)r9   Úappend©r;   Úacq_fnÚrel_fns      r   ÚregisterÚ_LLVMLock.registerA   s   € ð
 	�‰×Ñ˜VÐ,Õ-r   c                 ó<   • U R                   R                  X45        g)z)Remove the registered callbacks.
        N)r9   Úremover@   s      r   Ú
unregisterÚ_LLVMLock.unregisterH   s   € ð 	�‰×Ñ˜VÐ,Õ-r   c                 óp   • U R                   R                  5         U R                   H  u  pU" 5         M     g r   )r8   Úacquirer9   r@   s      r   Ú	__enter__Ú_LLVMLock.__enter__M   s'   € Ø�
‰
×ÑÔà"Ÿlœl‰NˆFÙŽHò +r   c                 óp   • U R                    H  u  p#U" 5         M     U R                  R                  5         g r   )r9   r8   Úrelease)r;   Úexc_detailsrA   rB   s       r   Ú__exit__Ú_LLVMLock.__exit__S   s'   € à"Ÿlœl‰NˆFÙŽHñ +à�
‰
×ÑÕr   )r9   r8   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r<   rC   rG   rK   rP   Ú__static_attributes__© r   r   r3   r3   2   s    † ñòò.ò.ò
õr   r3   c                   ó&   • \ rS rSrS rS rS rSrg)Ú_suppress_cleanup_errorséZ   c                 ó   • Xl         g r   ©Ú_context)r;   Úcontexts     r   r<   Ú!_suppress_cleanup_errors.__init__[   s   € Ø�r   c                 ó6   • U R                   R                  5       $ r   )r^   rK   r:   s    r   rK   Ú"_suppress_cleanup_errors.__enter__^   s   € Ø�}‰}×&Ñ&Ó(Ð(r   c                 ó\   •  U R                   R                  XU5      $ ! [         a     g f = fr   )r^   rP   ÚPermissionError)r;   Úexc_typeÚ	exc_valueÚ	tracebacks       r   rP   Ú!_suppress_cleanup_errors.__exit__a   s0   € ð	Ø—=‘=×)Ñ)¨(¸yÓIÐIøÜó 	Ùð	ús   ‚ ž
+ª+r]   N)rR   rS   rT   rU   r<   rK   rP   rW   rX   r   r   rZ   rZ   Z   s   † ò ò)õr   rZ   c                   ób   • \ rS rSrSr/ SQrS rS r\S 5       r	S r
\S 5       r\S	 5       rS
rg)Ú_lib_wrapperéh   zoWrap libllvmlite with a lock such that only one thread may access it at
a time.

This class duck-types a CDLL.
)Ú_lib_handleÚ_fntabr8   c                 ó>   • S U l         0 U l        [        5       U l        g r   )rl   rm   r3   r8   r:   s    r   r<   Ú_lib_wrapper.__init__p   s   € ØˆÔØˆŒÜ“[ˆ�
r   c                 ó¨  • Sn[         R                  S5      S   n[        5       n[        [	        X#5      5       n [
        R                  " [        U5      5      U l        [        U R                  U5      " 5          S S S 5        g ! [         a    SU SU S3n[        U5      e[         a    SU SU S	3n[        U5      ef = f! , (       d  f       g = f)
NÚLLVMPY_GetVersionInfoÚ.r   z(Could not find/load shared object file 'z' from resource location: 'zº'. This could mean that the library literally cannot be found, but may also mean that the permissions are incorrect or that a dependency of/a symbol in the library could not be resolved.z-During testing of symbol lookup, the symbol 'z%' could not be found in the library 'Ú')rR   Ú
rpartitionr   rZ   Ú_importlib_resources_pathr	   ÚCDLLÚstrrl   ÚgetattrÚOSErrorÚAttributeError)r;   Útest_symÚmod_nameÚlib_nameÚlib_pathÚmsgs         r   Ú	_load_libÚ_lib_wrapper._load_libu   së   € Ø*ˆÜ×&Ñ& sÓ+¨AÑ.ˆÜ#Ó%ˆä%Ô&?Ø&.ó':ô ;Ø>Fð#Ü#)§;¢;¬s°8«}Ó#=�Ô ä˜×(Ñ(¨(Ô3Õ5÷;ð ;øô ó 	#ð BÀ(Àð L3Ø3;°*ð =#ð#�ô ˜c“lÐ"Ü!ó #ðØ#˜*ð %Ø#˜* Að'�ô ˜c“lÐ"ð#ú÷!;õ ;ús   ¹C»?BÂ<C Ã CÃ
Cc                 ó\   • U R                   (       d  U R                  5         U R                   $ r   )rl   r€   r:   s    r   Ú_libÚ_lib_wrapper._lib’   s#   € ð ××Ø�N‰NÔØ×ÑÐr   c                 óº   •  U R                   U   $ ! [         a     Of = f[        U R                  U5      n[	        U R
                  U5      nX0R                   U'   U$ r   )rm   ÚKeyErrorrx   rƒ   Ú_lib_fn_wrapperr8   )r;   r   ÚcfnÚwrappeds       r   Ú__getattr__Ú_lib_wrapper.__getattr__™   s[   € ð	Ø—;‘;˜tÑ$Ð$øÜó 	Ùð	úô �d—i‘i Ó&ˆÜ! $§*¡*¨cÓ2ˆØ#�‰�DÑØˆs   ‚ ‘
�c                 ó.   • U R                   R                  $ )zWThe name of the library passed in the CDLL constructor.

For duck-typing a ctypes.CDLL
)rƒ   Ú_namer:   s    r   r�   Ú_lib_wrapper._name¤   s   € ð �y‰y�‰Ðr   c                 ó.   • U R                   R                  $ )zMThe system handle used to access the library.

For duck-typing a ctypes.CDLL
)rƒ   Ú_handler:   s    r   r�   Ú_lib_wrapper._handle¬   s   € ð �y‰y× Ñ Ð r   )rm   rl   r8   N)rR   rS   rT   rU   rV   Ú	__slots__r<   r€   Úpropertyrƒ   rŠ   r�   r�   rW   rX   r   r   rj   rj   h   sY   † ñò
 3€Iò!ò
#ð: ñ ó ð ò	ð ñó ðð ñ!ó ó!r   rj   c                   ó”   • \ rS rSrSrSS/rS r\S 5       r\R                  S 5       r\S 5       r
\
R                  S	 5       r
S
 rSrg)r‡   éµ   zÞWraps and duck-types a ctypes.CFUNCTYPE to provide
automatic locking when the wrapped function is called.

TODO: we can add methods to mark the function as threadsafe
      and remove the locking-step on call when marked.
r8   Ú_cfnc                 ó   • Xl         X l        g r   ©r8   r–   )r;   Úlockrˆ   s      r   r<   Ú_lib_fn_wrapper.__init__¾   s   € ØŒ
Ø�	r   c                 ó.   • U R                   R                  $ r   ©r–   Úargtypesr:   s    r   r�   Ú_lib_fn_wrapper.argtypesÂ   s   € à�y‰y×!Ñ!Ð!r   c                 ó$   • XR                   l        g r   rœ   )r;   r�   s     r   r�   rž   Æ   s   € à%�	‰	Õr   c                 ó.   • U R                   R                  $ r   ©r–   Úrestyper:   s    r   r¢   Ú_lib_fn_wrapper.restypeÊ   s   € à�y‰y× Ñ Ð r   c                 ó$   • XR                   l        g r   r¡   )r;   r¢   s     r   r¢   r£   Î   s   € à#�	‰	Õr   c                 ót   • U R                      U R                  " U0 UD6sS S S 5        $ ! , (       d  f       g = fr   r˜   )r;   ÚargsÚkwargss      r   Ú__call__Ú_lib_fn_wrapper.__call__Ò   s$   € Ø�Z‹ZØ—9’9˜dÐ- fÑ-÷ �Z�Zús   �)©
7)r–   r8   N)rR   rS   rT   rU   rV   r’   r<   r“   r�   Úsetterr¢   r¨   rW   rX   r   r   r‡   r‡   µ   su   † ñð ˜&Ð!€Iòð ñ"ó ð"ð ‡_�_ñ&ó ð&ð ñ!ó ð!ð ‡^�^ñ$ó ð$õ.r   r‡   c                 ó\   • [         R                  " [         R                  " U 5      U-  5      $ )a  Replacement implementation of `import.resources.path` to avoid
deprecation warning following code at importlib_resources/_legacy.py
as suggested by https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy

Notes on differences from importlib.resources implementation:

The `_common.normalize_path(resource)` call is skipped because it is an
internal API and it is unnecessary for the use here. What it does is
ensuring `resource` is a str and that it does not contain path separators.
)Ú_impresÚas_fileÚfiles)ÚpackageÚresources     r   Ú_importlib_resources_path_replr±   ×   s!   € ô �?Š?œ7Ÿ=š=¨Ó1°HÑ<Ó=Ð=r   é   )é   é
   c                 óB   • [         R                  R                  X5        g)zvRegister callback functions for lock acquire and release.
*acq_fn* and *rel_fn* are callables that take no arguments.
N)Úlibr8   rC   ©rA   rB   s     r   Úregister_lock_callbackr¸   í   s   € ô ‡I�I×Ñ�vÕ&r   c                 óB   • [         R                  R                  X5        g)z‰Remove the registered callback functions for lock acquire and release.
The arguments are the same as used in `register_lock_callback()`.
N)r¶   r8   rG   r·   s     r   Úunregister_lock_callbackrº   ô   s   € ô ‡I�I×Ñ˜Õ(r   c                   ó   • \ rS rSrSrSrg)Ú_DeadPointeréû   z2
Dummy class to make error messages more helpful.
rX   N)rR   rS   rT   rU   rV   rW   rX   r   r   r¼   r¼   û   s   † ôr   r¼   c                   ó~   • \ rS rSrSr\" 5       r\S 5       rSS jr	S r
S rS r\4S	 jrS
 rS r\r\S 5       rSrg)ÚOutputStringi  z4
Object for managing the char* output of LLVM APIs.
c                 óT   • U " [         R                  " U[         R                  5      S9$ )zõConstructing from a pointer returned from the C-API.
The pointer must be allocated with LLVMPY_CreateString.

Note
----
Because ctypes auto-converts *restype* of *c_char_p* into a python
string, we must use *c_void_p* to obtain the raw pointer.
)Úinit)r	   ÚcastÚc_char_p)ÚclsÚptrs     r   Úfrom_returnÚOutputString.from_return  s   € ñ œŸš C¬¯©Ó9Ñ:Ð:r   Nc                 óš   • Ub  UO[         R                  " S 5      U l        [         R                  " U R                  5      U l        Xl        g r   )r	   rÃ   Ú_ptrÚbyrefÚ_as_parameter_Ú_owned)r;   ÚownedrÁ   s      r   r<   ÚOutputString.__init__  s3   € Ø Ñ,‘D´&·/²/À$Ó2GˆŒ	Ü$Ÿlšl¨4¯9©9Ó5ˆÔØ�r   c                 ó’   • U R                   b:  U R                  (       a  [        R                  U R                   5        S U l         U ?g g r   )rÉ   rÌ   r¶   ÚLLVMPY_DisposeStringrË   r:   s    r   ÚcloseÚOutputString.close  s7   € Ø�9‰9Ñ Ø�{�{Ü×(Ñ(¨¯©Ô3ØˆDŒIØÑ#ð	 !r   c                 ó   • U $ r   rX   r:   s    r   rK   ÚOutputString.__enter__  s   € Øˆr   c                 ó$   • U R                  5         g r   ©rÑ   ©r;   re   Úexc_valÚexc_tbs       r   rP   ÚOutputString.__exit__"  ó   € Ø�
‰
�r   c                 óZ   • U" 5       (       d  U R                   b  U R                  5         g g g r   rÖ   ©r;   r   s     r   Ú__del__ÚOutputString.__del__%  s*   € ñ !×"Ñ"Ø�z‰zÑ%Ø—
‘
•ð &ð #r   c                 ój   • U R                   c  gU R                   R                  nUc   e[        U5      $ )Nz<dead OutputString>)rÉ   Úvaluer   )r;   Úss     r   Ú__str__ÚOutputString.__str__,  s1   € Ø�9‰9ÑØ(Ø�I‰I�O‰OˆØ‰}Ðˆ}Ü˜aÓ Ð r   c                 ó,   • [        U R                  5      $ r   ©ÚboolrÉ   r:   s    r   Ú__bool__ÚOutputString.__bool__3  ó   € Ü�D—I‘I‹Ðr   c                 ó.   • U R                   R                  $ )z:Get the raw bytes of content of the char pointer.
        )rÉ   rá   r:   s    r   ÚbytesÚOutputString.bytes8  s   € ð �y‰y�‰Ðr   )rË   rÌ   rÉ   )TN)rR   rS   rT   rU   rV   r¼   rË   ÚclassmethodrÆ   r<   rÑ   rK   rP   r   rÞ   rã   rè   Ú__nonzero__r“   rì   rW   rX   r   r   r¿   r¿     sc   † ññ "“^€Nàñ	;ó ð	;ôò
$òòð ):ô ò!òð €Kàñó ór   r¿   c                 óF   • U b  [        [        R                  U 5      5      $ g)z,To wrap string return-value from C-API.
    N)rw   r¿   rÆ   ©rÅ   s    r   Ú
ret_stringrò   ?  s$   € ð �Ü”<×+Ñ+¨CÓ0Ó1Ð1ð r   c                 óH   • U b  [         R                  U 5      R                  $ g)z+To wrap bytes return-value from C-API.
    N)r¿   rÆ   rì   rñ   s    r   Ú	ret_bytesrô   F  s%   € ð �Ü×'Ñ'¨Ó,×2Ñ2Ð2ð r   c                   ó„   • \ rS rSrSrSr\" 5       rSrS r	S r
S rS r\S 5       rS	 rS
 r\4S jrS rS r\rS rSrg)Ú	ObjectRefiM  zB
A wrapper around a ctypes pointer to a LLVM object ("resource").
Fc                 óN   • Uc  [        S5      eXl        Xl        [        U l        g )NzNULL pointer)Ú
ValueErrorrÉ   rË   r¶   Ú_capi)r;   rÅ   s     r   r<   ÚObjectRef.__init__V  s$   € Ø‰;Ü˜^Ó,Ð,ØŒ	Ø!ÔÜˆ�
r   c                 ó´   •  U R                   (       d!  U R                  (       d  U R                  5         U R                  5         g! U R                  5         f = f)z9
Close this object and do any required clean-up actions.
N)Ú_closedrÌ   Ú_disposeÚdetachr:   s    r   rÑ   ÚObjectRef.close]  s0   € ð	Ø—<—<¨¯¯Ø—‘”à�K‰K�MøˆD�K‰K�Mús   ‚2A ÁAc                 óH   • U R                   (       d  U ?SU l         SU l        gg)z>
Detach the underlying LLVM resource without disposing of it.
TN)rü   rË   rÉ   r:   s    r   rþ   ÚObjectRef.detachg  s$   € ð �|�|ØÐ#ØˆDŒLØˆD�Ið r   c                 ó   • g)z²
Dispose of the underlying LLVM resource.  Should be overriden
by subclasses.  Automatically called by close(), __del__() and
__exit__() (unless the resource has been detached).
NrX   r:   s    r   rý   ÚObjectRef._disposep  s   � r   c                 ó   • U R                   $ )zN
Whether this object has been closed.  A closed object can't
be used anymore.
)rü   r:   s    r   ÚclosedÚObjectRef.closedw  s   € ð �|‰|Ðr   c                 ó€   • [        U S5      (       d   eU R                  (       a  [        U R                  < S35      eU $ )NrÑ   z instance already closed)Úhasattrrü   ÚRuntimeErrorÚ	__class__r:   s    r   rK   ÚObjectRef.__enter__  s3   € Ü�t˜W×%Ñ%Ð%Ð%Ø�<�<Ü¸t¿~¼~ÐOÓPÐPØˆr   c                 ó$   • U R                  5         g r   rÖ   r×   s       r   rP   ÚObjectRef.__exit__…  rÛ   r   c                 óZ   • U" 5       (       d  U R                   b  U R                  5         g g g r   rÖ   rÝ   s     r   rÞ   ÚObjectRef.__del__ˆ  s(   € Ù ×"Ñ"Ø�z‰zÑ%Ø—
‘
•ð &ð #r   c                 ó,   • [        U R                  5      $ r   ræ   r:   s    r   rè   ÚObjectRef.__bool__�  rê   r   c                 ó´   • [        US5      (       d  g[        R                  " U R                  S   5      [        R                  " UR                  S   5      :H  $ )NrÉ   Fr   )r  r	   Ú	addressofrÉ   )r;   Úothers     r   Ú__eq__ÚObjectRef.__eq__�  sH   € Ü�u˜f×%Ñ%ØÜ×Ò §	¡	¨!¡Ó-Ü×Ò˜UŸZ™Z¨™]Ó+ñ,ð 	,r   c                 ó†   • [        [        R                  " U R                  [        R                  5      R
                  5      $ r   )Úhashr	   rÂ   rÉ   Úc_void_prá   r:   s    r   Ú__hash__ÚObjectRef.__hash__™  s&   € Ü”F—K’K §	¡	¬6¯?©?Ó;×AÑAÓBÐBr   )rË   rù   rü   rÉ   N)rR   rS   rT   rU   rV   rü   r¼   rË   rÌ   r<   rÑ   rþ   rý   r“   r  rK   rP   r   rÞ   rè   r  rï   r  rW   rX   r   r   rö   rö   M  sm   † ñð €GÙ!“^€Nà€Fòòòòð ñó ðòòð ):ô ò
ò,ð €KõCr   rö   )>Úsysr	   r6   Úimportlib.resourcesÚ	resourcesr¬   Úllvmlite.binding.commonr   r   Úllvmlite.utilsr   r   ÚLLVMContextRefÚLLVMModuleRefÚLLVMValueRefÚLLVMTypeRefÚLLVMExecutionEngineRefÚLLVMPassManagerBuilderRefÚLLVMPassManagerRefÚLLVMTargetDataRefÚLLVMTargetLibraryInfoRefÚLLVMTargetRefÚLLVMTargetMachineRefÚLLVMMemoryBufferRefr   r   r   r    r!   r"   r#   r$   r%   r&   r'   ÚLLVMObjectCacheRefÚLLVMObjectFileRefÚLLVMSectionIteratorRefr+   r,   ÚLLVMTimePassesHandlerRefÚLLVMPipelineTuningOptionsRefÚLLVMModulePassManagerRefÚLLVMFunctionPassManagerRefÚLLVMPassBuilderRefr3   rZ   Úobjectrj   r‡   r±   Úversion_infoÚpathru   r¶   r¸   rº   r¼   r¿   rò   rô   rö   rX   r   r   Ú<module>r8     sC  ðÛ 
Û Û Ý %ç EÝ +ò"ñ
 " -Ó0€Ù  Ó.€Ù Ó,€Ù˜zÓ*€Ù)Ð*?Ó@Ð Ù,Ð-EÓFÐ Ù%Ð&7Ó8Ð Ù$Ð%5Ó6Ð Ù+Ð,CÓDÐ Ù  Ó.€Ù'Ð(;Ó<Ð Ù&Ð'9Ó:Ð Ù,Ð-HÓIÐ Ù&Ð'<Ó=Ð Ù+Ð,FÓGÐ Ù&Ð'<Ó=Ð Ù(Ð)@ÓAÐ Ù%Ð&:Ó;Ð Ù(Ð)@ÓAÐ Ù+Ð,FÓGÐ Ù'Ð(>Ó?Ð Ù-Ð.JÓKÐ Ù$Ð%8Ó9Ð Ù%Ð&7Ó8Ð Ù$Ð%5Ó6Ð Ù)Ð*?Ó@Ð Ù"Ð#4Ó5€Ù)Ð*BÓCÐ Ù+Ð,CÓDÐ Ù/Ð0KÓLÐ Ù+Ð,CÓDÐ Ù-Ð.GÓHÐ Ù%Ð&7Ó8Ð ÷%ñ %÷Pñ ôJ!�6ô J!ôZ.�fô .òD>ð !$× 0Ñ 0°°!Ð 4¸Ó ?ñ <à")§,¡,ð ñ
 ƒn€ò'ò)ô�6ô ô;�6ô ;ò|2ò3ôMC�õ MCr   