/usr/share/pyshared/pyrrd/backend/common.py is in python-pyrrd 0.1.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | import re
from pyrrd.util import NaN
def coerce(value):
"""
>>> coerce("NaN")
nan
>>> coerce("nan")
nan
>>> coerce("Unkn")
>>> coerce("u")
>>> coerce("1")
1.0
>>> 0.039 < coerce("4.0000000000e-02") < 0.041
True
>>> 0.039 < coerce(4.0000000000e-02) < 0.041
True
"""
try:
return float(value)
except ValueError:
value = unicode(value).lower()
if value in ["unkn", "u"]:
return None
elif value == "nan":
return NaN()
raise ValueError, "Unexpected type for data (%s)" % value
def iterParse(lines):
"""
>>> lines = [' 920804700: nan',
... ' 920805000: 4.0000000000e-02',
... ' 920805300: 2.0000000000e-02',
... ' 920805600: 0.0000000000e+00',
... ' 920805900: 0.0000000000e+00',
... ' 920806200: 3.3333333333e-02',
... ' 920806500: 3.3333333333e-02',
... ' 920806800: 3.3333333333e-02',
... ' 920807100: 2.0000000000e-02',
... ' 920807400: 2.0000000000e-02',
... ' 920807700: 2.0000000000e-02',
... ' 920808000: 1.3333333333e-02',
... ' 920808300: 1.6666666667e-02',
... ' 920808600: 6.6666666667e-03',
... ' 920808900: 3.3333333333e-03',
... ' 920809200: nan']
>>> g = iterParse(lines)
>>> g.next()
(920804700, nan)
>>> g.next()
(920805000, 0.04)
>>> len(list(g)) == len(lines) - 2
True
"""
for line in lines:
line = line.strip()
time, value = [x.strip() for x in re.split(':\s+', line)]
yield (int(time), coerce(value))
def buildParameters(obj, validList):
"""
>>> class TestClass(object):
... pass
>>> testClass = TestClass()
>>> testClass.a = 1
>>> testClass.b = "2"
>>> testClass.c = 3
>>> testClass.d = True
>>> buildParameters(testClass, ["a", "b"])
['--a', u'1', '--b', u'2']
>>> testClass.b = None
>>> buildParameters(testClass, ["a", "b"])
['--a', u'1']
The following shows support for boolean flags that don't have a value
associated with them:
>>> buildParameters(testClass, ["a", "d"])
['--a', u'1', '--d']
"""
params = []
for param in validList:
attr = getattr(obj, param)
if attr:
param = param.replace("_", "-")
if isinstance(attr, bool):
attr = ""
params.extend(["--%s" % param, unicode(attr)])
return [x for x in params if x]
if __name__ == "__main__":
import doctest
doctest.testmod()
|