mirror of
https://github.com/weewx/weewx.git
synced 2026-06-09 09:35:19 -04:00
Version 2.0.0 release
This commit is contained in:
@@ -42,6 +42,12 @@ def scale(fmn, fmx, prescale = (None, None, None), nsteps = 10):
|
||||
(-2.0, 14.0, 2.0)
|
||||
>>> print scale(-12.1, -5.3)
|
||||
(-13.0, -5.0, 1.0)
|
||||
>>> print scale(10.0, 10.0)
|
||||
(10.0, 10.1, 0.01)
|
||||
>>> print "(%.4f, %.4f, %.5f)" % scale(10.0, 10.001)
|
||||
(10.0000, 10.0010, 0.00010)
|
||||
>>> print scale(10.0, 10.0+1e-8)
|
||||
(10.0, 10.1, 0.01)
|
||||
>>> print scale(0.0, 0.05, (None, None, .1), 10)
|
||||
(0.0, 1.0, 0.1)
|
||||
>>> print scale(0.0, 0.21, (None, None, .02))
|
||||
@@ -62,7 +68,7 @@ def scale(fmn, fmx, prescale = (None, None, None), nsteps = 10):
|
||||
if fmx < fmn :
|
||||
raise weeplot.ViolatedPrecondition, "scale() called with max value less than min value"
|
||||
|
||||
if fmx == fmn :
|
||||
if _rel_approx_equal(fmn, fmx) :
|
||||
if fmn == 0.0 :
|
||||
fmx = 1.0
|
||||
else :
|
||||
@@ -217,7 +223,8 @@ class ScaledDraw(object):
|
||||
lri = imagebox[1]
|
||||
lls = scaledbox[0]
|
||||
urs = scaledbox[1]
|
||||
|
||||
if urs[1] == lls[1]:
|
||||
pass
|
||||
self.xscale = float(lri[0] - uli[0]) / float(urs[0] - lls[0])
|
||||
self.yscale = -float(lri[1] - uli[1]) / float(urs[1] - lls[1])
|
||||
self.xoffset = int(lri[0] - urs[0] * self.xscale + 0.5)
|
||||
@@ -411,6 +418,27 @@ def get_font_handle(fontpath, *args):
|
||||
|
||||
return font
|
||||
|
||||
def _rel_approx_equal(x, y, rel=1e-7):
|
||||
"""Relative test for equality.
|
||||
|
||||
Example
|
||||
>>> _rel_approx_equal(1.23456, 1.23457)
|
||||
False
|
||||
>>> _rel_approx_equal(1.2345678, 1.2345679)
|
||||
True
|
||||
>>> _rel_approx_equal(0.0, 0.0)
|
||||
True
|
||||
>>> _rel_approx_equal(0.0, 0.1)
|
||||
False
|
||||
>>> _rel_approx_equal(0.0, 1e-9)
|
||||
False
|
||||
>>> _rel_approx_equal(1.0, 1.0+1e-9)
|
||||
True
|
||||
>>> _rel_approx_equal(1e8, 1e8+1e-3)
|
||||
True
|
||||
"""
|
||||
return abs(x-y) <= rel*max(abs(x), abs(y))
|
||||
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
|
||||
Reference in New Issue
Block a user