+
    €Ú,i
  c                   s>   € ^ RI Ht ^ RIHt ^ RIHt  ! R R4      tR# )i    )Ú	lru_cache)Úaccepts_kwargs)ÚInvalidSubscriberMethodErrorc                   sj   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                sB   <€ V P                  4        \        SV `	  V 4      # )N)Ú_validate_subscriber_methodsZsuperÚ__new__)ÚclsZargsÚkwargsÚ	__class__s   &*,€Ú;/usr/lib/python3.14/site-packages/s3transfer/subscribers.pyr   ZBaseSubscriber.__new__   s   ø€ Ø×(Ñ(Ô*Ü‰w‰˜sÓ#Ð#ó    c                sÒ   € 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# )Zon_zSubscriber method z must be callable.z) must accept keyword arguments (**kwargs)N)ÚVALID_SUBSCRIBER_TYPESZgetattrZcallabler   r   )r   Zsubscriber_typeZsubscriber_methods   &  r	   r   Z+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   ó   &&,r	   Ú	on_queuedZ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   Zbytes_transferredr   s   &&&,r	   Úon_progressZ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   r   r	   Úon_doneZBaseSubscriber.on_doneQ   r   r
   r   )ZqueuedZprogressZdone)Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__r   r   Zclassmethodr    r   r   r   r   Z__static_attributes__Z__classdictcell__Z__classcell__)r   Z__classdict__s   @@r	   r   r      sG   ù‡ € ñò <Ðõ$ð Øñó ó ðòò÷$ò r
   r   N)Z	functoolsr    Zs3transfer.compatr   Zs3transfer.exceptionsr   r   r   r
   r	   Ú<module>r      s   ðõ  å ,Ý >÷Kó Kr
   