K i&2ddlZddlZddlZddlZddlZddlZddlZddlm Z ddl Z e jjZ gdZddgZdZdZej$dZd Zd Zd Zd Zd ZdZdZdddZdZdZdZdZe jjAdedZ!e jjAdedZ"e jjAdedZ#dZ$e jjAdedZ%e jjAdedZ&e jjAdedZ'e jjAdedZ(y) N)util)systemjemallocmimallocrrc(tt|dS)N _memory_pool)getattrpa backend_names _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_memory.pybackend_factoryr&s 2,|4 55c#|KtjtjD]}t|ywN)r default_memory_poolsupported_memory_backendsrr s r supported_factoriesr*s5  446, l++,s:<c#Ktjd|zgtj|}|jd}d}t ||k(sJ dd}y#d}wxYww)z> Temporarily allocate *nbytes* from the given *pool*. x)type memory_poolN)r arraybinarybufferslen)poolnbytesarrbufs r allocate_bytesr"0sa ((D6M?$ GC ++- C C s8v   dsAA%AA%A""A%c|j}|j}|j}t|d5|j|dzk(sJ|j}|j|k\sJ|j}||kDsJ||dzksJ ddd|j|k(sJ|jk(sJ|jk(sJy#1swYIxYw)z+ Check allocation stats on *pool*. N)bytes_allocated max_memorynum_allocationsr")rallocated_beforemax_mem_beforenum_allocations_beforenew_max_memorynum_allocations_afters r check_allocated_bytesr.As++-__&N!113 c "B##%)9C)????* N222 $ 4 4 6$'====$'='AAAA B    !%5 55 5 ??  .. .    !%: :: :BBs AC%%C.ctj}t|d5t||j tj k(sJ dddy#1swYyxYw)Ni)r rr"r.r&total_allocated_bytesrs r test_default_allocated_bytesr2Ts[ ! ! #D d #Dd###%)A)A)CCCCDDDs 3AA'ctjtj}t|t j |}|J~|Jyr)r proxy_memory_poolrr.weakrefref)rwrs r test_proxy_memory_poolr8[sN   6 6 8 9D$ T B 4   4<.checksB  y9D  D((( '  s % 11)rGrrm)rtr s r test_memory_pool_factoriesrus5).)*?  ol+\#+== ??rctj}t|ttk\sJt|ttksJyr)r rsetrmrG)backendss r test_supported_memory_backendsrys@++-H x=C 23 33 3 x=C 12 22 2rcd|d}ttj}||d<tjt j d|g|dtj}t|jt j|S)z Run a piece of code making an invalid memory write with the ARROW_DEBUG_MEMORY_POOL environment variable set to a specific value. aif 1: import ctypes import pyarrow as pa # ARROW-16873: some Python installs enable faulthandler by default, # which could dump a spurious stack trace if the following crashes import faulthandler faulthandler.disable() pool = pa.z() buf = pa.allocate_buffer(64, memory_pool=pool) # Write memory out of bounds ptr = ctypes.cast(buf.address, ctypes.POINTER(ctypes.c_ubyte)) ptr[64] = 0 del buf ARROW_DEBUG_MEMORY_POOLrPTrQrU) rYrZr[r\r]r^r_r`rbrT) pool_factory env_valuergrRrhs r run_debug_memory_poolr~ss  .!  D" rzz C%.C!" ..#..$53,0 JC #**3::& Jrr|ct|jd}tjdk(r |jt j k(sJ|jdk7sJd|jvsJy)NabortposixrWrong size on deallocation)r~__name__rZrerasignalSIGABRTrTr|rhs r test_debug_memory_pool_abortrs\  5 5w ?C ww'~~&..000~~""" '3:: 55 5rct|jd}tjdk(r |jt j k(sJ|jdk7sJd|jvsJy)Ntraprrr)r~rrZrerarSIGTRAPrTrs r test_debug_memory_pool_traprs\  5 5v >C ww'~~&..000~~""" '3:: 55 5rcpt|jd}|jd|jvsJy)Nwarnr)r~rrcrTrs r test_debug_memory_pool_warnrs2  5 5v >C '3:: 55 5rc6tjdkrtjdt |j |}t jdk(r|jdksJ|j|dk(r|jdk(sJy||jvsJy)Nlz!Test may fail on 32-bit platformsrrr:) r^maxsizepytestskipr~rrZrerarcrT)r|r}msgrhs r check_debug_memory_pool_disabledrs {{U 78  5 5y AC ww'~~"""  byzzRcjj   rct|ddy)Nnoner:rr|s r test_debug_memory_pool_noners$\62>rct|ddy)Nr:rrs r test_debug_memory_pool_emptyr s$\2r:rc.d}d|d}t|||y)Nsome_arbitrary_valuez,Invalid value for ARROW_DEBUG_MEMORY_POOL: 'z4'. Valid values are 'abort', 'trap', 'warn', 'none'.r)r|r}rs r test_debug_memory_pool_unknownrs,&I 6ykB< <%\9cBrcBd|jd}tjtjd|gddtj tj }tj dk(r5tjs |jjdk7sJyyy)Nz6if 1: import pyarrow as pa pool = pa.z]() buf = pa.allocate_buffer(64, memory_pool=pool) pool.print_stats() rPT)rtrSstdoutrTlinuxr:) rr\r]r^r_r`platformrrunning_on_musllinuxrTstrip)r|rgrhs r test_print_statsrs (()*  D ..#..$5T,0 * 1C ||wt'@'@'Bzz!R'''(Cr)) contextlibrZrr\r^r5pyarrowr pyarrow.testsrrmark processes pytestmarkrGrmrrcontextmanagerr"r.r2r8rArErHrKrjrnruryr~ parametrizerrrrrrrrrr rs$   [[ " " 6 +6,     ;&D8 %2  5:"8I ? 3 <)<)>?6@6)<)>?6@6)<)>?6@6 !")<)>??@?)<)>?;@;)<)>?C@C)<)>? (@ (r