
    4)di*                        d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ ej                            d          r edej         d          ddZddZ G d d          ZdS )    )annotationsN)CreationError)UnionIterableOptionaloverloadIteratorAnyz2.zKbitstring version 4.3 requires bitarray version 3 or higher. Found version .sslicelengthintreturntuple[int, int | None, int]c                    | j         | j         dk    r|                     |          S | j         dk     sJ |                     |          \  }}}|dk     rd}|||fS )zA better implementation of slice.indices such that a
    slice made from [start:stop:step] will actually equal the original slice.Nr   )stepindices)r   r   startstopr   s        Y/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/bitstring/bitstore.pyr   r   
   si     	v~!yy   6A::::		&))E4axx$    keyc                    t          | |          \  }}}|1|dk     r+||dz   }d }nA|}||dz   |z
  |z  |z  z   }||z
  }||z
  dz
  }n |}||dz
  |z
  |z  |z  z   }||z
  dz
  }||z
  }t          ||| j                  S )Nr      )r   r   r   )	r   r   r   r   r   	new_startnew_stopfirst_elementlast_elements	            r   offset_slice_indices_lsb0r       s    V,,E4D1HH<	IHH!M TAX%5$$>$#FFL-I-1HHE!1d :dBB\)A-	M)Hch///r   c                      e Zd ZdZdZ	 	 dQdRdZedS fd            ZedTdU fd            ZdVdZ	dWdZ
dXdYdZdXdYdZdXdZdZdXdZdZdXdZdZd[d Zd[d!Zd\d#Zd[d$Zd[d%Zd[d&Zd[d'Zd[d(Zd[d)Zd]d^d,Zd]d_d-Zd]d`d/Zd]d`d0Zdad1Zdbd2Zdbd3Zdcd5Z ddd6Z!ddd7Z"ded;Z#dfd=Z$dgd@Z%dgdAZ&dhdCZ'dhdDZ(dfdEZ)e*didF            Z+e*djdG            Z+dkdHZ+dldIZ,dTdmdJZ-dTdmdKZ.dndLZ/dndMZ0dadNZ1dO Z2dP Z3 xZ4S )oBitStorez8A light wrapper around bitarray that does the LSB0 stuff)	_bitarraymodified_length	immutableNFinitializer(Union[int, bitarray.bitarray, str, None]r%   boolr   Nonec                T    t          j         |          | _        || _        d | _        d S N)bitarrayr#   r%   r$   )selfr&   r%   s      r   __init__zBitStore.__init__.   s)    !*;77"#r   b#Union[bytes, bytearray, memoryview]c                   t                                          |           }t          j                    |_        |j                            |           d|_        d |_        |S NF)super__new__r,   r#   	frombytesr%   r$   )clsr/   x	__class__s      r   r5   zBitStore.frombytes4   sR    GGOOC  '))	a    r   r   Optional[int]c               p   t                                          |           }t          j        |          |_        d|_        ||_        |j        d|j        dk     rt          d          |j        t          |j                  k    r-t          d|j         dt          |j                   d          |S )N)bufferTr   z.Can't create bitstring with a negative length.z(Can't create bitstring with a length of z from z bits of data.)r3   r4   r,   r#   r%   r$   r   len)r6   r;   r   r7   r8   s       r   
frombufferzBitStore.frombuffer=   s    GGOOC  'v666"( 1$$#$TUUU 3q{#3#333#xq?PxxX[\]\gXhXhxxxz z zr   valuer   c               :    | j                             |           d S r+   )r#   setallr-   r>   s     r   r@   zBitStore.setallL   s    e$$$$$r   bytesc                    | j         &| j        d | j                                                  S | j                                        S r+   )r$   r#   tobytesr-   s    r   rD   zBitStore.tobytesO   sA    +>"74#7"78@@BBB~%%'''r   r   endc                v    t           j                            |                     ||          j        d          S )NFsignedr,   utilba2intgetslicer#   r-   r   rF   s      r   slice_to_uintzBitStore.slice_to_uintT   s/    }##DMM%$=$=$GPU#VVVr   c                v    t           j                            |                     ||          j        d          S )NTrH   rJ   rN   s      r   slice_to_intzBitStore.slice_to_intW   s/    }##DMM%$=$=$GPT#UUUr   strc                r    t           j                            |                     ||          j                  S r+   )r,   rK   ba2hexrM   r#   rN   s      r   slice_to_hexzBitStore.slice_to_hexZ   s)    }##DMM%$=$=$GHHHr   c                \    |                      ||          j                                        S r+   )rM   r#   to01rN   s      r   slice_to_binzBitStore.slice_to_bin]   s%    }}UC((277999r   c                t    t           j                            d|                     ||          j                  S )N   )r,   rK   ba2baserM   r#   rN   s      r   slice_to_octzBitStore.slice_to_oct`   s+    }$$QeS(A(A(KLLLr   otherc               0    | xj         |j         z  c_         | S r+   r#   r-   r]   s     r   __iadd__zBitStore.__iadd__c       %/)r   c               8    |                                  }||z  }|S r+   )_copy)r-   r]   bss      r   __add__zBitStore.__add__g   s    ZZ\\
e	r   r
   c               "    | j         |j         k    S r+   r_   r`   s     r   __eq__zBitStore.__eq__l   s    ~00r   c               :    t          | j        |j        z            S r+   r"   r#   r`   s     r   __and__zBitStore.__and__o       8999r   c               :    t          | j        |j        z            S r+   rj   r`   s     r   __or__zBitStore.__or__r   rl   r   c               :    t          | j        |j        z            S r+   rj   r`   s     r   __xor__zBitStore.__xor__u   rl   r   c               0    | xj         |j         z  c_         | S r+   r_   r`   s     r   __iand__zBitStore.__iand__x   rb   r   c               0    | xj         |j         z  c_         | S r+   r_   r`   s     r   __ior__zBitStore.__ior__|   rb   r   c               0    | xj         |j         z  c_         | S r+   r_   r`   s     r   __ixor__zBitStore.__ixor__   rb   r   re   bytealignedc                    |s!| j                             |j         ||          S 	 t          |                     ||||                    S # t          $ r Y dS w xY w)N)r#   findnextfindall_msb0StopIterationr-   re   r   rF   rw   s        r   rz   zBitStore.find   sp     	A>&&r|UC@@@	))"eS+FFGGG 	 	 	22	s   $A
 

AAc                    |s#| j                             |j         ||d          S 	 t          |                     ||||                    S # t          $ r Y dS w xY w)NTrightry   )r#   rz   r{   rfindall_msb0r}   r~   s        r   rfindzBitStore.rfind   su     	M>&&r|UCt&LLL	**2uc;GGHHH 	 	 	22	s   $A 
AAIterator[int]c              #    K   |du rt          |          dz  dk    r|                                }|dz   dz  }|dz  }| j        |dz  |dz                                           }d}	||z
  }
|	|
k     r2|                    ||	          }	|	dk    rn|	|z   dz  V  |	dz   }	|	|
k     2d S | j                            |j        ||          }|s|D ]}|V  d S |D ]}|dz  dk    r|V  d S )NTrZ   r      ry   r   )r<   rD   r#   rz   search)r-   re   r   rF   rw   bytes_
start_byteend_byter/   byte_posbytes_to_searchips                r   r|   zBitStore.findall_msb0   sU     $3r77Q;!#3#3ZZ\\F  !))JaxHzA~x!|;<DDFFAH&3O_,,66&(33r>>*,1111#a< _,, FN!!",s;; 	      Ea<<GGG r   c              #     K   | j                             |j         ||d          }|s|D ]}|V  d S |D ]}|dz  dk    r|V  d S )NTr   rZ   r   )r#   r   )r-   re   r   rF   rw   r   r   s          r   r   zBitStore.rfindall_msb0   s      N!!",s$!GG 	      Ea<<GGG r   c               6    | j                             |          S r+   )r#   countrA   s     r   r   zBitStore.count   s    ~##E***r   c                8    | j                                          d S r+   )r#   clearrE   s    r   r   zBitStore.clear   s    r   c                8    | j                                          d S r+   )r#   reverserE   s    r   r   zBitStore.reverse   s         r   Iterable[bool]c              #  v   K   t          t          |                     D ]}|                     |          V  d S r+   )ranger<   getindex)r-   r   s     r   __iter__zBitStore.__iter__   sH      s4yy!! 	# 	#A--""""""	# 	#r   c                *    t          | j                  S )z5Always creates a copy, even if instance is immutable.rj   rE   s    r   rd   zBitStore._copy   s    '''r   c                <    | j         r| n|                                 S r+   )r%   rd   rE   s    r   copyzBitStore.copy   s    ~7tt4::<<7r   itemUnion[int, slice]Union[int, BitStore]c                   t           r+   )NotImplementedError)r-   r   s     r   __getitem__zBitStore.__getitem__   s    !!r   indexc               P    t          | j                            |                    S r+   r(   r#   r   r-   r   s     r   getindex_msb0zBitStore.getindex_msb0   s     DN..u55666r   r   r   c                   | j         !t          |                    | j                    }t          | j                            |                    S r+   )r$   r   r   r"   r#   r   r-   r   s     r   getslice_withstep_msb0zBitStore.getslice_withstep_msb0   sB    +T%9::;C22377888r   c                   t          |t          |                     }t          | j                            |                    S r+   )r    r<   r"   r#   r   r   s     r   getslice_withstep_lsb0zBitStore.getslice_withstep_lsb0   s5    'SYY7722377888r   r   c                   | j         >t          t          ||d                               | j                    }|j        }|j        }t          | j        ||                   S r+   )r$   r   r   r   r   r"   r#   )r-   r   r   r   s       r   getslice_msb0zBitStore.getslice_msb0   sY    +udD1199$:NOOPCIE8DuTz2333r   c                   t          t          ||d           t          |                     }t          | j        |j        |j                           S r+   )r    r   r<   r"   r#   r   r   )r-   r   r   r   s       r   getslice_lsb0zBitStore.getslice_lsb0   s@    %eE4&>&>D		JJqwqv~6777r   c               X    t          | j                            | dz
                      S Nr   r   r   s     r   getindex_lsb0zBitStore.getindex_lsb0   s&    DN..vz::;;;r   c                   d S r+    r-   r   r>   s      r   setitem_lsb0zBitStore.setitem_lsb0       r   c                   d S r+   r   r   s      r   r   zBitStore.setitem_lsb0   r   r   c                   t          |t                    r?t          |t          |                     }| j                            ||j                   d S | j                            | dz
  |           d S r   )
isinstancer   r    r<   r#   __setitem__)r-   r   r>   	new_slices       r   r   zBitStore.setitem_lsb0   sm    c5!! 	81#s4yyAAIN&&y%/BBBBBN&&tax77777r   c                   t          |t                    r9t          |t          |                     }| j                            |           d S | j                            | dz
             d S r   )r   r   r    r<   r#   __delitem__)r-   r   r   s      r   delitem_lsb0zBitStore.delitem_lsb0   sg    c5!! 	11#s4yyAAIN&&y11111N&&tax00000r   c               t    || j                             |           d S | j                                          d S r+   r#   invertr   s     r   invert_msb0zBitStore.invert_msb0  s>    N!!%(((((N!!#####r   c               |    | | j                             | dz
             d S | j                                          d S r   r   r   s     r   invert_lsb0zBitStore.invert_lsb0  sD    N!!5&1*-----N!!#####r   c                4    | j                                         S r+   )r#   anyrE   s    r   any_setzBitStore.any_set      ~!!###r   c                4    | j                                         S r+   )r#   allrE   s    r   all_setzBitStore.all_set  r   r   c                F    | j         | j         nt          | j                  S r+   )r$   r<   r#   rE   s    r   __len__zBitStore.__len__  s$    '+';'Gt##SQUQ_M`M``r   c                   t          |t                    r"| j                            ||j                   d S | j                            ||           d S r+   )r   r"   r#   r   r   s      r   setitem_msb0zBitStore.setitem_msb0  sR    eX&& 	3N&&sEO<<<<<N&&sE22222r   c               :    | j                             |           d S r+   )r#   r   r   s     r   delitem_msb0zBitStore.delitem_msb0  s    ""3'''''r   r2   )r&   r'   r%   r(   r   r)   )r/   r0   r   r"   r+   )r   r9   r   r"   )r>   r   r   r)   )r   rB   )NN)r   r9   rF   r9   r   r   )r   r9   rF   r9   r   rR   )r]   r"   r   r"   )r]   r
   r   r(   )F)
re   r"   r   r   rF   r   rw   r(   r   r   )re   r"   r   r   rF   r   rw   r(   )
re   r"   r   r   rF   r   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   r9   r   r9   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   r9   r   r)   )r   r(   )5__name__
__module____qualname____doc__	__slots__r.   classmethodr5   r=   r@   rD   rO   rQ   rU   rX   r\   ra   rf   rh   rk   rn   rp   rr   rt   rv   rz   r   r|   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r8   s   @r   r"   r"   )   so       BB=IOS#($ $ $ $ $      [       [% % % %( ( ( (
W W W W WV V V V VI I I I I: : : : :M M M M M      
1 1 1 1: : : :: : : :: : : :                     8    + + + +   ! ! ! !# # # #( ( ( (8 8 8 8" " " "7 7 7 79 9 9 9
9 9 9 94 4 4 48 8 8 8< < < <    X    X8 8 8 81 1 1 1$ $ $ $ $$ $ $ $ $$ $ $ $$ $ $ $a a a a3 3 3( ( ( ( ( ( (r   r"   )r   r   r   r   r   r   )r   r   r   r   r   r   )
__future__r   r,   bitstring.exceptionsr   typingr   r   r   r   r	   r
   __version__
startswithImportErrorr   r    r"   r   r   r   <module>r      s    " " " " " "  . . . . . . E E E E E E E E E E E E E E E E""4(( }
+{dldx{{{
|
||	 	 	 	0 0 0 0(u( u( u( u( u( u( u( u( u( u(r   