+
    [mÀh
  ã                   ó>   € ^ RI Ht ^ RIHt ^ RIHt  ! R R4      tR# )é    )Ú	lru_cache)Úaccepts_kwargs)ÚInvalidSubscriberMethodErrorc                   ój   a a€ ] tR t^t oRt. ROtV 3R lt]]R 4       4       t	R t
R tR tRtVtV ;t# )	ÚBaseSubscriberz«The base subscriber class

It is recommended that all subscriber implementations subclass and then
override the subscription methods (i.e. on_{subscribe_type}() methods).
c                óB   <€ V P                  4        \        SV `	  V 4      # )N)Ú_validate_subscriber_methodsÚsuperÚ__new__)ÚclsÚargsÚkwargsÚ	__class__s   &*,€Ú8/usr/lib/python3/dist-packages/s3transfer/subscribers.pyr   ÚBaseSubscriber.__new__   s   ø€ Ø×(Ñ(Ô*Ü‰w‰˜sÓ#Ð#ó    c                óÒ   € V P                    FV  p\        V R V,           4      p\        V4      '       g   \        RV R24      h\	        V4      '       d   KI  \        RV R24      h	  R# )Úon_zSubscriber method z must be callable.z) must accept keyword arguments (**kwargs)N)ÚVALID_SUBSCRIBER_TYPESÚgetattrÚcallabler   r   )r   Úsubscriber_typeÚsubscriber_methods   &  r   r	   Ú+BaseSubscriber._validate_subscriber_methods    s|   € ð  #×9Ô9ˆOÜ '¨¨U°_Õ-DÓ EÐÜÐ-×.Ò.Ü2Ø(Ð):Ð(;Ð;MÐNóð ô "Ð"3×4Ô4Ü2Ø(Ð):Ð(;ð <+ð +óð ó  :r   c                ó   € R# )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_queuedÚBaseSubscriber.on_queued0   ó   € ñ 	r   c                ó   € R# )a  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_progressÚBaseSubscriber.on_progress?   s   € ñ  	r   c                ó   € R# )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_doneÚBaseSubscriber.on_doneQ   r"   r   r   )ÚqueuedÚprogressÚdone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Úclassmethodr   r	   r    r%   r(   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r   r      sG   ù‡ € ñò <Ðõ$ð Øñó ó ðòò÷$ò r   r   N)Ú	functoolsr   Ús3transfer.compatr   Ús3transfer.exceptionsr   r   r   r   r   Ú<module>r:      s   ðõ  å ,Ý >÷Kó Kr   