U
    ¯ªh¥  ã                   @   s4   d dl mZ d dlmZ dd„ Zdd„ Zdd„ Zd	S )
é    )Úpairs_to_dict)ÚCallbacksOptionsc              	   K   sð   | dkr| S |  tjj¡r‚i }|  tjj¡r:| d  d¡n| d |d< | d |d< t| d ƒ|d< t| ƒd	kr~t| d	 ƒ|d
< |S |  tjj¡r”| S g }t	t| ƒƒD ]B}z| 
t| | ƒ¡ W q¤ tk
rä   | 
t| | ƒ¡ Y q¤X q¤|S dS )a  
    Handle VEMB result since the command can returning different result
    structures depending on input options and on quantization type of the vector set.

    Parsing VEMB result into:
    - List[Union[bytes, Union[int, float]]]
    - Dict[str, Union[bytes, str, float]]
    Nr   zutf-8Zquantizationé   Úrawé   Úl2é   Úrange)Úgetr   ZRAWÚvalueZALLOW_DECODINGÚdecodeÚfloatÚlenZRESP3r	   ÚappendÚintÚ
ValueError)ÚresponseÚoptionsÚresultÚi© r   úB/tmp/pip-unpacked-wheel-4avdqdik/redis/commands/vectorset/utils.pyÚparse_vemb_result   s,    	ÿýr   c                 K   sh   | dkr| S |  tjj¡r`g }| D ]8}i }t|ƒ ¡ D ]\}}t|ƒ}|||< q6| |¡ q"|S | S dS )zÑ
    Handle VLINKS result since the command can be returning different result
    structures depending on input options.
    Parsing VLINKS result into:
    - List[List[str]]
    - List[Dict[str, Number]]
    N)r
   r   Ú
WITHSCORESr   r   Úitemsr   r   )r   r   r   Z
level_itemZlevel_data_dictÚkeyr   r   r   r   Úparse_vlinks_result,   s    
r   c                 K   sP   | dkr| S |  tjj¡rHi }t| ƒ ¡ D ]\}}t|ƒ}|||< q*|S | S dS )zÍ
    Handle VSIM result since the command can be returning different result
    structures depending on input options.
    Parsing VSIM result into:
    - List[List[str]]
    - List[Dict[str, Number]]
    N)r
   r   r   r   r   r   r   )r   r   Zresult_dictr   r   r   r   r   Úparse_vsim_resultH   s    
r   N)Zredis._parsers.helpersr   Z!redis.commands.vectorset.commandsr   r   r   r   r   r   r   r   Ú<module>   s   '