
    (i;                     N    d dl mZmZ d dlmZmZ 	 ddeee      dee   defdZy)	    )OptionalSequence)InsufficientDataWeb3ValueErrorNvalues
percentilereturnc                 p   | dt               g fv st        |       dk  rt        d|       |t        d|       |dk  s|dkD  rt        d      t	        |       }t        |       |z  dz  dz
  }|dk  r|d   S |dz  }|dk(  r|t        |         S t        ||z
        }||   }||dz      }||||z
  z  z   S )z3Calculates a simplified weighted average percentileN   z0Expected a sequence of at least 1 integers, got z"Expected a percentile choice, got r   d   z(percentile must be in the range [0, 100])tuplelenr   r   sortedint)r   r   sorted_valuesindex
fractionalintegerlowerhighers           A/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/math.pyr   r      s     $$$Fa>vjI
 	
 A*NOOA~c)GHH6NMK*$s*Q.EqyQJQSZ((%*$%G'"E7Q;'F:%000    )NN)	typingr   r   web3.exceptionsr   r   r   floatr    r   r   <module>r      s@   
 KO1Xc]#18@1
1r   