;ò )úFc@sÐdklZdkZdklZdfd„ƒYZdfd„ƒYZdefd„ƒYZeZd efd „ƒYZ e Z d fd „ƒYZ d efd„ƒYZ e Z de fd„ƒYZeZdS((s nested_scopesN(sticks _partdatacBstZdZd„ZRS(sGstate storage class for a partfunction partdata is used to keep local data and a current state to emulate generators. In the future we might use yield statements within a partfunction. Currently we add partdata by a lambda construct and do inplace modifications within partdata to keep track of the state. cKs1x*|iƒD]\}}t|||ƒq WdS(N(skwargssitemsskeysvaluessetattrsself(sselfskwargssvalueskey((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys__init__)s (s__name__s __module__s__doc__s__init__(((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys _partdata s s_partercBstZdZd„ZRS(sinterface of a partitionercCsgSdS(sreturns a list of partfunctions A partfunction can be called without further arguments and it will return a new partition each time, or None. Several partfunctions are used to walk in different "directions" (like more and less partitions). Note that we do not alternate walking in different directions (i.e. alternate the partfunction calls). Instead we first walk into one direction (which should give less and less ticks) until the rating becomes bad and when try more ticks. We want to keep the number of ticks small compared to a simple alternate search. N((sselfsminsmaxs extendmins extendmax((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys partfunctions1s (s__name__s __module__s__doc__s partfunctions(((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys_parter.s slinearcBsPtZdZeededd„Zd„Zeed„Zd„Zd„ZRS(s.partitioner to create a single linear paritionif1e-10cCs·|tjo |tj oti|dƒg|_ntti|ƒ|_|tjo |tj oti|dƒg|_ntti|ƒ|_||_ ||_ ||_ dS(Ni( s tickdistssNones labeldistssticksrationalsselfsticklistsmaps labellists extendticks extendlabelsepsilon(sselfs tickdistss labeldistss extendticks extendlabelsepsilon((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys__init__Fs  cCsx|o.t|ƒti|t|ƒ|iƒ}n|o.t|ƒti |t|ƒ|iƒ}n||fSdS(s¯return new min, max tuple extending the range min, max - dist is the tick distance to be used - extendmin and extendmax are booleans to allow for the extensionN( s extendminsfloatsdistsmathsfloorsminsselfsepsilons extendmaxsceilsmax(sselfsminsmaxsdists extendmins extendmax((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys extendminmaxSs ..c Cs²tti|t|ƒd|iƒƒ}tti |t|ƒd|iƒƒ} g}xMt || dƒD]8}|iti||i|ifd|d|ƒƒqnW|SdS(sÙreturn a list of equal spaced ticks - the tick distance is dist, the ticklevel is set to ticklevel and the labellevel is set to labellevel - min, max is the range where ticks should be placedf0.5is ticklevels labellevelN(sintsmathsceilsminsfloatsdistsselfsepsilonsiminsfloorsmaxsimaxstickssrangesisappendsticksnumsdenoms ticklevels labellevel( sselfsminsmaxsdists ticklevels labellevelstickssiminsisimax((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pysgetticks]s**6c Cs“|iod|_|i}|i}|itj ot|iƒ|ijo5|i |||i|i|i |i ƒ\}}n|i tj ot|i ƒ|i jo5|i |||i |i |i |i ƒ\}}ng}xKtt|iƒƒD]4}ti||i|||i|d|ƒƒ}qýWxKtt|i ƒƒD]4}ti||i|||i |d|ƒƒ}qKW|SntSdS(Nis ticklevels labellevel(sdatasfirstsminsmaxsselfs extendticksNoneslensticklists extendminmaxs extendmins extendmaxs extendlabels labelliststickssrangesisticksmergeticklistssgetticks(sselfsdatasminsismaxsticks((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys partfunctionis"    )5)522c s5tddd|d|d|d|ƒ‡d†gSdS(Nsfirstisminsmaxs extendmins extendmaxcs ˆi|ƒS(N(sselfs partfunctionsd(sd(sself(sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys~s(s _partdatasminsmaxs extendmins extendmax(sselfsminsmaxs extendmins extendmax((sselfsI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys partfunctions}s( s__name__s __module__s__doc__sNones__init__s extendminmaxsgettickss partfunctions partfunctions(((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pyslinearCs   s autolinearcBsÔtZdZeiddfƒeiddfƒgeiddfƒeiddfƒgeiddfƒeiddfƒgeiddfƒeiddfƒggZeddd„Zd„Zd „ZRS( s=partitioner to create an arbitrary number of linear paritionsiiiiif1e-10cCs||_||_||_dS(N(svariantssselfs extendticksepsilon(sselfsvariantss extendticksepsilon((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys__init__Œs  c smy$ti||ƒtidƒ} Wntj otdƒ‚nX| djo)tiddfdt | dƒƒ}n"tiddfdt | ƒƒ}t tiˆi dƒ}gi}|D]}|||ƒqÄ~} td|d|d|d |d dd d d ti|ƒƒ‡d†td|d|d|d |d d d dd ti|ƒƒ‡d†gSdS(Ni s6partitioning failed due to empty or invalid axis rangeiispowersminsmaxs extendmins extendmaxssigns tickindexiÿÿÿÿsbasecs ˆi|ƒS(N(sselfs partfunctionsd(sd(sself(sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pyss(smathslogsmaxsminslogmmsArithmeticErrors RuntimeErrorsticksrationalsintsbasesmapsselfsvariantsstickssappends_[1]stsusetickss _partdatas extendmins extendmax( sselfsminsmaxs extendmins extendmaxstickssts_[1]sbaseslogmmsuseticks((sselfsI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys partfunctions‘s$ )!+Bc Cs?|idjoO|it|iƒdjo|id7_q¤d|_|iid9_nF|io|id8_n)t|iƒd|_|iid9_gi }|i|iD] }|t i |ƒ|iƒq¼~}td|d|id|iƒ}|id|id|id |id |iƒdƒSdS( Niii s tickdistss extendticksepsilonsminsmaxs extendmins extendmax(sdatassigns tickindexslensselfsvariantssbasesnumsdenomsappends_[1]ststicksrationals tickdistsslinears extendticksepsilons linearparters partfunctionssminsmaxs extendmins extendmax(sselfsdatas linearparters_[1]sts tickdists((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys partfunction¤s  A!( s__name__s __module__s__doc__sticksrationalsdefaultvariantss__init__s partfunctionss partfunction(((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys autolinear„s ¢ spreexpcBstZdZd„ZRS(s=definition of a logarithmic partition exp is an integer, which defines multiplicator (usually 10). pres are a list of tick positions (rational numbers, e.g. instances of rational). possible positions are the tick positions and arbitrary divisions and multiplications of the tick positions by exp.cCs||_||_dS(N(spressselfsexp(sselfspressexp((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys__init__Ás (s__name__s __module__s__doc__s__init__(((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pyspreexp¸s s logarithmiccBsìtZdZeeiddfƒgdƒZeeiddfƒeiddfƒeiddfƒgdƒZegiZ e ddƒD]Z e eie dfƒƒqŒ[ dƒZ e e de dd„Zd„Ze e d „ZRS( s3partitioner to create a single logarithmic paritionii iiif1e-10cCs|tjo |tj o|dg|_n ||_|tjo |tj o|dg|_n ||_||_||_||_dS(Ni( s tickpreexpssNones labelpreexpssselfsticklists labellists extendticks extendlabelsepsilon(sselfs tickpreexpss labelpreexpss extendticks extendlabelsepsilon((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys__init__Ïs    cCs÷t}t} xtt|iƒƒD]ú} tt i t i |t |i| ƒƒt i |iƒ|iƒƒd} tt it i |t |i| ƒƒt i |iƒ|iƒƒd} |tjp | |jo| | f\}}n| tjp | | jo| | f\} }q"q"W|o|i|d} n|id} |d8}|t|iƒdjo|i|d}n|id}| d7} |o!t | ƒt |iƒ|}n|o!t |ƒt |iƒ| }n||fSdS(Niiÿÿÿÿi(sNonesminpowersmaxpowersxrangeslenspreexpspressisintsmathsfloorslogsminsfloatsexpsselfsepsilonsiminsceilsmaxsimaxsminindexsmaxindexs minrationals maxrationals extendmins extendmax(sselfsminsmaxspreexps extendmins extendmaxsminindexs maxrationalsmaxindexsisiminsimaxs minrationalsmaxpowersminpower((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys extendminmaxÝs.JJ    !!c Cs:g} d}d} x|iD]}g} tti ti |t |ƒƒti |i ƒd|iƒƒ}ttiti |t |ƒƒti |i ƒd|iƒƒ}xkt||dƒD]V} |ti|i dfd| ƒ} | iti| i| ifd|d|ƒƒqÂWti| | ƒ} qW| SdS(Nif0.5ispowers ticklevels labellevel(stickssminiminsmaximaxspreexpspressfs thistickssintsmathsceilslogsminsfloatsexpsselfsepsilonsiminsfloorsmaxsimaxsrangesisticksrationalspossappendsnumsdenoms ticklevels labellevelsmergeticklists(sselfsminsmaxspreexps ticklevels labellevelsfsminiminsimaxsticksspossis thistickssmaximaxsimin((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pysgetticksùs CC"2(s__name__s __module__s__doc__spreexpsticksrationalspre1exps pre125expsappends_[1]srangesxs pre1to9expsNones__init__s extendminmaxsgetticks(((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys logarithmicÆs !EH sautologarithmiccBs}tZdZeieigeieigfeieigefgZededdd„Z d„Z d„Z d„Z RS(s3partitioner to create several logarithmic paritionsii f1e-10cCs1||_||_||_||_||_dS(N(svariantssselfs extendticks extendlabels autoexponentsepsilon(sselfsvariantss extendticks extendlabels autoexponentsepsilon((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys__init__s     c sntd|d|d|d|dtˆiƒƒ‡d†td|d|d|d|dˆiƒ‡d†gSdS( Nsminsmaxs extendmins extendmaxs variantsindexcs ˆi|ƒS(N(sselfsvariantspartfunctionsd(sd(sself(sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys ssexponentcs ˆi|ƒS(N(sselfsautopartfunctionsd(sd(sself(sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys#s( s _partdatasminsmaxs extendmins extendmaxslensselfsvariantss autoexponent(sselfsminsmaxs extendmins extendmax((sselfsI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys partfunctionss6c Cs¬|id8_d|ijo…td|i|idd|i|idd|id|id|iƒ}|i d|i d |i d |i d |i ƒdƒSntSdS( Niis tickpreexpss labelpreexpss extendticks extendlabelsepsilonsminsmaxs extendmins extendmax(sdatas variantsindexs logarithmicsselfsvariantss extendticks extendlabelsepsilonslogarithmicparters partfunctionssminsmaxs extendmins extendmaxsNone(sselfsdataslogarithmicparter((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pysvariantspartfunction's +!9c Csœ|i|i9_tdttiddfƒg|iƒtigd|i d|i d|i ƒ}|i d|id|id|id |iƒd ƒSdS( Ns tickpreexpsis extendticks extendlabelsepsilonsminsmaxs extendmins extendmaxi(sdatasexponentsselfs autoexponents logarithmicspreexpsticksrationalspre1exps extendticks extendlabelsepsilonslogarithmicparters partfunctionssminsmaxs extendmins extendmax(sselfsdataslogarithmicparter((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pysautopartfunction/s0!( s__name__s __module__s__doc__s logarithmicspre1exps pre1to9exps pre125expsNonesdefaultvariantss__init__s partfunctionssvariantspartfunctionsautopartfunction(((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pysautologarithmic s <   (s __future__s nested_scopessmathspyx.graph.axissticks _partdatas_parterslinearslins autolinearsautolinspreexps logarithmicslogsautologarithmicsautolog(slogsautologarithmicspreexps autolinearslinears nested_scopesslins logarithmicsautolinsmathsticksautologs_parters _partdata((sI/mnt/gmirror/ports/graphics/py-PyX/work/PyX-0.10/pyx/graph/axis/parter.pys?s   >1C)