
    ng\j                     P    S SK JrJr  S SKJrJr  SSKJr  SSKJ	r	   " S S5      r
g)	    )ListOptional)decode_field_valuestr_if_bytes   )	to_string)Documentc                       \ rS rSrSr     SS\\   S\\\      4S jjr	\
   SS\S\S	\S\\   S
S 4
S jj5       rS
\4S jrSrg)Result	   zO
Represents the result of a search query, and has an array of Document
objects
Nfield_encodingswarningsc                 p   US   U l         X0l        / U l        U=(       d    / U l        SnU(       a  US-   nU(       a  US-   nU(       a  US-   nU(       a  SOSn	[	        S[        U5      U5       GH#  n
[        X   5      nU(       a  [        XU	-      5      OSnU(       a  U	S-   OU	nU(       a  [        XS-      5      OSn0 nU(       a{  XU-      bs  [        [        XU-      SSS2   5      nXU-      SSS2   n[        UU5       H;  u  nnUb  UU;  a  [        U5      UU'   M  UU   nUc  UUU'   M.  [        UUS9UU'   M=      US	  US   US'   US	 U(       a  [        U4XS	.UD6O[        U4S
U0UD6nU R                  R                  U5        GM&     g! [         a     N\f = f! [         a     N`f = f)a  
- duration: the execution time of the query
- has_payload: whether the query has payloads
- with_scores: whether the query has scores
- field_encodings: a dictionary of field encodings if any is provided
- warnings: list of server warnings (from RESP3 responses)
r   r      N)encodingid$jsonscorepayloadr   )totaldurationdocsr   rangelenr   floatmapzipKeyErrorr	   append)selfres
hascontentr   has_payloadwith_scoresr   r   stepoffsetir   r   fields_offsetr   fieldskeysvalueskeyvaluer   docs                         W/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/redis/commands/search/result.py__init__Result.__init__   s   $ V
 	 B!8D!8D!8D!qq#c(D)A36"B4?iJ0TG*5FQJ6M)4E#!e*%$EFcm"34@9cm*;&<SqS&AB./15"%dF"3JC&.#_2L&/&6s .s3H  '&+s&/&Is #44L!'v3K  D5DVDb<'<V< 
 IIS!S *6    s$   F	F(
F%$F%(
F54F5r#   r   r&   returnc                    U R                  U 5      nUc  0 nUR                  5        VVs0 s H  u  pg[        U5      U_M     nnnUR                  SS5      Ul        X%l        / Ul        UR                  S/ 5       Vs/ s H  n[        U5      PM     snUl        UR                  S/ 5       GH  n	U	R                  5        VVs0 s H  u  pg[        U5      U_M     n	nn[        U	R                  SS5      5      n
SnU(       a  SU	;   a  [        U	S   5      n0 nU	R                  S	5      =(       d    0 nUR                  5        H  u  p[        U5      n[        XU5      X'   M       US	  US
   US'   US
	 U(       a  [        U
4USS.UD6O[        U
4SS0UD6nUR                  R                  U5        GM
     U$ s  snnf s  snf s  snnf ! [         a     Nof = f! [         a     Nsf = f)zConstruct a Result from a RESP3 dict response.

RESP3 format:
{
    "total_results": N,
    "results": [
        {"id": "doc1", "score": 1.5, "extra_attributes": {"f1": "v1"}},
        ...
    ],
    "warning": [...]
}
Ntotal_resultsr   warningresultsr    r   extra_attributesr   r   r   r   )__new__itemsr   getr   r   r   r   r   r   r    r	   r!   )clsr#   r   r&   r   instancekvwresult_itemdoc_idr   r+   extra_attrsr.   r/   r0   s                    r1   
from_resp3Result.from_resp3[   s   ( ;;s#;C /2iik:kda|A!k:!4$69ggi6LM6L\!_6LM779b1K:E:K:K:MN:M$!<?A-:MKN!+//$";<FEw+5k'23F%//*<=CK)//1
"3'0_M 24L!'v3K  EudEfEf=d=f= 
 MM  %; 2> K ; N O    s5   F:=G G%G)G
GG
G('G(c                 <    SU R                    SU R                   S3$ )NzResult{z total, docs: })r   r   )r"   s    r1   __repr__Result.__repr__   s    $**^DII;bAA    )r   r   r   r   )r   FFNN)r   FN)__name__
__module____qualname____firstlineno____doc__r   dictr   strr2   classmethodr   boolrF   rJ   __static_attributes__ rL   r1   r   r   	   s     *.(,J" "$J" 49%J"X  !*.>> > 	>
 "$> 
> >@B# BrL   r   N)typingr   r   redis.utilsr   r   _utilr   documentr	   r   rW   rL   r1   <module>r\      s    ! 8  TB TBrL   