Ë
    °Œj‡  ã                   óX   — d dl Z d dlZd dlZ	 d„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd	„Zdd
„Zy)é    Nc                 óÜ   — t        j                  | d¬«      }t        j                  dk(  r|j	                  d¬«       |d   }|j                  d|dz   «      d d …dd …f   j                  «       S )	NÚint32©ÚdtypeÚbigT©Úinplacer   éÿÿÿÿé   )ÚnpÚfromfileÚsysÚ	byteorderÚbyteswapÚreshapeÚcopy©ÚfnameÚaÚds      ú_/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/faiss/contrib/vecs_io.pyÚ
ivecs_readr      s^   € Ü
�‰�E Ô)€AÜ
‡}�}˜ÒØ	�
‰
˜4ˆ
Ô Ø	ˆ!‰€AØ�9‰9�R˜˜Q™Ó¢ 1¡2 Ñ&×+Ñ+Ó-Ð-ó    c                 ó6   — t        | «      j                  d«      S ©NÚfloat32)r   Úview©r   s    r   Ú
fvecs_readr      ó   € Ü�eÓ×!Ñ! )Ó,Ð,r   c                 ó¢   — t         j                  dk7  sJ ‚t        j                  | dd¬«      }|d   }|j	                  d|dz   «      d d …dd …f   S )Nr   r   Úr©r   Úmoder   r
   r   )r   r   r   Úmemmapr   r   s      r   Ú
ivecs_mmapr&      sO   € Ü�=‰=˜EÒ!Ð!Ð!Ü
�	‰	�%˜w¨SÔ1€AØ	ˆ!‰€AØ�9‰9�R˜˜Q™Ó¢ 1¡2 Ñ&Ð&r   c                 ó6   — t        | «      j                  d«      S r   )r&   r   r   s    r   Ú
fvecs_mmapr(   #   r    r   c                 ó  — t        j                  | dd¬«      }t        j                  dk(  r.|d d d d d…   j	                  «       }|j                  d«      d   }n|d d j                  d«      d   }|j                  d|dz   «      d d …dd …f   S )	NÚuint8r"   r#   r   é   r
   r   r   )r   r%   r   r   r   r   r   )r   ÚxÚdar   s       r   Ú
bvecs_mmapr.   '   sˆ   € Ü
�	‰	�%˜w¨SÔ1€AÜ
‡}�}˜ÒØˆr�ˆU‘4�R�4‰[×ÑÓˆØ�G‰G�GÓ˜QÑ‰àˆbˆqˆE�J‰J�wÓ Ñ"ˆØ�9‰9�R˜˜Q™Ó¢ 1¡2 Ñ&Ð&r   c                 óî   — |j                   \  }}t        j                  ||dz   fd¬«      }||d d …df<   ||d d …dd …f<   t        j                  dk(  r|j                  d¬«       |j                  | «       y )Nr   r   r   r   r   Tr   )Úshaper   Úemptyr   r   r   Útofile)r   ÚmÚnr   Úm1s        r   Úivecs_writer6   1   si   € Ø�7‰7�D€A€qÜ	�‰�1�a˜!‘e�* GÔ	,€BØ€B‚qˆ!€t�HØ€B‚qˆ!‰"€u�IÜ
‡}�}˜ÒØ
�‰˜DˆÔ!Ø‡I�IˆeÕr   c                 ó\   — |j                  d«      }t        | |j                  d«      «       y )Nr   r   )Úastyper6   r   )r   r3   s     r   Úfvecs_writer9   ;   s"   € Ø	�‰�Ó€AÜ��q—v‘v˜g“Õ'r   c              #   óÔ  K  — t         j                  j                  | «      }t        | d«      5 }t	        j
                  |j                  d«      d¬«      d   }ddd«       dz   }||z  }t	        j                  | dt        j                  ¬«      }|j                  ||«      }t        d||«      D ])  }	t	        j                  |	|z   |g«      }
||	|
…dd…f   –— Œ+ y# 1 sw Y   Œ…xY w­w)	zG
    Memory-mapped iterator - only loads requested slices into RAM
    Úrbr+   ú<i4r   r   Nr"   ©r$   r   )ÚosÚpathÚgetsizeÚopenr   Ú
frombufferÚreadr%   r*   r   ÚrangeÚmin)ÚfilepathÚ
batch_sizeÚ	file_sizeÚfÚdimÚbytes_per_vecÚ	n_vectorsÚmmÚrecordsÚstartÚends              r   Ú
bvecs_iterrQ   @   sË   è ø€ ô
 —‘—‘ Ó)€IÜ	ˆh˜Ô	 Ü�m‰m˜AŸF™F 1›I¨UÔ3°AÑ6ˆ÷ 
ð ˜‘G€MØ˜]Ñ*€Iä	�‰�8 #¬R¯X©XÔ	6€BØ�j‰j˜ MÓ2€Gä�q˜) ZÖ0ˆÜ�f‰f�e˜jÑ(¨)Ð4Ó5ˆØ�e˜C�i ¡�mÑ$Ó$ñ 1÷ 
Ð	üs   ‚,C(®*CÁBC(ÃC%Ã!C(c           
   #   ó   K  — g }t        j                  | «      D ]f  }|j                  «       sŒ|j                  j	                  d«      sŒ0|j                  j                  d«      sŒL|j                  |j                  «       Œh |j                  «        |st        d| › �«      ‚g }|D ]b  }t         j                  j                  |«      }	 |j                  d«      d   j                  d«      d   }|j                  t        |«      «       Œd t        t        t!        |«      «      «      }t#        |«      |k7  rIt%        |«      t%        |«      z
  }	t        d	t#        |	«      › d
t#        |«      › dt!        |«      dz
  › �«      ‚t'        |d   d«      5 }
t)        j*                  |
j-                  d«      d¬«      d   }ddd«       dz   }d}d}|D ]ù  }t         j                  j/                  |«      }||z  }t)        j0                  |dt(        j2                  ¬«      }|j5                  ||«      }|dd…dd…f   }d}|�L||z
  }||k  r%t)        j6                  ||d| g«      }|–— d}d}|}nt)        j6                  ||g«      }||z  }Œº||z   |k  r||||z    –— ||z  }||z   |k  rŒ||z
  }|dkD  sŒå||d j9                  «       }|}Œû |�|–— yy# t        t        f$ r t        d|› �«      ‚w xY w# 1 sw Y   �Œ:xY w­w)a  
    Memory-mapped iterator over chunked .bvecs files.
    Iterates through all chunk files in order (chunk_0000.bvecs,
    chunk_0001.bvecs, etc.) and yields batches of vectors, handling cases
    where batches span multiple files.

    Args:
        chunk_folder: path to folder containing chunk_XXXX.bvecs files
        batch_size: number of vectors to yield per batch

    Yields:
        numpy array of shape (batch_size, d) or smaller for last batch

    Raises:
        ValueError: if there are gaps in the chunk sequence
    Úchunk_z.bvecszNo chunk files found in Ú_r   Ú.r   zInvalid chunk filename format: z0Gap detected in chunk sequence! Missing chunks: z
Found chunks: z(
Expected continuous sequence from 0 to r;   r+   r<   r   Nr"   r=   )r>   ÚscandirÚis_fileÚnameÚ
startswithÚendswithÚappendr?   ÚsortÚ
ValueErrorÚbasenameÚsplitÚintÚ
IndexErrorÚlistrD   ÚlenÚsortedÚsetrA   r   rB   rC   r@   r%   r*   r   Úvstackr   )Úchunk_folderrG   Úchunk_filesÚentryÚchunk_numbersr?   r^   Únum_strÚexpected_chunksÚmissingrI   rJ   rK   ÚbufferÚbuffer_sizeÚ
chunk_pathrH   rL   rM   rN   ÚvectorsrO   ÚneededÚbatchÚ	remainders                            r   Úbvecs_iter_chunkedru   T   s&  è ø€ ð& €KÜ—‘˜LÖ)ˆà�M‰M�OØ—
‘
×%Ñ% hÕ/Ø—
‘
×#Ñ# HÕ-à×Ñ˜uŸz™zÕ*ð *ð ×ÑÔáÜÐ3°L°>ÐBÓCÐCð €MÛˆÜ—7‘7×#Ñ# DÓ)ˆð	KØ—n‘n SÓ)¨!Ñ,×2Ñ2°3Ó7¸Ñ:ˆGØ× Ñ ¤ W£Õ.ð	 ô œ5¤ ]Ó!3Ó4Ó5€OÜˆmÓ Ò/Ü�oÓ&¬¨]Ó);Ñ;ˆÜØ>Ü�g‹Ðð  Ü# MÓ2Ð3ð 46Ü69¸-Ó6HÈÑ6JÐ5KðMó
ð 	
ô 
ˆk˜!‰n˜dÔ	# qÜ�m‰m˜AŸF™F 1›I¨UÔ3°AÑ6ˆ÷ 
$ð ˜‘G€Mð €FØ€Kó "ˆ
Ü—G‘G—O‘O JÓ/ˆ	Ø Ñ.ˆ	ô �Y‰Y�z¨´2·8±8Ô<ˆØ—*‘*˜Y¨Ó6ˆØš!˜Q™R˜%‘.ˆàˆð ÐØ +Ñ-ˆFØ˜Ò"äŸ	™	 6¨7°7°FÐ+;Ð"<Ó=�Ø’Ø�Ø�Ø‘ô Ÿ™ F¨GÐ#4Ó5�Ø˜yÑ(�Øð �jÑ  IÒ-Ø˜% %¨*Ñ"4Ð5Ò5Ø�ZÑˆEð �jÑ  IÓ-ð  Ñ%ˆ	Ø�q‹=Ø˜U˜V�_×)Ñ)Ó+ˆFØ#‰KðG "ðJ ÐØ‹ð øô} œJÐ'ò 	KÜÐ>¸x¸jÐIÓJÐJð	Kú÷ 
$Ñ	#üsV   ‚+K>®K>Á
K>Á&A#K>Ã
A KÄ
BK>Æ*K1Æ9C,K>Ê&
K>Ê1K>ËK.Ë.K>Ë1K;Ë6K>)i † )r   Únumpyr   r>   r   r   r&   r(   r.   r6   r9   rQ   ru   © r   r   Ú<module>rx      sC   ðó Û Û 	ðò.ò-ò'ò-ò'òò(ó
%ô(fr   