ó
    „ñ:i*  ã                  ó’   • S r SSKJr  SSKrSSKrSSKrSSKJrJr   SSK	r	Sr
\
rSS jrSS jr " S	 S
5      rg! \ a    Sr
 N!f = f)a  
Memory monitoring utilities for measuring memory usage.

Example usage:
    tracker = MemoryTracker("my_function")
    with tracker.monitor():
        my_function()
    # Access data: tracker.rss_delta, tracker.duration, etc.
    # Get formatted string: tracker.get_summary()
é    )ÚannotationsN)ÚDictÚOptionalTFc                 ó~   • [         (       a"   [        R                  " 5       n U R                  $ g! [         a     gf = f)z¼
Get current available system memory in bytes.

Used for memory threshold checking in parallel test execution.

Returns:
    int or None: Available memory in bytes, or None if unavailable
N)Ú_HAS_PSUTILÚpsutilÚvirtual_memoryÚ	availableÚ	Exception)Úsys_mems    ÚY/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/misc/memoryutils.pyÚget_available_memoryr      sD   € ÷ ‚{ð	Ü×+Ò+Ó-ˆGØ×$Ñ$Ð$ð øô ó 	Øàð	ús   � / ¯
<»<c                 óz  • 0 n [         (       am   [        R                  " [        R                  " 5       5      nUR                  5       nUR                  U S'   [        R                  " 5       nUR                  U S'   SU ;  a  SU S'   SU ;  a  SU S'   U $ ! [        R                  [        R                  4 a     N>f = f)a>  
Get memory usage information needed for monitoring.

Returns only RSS and available memory which are the fields
actually used by the MemoryTracker.

Returns:
    dict: Memory usage information including:
        - rss: Current process RSS (physical memory currently used)
        - available: Available system memory
Úrssr
   N)r   r   ÚProcessÚosÚgetpidÚmemory_infor   r	   r
   ÚNoSuchProcessÚAccessDenied)r   ÚprocessÚmem_infor   s       r   Úget_memory_usager   /   s´   € ð €Kç‚{ð	ä—n’n¤R§Y¢Y£[Ó1ˆGØ×*Ñ*Ó,ˆHØ!)§¡ˆK˜Ñô ×+Ò+Ó-ˆGØ'.×'8Ñ'8ˆK˜Ñ$ð �KÓØ!ˆ�EÑØ˜+Ó%Ø#'ˆ�KÑ àÐøô ×$Ñ$¤f×&9Ñ&9Ð:ó 	Ùð	ús   �A,B Â$B:Â9B:c                  ó¢   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
\S'   S
\S'   S\S'   S\S'   SS jr\R                  S 5       r	SS jr
Srg)ÚMemoryTrackeréT   z¿
A simple memory monitor that tracks RSS delta and timing.

Stores monitoring data in instance attributes for later access.
Each instance is typically used for monitoring a single operation.
ÚintÚpidÚstrÚnamezfloat | NoneÚ
start_timeÚend_timezDict[str, int | None] | NoneÚstart_memoryÚ
end_memoryÚdurationz
int | NoneÚ	rss_deltac                ó˜   • [         R                  " 5       U l        Xl        SU l        SU l        SU l        SU l        SU l        SU l	        g)z6Initialize a MemoryTracker with empty monitoring data.N)
r   r   r   r    r!   r"   r#   r$   r%   r&   )Úselfr    s     r   Ú__init__ÚMemoryTracker.__init__d   s?   € ä—9’9“;ˆŒØŒ	ØˆŒØˆŒØ ˆÔØˆŒØˆŒØˆ�ó    c              #  óÞ  #   • [         R                   " 5       U l        [        5       U l         U v •  [         R                   " 5       U l        [        5       U l        U R                  U R                  -
  U l        U R                  R                  SS5      nU R
                  R                  SS5      nU(       a  U(       a  X!-
  OSU l        g! [         R                   " 5       U l        [        5       U l        U R                  U R                  -
  U l        U R                  R                  SS5      nU R
                  R                  SS5      nU(       a  U(       a
  X!-
  U l        f SU l        f = f7f)a_  
Context manager to monitor memory usage during function execution.

Records start/end memory usage and timing, calculates RSS delta,
and stores all data in instance attributes.

Args:
    name (str): Name/identifier for the function or operation being
                monitored

Yields:
    self: The MemoryTracker instance for accessing stored data
r   r   N)	Útimer!   r   r#   r"   r$   r%   Úgetr&   )r(   Ú	start_rssÚend_rsss      r   ÚmonitorÚMemoryTracker.monitoro   s  é € ô  Ÿ)š)›+ˆŒÜ,Ó.ˆÔð	?ØŠJô !ŸIšI›KˆDŒMÜ.Ó0ˆDŒOØ ŸM™M¨D¯O©OÑ;ˆDŒMð ×)Ñ)×-Ñ-¨e°QÓ7ˆIØ—o‘o×)Ñ)¨%°Ó3ˆGæ!*®wð  'Ò2Ø<=ð �Nøô !ŸIšI›KˆDŒMÜ.Ó0ˆDŒOØ ŸM™M¨D¯O©OÑ;ˆDŒMð ×)Ñ)×-Ñ-¨e°QÓ7ˆIØ—o‘o×)Ñ)¨%°Ó3ˆGæ!*®wð  'Ñ2ˆD�NØ<=ð �Nüs   ‚*E-­C
 ±BE-Ã
B E*Å*E-c                óN  • U R                   b  U R                  c  [        S5      eU R                  R                  S5      nSS jn[        R
                  " S[        R                  " U R                  5      5      nU R                   R                  SS5      nU R                  R                  SS5      nSU R                   3SU R                   3S	U 3S
U R                  S S3SU" U5       3SU" U5       3SU" U R                  SS9 3SU" U5       3/nSR                  U5      $ )at  
Return a formatted summary of the memory monitoring data.

Formats the stored monitoring data into a human-readable string
containing name, PID, RSS delta, available memory, duration,
and start time.

Returns:
    str: Formatted summary string with monitoring results

Note:
    Should be called after monitor() context has completed
    to ensure all data is available.
z$Memory monitoring data not availabler
   c                ó¤   • U c  gU S:X  a  gSnU(       a
  U S:  a  SOSn[        U 5      n S H  nU S:  a  U U S	 S
U 3s  $ U S-  n M     U U S	 S3$ )z&Convert bytes to human readable formatzN/Ar   z0 BÚ Ú-Ú+)ÚBÚKBÚMBÚGBg      �@z.2fÚ z TB)Úabs)Ú	bytes_valÚ	show_signÚsignÚunits       r   Úformat_bytesÚ/MemoryTracker.get_summary.<locals>.format_bytes¤   s{   € àÑ ØØ˜A‹~ØàˆDÞØ'¨!›m‘s°�Ü˜I›ˆIã/�Ø˜vÓ%Ø"˜V I¨c ?°!°D°6Ð:Ò:Ø˜VÑ#’	ñ 0ð �V˜I c˜?¨#Ð.Ð.r+   z%H:%M:%Sr   r   zName: zPID: zStart: z
Duration: z.3fÚszStart RSS: z	End RSS: zRSS delta: T)r?   zAvail memory: z | )F)r#   r$   Ú
ValueErrorr.   r-   ÚstrftimeÚ	localtimer!   r    r   r%   r&   Újoin)r(   Úcurrent_availablerB   Ústart_tsr/   r0   Úbufs          r   Úget_summaryÚMemoryTracker.get_summary�   s%  € ð ×ÑÑ$¨¯©Ñ(?ÜÐCÓDÐDà ŸO™O×/Ñ/°Ó<Ðô	/ô$ —=’= ¬T¯^ª^¸D¿O¹OÓ-LÓMˆØ×%Ñ%×)Ñ)¨%°Ó3ˆ	Ø—/‘/×%Ñ% e¨QÓ/ˆð �T—Y‘Y�KÐ Ø�D—H‘H�:ÐØ�h�ZÐ Ø˜Ÿ™ sÐ+¨1Ð-Ø™, yÓ1Ð2Ð3Ø™ WÓ-Ð.Ð/Ø™, t§~¡~ÀÑFÐGÐHØ™\Ð*;Ó<Ð=Ð>ð	
ˆð �z‰z˜#‹Ðr+   )r%   r$   r"   r    r   r&   r#   r!   N)r    r   )Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r)   Ú
contextlibÚcontextmanagerr1   rL   Ú__static_attributes__© r+   r   r   r   T   s\   ‡ ñð 
ƒHØ
ƒIØÓØÓØ.Ó.Ø,Ó,ØÓØÓô	ð ×Ññ?ó ð?÷@4r+   r   )rN   zOptional[int])rN   zDict[str, Optional[int]])rS   Ú
__future__r   r   rU   r-   Útypingr   r   r   r   ÚImportErrorÚIS_SUPPORTEDr   r   r   rX   r+   r   Ú<module>r]      s]   ðñ	õ #Û 	Û Û ß !ðÛØ€Kð
 €ôô&"÷Jpò pøð ó Ø‚Kðús   ž; »AÁA