
    q"h^                     X    S SK r S SKrS SKJr   " S S\" SS5      5      r " S S5      rg)    N)
namedtuplec                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )ExtType   z'ExtType represents ext type in msgpack.c                    > [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      eSUs=::  a  S::  d  O  [	        S5      e[
        TU ]  XU5      $ )Nzcode must be intzdata must be bytesr      zcode must be 0~127)
isinstanceint	TypeErrorbytes
ValueErrorsuper__new__)clscodedata	__class__s      I/var/www/html/env/lib/python3.13/site-packages/pip/_vendor/msgpack/ext.pyr   ExtType.__new__	   s_    $$$.//$&&011DC122ws$//     )__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classcell__)r   s   @r   r   r      s    10 0r   r   z	code datac                       \ rS rSrSrSS/rSS jrS rS rS r	S	 r
\S
 5       rS r\S 5       rS r\S 5       rS rS r\S 5       rSrg)	Timestamp   aB  Timestamp represents the Timestamp extension type in msgpack.

When built with Cython, msgpack uses C methods to pack and unpack `Timestamp`.
When using pure-Python msgpack, :func:`to_bytes` and :func:`from_bytes` are used to pack and
unpack `Timestamp`.

This class is immutable: Do not override seconds and nanoseconds.
secondsnanosecondsc                     [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      eSUs=::  a  S:  d  O  [        S5      eXl        X l        g)a  Initialize a Timestamp object.

:param int seconds:
    Number of seconds since the UNIX epoch (00:00:00 UTC Jan 1 1970, minus leap seconds).
    May be negative.

:param int nanoseconds:
    Number of nanoseconds to add to `seconds` to get fractional time.
    Maximum is 999_999_999.  Default is 0.

Note: Negative times (before the UNIX epoch) are represented as neg. seconds + pos. ns.
zseconds must be an integerznanoseconds must be an integerr    ʚ;z?nanoseconds must be a non-negative integer less than 999999999.N)r	   r
   r   r   r"   r#   )selfr"   r#   s      r   __init__Timestamp.__init__   sZ     '3''899+s++<==[(5(^__&r   c                 <    SU R                    SU R                   S3$ )z#String representation of Timestamp.zTimestamp(seconds=z, nanoseconds=)r"   r#   r&   s    r   __repr__Timestamp.__repr__5   s#    #DLL>@P@P?QQRSSr   c                     [        U5      U R                  L a9  U R                  UR                  :H  =(       a    U R                  UR                  :H  $ g)z0Check for equality with another Timestamp objectF)typer   r"   r#   r&   others     r   __eq__Timestamp.__eq__9   s>    ;$..(<<5==0ZT5E5EIZIZ5ZZr   c                 .    U R                  U5      (       + $ )z(not-equals method (see :func:`__eq__()`))r3   r1   s     r   __ne__Timestamp.__ne__?   s    ;;u%%%r   c                 D    [        U R                  U R                  45      $ )N)hashr"   r#   r,   s    r   __hash__Timestamp.__hash__C   s    T\\4#3#3455r   c                 @   [        U 5      S:X  a  [        R                  " SU 5      S   nSnOh[        U 5      S:X  a%  [        R                  " SU 5      S   nUS-  nUS-	  nO4[        U 5      S:X  a  [        R                  " S	U 5      u  p!O[        S
5      e[	        X5      $ )zUnpack bytes into a `Timestamp` object.

Used for pure-Python msgpack unpacking.

:param b: Payload from msgpack ext message with code -1
:type b: bytes

:returns: Timestamp object unpacked from msgpack ext payload
:rtype: Timestamp
   !Lr      !Ql    "      !IqzFTimestamp type can only be created from 32, 64, or 96-bit byte objects)lenstructunpackr   r    )br"   r#   data64s       r   
from_bytesTimestamp.from_bytesF   s     q6Q;mmD!,Q/GKVq[]]4+A.F11G B,KVr\#)==#: KX  ..r   c                 4   U R                   S-	  S:X  aX  U R                  S-  U R                   -  nUS-  S:X  a  [        R                  " SU5      nU$ [        R                  " SU5      n U$ [        R                  " SU R                  U R                   5      nU$ )zPack this Timestamp object into bytes.

Used for pure-Python msgpack packing.

:returns data: Payload for EXT message with code -1 (timestamp type)
:rtype: bytes
rA   r   l        r>   r@   rC   )r"   r#   rE   pack)r&   rH   r   s      r   to_bytesTimestamp.to_bytesa   s     LLB1$%%+dll:F**a/{{40 	 {{40  ;;ud&6&6EDr   c                 V    [        U S-  5      n[        U S-  S-  5      n[        X5      $ )zCreate a Timestamp from posix timestamp in seconds.

:param unix_float: Posix timestamp in seconds.
:type unix_float: int or float
   r%   )r
   r    )unix_secr"   r#   s      r   	from_unixTimestamp.from_unixv   s0     h!m$8a<501..r   c                 :    U R                   U R                  S-  -   $ )zVGet the timestamp as a floating-point value.

:returns: posix timestamp
:rtype: float
g    eAr+   r,   s    r   to_unixTimestamp.to_unix   s     ||d..444r   c                 &    [        [        U S5      6 $ )zCreate a Timestamp from posix timestamp in nanoseconds.

:param int unix_ns: Posix timestamp in nanoseconds.
:rtype: Timestamp
r%   )r    divmod)unix_nss    r   from_unix_nanoTimestamp.from_unix_nano   s     &%011r   c                 :    U R                   S-  U R                  -   $ )zfGet the timestamp as a unixtime in nanoseconds.

:returns: posix timestamp in nanoseconds
:rtype: int
r%   r+   r,   s    r   to_unix_nanoTimestamp.to_unix_nano   s     ||e#d&6&666r   c                     [         R                  R                  n[         R                   R                  SU5      [         R                  " U R
                  U R                  S-  S9-   $ )zBGet the timestamp as a UTC datetime.

:rtype: `datetime.datetime`
r     )r"   microseconds)datetimetimezoneutcfromtimestamp	timedeltar"   r#   )r&   rd   s     r   to_datetimeTimestamp.to_datetime   sV    
 ##  ..q#69K9KLLt/?/?4/G:
 
 	
r   c                 ^    [        [        U R                  5       5      U R                  S-  S9$ )zACreate a Timestamp from datetime with tzinfo.

:rtype: Timestamp
r`   r+   )r    r
   	timestampmicrosecond)dts    r   from_datetimeTimestamp.from_datetime   s&     R\\^!4"..SWBWXXr   )r#   r"   N)r   )r   r   r   r   r   	__slots__r'   r-   r3   r6   r:   staticmethodrI   rM   rR   rU   rZ   r]   rg   rm   r   r   r   r   r    r       s     M*I',T&6 / /4* / /5 2 27
 Y Yr   r    )rb   rE   collectionsr   r   r    r   r   r   <module>rr      s/      "
0jK0 
0WY WYr   