
    i                     t    S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  SrS\S\S	S
4S jr " S S\5      rg
)    )IterableTuple)	ParamDict)TransferInfo)APIGroup)
APIVersion)TransferAPInamenumreturnNc                 4    US-  S:w  a  [        U < S35      eg)znum must be a multiple of 1024i   r   z must be a multiple of 1024N)
ValueError)r
   r   s     @/app/mltbenv/lib/python3.13/site-packages/aioqbt/api/transfer.py_check_1024r      s%    
TzQD8#>?@@     c                       \ rS rSrSrS\4S jrS\4S jrSS jr	S\SS4S	 jr
S\SS4S
 jrS\4S jrS\SS4S jrS\4S jrS\SS4S jrS\\\\4      SS4S jrSrg)r	      z!
API methods under ``transfer``.
r   c                 L   #    U R                  [        SS5      I S h  vN $  N7f)NGETztransfer/info)_request_mapped_objectr   selfs    r   infoTransferAPI.info   s+     00
 
 	
 
s   $"$c                 X   #    U R                  SS5      I S h  vN n[        U5      $  N7f)Nr   ztransfer/speedLimitsMode_request_textintr   ress     r   speed_limits_modeTransferAPI.speed_limits_mode   s0     &&&
 
 3x	
   *(*Nc                 D   #    U R                  SS5      I S h  vN   g  N7f)NPOSTztransfer/toggleSpeedLimitsMode)r   r   s    r   toggle_speed_limits_mode$TransferAPI.toggle_speed_limits_mode%   s#       ,
 	
 	
s     modec                   #    [         R                  " U R                  5       R                  S5      S:  a  U R	                  U5      I Sh  vN   g[        5       nUR                  SU5        U R                  SSUS9I Sh  vN   g N; N7f)zi
Change ``speed_limits_mode``.

If API version is less than v2.8.14, a polyfill is used to set the mode.
)         r   Nr(   r%   ztransfer/setSpeedLimitsModedata)r   compare_clientapi_version_set_speed_limits_mode_polyfillr   required_intr   )r   r(   r.   s      r   set_speed_limits_mode!TransferAPI.set_speed_limits_mode+   s      dlln88*EI66t<<< {&$'  ) ! 
 	
 	
 =	
s$   AB

B5B
 BB
B
c                    #    [        U5      nU R                  5       I Sh  vN nX2:w  a  U R                  5       I Sh  vN   gg N# N7f)zQ
This is a polyfill that ``speed_limits_mode`` is queried and
toggled if needed.
N)boolr!   r&   )r   r(   new_modeold_modes       r   r2   +TransferAPI._set_speed_limits_mode_polyfill@   sH      ://11//111   2 2s   A	AA	AA	A	c                 X   #    U R                  SS5      I Sh  vN n[        U5      $  N7f)z Get download limit (byte/second)r   ztransfer/downloadLimitNr   r   s     r   download_limitTransferAPI.download_limitL   s0     &&$
 
 3x	
r#   limitc                    #    [        SU5        [        5       nUR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z Set download limit (byte/second)r>   r%   ztransfer/setDownloadLimitr-   Nr   r   r3   r   r   r>   r.   s      r   set_download_limitTransferAPI.set_download_limitT   sL     GU#{'5)  ' ! 
 	
 	
   =AA Ac                 X   #    U R                  SS5      I Sh  vN n[        U5      $  N7f)zGet upload limit (byte/second)r   ztransfer/uploadLimitNr   r   s     r   upload_limitTransferAPI.upload_limita   s0     &&"
 
 3x	
r#   c                    #    [        SU5        [        5       nUR                  SU5        U R                  SSUS9I Sh  vN   g N7f)zSet upload limit (byte/second)r>   r%   ztransfer/setUploadLimitr-   Nr@   rA   s      r   set_upload_limitTransferAPI.set_upload_limiti   sL     GU#{'5)  % ! 
 	
 	
rD   peersc                    #    / nU H  u  p4UR                  U< SUS 35        M     [        5       nUR                  SUS5        U R                  SSUS9I Sh  vN   g N7f)	zd
Ban peers.

Address may be IPv4 or IPv6 but not domain name.

:param peers: ``(addr, port)`` pairs
:drK   |r%   ztransfer/banPeersr-   N)appendr   required_listr   )r   rK   pairshostportr.   s         r   	ban_peersTransferAPI.ban_peersw   sr      JDLLD81T!H-.   {7E3/   ! 
 	
 	
s   AA!AA! )r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r!   r&   r4   r2   r<   rB   rF   rI   r   r   strrU   __static_attributes__rW   r   r   r	   r	      s    
L 
 

 
 
*
2# 
2$ 
2c 
c 
d 
C 
C 
D 

c3h(
 

r   r	   )typingr   r   aioqbt._paramdictr   aioqbt.api.typesr   aioqbt.clientr   aioqbt.versionr   __all__r]   r   r   r	   rW   r   r   <module>re      sE    " ' ) " %
Ac A A A}
( }
r   