U
    dd                     @   st   d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ er`ddlmZ G dd	 d	eZd
S )zFThis module contains an object that represents a Telegram WebhookInfo.    )TYPE_CHECKINGOptionalSequenceTuple)TelegramObject)parse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp)JSONDict)Botc                       sj   e Zd ZdZdZdddeeeeeeee eee	d
 fddZ
eee	 ded  d	 fd
dZ  ZS )WebhookInfoa5  This object represents a Telegram WebhookInfo.

    Contains information about the current status of a webhook.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`url`, :attr:`has_custom_certificate`,
    :attr:`pending_update_count`, :attr:`ip_address`, :attr:`last_error_date`,
    :attr:`last_error_message`, :attr:`max_connections`, :attr:`allowed_updates` and
    :attr:`last_synchronization_error_date` are equal.

    .. versionchanged:: 20.0
       :attr:`last_synchronization_error_date` is considered as well when comparing objects of
       this type in terms of equality.

    Args:
        url (:obj:`str`): Webhook URL, may be empty if webhook is not set up.
        has_custom_certificate (:obj:`bool`): :obj:`True`, if a custom certificate was provided for
            webhook certificate checks.
        pending_update_count (:obj:`int`): Number of updates awaiting delivery.
        ip_address (:obj:`str`, optional): Currently used webhook IP address.
        last_error_date (:class:`datetime.datetime`): Optional. Datetime for the most recent
            error that happened when trying to deliver an update via webhook.

            .. versionchanged:: 20.3
                |datetime_localization|
        last_error_message (:obj:`str`, optional): Error message in human-readable format for the
            most recent error that happened when trying to deliver an update via webhook.
        max_connections (:obj:`int`, optional): Maximum allowed number of simultaneous HTTPS
            connections to the webhook for update delivery.
        allowed_updates (Sequence[:obj:`str`], optional): A list of update types the bot is
            subscribed to. Defaults to all update types, except
            :attr:`telegram.Update.chat_member`.

            .. versionchanged:: 20.0
                |sequenceclassargs|

        last_synchronization_error_date (:class:`datetime.datetime`, optional): Datetime of the
            most recent error that happened when trying to synchronize available updates with
            Telegram datacenters.

            .. versionadded:: 20.0

            .. versionchanged:: 20.3
                |datetime_localization|
    Attributes:
        url (:obj:`str`): Webhook URL, may be empty if webhook is not set up.
        has_custom_certificate (:obj:`bool`): :obj:`True`, if a custom certificate was provided for
            webhook certificate checks.
        pending_update_count (:obj:`int`): Number of updates awaiting delivery.
        ip_address (:obj:`str`): Optional. Currently used webhook IP address.
        last_error_date (:class:`datetime.datetime`): Optional. Datetime for the most recent
            error that happened when trying to deliver an update via webhook.

            .. versionchanged:: 20.3
                |datetime_localization|
        last_error_message (:obj:`str`): Optional. Error message in human-readable format for the
            most recent error that happened when trying to deliver an update via webhook.
        max_connections (:obj:`int`): Optional. Maximum allowed number of simultaneous HTTPS
            connections to the webhook for update delivery.
        allowed_updates (Tuple[:obj:`str`]): Optional. A list of update types the bot is
            subscribed to. Defaults to all update types, except
            :attr:`telegram.Update.chat_member`.

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|
        last_synchronization_error_date (:class:`datetime.datetime`, optional): Datetime of the
            most recent error that happened when trying to synchronize available updates with
            Telegram datacenters.

            .. versionadded:: 20.0

            .. versionchanged:: 20.3
                |datetime_localization|
    )	allowed_updatesurlmax_connectionslast_error_date
ip_addresslast_error_messagepending_update_counthas_custom_certificatelast_synchronization_error_dateN
api_kwargs)
r   r   r   r   r   r   r   r   r   r   c
             	      s~   t  j|
d || _|| _|| _|| _|| _|| _|| _t	|| _
|	| _| j| j| j| j| j| j| j| j
| jf	| _|   d S )Nr   )super__init__r   r   r   r   r   r   r   r   r   r   Z	_id_attrsZ_freeze)selfr   r   r   r   r   r   r   r   r   r   	__class__ 9/tmp/pip-unpacked-wheel-e3anp165/telegram/_webhookinfo.pyr   y   s*    
zWebhookInfo.__init__r   )databotreturnc                    sV   |  |}|sdS t|}t|d|d|d< t|d|d|d< t j||dS )z,See :meth:`telegram.TelegramObject.de_json`.Nr   )tzinfor   )r   r    )Z_parse_datar   r	   getr   de_json)clsr   r    Z
loc_tzinfor   r   r   r$      s    
 
zWebhookInfo.de_json)NNNNNN)__name__
__module____qualname____doc__	__slots__strboolintr   r
   r   classmethodr   r$   __classcell__r   r   r   r   r      s0   M      *r   N)r)   typingr   r   r   r   Ztelegram._telegramobjectr   Ztelegram._utils.argumentparsingr   Ztelegram._utils.datetimer   r	   Ztelegram._utils.typesr
   Ztelegramr   r   r   r   r   r   <module>   s   