
    i                        % S SK r S SKJrJr  S SKJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJrJrJr  S SKJr  S SKJr  S	r\" S
\	S9r\" 0 5      r\\\4   \S'    " S S\S9r " S S\5      rS\\   4S jr\" 5       r\R>                  " S 5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r%g)    N)ABCMetaabstractmethod)datetime	timedeltatimezonetzinfo)Enum)MappingProxyType)AnyCallableMappingOptionalTypeTypeVar)StrEnum)TimeUnit)	ConverterNegativeModeDateTimeConverterDurationConverterEnumConverterScalarListConverterE)bound_FROZEN_DICTc                   B    \ rS rSrSr\S\S\\\4   S\4S j5       rSr	g)	r      z*
Convert json.decode() result to objects.
valuecontextreturnc                     [         eN)NotImplementedErrorselfr   r   s      =/app/mltbenv/lib/python3.13/site-packages/aioqbt/converter.py__call__Converter.__call__   s    !!     N)
__name__
__module____qualname____firstlineno____doc__r   r   r   r'   __static_attributes__r*   r)   r&   r   r      s9     "c "GCH,= "# " "r)   r   )	metaclassc                        \ rS rSrSrSrSrSrg)r   "   z1
Behavior when negative numbers are encountered.
errorconvertr*   N)r+   r,   r-   r.   r/   ERRORCONVERTr0   r*   r)   r&   r   r   "   s     EGr)   r   r    c                  z    [         R                  " [        R                  5      R	                  5       R
                  $ )zFind local timezone)r   nowr   utc
astimezoner   r*   r)   r&   _find_timezoner<   +   s&     <<%002999r)   c                   ~   ^  \ rS rSr% Sr\\\4   \S'   SS\	\\\4      4U 4S jjjr
S\S\\\4   S\4S	 jrS
rU =r$ )r   5   al  
Convert Unix timestamp to ``datetime`` object.

.. note::
    Some attributes are roughly the same except special cases.
    - :attr:`.TorrentInfo.added_on` and :attr:`.TorrentProperties.addition_date`.
        They are set when the corresponding torrents are added and supposedly available.
    - :attr:`.TorrentInfo.seen_complete` and :attr:`.TorrentProperties.last_seen`.
        :attr:`.TorrentInfo.completion_on` and :attr:`.TorrentProperties.completion_date`.
        These attributes are directly exposed in :class:`.TorrentInfo`
        while the counterparts return invalid values as ``-1`` in
        :class:`.TorrentProperties`.

.. note::
    Some input values are special or malformed.
    ``-1`` usually indicate the absence of value.
    In some versions, ``0xFFFF_FFFF`` may be returned because of
    the 32-bit unsigned value of ``-1``.
    However, :attr:`.TorrentProperties.creation_date` is directly
    returned regardless of its validity.
    When its value is undefined (usually represented as zero), the
    returned value usually offsets by time zone
    (e.g. ``-28800`` for UTC+8, ``28800`` for UTC-8).
_tabletablec                 @   > [         TU ]  5         Uc  [        nXl        g r"   )super__init__r   r?   )r%   r@   	__class__s     r&   rC   DateTimeConverter.__init__R   s    = Er)   r   r   r    c                 *   XR                   ;   a  U R                   U   $ UR                  S5      nUS:  aI  UcF  [        R                  R	                  S5      (       a"  [
        R                  " S5      nU[        US9-   $ [
        R                  " X5      $ )Nr   r   win32seconds)r?   getsysplatform
startswithr   fromtimestampr   )r%   r   r   tzepochs        r&   r'   DateTimeConverter.__call__Z   s{    KK;;u%%[[$19(?(?(H(H **1-E9U333))%44r)   )r?   r"   )r+   r,   r-   r.   r/   r   intr   __annotations__r   rC   r'   r0   __classcell__rD   s   @r&   r   r   5   s`    4 CHhwsCx'89  5c 5GCH,= 5# 5 5r)   r   c                   8    \ rS rSrSrS\S\\\4   S\4S jrSr	g)	RFC2822DateTimeConverteri   z<
Convert rfc2822-formatted date time to :class:`datetime`.

r   r   r    c                     SSK Jn  U" U5      $ )Nr   )parsedate_to_datetime)email.utilsrZ   )r%   r   r   rZ   s       r&   r'   !RFC2822DateTimeConverter.__call__o   s    5$U++r)   r*   N)
r+   r,   r-   r.   r/   r   r   r   r'   r0   r*   r)   r&   rW   rW   i   s*    
,c ,GCH,= ,( ,r)   rW   c                   l   ^  \ rS rSrSrSS\S\\\\	4      4U 4S jjjr
S\	S\\	\	4   S\	4S	 jrS
rU =r$ )r   v   z
Convert number to timedelta.
unitr@   c                 L   > [         TU ]  5         Uc  [        nXl        X l        g)zA
:param unit: input unit
:param table: optional special mappings
N)rB   rC   r   _unitr?   )r%   r_   r@   rD   s      r&   rC   DurationConverter.__init__{   s$    
 	= E
r)   r   r   r    c                     XR                   ;   a  U R                   U   $ [        R                  R                  XR                  5      n[        US9nU$ )NrH   )r?   r   SECONDSfrom_durationra   r   )r%   r   r   deltas       r&   r'   DurationConverter.__call__   sD    KK;;u%%  ..ujjA%(r)   )r?   ra   r"   )r+   r,   r-   r.   r/   r   r   r   rR   r   rC   r'   r0   rT   rU   s   @r&   r   r   v   sV    X hwsCx7H.I  c GCH,= #  r)   r   c                   n   ^  \ rS rSrSrSS\S\\\/\4      4U 4S jjjr	S\S\
\\4   S\4S	 jrS
rU =r$ )r      z
Split string into list.

An input string is split with a separator. Empty items are discarded.
An optional function ``cast`` may be provided to transform items.
sepcastc                 ^   > [         TU ]  5         U(       d  [        S5      eXl        X l        g )Nzsep must not be empty)rB   rC   
ValueError_sep_cast)r%   rj   rk   rD   s      r&   rC   ScalarListConverter.__init__   s'    455	
r)   r   r   r    c                     UR                  U R                  5      nU R                  nUc  U Vs/ s H  oU(       d  M  UPM     sn$ U Vs/ s H  oU(       d  M  U" U5      PM     sn$ s  snf s  snf r"   )splitrn   ro   )r%   r   r   itemsrk   ss         r&   r'   ScalarListConverter.__call__   s^    DII&zz<$*u!Au**%*0UaGDGU00 +0s   
A'A'

A,A,)ro   rn   r"   )r+   r,   r-   r.   r/   strr   r   r   rC   r   r'   r0   rT   rU   s   @r&   r   r      sX    C x#0D'E  1c 1GCH,= 1# 1 1r)   r   c                   Z   ^  \ rS rSrSrS\\   4U 4S jjrS\S\	\\4   S\4S jr
S	rU =r$ )
r      z%
Convert values to members of enums.
	enum_typec                 v   > [         TU ]  5         [        U[        5      (       d  [	        SU< 35      eXl        g )Nzexpects a subclass of Enum: )rB   rC   
issubclassr	   	TypeError
_enum_type)r%   ry   rD   s     r&   rC   EnumConverter.__init__   s3    )T**:9-HII#r)   r   r   r    c                 z     U R                  U5      $ ! [         a    [        U R                    SU< 35      S ef = f)Nz has no such value: )r}   rm   r$   s      r&   r'   EnumConverter.__call__   sG    	Z??5)) 	Z00DUINOUYY	Zs    ':)r}   )r+   r,   r-   r.   r/   r   r   rC   r   r   r'   r0   rT   rU   s   @r&   r   r      sE    $$q' $Zc ZGCH,= Z# Z Zr)   r   )&rK   abcr   r   r   r   r   r   enumr	   typesr
   typingr   r   r   r   r   r   aioqbt._compatr   aioqbt.chronor   __all__r   r   rS   r   r   r<   	_TIMEZONErN   _EPOCHr   rW   r   r   r   r*   r)   r&   <module>r      s    
 ' : :  " B B " " Ct"22"6gc3h 6"' "7 :( : 					"15	 15h
,y 
,	 61) 16ZI Zr)   