
    жvg                     l    d dl mZ d dlZd dlZ G d d edd                    Z G d d          ZdS )    )
namedtupleNc                   "     e Zd ZdZ fdZ xZS )ExtTypez'ExtType represents ext type in msgpack.c                    t          |t                    st          d          t          |t                    st          d          d|cxk    rdk    sn t	          d          t                                          | ||          S )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      T/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/pip/_vendor/msgpack/ext.pyr   zExtType.__new__	   s    $$$ 	0.///$&& 	20111DC1222wwsD$///    )__name__
__module____qualname____doc__r   __classcell__)r   s   @r   r   r      s>        110 0 0 0 0 0 0 0 0r   r   z	code datac                       e Zd ZdZddgZddZd Zd Zd Zd	 Z	e
d
             Zd Ze
d             Zd Ze
d             Zd Zd Ze
d             ZdS )	TimestampaV  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nanosecondsr   c                     t          |t                    st          d          t          |t                    st          d          d|cxk    rdk     sn t          d          || _        || _        dS )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__zTimestamp.__init__   s     '3'' 	:8999+s++ 	><===[((((5((((^___&r   c                 (    d| j          d| j         dS )z#String representation of Timestamp.zTimestamp(seconds=z, nanoseconds=)r   r   r    s    r   __repr__zTimestamp.__repr__5   s     SDLSS@PSSSSr   c                 r    t          |          | j        u r | j        |j        k    o| j        |j        k    S dS )z0Check for equality with another Timestamp objectF)typer   r   r   r    others     r   __eq__zTimestamp.__eq__9   s9    ;;$.((<5=0ZT5EIZ5ZZur   c                 .    |                      |           S )z(not-equals method (see :func:`__eq__()`))r+   r)   s     r   __ne__zTimestamp.__ne__?   s    ;;u%%%%r   c                 8    t          | j        | j        f          S )N)hashr   r   r%   s    r   __hash__zTimestamp.__hash__C   s    T\4#34555r   c                 l   t          |           dk    rt          j        d|           d         }d}ntt          |           dk    r&t          j        d|           d         }|dz  }|dz	  }n;t          |           dk    rt          j        d	|           \  }}nt          d
          t	          ||          S )a  Unpack 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_byteszTimestamp.from_bytesF   s     q66Q;;mD!,,Q/GKKVVq[[]4++A.F11G B,KKVVr\\#)=#:#: KX   +...r   c                     | j         dz	  dk    rG| j        dz  | j         z  }|dz  dk    rt          j        d|          }n6t          j        d|          }n t          j        d| j        | j                   }|S )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
        r6   r   l        r3   r5   r8   )r   r   r:   pack)r    r=   r   s      r   to_byteszTimestamp.to_bytesa   s     LB1$$%+dl:F**a//{400 {400 ;ud&6EEDr   c                 p    t          | dz            }t          | dz  dz            }t          ||          S )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_unixzTimestamp.from_unixv   s;     h!m$$8a<5011+...r   c                 &    | j         | j        dz  z   S )znGet the timestamp as a floating-point value.

        :returns: posix timestamp
        :rtype: float
        g    eAr$   r%   s    r   to_unixzTimestamp.to_unix   s     |d.444r   c                 0    t          t          | d           S )zCreate 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_nanozTimestamp.from_unix_nano   s     &%0011r   c                 &    | j         dz  | j        z   S )z~Get the timestamp as a unixtime in nanoseconds.

        :returns: posix timestamp in nanoseconds
        :rtype: int
        r   r$   r%   s    r   to_unix_nanozTimestamp.to_unix_nano   s     |e#d&666r   c                     t           j        j        }t           j                             d|          t          j        |                                           z   S )zRGet the timestamp as a UTC datetime.

        :rtype: `datetime.datetime`
        r   )r   )datetimetimezoneutcfromtimestamp	timedeltarG   )r    rQ   s     r   to_datetimezTimestamp.to_datetime   sH    
 # ..q#669KTXT`T`TbTb9c9c9cccr   c                 Z    t                               |                                           S )zQCreate a Timestamp from datetime with tzinfo.

        :rtype: Timestamp
        )r   rE   	timestamp)dts    r   from_datetimezTimestamp.from_datetime   s      ""2<<>>222r   N)r   )r   r   r   r   	__slots__r!   r&   r+   r-   r0   staticmethodr>   rA   rE   rG   rK   rM   rT   rX    r   r   r   r      s(         M*I' ' ' ',T T T  & & &6 6 6 / / \/4  * / / \/5 5 5 2 2 \27 7 7d d d 3 3 \3 3 3r   r   )collectionsr   rO   r:   r   r   r[   r   r   <module>r]      s    " " " " " "  
0 
0 
0 
0 
0jjK00 
0 
0 
0U3 U3 U3 U3 U3 U3 U3 U3 U3 U3r   