o
    Lj$I                     @   s  U d Z ddlmZmZmZ ddlmZ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/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`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZn i e^deoe^depe^d	ee^d
eUe^de.e^dePi dedededededededededededeo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eee	eeeqeeqd0e0d1e1d2e_d3ed4eod5eod6d7d8 d9e9d:e9d;ed<eKd=e:i d>d?d8 d@edAedBedCedDedEedFe;dGedHedIedJedKeLdLedMe]dNe:dOdPd8 eQeReeoeeeSeTe[dQ	Zri e^dRdSd8 e^dTeje^dUebe^dVefe^dWee^dXdYd8 e^dZd[d8 e^d\d]d8 i d^d_d8 d`edadbd8 dcddd8 dedfd8 dgedhedidjd8 dkdld8 dmdnd8 doe'dpe)dqdrd8 dsdtd8 dudvd8 dwdxd8 dye6dzd8 ee<e@eEeEeMe4e4eYeZd{Zsi e^dRd|d8 e^d}d~d8 e^deke^dVege^d
eVdd8 e%e(e7eJeAeFeFdd8 e5e5dZti ese^dene^dUeee^dVeie^d\ee^d
eXe^de/e^dZdd8 e^deai de\dendedediedkdd8 de"d)e&dmdd8 de+dse-de3dye8de>deCdeHdeHdeOiZuevewedef f exd< i ete^deke^dUede^d\ee^d
eXe^de/i de\dekd^dd8 d`edadd8 dcdd8 dededd8 dgedhediede"d)e&de+dqdd8 de3dee?eDeIeIeNdZyevewedef f exd< i e^dRdd8 e^dTelememde^dUece^d\ee^dVehe^dXdd8 e^d
eWe^dZdd8 e^de`i ded^dd8 d`ededadd8 dcdd8 dededd8 dgedhediedkdd8 de!dmdd8 doe(dpe)de*dd8 e,e2e7ee=eBeGeGe5e5dZzevewedef f exd< deeq deodevewedef f fddZ{dS )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)HIMPORT_DISCARDHIMPORT_DISCARDALLHIMPORT_PREPAREHIMPORT_SET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                 C   s   t | dkS )NPONGr	   r rx   _/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/redis/_parsers/response_callbacks.py<lambda>   s    rz   zPUBSUB NUMSUBzPUBSUB SHARDNUMSUBQUITSETSCANzSCRIPT EXISTSc                 C      t tt| S N)listmapboolrv   rx   rx   ry   rz          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                 C   s   t | d t | d fS Nr   r   )int)xrx   rx   ry   rz      s    )	
XAUTOCLAIMXCLAIMzXGROUP CREATEzXGROUP DESTROYzXGROUP SETIDARINFOzXINFO STREAMXPENDINGZSCANzSDIFF SINTER SMEMBERS SUNIONc                 C      | rt | pt  S r   setrv   rx   rx   ry   rz          z=ZINTER ZRANGE ZRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZUNIONzZPOPMAX ZPOPMINzZREVRANK ZRANKzZINCRBY ZSCOREzBGREWRITEAOF BGSAVEc                 C      dS NTrx   rv   rx   rx   ry   rz          zBLPOP BRPOPc                 C      | rt | pd S r   tuplerv   rx   rx   ry   rz          zBZPOPMAX BZPOPMINc                 C   s"   | r| d | d t | d fpd S )Nr   r      floatrv   rx   rx   ry   rz      s   " zACL CATc                 C   r~   r   r   r   r
   rv   rx   rx   ry   rz      r   zACL GENPASSzACL HELPc                 C   r~   r   r   rv   rx   rx   ry   rz     r   zACL LISTc                 C   r~   r   r   rv   rx   rx   ry   rz     r   z	ACL USERSc                 C   r~   r   r   rv   rx   rx   ry   rz     r   z
ACL WHOAMIzCLIENT GETNAMEzCLIENT TRACKINGINFOc                 C   r~   r   r   rv   rx   rx   ry   rz     r   zCLUSTER GETKEYSINSLOTc                 C   r~   r   r   rv   rx   rx   ry   rz     r   zCOMMAND GETKEYSc                 C   r~   r   r   rv   rx   rx   ry   rz     r   
CONFIG GETzDEBUG OBJECTGEOHASHc                 C   r~   r   r   rv   rx   rx   ry   rz     r   GEOPOSc                 C   s   t tdd | S )Nc                 S   s$   | d urt | d t | d fS d S r   r   )llrx   rx   ry   rz     s   $ z<lambda>.<locals>.<lambda>)r   r   rv   rx   rx   ry   rz     s    HGETALLc                 C   s   | rt | pi S r   r   rv   rx   rx   ry   rz     r   zHOTKEYS GETc                 C      dd | D S )Nc                 S      g | ]}t |qS rx   r   .0mrx   rx   ry   
<listcomp>      <lambda>.<locals>.<listcomp>rx   rv   rx   rx   ry   rz     r   MEMORY STATSc                 C   r   )Nc                 S   r   rx   r   r   rx   rx   ry   r     r   r   rx   rv   rx   rx   ry   rz     r   )zMODULE LISTRESETSENTINEL MASTERSENTINEL MASTERSSENTINEL SENTINELSSENTINEL SLAVESSTRALGOXINFO CONSUMERSXINFO GROUPSZADDZMSCOREc                 C   r   r   r   rv   rx   rx   ry   rz   "  r   z0ZRANGE ZINTER ZPOPMAX ZPOPMIN HGETALL XREADGROUPc                 K      | S r   rx   rw   kwargsrx   rx   ry   rz   &  r   z6ZRANGE ZRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZUNIONc                 C   s    t | trdd | D S t| S )Nc                 S   s   g | ]}d d |  D qS )c                 S      i | ]\}}t |t |qS rx   r	   r   keyvaluerx   rx   ry   
<dictcomp>3      z'<lambda>.<locals>.<listcomp>.<dictcomp>)items)r   r   rx   rx   ry   r   2  s    r   )
isinstancer   r   rv   rx   rx   ry   rz   1  s
   c                 K   s$   t | trdd |  D S t| S )Nc                 S   r   rx   r	   r   rx   rx   ry   r   A  r   z<lambda>.<locals>.<dictcomp>)r   dictr   r
   )rw   optionsrx   rx   ry   rz   @  s   )rn   ro   r   r   r   r   r   r   r   r   r   zCZDIFF ZINTER ZRANGE ZRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZUNIONc                 C   s   | pd S r   rx   rv   rx   rx   ry   rz   b  s    zZMPOP BZMPOPr   ZRANDMEMBER
HRANDFIELDc                 K   r   r   rx   r   rx   rx   ry   rz   i  r   zCLUSTER LINKSc                 K   r   r   rx   r   rx   rx   ry   rz   l  r   zFUNCTION LISTLCSr   r   r   r   r   ._RedisCallbacksRESP2Unifiedc                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   r   )r   r   r   r   r   _RedisCallbacksRESP3Unifiedc                 C   r   r   r   rv   rx   rx   ry   rz     r   )ZDIFFr   c                 C   r   r   rx   rv   rx   rx   ry   rz     r   c                 C   r   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   c                 C   r~   r   r   rv   rx   rx   ry   rz     r   )r   r   r   r   r   r   r   r   r   r   r   !_RedisCallbacksRESP3toRESP2Legacyuser_protocollegacy_responsesreturnc                 C   sr   t t}|r#| du r|t |S | dv r|t |S |t |S | du s+| dv r2|t |S |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``.
    N)   3)r   _RedisCallbacksupdater   _RedisCallbacksRESP3_RedisCallbacksRESP2r   r   )r   r   	callbacksrx   rx   ry   get_response_callbacks  s   





r   N)|__doc__typingr   r   r   redis.himportr   r   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/   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   rk   rl   rm   r   r   r   r   r   r   r   r   str__annotations__r   r   r   rx   rx   rx   ry   <module>   s    e !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVb	 #$%&4+
 !"#$%&'()*/
 !"#$ 1
 !"#$%&'()*+ 9