Ë
    ÛJêjT  ã                  ó¬   — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
  ej                  e«      Z ed¬«       G d	„ d
«      «       Z G d„ d«      Zy)u4   Chunking strategie pro indexing textovÃ½ch souborÅ¯.é    )ÚannotationsN)Ú	dataclass)ÚPath)ÚEmbeddingConfigT)Úfrozenc                  óD   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   y
)ÚChunkzJeden chunk textu.ÚstrÚtextÚintÚchunk_indexÚsource_pathÚfloatÚmtimeÚsha256N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úJ/home/oem/CyberBrain26-unified/src/cyberbrain26/knowledge_plane/chunker.pyr	   r	      s    … áà
ƒIØÓØÓØƒLØ„Kr   r	   c                  ó>   — e Zd ZdZddd„Zed	d„«       Zd
d„Zddd„Zy)ÚTextChunkeru2   DÄ›lÃ­ text na chunky podle velikosti a pÅ™ekryvu.Nc                ó*   — |xs
 t        «       | _        y ©N)r   Úconfig)Úselfr   s     r   Ú__init__zTextChunker.__init__   s   € ØÒ1¤Ó 1ˆ�r   c                ó  ‡— t        j                  «       }| j                  d«      5 Št        ˆfd„d«      D ]  }|j	                  |«       Œ 	 ddd«       |j                  «       S # 1 sw Y   |j                  «       S xY w)u   VrÃ¡tÃ­ SHA256 souboru.Úrbc                 ó&   •— ‰ j                  d«      S )Ni   )Úread)Úfs   €r   ú<lambda>z*TextChunker._file_sha256.<locals>.<lambda>%   s   ø€  a§f¡f¨U£m€ r   r   N)Úhashlibr   ÚopenÚiterÚupdateÚ	hexdigest)ÚpathÚhÚchunkr%   s      @r   Ú_file_sha256zTextChunker._file_sha256    sl   ø€ ô �N‰NÓˆØ�Y‰Y�t‹_ð 	  ÜÓ3°SÓ9ò  �Ø—‘˜•ñ ÷	 ð �{‰{‹}Ð÷	 ð �{‰{‹}Ðús   §&A&Á&A>c                ó\   — | j                  |j                  dd¬«      t        |«      ¬«      S )u&   NaÄ�te soubor a rozdelÃ­ ho na chunky.zutf-8Úreplace)ÚencodingÚerrors)r   )Ú
chunk_textÚ	read_textr
   )r   r,   s     r   Ú
chunk_filezTextChunker.chunk_file)   s)   € à�‰˜tŸ~™~°wÀy˜~ÓQÔ_bÐcgÓ_hˆÓiÐir   c           	     ó   — |j                  «       }| j                  j                  }| j                  j                  }||z
  }g }d}d}	|	t	        |«      k  rY|	|z   }
||	|
 }dj                  |«      }|j                  t        |||dd¬«      «       |dz  }|	|z  }	|dk  rn|	t	        |«      k  rŒYt        j                  dt	        |«      «       |S )u-   RozdÄ›lÃ­ text na chunky bez zÃ¡pisu na disk.r   ú g        Ú )r   r   r   r   r   é   u   RozdÄ›leno text na %d chunÅ¯)
Úsplitr   Úchunk_size_tokensÚchunk_overlap_tokensÚlenÚjoinÚappendr	   ÚloggerÚinfo)r   r   r   ÚtokensÚsizeÚoverlapÚstepÚchunksÚindexÚstartÚendÚchunk_tokensr4   s                r   r4   zTextChunker.chunk_text-   sÛ   € à—‘“ˆØ�{‰{×,Ñ,ˆØ—+‘+×2Ñ2ˆØ�g‰~ˆØ ˆØˆØˆØ”c˜&“kÒ!Ø˜$‘,ˆCØ! %¨Ð,ˆLØŸ™ ,Ó/ˆJØ�M‰MÜØ#Ø %Ø +ØØôôð �Q‰JˆEØ�T‰MˆEØ�qŠyØð! ”c˜&“kÓ!ô" 	�‰Ð2´C¸³KÔ@Øˆr   r   )r   zEmbeddingConfig | NoneÚreturnÚNone)r,   r   rL   r
   )r,   r   rL   úlist[Chunk])z<memory>)r   r
   r   r
   rL   rN   )	r   r   r   r   r    Ústaticmethodr/   r6   r4   r   r   r   r   r      s)   „ Ù<ô2ð òó ðójõr   r   )r   Ú
__future__r   r'   ÚloggingÚdataclassesr   Úpathlibr   Ú-cyberbrain26.knowledge_plane.embedding_configr   Ú	getLoggerr   rA   r	   r   r   r   r   ú<module>rV      sT   ðÙ :å "ã Û Ý !Ý å Ià	ˆ×	Ñ	˜8Ó	$€ñ �$Ô÷ð ó ð÷.ò .r   