
    <i	                     t    S SK r S SKJr  S SKJrJr   " S S\5      rS\\   S\\   4S jr	S	\\-  S\4S
 jr
g)    N)Path)	BaseModelFieldc                   V    \ rS rSr% \\S'   \" SS9r\S    S-  \S'   S\\   4S jr	Sr
g)		FieldPath   currentN)defaulttailreturnc                 Z   ^ SS[         S[        S[        [           4U4S jjjmT" U 5      $ )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                    > XR                   -   nU R                  (       d  U/$ / nU R                   H  nUR                  T" XBS-   5      5        M     U$ )N.)r	   r   extend)r   r   current_pathpathssub_pathcollect_pathss        S/home/james-whalen/.local/lib/python3.13/site-packages/qdrant_client/embed/utils.pyr   ,FieldPath.as_str_list.<locals>.collect_paths   sL    !LL0L99$~% $		HLLx9K!LM !*    ) )r   strlist)selfr   s    @r   as_str_listFieldPath.as_str_list   s3    		 	3 	S	 	 	 T""r    )__name__
__module____qualname____firstlineno__r   __annotations__r   r   r   r   __static_attributes__r    r   r   r   r      s0    L%*4%8D${
d
"8#T#Y #r   r   r   r   c                    [        U 5      nSn/ nU H  nUR                  S5      nUS   nXb:w  a  UR                  [        US95        UnUS   nUSS  H  nUR                  c  / Ul        Sn	UR                   H  n
U
R
                  U:X  d  M  U
nSn	  O   U	(       a  MK  [        US9nUR                  c   eUR                  R                  U5        UnM     M     U$ )	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_tails               r   convert_pathsr5       s     %=LIO

3Qx""9T#:;I!"%!"ID||#!E<<4'"G E	 %
 5$T2||///##H-"  * r   	file_pathc                    [        U 5      nUR                  5       (       d  [        SU S35      e[        US5       nUR	                  5       n[
        R                  " U5      R                  S5      sSSS5        $ ! , (       d  f       g= f)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)r6   r   filefile_contents       r   read_base64rB   F   sg    	?D;;==)D61A BCC	dD	Tyy{-44W= 
		s   5A;;
B	)r=   pathlibr   pydanticr   r   r   r   r   r5   rB   r    r   r   <module>rE      sM      %#	 #2#c #tI #L>3: ># >r   