Ë
    	êñiŸ'  ã                  ó~  — d dl mZ d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZ 	 ej                  dk(  Z ej                   ej                  «      dk(  Z ej$                  «       j'                  «       dv Zdd„Zdd	„Zg d
¢Zg d¢Zg d¢ZdZdZdZdZ G d„ dej<                  «      Z G d„ d«      Z dd„Z!dd„Z"y)é    )ÚannotationsN)Ú	CFUNCTYPEÚPOINTERÚc_longÚc_size_tÚc_uint32Úc_ulongÚc_void_p)ÚClassVarÚnté   >   úi686-64Úx64Úx86Úi368Úi686Úamd64Úx86_64c                 ó&   — dd l m}  | j                  S ©Nr   )Úpolars._plrÚ_plrÚRUNTIME_REPR)Úplrs    úS/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/polars/_cpu_check.pyÚget_runtime_reprr   5   s   € Ýà×ÑÐó    c                 ó  — 	 t        j                  «       j                  dk(  rt        j                  dd¬«      S t        j                  dd¬«      S # t
        $ r/ ddlm}  t        j                  | j                  d«      d¬«      cY S w xY w)	NÚDarwinz
libc.dylibT)Ú	use_errnoz	libc.so.6r   )ÚutilÚc)ÚosÚunameÚsysnameÚctypesÚCDLLÚ	Exceptionr!   Úfind_library)Úctutils    r   Ú_open_posix_libcr+   ;   sn   € ðEÜ�8‰8‹:×Ñ Ò)Ü—;‘;˜|°tÔ<Ð<ä—;‘;˜{°dÔ;Ð;øÜò EÝ)ä�{‰{˜6×.Ñ.¨sÓ3¸tÔDÒDðEús   ‚7A ºA Á5B	ÂB	)éS   é‰   éð   r-   éÑ   é   é¢   r-   é   r-   é_   é   r-   éO   r   r-   éW   é   é[   éÃ   )r,   r-   éÐ   éI   r-   éÉ   éD   r-   éÁ   r0   r1   éA   r-   é   r?   r-   éY   r4   r?   r-   r;   r   r?   r-   éQ   r7   r8   r9   )r,   r6   é‹   é|   é$   r7   rC   r=   rE   é   rC   éL   rE   é   r0   r1   r-   r2   r-   r3   r4   r-   r5   r   r-   r6   r7   r3   r8   r9   é   é    i €  é@   c                  óZ   — e Zd ZU dD � ��cg c]
  }|t        f‘Œ c}}} Zded<   yc c}}} w )ÚCPUID_struct)ÚeaxÚebxÚecxÚedxz ClassVar[list[tuple[str, type]]]Ú_fields_N)Ú__name__Ú
__module__Ú__qualname__r   rR   Ú__annotations__)Ú.0Úrr   s   000r   rM   rM   ˆ   s-   … à;÷2ð 2ØˆŒHŠô2€HÐ.ô ùô 2s   Œ&rM   c                  ó&   — e Zd Zdd„Zddd„Zdd„Zy)ÚCPUIDc                óØ  — t         rMt        r!t        j                  d«      | _        t
        }n8t        j                  j                  | _        t        }nt        rt        nt        }t        |«      }t        j                  |z  |Ž }t         rät        | j                  j                  _        t        j                  t        j                  t        j                   t        j                   g| j                  j                  _        | j                  j                  d |t$        t&        z  t(        «      | _        | j*                  sd}t-        |«      ‚t        j.                  | j*                  ||«       �nAdd l}t3        «       }|j4                  }t        j                  t        j                  t        j6                  f|_        t        j6                  |_        |j1                  d||j8                  |j:                  z  |j<                  |j>                  z  «      | _        t        j@                  t        j                  jC                  | j0                  «      «      | _        | j0                  jE                  |«        || j*                  ||j<                  |jF                  z  «      dk7  rd}tI        |«      ‚tK        d tM        tN        «      tP        tP        «      } || j*                  «      | _)        y )Nzkernel32.dllz)could not allocate memory for CPUID checkr   éÿÿÿÿz*could not execute mprotect for CPUID check)*Ú_IS_WINDOWSÚ	_IS_64BITr&   r'   ÚwinÚ_WINDOWS_64_OPCÚwindllÚkernel32Ú_CDECL_32_OPCÚ_POSIX_64_OPCÚlenÚc_ubyter
   ÚVirtualAllocÚrestyper   r	   ÚargtypesÚ_MEM_COMMITÚ_MEM_RESERVEÚ_PAGE_EXECUTE_READWRITEÚaddrÚMemoryErrorÚmemmoveÚmmapr+   ÚmprotectÚc_intÚMAP_PRIVATEÚMAP_ANONYMOUSÚ	PROT_READÚ
PROT_WRITEÚ	addressofÚfrom_bufferÚwriteÚ	PROT_EXECÚRuntimeErrorr   r   rM   r   Úfunc_ptr)	ÚselfÚopcÚsizeÚcodeÚmsgrp   Úlibcrq   Ú	func_types	            r   Ú__init__zCPUID.__init__�   sú  € ÝÝô "Ÿ;™; ~Ó6�”Ü%‘ô
 "Ÿ=™=×1Ñ1�”Ü#‘å#,•-´-ˆCä�3‹xˆÜ—‘ Ñ%¨Ð,ˆåÜ,4ˆD�H‰H×!Ñ!Ô)ä—‘Ü—‘Ü—‘Ü—‘ð	.ˆD�H‰H×!Ñ!Ô*ð Ÿ™×-Ñ-Ø�dœK¬,Ñ6Ô8OóˆDŒIð —9’9ØA�Ü! #Ó&Ð&Ü�N‰N˜4Ÿ9™9 d¨DÖ1ãô $Ó%ˆDØ—}‘}ˆHÜ!'§¡´&·/±/Ä6Ç<Á<Ð PˆHÔÜ%Ÿ|™|ˆHÔàŸ	™	ØØØ× Ñ  4×#5Ñ#5Ñ5Ø—‘ §¡Ñ0ó	ˆDŒIô ×(Ñ(¬¯©×)DÑ)DÀTÇYÁYÓ)OÓPˆDŒIØ�I‰I�O‰O˜DÔ!á˜Ÿ	™	 4¨¯©¸$¿.¹.Ñ)HÓIÈQÒNØB�Ü" 3Ó'Ð'ä˜d¤G¬LÓ$9¼8ÄXÓNˆ	Ù! $§)¡)Ó,ˆ�r   c                ó@   — t        «       }| j                  |||«       |S )N)rM   r|   )r}   rN   rP   Ústructs       r   Ú__call__zCPUID.__call__Ì   s   € Ü“ˆØ�‰�f˜c 3Ô'Øˆr   c                óú   — t         rut        | j                  j                  _        t
        t        t        g| j                  j                  _        | j                  j                  | j                  dt        «       y y r   )r]   r   r_   ÚVirtualFreerh   r
   r   r	   ri   rm   Ú_MEM_RELEASE)r}   s    r   Ú__del__zCPUID.__del__Ñ   sO   € ÝÜ+1ˆD�H‰H× Ñ Ô(Ü-5´xÄÐ,IˆD�H‰H× Ñ Ô)Ø�H‰H× Ñ  §¡¨A¬|Õ<ð r   N)ÚreturnÚNone)r   )rN   ÚintrP   rŽ   rŒ   rM   )rS   rT   rU   r„   r‡   r‹   © r   r   rZ   rZ   Ž   s   „ ó;-ôzô
=r   rZ   c                 óæ  — t         si S t        «       }  | dd«      } | dd«      } | dd«      }t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  d	z  «      t        |j                  d
z  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      t        |j                  dz  «      dœS )Nr@   r   r2   l       i   rI   rJ   i   i   i  @ i  € é   i   r   é   é    )Ússe3Ússse3ÚfmaÚ
cmpxchg16bzsse4.1zsse4.2ÚmovbeÚpopcntÚ	pclmulqdqÚavxÚbmi1Úbmi2Úavx2Úlzcnt)Ú_SUPPORTS_CPUIDrZ   ÚboolrP   rO   )ÚcpuidÚcpuid1Úcpuid7Úcpuid81hs       r   Ú_read_cpu_flagsr¦   Ø   s/  € ÝØˆ	ô ‹G€EÙ�1�a‹[€FÙ�1�a‹[€FÙ�Z Ó#€Hô �V—Z‘Z 6Ñ*Ó+Ü�f—j‘j FÑ+Ó,Ü�F—J‘J 'Ñ*Ó+Ü˜6Ÿ:™:¨Ñ1Ó2Ü�v—z‘z WÑ-Ó.Ü�v—z‘z WÑ-Ó.Ü�f—j‘j GÑ,Ó-Ü�v—z‘z WÑ-Ó.Ü˜&Ÿ*™*¨Ñ/Ó0Ü�F—J‘J 'Ñ*Ó+Ü�V—Z‘Z 6Ñ*Ó+Ü�V—Z‘Z 6Ñ*Ó+Ü�V—Z‘Z 6Ñ*Ó+Ü�h—l‘l fÑ-Ó.ñð r   c                óæ  — | j                  d«      D �cg c]%  }|j                  d«      rŒ|j                  d«      ‘Œ' }}|D �cg c]  }|r|dk7  r|‘Œ }}|rt        j                  j                  d«      ry t        «       }g }|D ]-  }||vrd|›�}t        |«      ‚||   rŒ|j                  |«       Œ/ |r0dd l	}|j                  dd	j                  |«      › d
�t        d¬«       y y c c}w c c}w )Nú,ú-ú+z
ctr-staticÚPOLARS_SKIP_CPU_CHECKzunknown feature flag: r   z[Missing required CPU features.

The following required CPU features were not detected:
    z, a  
Continuing to use this version of Polars on this processor will likely result in a crash.
Install `polars[rtcompat]` instead of `polars` to run Polars with better compatibility.

Hint: If you are on an Apple ARM machine (e.g. M1) this is likely due to running Python under Rosetta.
It is recommended to install a native version of Python that does not run under Rosetta x86-64 emulation.

If you believe this warning to be a false positive, you can set the `POLARS_SKIP_CPU_CHECK` environment variable to bypass this check.
r@   )Ú
stacklevel)ÚsplitÚ
startswithÚlstripr#   ÚenvironÚgetr¦   r{   ÚappendÚwarningsÚwarnÚjoinÚRuntimeWarning)Úfeature_flagsÚfÚexpected_cpu_flagsÚsupported_cpu_flagsÚmissing_featuresr�   r³   s          r   Úcheck_cpu_flagsr¼   ô   s"  € à,×2Ñ2°3Ó7öØ¸q¿|¹|ÈCÕ?Pˆ�‰��ðÐð ð
 $öàÙ��lÒ"ò 	
ðÐð ñ ¤§¡§¡Ð0GÔ!HØä)Ó+ÐàÐØò 'ˆØÐ'Ñ'Ø*¨1¨%Ð0ˆCÜ˜sÓ#Ð#à" 1Ó%Ø×#Ñ# AÕ&ð'ñ Ûà�‰ðð 
‡Y�YÐÓ Ð!ð "ðô Øð 	õ 	
ð ùò/ùòs   ”C)«C)ÁC.)rŒ   Ústr)rŒ   zctypes.CDLL)rŒ   zdict[str, bool])r·   r½   rŒ   r�   )#Ú
__future__r   r&   r#   Úplatformr   r   r   r   r   r	   r
   Útypingr   Únamer]   Úsizeofr^   ÚmachineÚlowerr    r   r+   rd   r`   rc   rj   rk   rŠ   rl   Ú	StructurerM   rZ   r¦   r¼   r�   r   r   ú<module>rÆ      sÏ   ðõ0 #ã Û 	Û ß T× TÑ TÝ ðð �g‰g˜‰o€ØˆF�M‰M˜&Ÿ/™/Ó*¨aÑ/€	Ø"�(×"Ñ"Ó$×*Ñ*Ó,ð 1ð €óó
Eò4€ò€ò€ð$ €Ø€Ø€ØÐ ô�6×#Ñ#ô ÷G=ñ G=óTô8*
r   