File: //opt/alt/python311/lib/python3.11/site-packages/s3transfer/__pycache__/subscribers.cpython-311.pyc
�
/�;f# � �D � d dl mZ d dlmZ d dlmZ G d� d� � ZdS )� )� lru_cache)�accepts_kwargs)�InvalidSubscriberMethodErrorc �r � � e Zd ZdZg d�Z� fd�Ze e� � d� � � � � Zd� Z d� Z
d� Z� xZS )�BaseSubscriberz�The base subscriber class
It is recommended that all subscriber implementations subclass and then
override the subscription methods (i.e. on_{subsribe_type}() methods).
)�queued�progress�donec �n �� | � � � t � � � | � � S )N)�_validate_subscriber_methods�super�__new__)�cls�args�kwargs� __class__s ��I/opt/alt/python311/lib/python3.11/site-packages/s3transfer/subscribers.pyr zBaseSubscriber.__new__ s+ �� ��(�(�*�*�*��w�w���s�#�#�#� c �� � | j D ]W}t | d|z � � }t |� � st d|z � � �t |� � st d|z � � ��Xd S )N�on_z&Subscriber method %s must be callable.z=Subscriber method %s must accept keyword arguments (**kwargs))�VALID_SUBSCRIBER_TYPES�getattr�callabler r )r �subscriber_type�subscriber_methods r r z+BaseSubscriber._validate_subscriber_methods s� � � #�9� � �O� '��U�_�-D� E� E���-�.�.�
�2�<�'�(�� � �
"�"3�4�4�
�2�+�->�?�� � �
� � r c � � dS )a� Callback to be invoked when transfer request gets queued
This callback can be useful for:
* Keeping track of how many transfers have been requested
* Providing the expected transfer size through
future.meta.provide_transfer_size() so a HeadObject would not
need to be made for copies and downloads.
:type future: s3transfer.futures.TransferFuture
:param future: The TransferFuture representing the requested transfer.
N� ��self�futurer s r � on_queuedzBaseSubscriber.on_queued1 � � �
�r c � � dS )aj Callback to be invoked when progress is made on transfer
This callback can be useful for:
* Recording and displaying progress
:type future: s3transfer.futures.TransferFuture
:param future: The TransferFuture representing the requested transfer.
:type bytes_transferred: int
:param bytes_transferred: The number of bytes transferred for that
invocation of the callback. Note that a negative amount can be
provided, which usually indicates that an in-progress request
needed to be retried and thus progress was rewound.
Nr )r r �bytes_transferredr s r �on_progresszBaseSubscriber.on_progress@ s � �
�r c � � dS )a� Callback to be invoked once a transfer is done
This callback can be useful for:
* Recording and displaying whether the transfer succeeded or
failed using future.result()
* Running some task after the transfer completed like changing
the last modified time of a downloaded file.
:type future: s3transfer.futures.TransferFuture
:param future: The TransferFuture representing the requested transfer.
Nr r s r �on_donezBaseSubscriber.on_doneR r"