
    mBNjDH                     l	   U d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZi i  eYdej       eYdek       eYde       eYd	eP       eYd
e)       eYdeK      i dedededededededededededejdededededei dededed ed!ed"ed#ed$ed%ed&ed'ed(ed)ed*ed+ed,ed-ei d.ed/e+d0e,d1eZd2ed3ejd4ejd5d6 d7e4d8e4d9ed:eFd;e5d<d= d>ed?ed@ei dAedBedCedDe6dEedFedGedHedIeGdJedKeXdLe5dMdN dOeLdPeMdQedRejeeeNeOeVdSZli  eYdTdU        eYdVee       eYdWe]       eYdXea       eYdYe       eYdZd[        eYd\d]        eYd^d_       i d`da dbedcdd dedf dgdh diedjedkdl dmdn dodp dqe"dre$dsdt dudv dwdx dydz d{e1d| ee7e;e@e@eHe/e/eTeUd}Zmi  eYdTd~        eYdd        eYdef       eYdXeb       eYd	eQ      d e e#e2eEe<eAeAd e0e0dZni em eYdei       eYdWe`       eYdXed       eYd^e
       eYd	eS       eYd
e*       eYd\d        eYde\      i deWdeidededkedmd ded(e!dod de&due(de.d{e3de9de>deCdeCdeJiZoepeqedef   f   erd<   i en eYdef       eYdWe_       eYd^e
       eYd	eS       eYd
e*      i deWdefd`d dbedcd ded dedgd diedjedkeded(e!de&dsd de.dee:e?eDeDeIdZsepeqedef   f   erd<   i  eYdTd        eYdVeg      ehehd eYdWe^       eYd^e	       eYdXec       eYdZd        eYd	eR       eYd\d        eYde[      i ded`d dbededcd ded dedgd diedjedkedmd dedod dqe#dre$de%d e'e-e2ee8e=eBeBe0e0dZtepeqedef   f   erd<   deeu   dejdepeqedef   f   fdZvy)uU  Response-callback dictionaries and the protocol/legacy selector.

This module is the single source of truth for the mapping between Redis
command names and the Python-side callbacks that post-process raw parser
output into user-facing values.

Six dictionaries are defined:

* ``_RedisCallbacks`` — entries that produce the same Python value
  regardless of wire protocol or legacy-response selection.
* ``_RedisCallbacksRESP2`` — RESP2 wire, legacy Python shapes.
* ``_RedisCallbacksRESP3`` — RESP3 wire, Python shapes from the previous
  RESP3 callbacks.
* ``_RedisCallbacksRESP2Unified`` — RESP2 wire, unified Python shapes
  (``legacy_responses=False``).
* ``_RedisCallbacksRESP3Unified`` — RESP3 wire, unified Python shapes
  (``legacy_responses=False``).
* ``_RedisCallbacksRESP3toRESP2Legacy`` — RESP3 wire converted back to the
  legacy RESP2 Python shapes for users who keep ``legacy_responses=True``
  on a RESP3 connection.

``get_response_callbacks`` merges ``_RedisCallbacks`` with the appropriate
protocol-specific overlay. Callers wrap the returned dict in
``CaseInsensitiveDict``.
    )AnyCallableOptionalstr_if_bytes   )bbool_ok!bzpop_score_resp3_to_resp2_legacybzpop_score_unifiedfloat_or_none hrandfield_resp3_to_resp2_legacyhrandfield_unifiedpairs_to_dictparse_acl_getuser'parse_acl_getuser_resp3_to_resp2_legacyparse_acl_getuser_unifiedparse_acl_log#parse_acl_log_resp3_to_resp2_legacyparse_acl_log_resp3_unifiedparse_arinfoparse_client_infoparse_client_killparse_client_list/parse_client_trackinginfo_resp3_to_resp2_legacy!parse_client_trackinginfo_unifiedparse_cluster_info)parse_cluster_links_resp3_to_resp2_legacyparse_cluster_links_unifiedparse_cluster_nodesparse_commandparse_command_resp3parse_command_unifiedparse_config_get&parse_config_get_resp3_to_resp2_legacyparse_debug_object)parse_function_list_resp3_to_resp2_legacyparse_function_list_unified"parse_geopos_resp3_to_resp2_legacyparse_geopos_unifiedparse_geosearch_genericparse_geosearch_generic_unifiedparse_hscan
parse_info#parse_lcs_idx_resp3_to_resp2_legacyparse_lcs_idx_unifiedparse_list_of_dictsparse_list_of_dicts_resp3parse_memory_statsparse_memory_stats_resp3parse_memory_stats_unifiedparse_pubsub_numsub
parse_scanparse_sentinel_get_masterparse_sentinel_master+parse_sentinel_master_resp3_to_resp2_legacyparse_sentinel_master_unified#parse_sentinel_master_unified_resp3parse_sentinel_mastersparse_sentinel_masters_resp3,parse_sentinel_masters_resp3_to_resp2_legacyparse_sentinel_masters_unified$parse_sentinel_masters_unified_resp3#parse_sentinel_slaves_and_sentinels)parse_sentinel_slaves_and_sentinels_resp39parse_sentinel_slaves_and_sentinels_resp3_to_resp2_legacy+parse_sentinel_slaves_and_sentinels_unified1parse_sentinel_slaves_and_sentinels_unified_resp3parse_sentinel_state_resp3parse_set_resultparse_slowlog_getparse_stralgoparse_stralgo_resp3_unifiedparse_stralgo_unifiedparse_stream_listparse_xautoclaimparse_xclaimparse_xinfo_streamparse_xpendingparse_xreadparse_xread_resp3!parse_xread_resp3_to_resp2_legacyparse_xread_unified
parse_zaddparse_zmscoreparse_zscanparse_zscan_unifiedsort_return_tuplesstring_keys_to_dicttimestamp_to_datetimezmpop_resp3_to_resp2_legacyzmpop_unifiedzpop_score_pairs&zpop_score_pairs_resp3_to_resp2_legacyzpop_score_pairs_resp3_unifiedzpop_score_pairs_unifiedzset_score_for_rankzset_score_for_rank_resp3)zset_score_for_rank_resp3_to_resp2_legacyzset_score_for_rank_unifiedzset_score_pairszset_score_pairs_resp3&zset_score_pairs_resp3_to_resp2_legacy+zset_score_pairs_resp3_to_resp2_legacy_flatzset_score_pairs_unifiedzoAUTH COPY EXPIRE EXPIREAT HEXISTS HMSET MOVE MSETNX PERSIST PSETEX PEXPIRE PEXPIREAT RENAMENX SETEX SETNX SMOVEzHINCRBYFLOAT INCRBYFLOATz{ASKING FLUSHALL FLUSHDB LSET LTRIM MSET PFMERGE READONLY READWRITE RENAME SAVE SELECT SHUTDOWN SLAVEOF SWAPDB WATCH UNWATCHzXREAD XREADGROUPz%GEORADIUS GEORADIUSBYMEMBER GEOSEARCHzXRANGE XREVRANGEzACL GETUSERzACL LOADACL LOGzACL SETUSERzACL SAVEzCLIENT INFOzCLIENT KILLzCLIENT LISTzCLIENT PAUSEzCLIENT SETINFOzCLIENT SETNAMEzCLIENT UNBLOCKzCLUSTER ADDSLOTSzCLUSTER ADDSLOTSRANGEzCLUSTER DELSLOTSzCLUSTER DELSLOTSRANGEzCLUSTER FAILOVERzCLUSTER FORGETzCLUSTER INFOzCLUSTER MEETzCLUSTER NODESzCLUSTER REPLICASzCLUSTER REPLICATEzCLUSTER RESETzCLUSTER SAVECONFIGzCLUSTER SET-CONFIG-EPOCHzCLUSTER SETSLOTzCLUSTER SLAVESCOMMANDzCONFIG RESETSTATz
CONFIG SETzFUNCTION DELETEzFUNCTION FLUSHzFUNCTION RESTOREGEODISTHSCANINFOLASTSAVEzMEMORY PURGEzMODULE LOADzMODULE UNLOADPINGc                     t        |       dk(  S )NPONGr   rs    r/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/redis/_parsers/response_callbacks.py<lambda>rw      s    l1o/    zPUBSUB NUMSUBzPUBSUB SHARDNUMSUBQUITSETSCANzSCRIPT EXISTSc                 4    t        t        t        |             S N)listmapboolrt   s    rv   rw   rw      s    tCaL1rx   zSCRIPT FLUSHzSCRIPT KILLzSCRIPT LOADzSENTINEL CKQUORUMzSENTINEL FAILOVERzSENTINEL FLUSHCONFIGz SENTINEL GET-MASTER-ADDR-BY-NAMEzSENTINEL MONITORzSENTINEL RESETzSENTINEL REMOVEzSENTINEL SETzSLOWLOG GETzSLOWLOG RESETSORTSSCANTIMEc                 :    t        | d         t        | d         fS Nr   r   )int)xs    rv   rw   rw      s    s1Q4y#ad),rx   
XAUTOCLAIMXCLAIMzXGROUP CREATEzXGROUP DESTROY)zXGROUP SETIDARINFOzXINFO STREAMXPENDINGZSCANzSDIFF SINTER SMEMBERS SUNIONc                 8    | xr t        |       xs
 t               S r}   setrt   s    rv   rw   rw          !,A2G#%2Grx   z=ZINTER ZRANGE ZRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZUNIONzZPOPMAX ZPOPMINzZREVRANK ZRANKzZINCRBY ZSCOREzBGREWRITEAOF BGSAVEc                      yNT rt   s    rv   rw   rw          4rx   zBLPOP BRPOPc                 (    | xr t        |       xs d S r}   tuplert   s    rv   rw   rw          1>q3IT3Irx   zBZPOPMAX BZPOPMINc                 @    | xr | d   | d   t        | d         fxs d S )Nr   r      floatrt   s    rv   rw   rw      s(    q'FadAaD%!+-F'N$'Nrx   zACL CATc                 4    t        t        t        |             S r}   r~   r   r   rt   s    rv   rw   rw          c,23rx   zACL GENPASSzACL HELPc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw          $s<34rx   zACL LISTc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw      r   rx   z	ACL USERSc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw          4L! 45rx   z
ACL WHOAMIzCLIENT GETNAMEzCLIENT TRACKINGINFOc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw      s    T#lA*>%?rx   zCLUSTER GETKEYSINSLOTc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw          tCa,@'Arx   zCOMMAND GETKEYSc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw          c,&:!;rx   
CONFIG GETzDEBUG OBJECTGEOHASHc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   GEOPOSc                 .    t        t        d |             S )Nc                 B    | t        | d         t        | d         fS d S r   r   )lls    rv   rw   z<lambda>.<locals>.<lambda>  s%    r~beeBqEl3O4Orx   )r~   r   rt   s    rv   rw   rw     s    OQRSrx   HGETALLc                 (    | xr t        |       xs i S r}   r   rt   s    rv   rw   rw     s    /}Q/525rx   zHOTKEYS GETc                 >    | D cg c]  }t        |       c}S c c}w r}   r   ru   ms     rv   rw   rw         :1mA.::   MEMORY STATSc                 >    | D cg c]  }t        |       c}S c c}w r}   r   r   s     rv   rw   rw     r   r   )zMODULE LISTRESETSENTINEL MASTERSENTINEL MASTERSSENTINEL SENTINELSSENTINEL SLAVESSTRALGOXINFO CONSUMERSXINFO GROUPSZADDZMSCOREc                 8    | xr t        |       xs
 t               S r}   r   rt   s    rv   rw   rw     r   rx   z0ZRANGE ZINTER ZPOPMAX ZPOPMIN HGETALL XREADGROUPc                     | S r}   r   ru   kwargss     rv   rw   rw     s    Arx   z6ZRANGE ZRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZUNIONc                     t        | t              rH| D cg c]8  }|j                         D ci c]  \  }}t        |      t        |       c}}: c}}}S t	        |       S c c}}w c c}}}w r}   )
isinstancer~   itemsr   r	   )ru   r   keyvalues       rv   rw   rw   '  sp    
 a 	
 GHggiPi
U\#U 33iP	
 	
 QZ	P	
s   A*A$A*$A*c                     t        | t              r6| j                         D ci c]  \  }}t        |      t        |       c}}S t        |       S c c}}w r}   )r   dictr   r   )ru   optionsr   r   s       rv   rw   rw   6  sO    a CD'')L)JCc	L/	/)L 	!_	Ls   A)rk   rl   r   r   r   r   r   r   r   r   r   zCZDIFF ZINTER ZRANGE ZRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZUNIONc                     | xs d S r}   r   rt   s    rv   rw   rw   X  s
    199rx   zZMPOP BZMPOPr   ZRANDMEMBER
HRANDFIELDc                     | S r}   r   r   s     rv   rw   rw   _  s    rx   zCLUSTER LINKSc                     | S r}   r   r   s     rv   rw   rw   b  s    1rx   zFUNCTION LISTLCSr   r   r   r   r   ._RedisCallbacksRESP2Unifiedc                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   r   )r   r   r   r   r   _RedisCallbacksRESP3Unifiedc                 8    | xr t        |       xs
 t               S r}   r   rt   s    rv   rw   rw     r   rx   )ZDIFFr   c                      yr   r   rt   s    rv   rw   rw     r   rx   c                 (    | xr t        |       xs d S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   c                 4    t        t        t        |             S r}   r   rt   s    rv   rw   rw     r   rx   )r   r   r   r   r   r   r   r   r   r   r   !_RedisCallbacksRESP3toRESP2Legacyuser_protocollegacy_responsesreturnc                 "   t        t              }|rK| |j                  t               |S | dv r|j                  t               |S |j                  t
               |S | | dv r|j                  t               |S |j                  t               |S )a  Return the merged callback dict for the given (protocol, legacy)
    combination.

    ``user_protocol`` is the value the user supplied to the client
    constructor (``None`` means "not specified"). ``legacy_responses``
    defaults to ``True`` and selects today's RESP2-style Python shapes
    even when the wire protocol is RESP3.

    Callers wrap the returned dict in ``CaseInsensitiveDict``.
    )   3)r   _RedisCallbacksupdater   _RedisCallbacksRESP3_RedisCallbacksRESP2r   r   )r   r   	callbackss      rv   get_response_callbacksr     s     04O/DI >?  h&12  12 	  MX$=89  89rx   N)w__doc__typingr   r   r   redis.utilsr   helpersr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   r   r   r   r   r   r   r   str__annotations__r   r   r   r   r   rx   rv   <module>r      s-  4 + * $c c c c c c c c c c c c c c c c c c c c c c c c cJ[	7[ 4e<[ 	C[ ,k:[ /[" ,.?@#[$ $%[& '[( })[* 7+[, -[. $/[0 $1[2 $3[4 G5[6 g7[8 g9[: d;[< =[> W?[@ A[B WC[D E[F gG[H &I[J GK[L (M[N +O[P Q[R WS[T 'U[V W[X wY[Z )[[\ }][^ _[` 'a[b wc[d ge[f g[h }i[j [k[l Jm[n %o[p Gq[r 4s[t Tu[v /w[x (y[z -{[| G}[~ 
[@ JA[B 1C[D GE[F 7G[H <I[J K[L M[N GO[P '(AQ[R S[T gU[V wW[X GY[Z $[[\ W][^ _[` Za[b ,c[d "e[f lg[h Wi[j dk[l &u[|1&(G1 G	1 +-=>1 1 *M:1 /@1 -)IJ1  N!1& 3'1( <)1* 4+1, 4-1. 5/10 ,112 l314 ?516 A718 ;91: ";1< &=1> 3?1@  A1F 5G1H :I1J &K1L ;,.=:*'a1 h'&(G' :	' @' !'  ,.?@!'" #8,14C@
 1-M' V+>+>M +>  +> #+> +>$ ,.AB%+>& /''+>. -)<=/+>0 .-81+>2  3+>4 +5+>6 $7+>8 ,9+>: <;+>< 2=+>> 0?+>@ $A+>B ,C+>D 0E+>F "G+>H 
 I+>J .K+>L 4M+>N 6O+>P EQ+>R BS+>T $U+> T#xS'9"9: +^)>)>M)> &)> )> ,.AB)> /')>&  ')>( )))>* 3+)>, <-)>. 4/)>0 41)>2 *3)>4 55)>6 ,7)>8 l9)>: <;)>< 0=)>> $?)>@ 0A)>B 3C)>D 
 E)>F \G)>H ;<KH*Q)> T#xS'9"9: )b6D&(G6D G.	6D 9>6D .6D )6D$ 1%6D, /@-6D. ,.OP/6D0 -)IJ16D2 .*EF36D4 256D6 376D8 <96D: :;6D< 4=6D> 4?6D@ 2A6DB 5C6DD ,E6DF lG6DH JI6DJ AK6DL >M6DN ;O6DP 8Q6DR &S6DT >U6DV 40.,BDSP0-k6D !4Xc3h-?(?#@ 6rC= 
#xS!
!"rx   