
    >'h=                     R    d dl mZ d dlmZmZ  G d de      Zdee   dee   fdZy)	    )Optional)	BaseModelFieldc                   R    e Zd ZU eed<    ed      Zeed       ed<   dee   fdZ	y)	FieldPathcurrentN)defaulttailreturnc                 T    ddt         dt        dt        t           ff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                     || j                   z   }| j                  s|gS g }| j                  D ]  }|j                   ||dz                 |S )N.)r   r
   extend)r   r   current_pathpathssub_pathcollect_pathss        `/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/qdrant_client/embed/utils.pyr   z,FieldPath.as_str_list.<locals>.collect_paths   sW    !DLL0L99$~% $		 NHLLx9K!LMN    ) )r   strlist)selfr   s    @r   as_str_listzFieldPath.as_str_list
   s.    		 	3 	S	 	 T""r   )
__name__
__module____qualname__r   __annotations__r   r
   r   r   r    r   r   r   r      s0    L(-d(;D(4$
%;#T#Y #r   r   r   r   c                    t        |       }d}g }|D ]  }|j                  d      }|d   }||k7  r|j                  t        |             |}|d   }|dd D ]w  }|j                  g |_        d}	|j                  D ]  }
|
j
                  |k(  s|
}d}	 n |	rAt        |      }|j                  J |j                  j                  |       |}y  |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_tails               r   convert_pathsr0      s     %=LIO #

3Qx9""9T#:;I!"%!"I 	#D||#!E <<4'"G E	
 $T2||///##H-"	##* r   N)	typingr   pydanticr   r   r   r   r   r0   r!   r   r   <module>r3      s2     %#	 #2#c #tI #r   