
    mBNj
                         d dl Z d dlmZmZmZmZmZ d dlmZ ddl	m
Z
mZ ddlmZ g dZ G d d	e
      Z G d
 de
      Z G d de
      Zy)    N)byrefc_long
c_longlongCDLL	Structure)uname   )_Clock
_ClockTime)nano_divmod)	LibCClockPEP564Clock	SafeClockc                   6    e Zd ZdZed        Zed        Zd Zy)r   z
    Clock implementation that should work for any variant of Python.

    This clock is guaranteed microsecond precision.
    c                      y)N    clss    r/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/neo4j/time/_clock_implementations.py	precisionzSafeClock.precision0           c                      y)NTr   r   s    r   	availablezSafeClock.available4   s    r   c                 z    t        t        t        j                         dz        d      \  }}t        ||dz        S )Ni@B i  )r   inttimer   )selfsecondsnanosecondss      r   utc_timezSafeClock.utc_time8   s5    *3tyy{W/D+EwO';#566r   N__name__
__module____qualname____doc__classmethodr   r   r"   r   r   r   r   r   )   s4        7r   r   c                   6    e Zd ZdZed        Zed        Zd Zy)r   z
    Clock implementation based on the PEP564 additions to Python 3.7.

    This clock is guaranteed nanosecond precision.
    c                      yN	   r   r   s    r   r   zPEP564Clock.precisionD   r   r   c                 "    t        t        d      S )Ntime_ns)hasattrr   r   s    r   r   zPEP564Clock.availableH   s    tY''r   c                 `    t        j                         }t        |d      \  }}t        ||      S )Ni ʚ;)r   r.   divmodr   )r   tr    r!   s       r   r"   zPEP564Clock.utc_timeL   s+    LLN%a4';//r   Nr#   r   r   r   r   r   =   s4       ( (0r   r   c                   n    e Zd ZdZ e       d   dk(  rdndZ G d de      Zed        Z	ed	        Z
d
 Zy)r   z
    Clock implementation backed by libc.

    Only works on platforms that provide libc.
    This clock is guaranteed nanosecond precision.
    r   Darwinz
libc.dylibz	libc.so.6c                       e Zd ZdefdeffZy)LibCClock._TimeSpecr    r!   N)r$   r%   r&   r   r   _fields_r   r   r   	_TimeSpecr6   \   s    
#F#
r   r8   c                      yr+   r   r   s    r   r   zLibCClock.precisionb   r   r   c                 N    	 t        | j                        }y# t        $ r Y yw xY w)NTF)r   _LibCClock__libcOSError)r   _s     r   r   zLibCClock.availablef   s.    	SZZ A   		s    	$$c                     t        | j                        }| j                         }|j                  dt	        |            }|dk(  r t        |j                  |j                        S t        d|       )Nr   z!clock_gettime failed with status )	r   r;   r8   clock_gettimer   r   r    r!   RuntimeError)r   libctsstatuss       r   r"   zLibCClock.utc_timeo   sa    DKK ^^##AuRy1Q;bjj"..99!B6(KLLr   N)r$   r%   r&   r'   r   r;   r   r8   r(   r   r   r"   r   r   r   r   r   R   sW     #WQZ83\F
I 
    Mr   r   )r   ctypesr   r   r   r   r   platformr    r
   r   _arithmeticr   __all__r   r   r   r   r   r   <module>rI      sP   "    %7 7(0& 0*$M $Mr   