3 \P @s@dddddddddd d d g Zd d lZd d lZd d lZd d lZd dlmZd dlmZd dlm Z m Z d dl m Z m Z GdddeZd4ddZddZddZddZddZddZdd Zd!d"Zd5d$d%Zd&d Zd'd Zd(dZd)dZd*dZd6d,dZd-d Zd7d.d/Z d8d0dZ!d9d1dZ"d:d2dZ#d;d3dZ$d S)<StatisticsErrorpstdev pvariancestdevvariancemedian median_low median_highmedian_groupedmeanmode harmonic_meanN)Fraction)Decimal)groupbychain) bisect_left bisect_rightc@s eZdZdS)rN)__name__ __module__ __qualname__rr"/usr/lib64/python3.6/statistics.pyrcsc Csd}t|\}}||i}|j}ttt|}xRt|tD]D\}} t||}x0tt| D]"\}}|d7}||d|||<qVWq8Wd|kr|d} ntddt|j D} || |fS)Nr css|]\}}t||VqdS)N)r).0dnrrr sz_sum..) _exact_ratioget_coerceinttypermapsumsorteditems) datastartcountrrZpartialsZ partials_getTtypvaluestotalrrr_sumis$  r.c Cs(y|jStk r"tj|SXdS)N)Z is_finiteAttributeErrormathZisfinite)xrrr _isfinitesr2cCs||kr |S|tks|tkr |S|tkr,|St||r:|St||rH|St|trV|St|trd|St|tr|t|tr||St|trt|tr|Sd}t||j|jfdS)Nz"don't know how to coerce %s and %s)r!bool issubclassrfloat TypeErrorr)r*Smsgrrrr s(     r cCsydt|tkst|tkr"|jSy |j|jfStk r`y|jStk rZYnXYnXWnttfk r|dfSXd}t |j t|j dS)Nz0can't convert type '{}' to numerator/denominator) r"r5ras_integer_ratio numerator denominatorr/ OverflowError ValueErrorr6formatr)r1r8rrrrs  rc Csjt||kr|St|tr(|jdkr(t}y||Stk rdt|tr^||j||jSYnXdS)Nr)r"r4r!r;r5r6rr:)valuer*rrr_converts  r@cCs`tjt|j}|s|S|dd}x4tdt|D]"}||d|kr6|d|}Pq6W|S)Nr r) collectionsCounteriter most_commonrangelen)r'tableZmaxfreqirrr_countss  rIcCs.t||}|t|kr&|||kr&|StdS)N)rrFr=)ar1rHrrr _find_lteq s rKcCs>t|||d}|t|dkr6||d|kr6|dStdS)N)lor)rrFr=)rJlr1rHrrr _find_rteqs rNnegative valueccs(x"|D]}|dkrt||VqWdS)Nr )r)r,errmsgr1rrr _fail_negs rQcCsHt||krt|}t|}|dkr,tdt|\}}}t|||S)Nrz%mean requires at least one data point)rClistrFrr.r@)r'rr*r-r)rrrr #s c Cst||krt|}d}t|}|dkr2tdn<|dkrn|d}t|tjtfrf|dkrbt||Stdy"t ddt ||D\}}}Wnt k rdSXt |||S)Nz.harmonic mean does not support negative valuesrz.harmonic_mean requires at least one data pointr zunsupported typecss|]}d|VqdS)rNr)rr1rrrrdsz harmonic_mean..) rCrRrFr isinstancenumbersZRealrr6r.rQZeroDivisionErrorr@)r'rPrr1r*r-r)rrrr =s$  "cCs\t|}t|}|dkr td|ddkr8||dS|d}||d||dSdS)Nr zno median for empty datar)r%rFr)r'rrHrrrrls   cCsLt|}t|}|dkr td|ddkr8||dS||ddSdS)Nr zno median for empty datarVr)r%rFr)r'rrrrrs   cCs,t|}t|}|dkr td||dS)Nr zno median for empty datarV)r%rFr)r'rrrrrs rc Cst|}t|}|dkr"tdn|dkr2|dS||d}x*||fD]}t|ttfrHtd|qHWy||d}Wn(tk rt|t|d}YnXt||}t |||}|}||d} |||d|| S)Nr zno median for empty datarrVzexpected number but got %r) r%rFrrSstrbytesr6r5rKrN) r'Zintervalrr1objLl1l2Zcffrrrr s&     cCsBt|}t|dkr |ddS|r6tdt|ntddS)Nrr z.no unique mode; found %d equally common valueszno mode for empty data)rIrFr)r'rGrrrr s  csddkrt|tfdd|D\}}}tfdd|D\}}}||dt|8}||fS)Nc3s|]}|dVqdS)rVNr)rr1)crrrsz_ss..c3s|]}|VqdS)Nr)rr1)r^rrrsrV)r r.rF)r'r^r*r-r)UZtotal2Zcount2r)r^r_sss r`cCsLt||krt|}t|}|dkr,tdt||\}}t||d|S)NrVz*variance requires at least two data pointsr)rCrRrFrr`r@)r'xbarrr*ssrrrr"s& cCsHt||krt|}t|}|dkr,tdt||\}}t|||S)Nrz*pvariance requires at least one data point)rCrRrFrr`r@)r'murr*rbrrrrQs' c Cs2t||}y|jStk r,tj|SXdS)N)rsqrtr/r0)r'ravarrrrrs c Cs2t||}y|jStk r,tj|SXdS)N)rrdr/r0)r'rcrerrrrs )r )rO)r)N)N)N)N)N)%__all__rAdecimalr0rTZ fractionsrr itertoolsrrZbisectrrr=rr.r2r rr@rIrKrNrQr r rrrr r r`rrrrrrrrOsB    :  / 7*  / 0