o
    :i	                     @   sh   d dl Z d dlmZ d dlmZmZ G dd deZdee dee fdd	Z	d
eeB defddZ
dS )    N)Path)	BaseModelFieldc                   @   sB   e Zd ZU eed< eddZed  dB ed< dee fddZdS )	FieldPathcurrentN)defaulttailreturnc                    s(   ddt dtdtt f fdd  | S )	z
        >>> FieldPath(current='a', tail=[FieldPath(current='b', tail=[FieldPath(current='c'), FieldPath(current='d')])]).as_str_list()
        ['a.b.c', 'a.b.d']
         pathprefixr	   c                    s>   || j  }| js|gS g }| jD ]}| ||d  q|S )N.)r   r   extend)r   r   current_pathpathssub_pathcollect_paths f/home/aiteam/pcaa-dev/dashboard-backend/venv/lib/python3.10/site-packages/qdrant_client/embed/utils.pyr      s   

z,FieldPath.as_str_list.<locals>.collect_pathsN)r
   )r   strlist)selfr   r   r   as_str_list   s    zFieldPath.as_str_list)	__name__
__module____qualname__r   __annotations__r   r   r   r   r   r   r   r   r      s   
 r   r   r	   c                 C   s   t | }d}g }|D ]W}|d}|d }||kr#|t|d |}|d }|dd D ]3}|jdu r7g |_d}	|jD ]}
|
j|krI|
}d}	 nq<|	s`t|d}|jdusXJ |j| |}q-q
|S )	zConvert string paths into FieldPath objects

    Paths which share the same root are grouped together.

    Args:
        paths: List[str]: List of str paths containing "." as separator

    Returns:
        List[FieldPath]: List of FieldPath objects
    Nr   r   )r      FT)sortedsplitappendr   r   r   )r   sorted_paths	prev_rootconverted_pathsr   partsrootr   partfoundr   new_tailr   r   r   convert_paths    s8   




r+   	file_pathc                 C   sf   t | }| std| dt|d}| }t|dW  d   S 1 s,w   Y  dS )z/Convert a file path to a base64 encoded string.z	The file z does not exist.rbzutf-8N)r   existsFileNotFoundErroropenreadbase64	b64encodedecode)r,   r   filefile_contentr   r   r   read_base64F   s   $r7   )r2   pathlibr   pydanticr   r   r   r   r   r+   r7   r   r   r   r   <module>   s    &