
    4)di#                       U d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
Z
d dlmZ d dlZd dlmZmZ d dlmZmZmZmZmZmZmZ dZd;dZ ej        e          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$dAdZ%dBd Z&dBd!Z'dBd"Z(dBd#Z)dBd$Z*dBd%Z+dBd&Z,d'  e-d(d)          D             Z.dBd*Z/dBd+Z0dCd/Z1dCd0Z2dDd1Z3eeeee e d2Z4d3e5d4<   dEd:Z6dS )F    )annotationsN)UnionOptionalDictCallableBitStore)p4binary_fmtp3binary_fmt)e3m2mxfp_fmte2m3mxfp_fmte2m1mxfp_fmte4m3mxfp_saturate_fmte5m2mxfp_saturate_fmte4m3mxfp_overflow_fmte5m2mxfp_overflow_fmt   sstrreturnc                   	 |                                  }n8# t          t          f$ r$ t          dt	          |            d|  d          w xY wd                    |                                                              dd          S )zMReturn string made lowercase and with all whitespace and underscores removed.z#Expected str object but received a z with value . _)splitAttributeError	TypeError
ValueErrortypejoinlowerreplace)r   ts     a/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/bitstring/bitstore_helpers.pytidy_input_stringr%      s    ZGGIII& Z Z ZXtAwwXXTUXXXYYYZ771::%%c2...s	    5Ar	   c                    t           j                            |           \  }}t                      }|D ]}|t	          | z  }d|_        |S )NT)	bitstringutilstokenparserr	   bitstore_from_token	immutable)r   r   tokensbstokens        r$   str_to_bitstorer/      sQ    ++A..IAv	B * *
!5))BLI    	binstringc                    t          |           } |                     dd          } 	 t          |           S # t          $ r t	          j        d|  d          w xY w)N0br   z%Invalid character in bin initialiser r   )r%   r"   r	   r   r'   CreationErrorr1   s    r$   bin2bitstorer6   %   st    !),,I!!$++I\	""" \ \ \%&Zi&Z&Z&Z[[[\s	   6 #Ac                     t          |           S )Nr   r5   s    r$   bin2bitstore_unsafer8   .   s    Ir0   	hexstringc                    t          |           } |                     dd          } 	 t          j                            |           }n"# t
          $ r t          j        d          w xY wt          |          S )N0xr   z"Invalid symbol in hex initialiser.)	r%   r"   bitarrayutilhex2bar   r'   r4   r	   )r9   bas     r$   hex2bitstorer@   2   s~    !),,I!!$++IL]!!),, L L L%&JKKKLB<<s   A A&	octstringc                    t          |           } |                     dd          } 	 t          j                            d|           }n"# t
          $ r t          j        d          w xY wt          |          S )N0or      z"Invalid symbol in oct initialiser.)	r%   r"   r<   r=   base2bar   r'   r4   r	   )rA   r?   s     r$   oct2bitstorerF   <   s    !),,I!!$++IL]""1i00 L L L%&JKKKLB<<s    A A'iUnion[str, int]c                   t          |           } | dk     rt          j        d          | dk    rt          d          S | dz   }d}|dk    r|dz  }|dz  }|dk    | dz   d|z  z
  }t          d|z  dz             t	          ||d          z   S )Nr   z@Cannot use negative initialiser for unsigned exponential-Golomb.1   0F)intr'   r4   r	   int2bitstore)rG   tmpleadingzerosremainingparts       r$   ue2bitstorerS   F   s    AA1uu%&hiiiAvv}}
a%CL
''	 '' EQ,./MC,&,--]LZ_0`0```r0   c                f    t          |           } | dk    r	| dz  dz
  }nd| z  }t          |          S )Nr      rK   )rN   rS   )rG   us     r$   se2bitstorerX   U   s:    AA1uuUaKFq>>r0   c           	         t          |           } | dk     rt          j        d          t          | dk    rdn2dd                    t          | dz             dd                    z   dz             S )Nr   zLCannot use negative initialiser for unsigned interleaved exponential-Golomb.rJ   rM   rK      )rN   r'   r4   r	   r    binrG   s    r$   uie2bitstorer]   ^   sj    AA1uu%&tuuu166CCsSXXc!a%jjn-E-E'E'KLLLr0   c                    t          |           } | dk    rt          d          S t          t          |                     | dk     rt          d          nt          d          z   S )Nr   rJ   rM   )rN   r	   r]   absr\   s    r$   sie2bitstorer`   e   sS    AAAvv}}CFF##Ax}}}8C==QQr0   fUnion[str, float]
big_endianboolc                \   t          |           } |rdnd}	 t          j        ||           }nG# t          $ r: t          j        || dk    rt          d          nt          d                    }Y nw xY w|rt	          j        |dd                   nt	          j        |dd                   S )N>f<fr   inf-infrU      floatstructpackOverflowErrorr	   	frombytes)ra   rc   fmtbs       r$   bfloat2bitstorers   m   s    aA
&$$$CGKQ G G GKQUUU5\\\fFFG *4S8a!f%%%9KAaPQcF9S9SSs   - AA10A1c                j    t          |           } t          j        |           }t          |dd          S NrD   F)rl   r
   float_to_int8rO   ra   rW   s     r$   p4binary2bitstorerx   x   /    aA"1%%A1e$$$r0   c                j    t          |           } t          j        |           }t          |dd          S ru   )rl   r   rv   rO   rw   s     r$   p3binary2bitstorer{   ~   ry   r0   c                    t          |           } t          j        j        dk    rt	          j        |           }nt          j        |           }t          |dd          S NsaturaterD   F)rl   r'   optionsmxfp_overflowr   float_to_intr   rO   rw   s     r$   e4m3mxfp2bitstorer      R    aA&*44!.q11!.q111e$$$r0   c                    t          |           } t          j        j        dk    rt	          j        |           }nt          j        |           }t          |dd          S r}   )rl   r'   r   r   r   r   r   rO   rw   s     r$   e5m2mxfp2bitstorer      r   r0   c                    t          |           } t          j        |           rt          d          t	          j        |           }t          |dd          S )NzRCannot convert float('nan') to e3m2mxfp format as it has no representation for it.   F)rl   mathisnanr   r   r   rO   rw   s     r$   e3m2mxfp2bitstorer      O    aAz!}} omnnn!!$$A1e$$$r0   c                    t          |           } t          j        |           rt          d          t	          j        |           }t          |dd          S )NzRCannot convert float('nan') to e2m3mxfp format as it has no representation for it.r   F)rl   r   r   r   r   r   rO   rw   s     r$   e2m3mxfp2bitstorer      r   r0   c                    t          |           } t          j        |           rt          d          t	          j        |           }t          |dd          S )NzRCannot convert float('nan') to e2m1mxfp format as it has no representation for it.rj   F)rl   r   r   r   r   r   rO   rw   s     r$   e2m1mxfp2bitstorer      r   r0   c                2    g | ]}t          d |z            S )rU   )rl   ).0xs     r$   
<listcomp>r      s"    CCCQ5a==CCCr0   i   c                    t          |           } t          j        |           rt          d          S 	 t                              |           }n # t          $ r t          |  d          w xY wt          |dd          S )N11111111z| is not a valid e8m0mxfp value. It must be exactly 2 ** i, for -127 <= i <= 127 or float('nan') as no rounding will be done.rD   F)rl   r   r   r	   e8m0mxfp_allowed_valuesindexr   rO   ra   rG   s     r$   e8m0mxfp2bitstorer      s    aAz!}} $
###]#))!,, ] ] ]A  \  \  \  ]  ]  	]]1e$$$s   A A,c                   t          |           } t          j        |           rt          d          | dz  } | dk    rt	          d          S | dk    rt	          d          S | dk    r(| dz  } t          |           }| |z
  dk    r
|d	z  r|d
z  }n'| dz  } t          |           }| |z
  dk    r
|d	z  r|d
z  }t          |dd          S )NzOCannot convert float('nan') to mxint format as it has no representation for it.@      01111111i10000000g        g      ?rU   rK   rD   T)rl   r   r   r   r	   rN   rO   r   s     r$   mxint2bitstorer      s    aAz!}} ljkkkKA3ww
###Dyy
###Cxx	SFFq5C<<AE<FA	SFFq5C<<AE<FA1d###r0   rN   lengthsignedc                   t          |           } 	 t          t          j                            | |d|                    }n# t
          $ r}|rJ| d|dz
  z  k    s| d|dz
  z   k     r0t          j        |  d| dd|dz
  z    dd|dz
  z  dz
   d          nF| d|z  k    r#t          j        |  d| d	d|z  dz
   d          | d
k     rt          j        d          |d }~ww xY w|S )Nbig)r   endianr   rK   z9 is too large a signed integer for a bitstring of length z. The allowed range is [z, z].z< is too large an unsigned integer for a bitstring of length z. The allowed range is [0, r   z2uint cannot be initialised with a negative number.)rN   r	   r<   r=   int2baro   r'   r4   )rG   r   r   r   es        r$   rO   rO      s   AAX]))!F5QW)XXYY    		dQ6A:&''1vz1B/C+C+C- /q /qms /q /q?@VaZ?P=Q/q /qVW\bef\fVgklUl/q /q /q r r r ,D Q&[!!- /V /Vpv /V /VABfPQ@Q/V /V /V W W W1uu-.bccc Hs   0A 
C%BC  C%c                    t          | ||                                          }t          j        |d d d                   S )NrL   )rO   tobytesr	   rp   )rG   r   r   r   s       r$   intle2bitstorer      s:    Q''//11Aa"g&&&r0   c                8   t          |           } |rdddd|         ndddd|         }	 t          j        ||           }nG# t          $ r: t          j        || dk    rt          d	          nt          d
                    }Y nw xY wt	          j        |          S )Nz>erf   z>d)       r   z<erg   z<dr   rh   ri   rk   )ra   r   rc   rq   rr   s        r$   float2bitstorer      s    aA4>
jt4
(
(
0
0SW]aDbDbciDjCGKQ G G GKQUUU5\\\fFFG a   s   A ABB)r;   0Xr3   0BrC   0Oz"Dict[str, Callable[..., BitStore]]literal_bit_funcsnametoken_lengthOptional[int]valueOptional[str]c                   | t           v rt          |          |          S 	 t          j                            | |          }n)# t          $ r}t          j        d|           d }~ww xY w|| dk    rt	          d|  d          |                    |          j        }|It          |          |j	        k    r1t          j        d| dt          |           d|  d| d	| d
          |S )NzCan't parse token: padzToken z requires a value.zToken with length z packed with value of length z (:=z).)
r   r'   dtypesDtyper   r4   build	_bitstorelen	bitlength)r   r   r   dr   r-   s         r$   r*   r*     sK       &u---A""466 A A A%&?A&?&?@@@A}:$:::;;;	
	!BCGGq{$:$:% 'J< 'J 'Jfijlfmfm 'J 'J*.'J 'J1='J 'J@E'J 'J 'J K K 	KIs    A 
A'A""A')r   r   r   r   )r   r   r   r	   )r1   r   r   r	   )r9   r   r   r	   )rA   r   r   r	   )rG   rH   r   r	   )ra   rb   rc   rd   r   r	   )ra   rb   r   r	   )rG   rN   r   rN   r   rd   r   r	   )ra   rb   r   rN   rc   rd   r   r	   )r   r   r   r   r   r   r   r	   )7
__future__r   rm   r   	functoolstypingr   r   r   r   r<   bitstring.bitstorer	   r'   bitstring.fp8r
   r   bitstring.mxfpr   r   r   r   r   r   r   
CACHE_SIZEr%   	lru_cacher/   r6   r8   r@   rF   rS   rX   r]   r`   rs   rx   r{   r   r   r   r   r   ranger   r   r   rO   r   r   r   __annotations__r*    r0   r$   <module>r      s~   " " " " " " "       2 2 2 2 2 2 2 2 2 2 2 2  ' ' ' ' ' '     4 4 4 4 4 4 4 4a a a a a a a a a a a a a a a a a a 
/ / / / Z     ! \ \ \ \         a a a a   M M M MR R R RT T T T% % % %% % % %% % % %% % % %% % % %% % % %% % % % DC%%c2B2BCCC % % % %$ $ $ $0   &' ' ' '
! ! ! ! 




9 9          r0   