
    =wg0                        d dl m Z  d dlmZ d dlmZ d dlmZmZ d dlmZ d dlm	Z
 d dlmZmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZmZmZ d dlmZmZ d dlmZmZ d dlmZmZmZmZ d dlmZm Z  d dlm!Z!m"Z"m#Z#m$Z$ d dlm%Z%m&Z& d dl'm(Z(m)Z) d dl'm*Z*m+Z+  e,d dD              Z-dddZ.dZ/ G d de0      Z1 G d de1      Z2 G d de1      Z3y)     )array)copycalcsize)BytesIO
bytes_type)dump)load)array_frombytesarray_tobytes)	_INT_SIZE_SHORT_SIZE_FLOAT_SIZE
_LONG_SIZE)	IS_LITTLE)	pack_byteunpack_byte
pack_sbyteunpack_sbyte)pack_ushortunpack_ushort)pack_ushort_leunpack_ushort_le)pack_int
unpack_int	pack_uintunpack_uint)pack_uint_leunpack_uint_le)	pack_longunpack_long
pack_ulongunpack_ulong)
pack_floatunpack_float)varintread_varint)signed_varintdecode_signed_varintc              #   6   K   | ]  }|t        |      f  y wNr   ).0typecodes     O/var/www/horilla/myenv/lib/python3.12/site-packages/whoosh/filedb/structfile.py	<genexpr>r/   1   s     K88H-.Ks   	bBiIhHqQf<>)littlebig))sbyteb)ushortH)inti)longq)floatfc                      e Zd ZdZdDdZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd ZdEdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$dFd$Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8d8 Z9d9 Z:d: Z;d; Z<d< Z=d= Z>d> Z?d? Z@d@ ZAdA ZBdB ZCdC ZDy)G
StructFilezReturns a "structured file" object that wraps the given file object and
    provides numerous additional methods for writing structured data, such as
    "write_varint" and "write_long".
    Nc                     || _         || _        || _        d| _        t	        |d      | _        | j
                  r|j                  | _        y y )NFfileno)file_nameonclose	is_closedhasattris_realrB   )selffileobjnamerE   s       r.   __init__zStructFile.__init__@   sC    	
w1<<!..DK     c                 N    | j                   j                  d| j                  dS )N())	__class____name__rD   rI   s    r.   __repr__zStructFile.__repr__J   s    >>22DJJ??rM   c                     | j                   S r+   )rD   rS   s    r.   __str__zStructFile.__str__M   s    zzrM   c                     | S r+    rS   s    r.   	__enter__zStructFile.__enter__P   s    rM   c                 $    | j                          y r+   )close)rI   exc_typeexc_valexc_tbs       r.   __exit__zStructFile.__exit__S   s    

rM   c                 ,    t        | j                        S r+   )iterrC   rS   s    r.   __iter__zStructFile.__iter__V   s    DIIrM   c                     | j                   S r+   )rC   rS   s    r.   raw_filezStructFile.raw_fileY   s    yyrM   c                 :     | j                   j                  |i |S r+   )rC   readrI   argskwargss      r.   rf   zStructFile.read\       tyy~~t.v..rM   c                 :     | j                   j                  |i |S r+   )rC   readlinerg   s      r.   rl   zStructFile.readline_       !tyy!!42622rM   c                 :     | j                   j                  |i |S r+   )rC   writerg   s      r.   ro   zStructFile.writeb   s    tyy///rM   c                 :     | j                   j                  |i |S r+   )rC   tellrg   s      r.   rq   zStructFile.telle   rj   rM   c                 :     | j                   j                  |i |S r+   )rC   seekrg   s      r.   rs   zStructFile.seekh   rj   rM   c                 :     | j                   j                  |i |S r+   )rC   truncaterg   s      r.   ru   zStructFile.truncatek   rm   rM   c                 f    t        | j                  d      r| j                  j                          yy)zzFlushes the buffer of the wrapped file. This is a no-op if the
        wrapped file does not have a flush method.
        flushN)rG   rC   rw   rS   s    r.   rw   zStructFile.flushn   s%    
 499g&IIOO 'rM   c                     | j                   rt        d      | j                  r| j                  |        t        | j                  d      r| j                  j                          d| _         y)z!Closes the wrapped file.
        zThis file is already closedr[   TN)rF   	ExceptionrE   rG   rC   r[   rS   s    r.   r[   zStructFile.closev   sM     >>9::<<LL499g&IIOOrM   c                 l    ddl m} |xs | j                  }t         || j                  ||      |      S )Nr   )SubFilerK   )whoosh.filedb.compoundr{   rD   r@   rC   )rI   offsetlengthrK   r{   s        r.   subsetzStructFile.subset   s-    2!tzz'$))VV<4HHrM   c                 Z    | j                  t        |             | j                  |       y)zWrites a string to the wrapped file. This method writes the length
        of the string first, so you can read the string back without having to
        know how long it was.
        N)write_varintlenro   rI   ss     r.   write_stringzStructFile.write_string   s!    
 	#a&!

1rM   c                 P    | j                  t        t        |            |z          y r+   )ro   r   r   r   s     r.   write_string2zStructFile.write_string2   s    

;s1v&*+rM   c                 P    | j                  t        t        |            |z          y r+   )ro   r   r   r   s     r.   write_string4zStructFile.write_string4   s    

8CF#a'(rM   c                 @    | j                  | j                               S )z.Reads a string from the wrapped file.
        )rf   r'   rS   s    r.   read_stringzStructFile.read_string   s     yy))+,,rM   c                 D    | j                         }| j                  |      S r+   )read_ushortrf   rI   ls     r.   read_string2zStructFile.read_string2   s    yy|rM   c                 D    | j                         }| j                  |      S r+   )read_intrf   r   s     r.   read_string4zStructFile.read_string4   s    MMOyy|rM   c                 d    | j                  |      }|t        z   }| j                  ||      ||z   fS r+   )
get_ushortr   getrI   posr   bases       r.   get_string2zStructFile.get_string2   s4    OOC [ xxa $(**rM   c                 d    | j                  |      }|t        z   }| j                  ||      ||z   fS r+   )get_intr   r   r   s       r.   get_string4zStructFile.get_string4   s3    LLYxxa $(**rM   c                 H    | j                         }| j                  |d       y N   )r'   rs   r   s     r.   skip_stringzStructFile.skip_string   s    		!QrM   c                 8    | j                  t        |             y)zGWrites a variable-length unsigned integer to the wrapped file.
        N)ro   r&   rI   r:   s     r.   r   zStructFile.write_varint   s     	

6!9rM   c                 8    | j                  t        |             y)zEWrites a variable-length signed integer to the wrapped file.
        N)ro   r(   r   s     r.   write_svarintzStructFile.write_svarint   s     	

=#$rM   c                 ,    t        | j                        S )zXReads a variable-length encoded unsigned integer from the wrapped
        file.
        )r'   rf   rS   s    r.   r'   zStructFile.read_varint   s     499%%rM   c                 >    t        t        | j                              S )zVReads a variable-length encoded signed integer from the wrapped
        file.
        )r)   r'   rf   rS   s    r.   read_svarintzStructFile.read_svarint   s     $K		$:;;rM   c                     |dk  r| j                  t        |             y|dk  r| j                  dt        |      z          y| j                  dt        |      z          y)zWrites a sometimes-compressed unsigned integer to the wrapped file.
        This is similar to the varint methods but uses a less compressed but
        faster format.
           i     þ   ÿN)ro   chrr   r   r   s     r.   write_tagintzStructFile.write_tagint   sL     8JJs1v%ZJJvA./JJv	!,-rM   c                     t        | j                  d            }|dk(  r| j                         S |dk(  r| j                         S |S )zReads a sometimes-compressed unsigned integer from the wrapped file.
        This is similar to the varint methods but uses a less compressed but
        faster format.
        r         )ordrf   r   	read_uint)rI   tbs     r.   read_tagintzStructFile.read_tagint   sE     19##%%3Y>>##IrM   c                 8    | j                  t        |             y)z_Writes a single byte to the wrapped file, shortcut for
        ``file.write(chr(n))``.
        N)ro   r   rI   ns     r.   
write_bytezStructFile.write_byte   s     	

9Q< rM   c                 6    t        | j                  d            S r   )r   rf   rS   s    r.   	read_bytezStructFile.read_byte   s    499Q<  rM   c                 2    t        || j                  |       y)zDWrites a pickled representation of obj to the wrapped file.
        N)dump_picklerC   )rI   objprotocols      r.   write_picklezStructFile.write_pickle   s     	CH-rM   c                 ,    t        | j                        S )z6Reads a pickled object from the wrapped file.
        )load_picklerC   rS   s    r.   read_picklezStructFile.read_pickle   s     499%%rM   c                 8    | j                  t        |             y r+   )ro   r   r   s     r.   write_sbytezStructFile.write_sbyte       

:a=!rM   c                 8    | j                  t        |             y r+   )ro   r   r   s     r.   	write_intzStructFile.write_int   s    

8A;rM   c                 8    | j                  t        |             y r+   )ro   r   r   s     r.   
write_uintzStructFile.write_uint       

9Q< rM   c                 8    | j                  t        |             y r+   )ro   r   r   s     r.   write_uint_lezStructFile.write_uint_le   s    

<?#rM   c                 8    | j                  t        |             y r+   )ro   r   r   s     r.   write_ushortzStructFile.write_ushort  s    

;q>"rM   c                 8    | j                  t        |             y r+   )ro   r   r   s     r.   write_ushort_lezStructFile.write_ushort_le  s    

>!$%rM   c                 8    | j                  t        |             y r+   )ro   r    r   s     r.   
write_longzStructFile.write_long	  r   rM   c                 8    | j                  t        |             y r+   )ro   r"   r   s     r.   write_ulongzStructFile.write_ulong  r   rM   c                 8    | j                  t        |             y r+   )ro   r$   r   s     r.   write_floatzStructFile.write_float  r   rM   c                     t         rt        |      }|j                          | j                  r|j	                  | j
                         y | j                  t        |             y r+   )r   r   byteswaprH   tofilerC   ro   r   )rI   arrys     r.   write_arrayzStructFile.write_array  s?    :DMMO<<KK		"JJ}T*+rM   c                 <    t        | j                  d            d   S Nr   r   )r   rf   rS   s    r.   
read_sbytezStructFile.read_sbyte  s    DIIaL)!,,rM   c                 D    t        | j                  t                    d   S Nr   )r   rf   r   rS   s    r.   r   zStructFile.read_int  s    $))I./22rM   c                 D    t        | j                  t                    d   S r   )r   rf   r   rS   s    r.   r   zStructFile.read_uint!  s    499Y/033rM   c                 D    t        | j                  t                    d   S r   )r   rf   r   rS   s    r.   read_uint_lezStructFile.read_uint_le$  s    dii	23A66rM   c                 D    t        | j                  t                    d   S r   )r   rf   r   rS   s    r.   r   zStructFile.read_ushort'  s    TYY{34Q77rM   c                 D    t        | j                  t                    d   S r   )r   rf   r   rS   s    r.   read_ushort_lezStructFile.read_ushort_le*  s    		+ 67::rM   c                 D    t        | j                  t                    d   S r   )r!   rf   r   rS   s    r.   	read_longzStructFile.read_long-  s    499Z01!44rM   c                 D    t        | j                  t                    d   S r   )r#   rf   r   rS   s    r.   
read_ulongzStructFile.read_ulong0  s    DIIj12155rM   c                 D    t        | j                  t                    d   S r   )r%   rf   r   rS   s    r.   
read_floatzStructFile.read_float3  s    DIIk23A66rM   c                     t        |      }| j                  r|j                  | j                  |       n%t	        || j                  |t        |   z               t        r|j                          |S r+   )	r   rH   fromfilerC   r   rf   _SIZEMAPr   r   )rI   r-   r   as       r.   
read_arrayzStructFile.read_array6  sR    (O<<JJtyy&)Atyy(82D)DEFJJLrM   c                 F    | j                  |       | j                  |      S r+   )rs   rf   rI   positionr   s      r.   r   zStructFile.get@  s    		(yy  rM   c                 >    t        | j                  |d            d   S r   )r   r   rI   r   s     r.   get_bytezStructFile.get_byteD  s    488Ha01!44rM   c                 >    t        | j                  |d            d   S r   )r   r   r   s     r.   	get_sbytezStructFile.get_sbyteG  s    DHHXq12155rM   c                 F    t        | j                  |t                    d   S r   )r   r   r   r   s     r.   r   zStructFile.get_intJ  s    $((8Y78;;rM   c                 F    t        | j                  |t                    d   S r   )r   r   r   r   s     r.   get_uintzStructFile.get_uintM  s    488Hi89!<<rM   c                 F    t        | j                  |t                    d   S r   )r   r   r   r   s     r.   r   zStructFile.get_ushortP  s    TXXh<=a@@rM   c                 F    t        | j                  |t                    d   S r   )r!   r   r   r   s     r.   get_longzStructFile.get_longS  s    488Hj9:1==rM   c                 F    t        | j                  |t                    d   S r   )r#   r   r   r   s     r.   	get_ulongzStructFile.get_ulongV  s    DHHXz:;A>>rM   c                 F    t        | j                  |t                    d   S r   )r%   r   r   r   s     r.   	get_floatzStructFile.get_floatY  s    DHHX{;<Q??rM   c                 H    | j                  |       | j                  ||      S r+   )rs   r   )rI   r   r-   r   s       r.   	get_arrayzStructFile.get_array\  s    		(x00rM   NNr+   ))ErR   
__module____qualname____doc__rL   rT   rV   rY   r_   rb   rd   rf   rl   ro   rq   rs   ru   rw   r[   r   r   r   r   r   r   r   r   r   r   r   r   r'   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rX   rM   r.   r@   r@   :   sP   
)@/30//3
I,)-
+
+

%
&<.!!.
&
" !$#&!"",-3478;567!56<=A>?@1rM   r@   c                   (    e Zd ZddZddZd Zd Zy)
BufferFileNc                 j    || _         || _        t        |      | _        || _        d| _        d| _        y )NF)_bufrD   r   rC   rE   rH   rF   )rI   bufrK   rE   s       r.   rL   zBufferFile.__init__b  s0    	
CL	rM   c                 \    |xs | j                   }t        | j                  ||      |      S )Nr|   )rD   r  r   )rI   r   r   rK   s       r.   r   zBufferFile.subsetk  s(    !tzz$((8V44@@rM   c                 8    t        | j                  |||z          S r+   )r   r  r   s      r.   r   zBufferFile.geto  s    $))HX->?@@rM   c           	          t        |      }t        || j                  ||t        |   z               t        r|j                          |S r+   )r   r   r   r   r   r   )rI   r   r-   r   r   s        r.   r  zBufferFile.get_arrayr  s;    (O488Hfx7I.IJKJJLrM   r  r+   )rR   r
  r  rL   r   r   r  rX   rM   r.   r  r  a  s    AArM   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ChecksumFilec                 x    t        j                  | g|i | d| _        t        d      j                  | _        y )Nr   zlib)r@   rL   _check
__import__crc32_crc32rg   s      r.   rL   zChecksumFile.__init__{  s3    D24262 (..rM   c              #   x   K   | j                   D ]'  }| j                  || j                        | _        | ) y wr+   )rC   r  r  )rI   lines     r.   rb   zChecksumFile.__iter__  s4     II 	D++dDKK8DKJ	s   8:c                     t        d      )NzCannot seek on a ChecksumFile)ry   )rI   rh   s     r.   rs   zChecksumFile.seek  s    788rM   c                      | j                   j                  |i |}| j                  || j                        | _        |S r+   )rC   rf   r  r  )rI   rh   ri   r6   s       r.   rf   zChecksumFile.read  s6    DIINND+F+kk!T[[1rM   c                 |    | j                  || j                        | _        | j                  j                  |       y r+   )r  r  rC   ro   )rI   r6   s     r.   ro   zChecksumFile.write  s(    kk!T[[1		rM   c                      | j                   dz  S )Nl    )r  rS   s    r.   checksumzChecksumFile.checksum  s    {{Z''rM   N)	rR   r
  r  rL   rb   rs   rf   ro   r#  rX   rM   r.   r  r  z  s     /

9
(rM   r  N)4r   r   structr   whoosh.compatr   r   r	   r   r
   r   r   r   whoosh.systemr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   whoosh.util.varintsr&   r'   r(   r)   dictr   	_ORDERMAP_typesobjectr@   r  r  rX   rM   r.   <module>r,     s   8    - - - 8 I I # J J 4 : F F 6 J J 2 3 C K{KK3'	
)d1 d1N	 2(: (rM   