def test_eval_nan(): s = T.reprLRData(float('nan')) n = T.evalLRData(s) assert math.isnan(n) s2 = T.reprLRData((float('nan'), 'this is a test')) n2, _ = T.evalLRData(s2) assert math.isnan(n2)
def test_eval_negative_infinity(): s = T.reprLRData(float('-inf')) n = T.evalLRData(s) assert math.isinf(n) assert n < 0 s2 = T.reprLRData((float('-inf'), 'this is a test')) n2, _ = T.evalLRData(s2) assert math.isinf(n2) assert n2 < 0
def test_eval_positive_infinity(): s = T.reprLRData(float('inf')) n = T.evalLRData(s) assert math.isinf(n) assert n > 0 s2 = T.reprLRData((float('inf'), 'this is a test')) n2, _ = T.evalLRData(s2) assert math.isinf(n2) assert n2 > 0
def getPar(i): sec = 'Parameter %d' % (i+1) label = S.get(sec, 'Label', raw=True) raw = S.get(sec, 'Data', raw=True) if raw.startswith(DATA_URL_PREFIX): # decode parameter data from dataurl all_bytes = base64.urlsafe_b64decode(raw[len(DATA_URL_PREFIX):]) t, data_bytes = T.unflatten(all_bytes, 'ss') data = T.unflatten(data_bytes, t) else: # old parameters may have been saved using repr try: data = T.evalLRData(raw) except RuntimeError: if raw.endswith('None)'): data = T.evalLRData(raw[0:-5] + '"")') else: raise return dict(label=label, data=data)
def getPar(i): sec = 'Parameter {}'.format(i+1) label = S.get(sec, 'Label', raw=True) raw = S.get(sec, 'Data', raw=True) if raw.startswith(DATA_URL_PREFIX): # decode parameter data from dataurl data = labrad_urldecode(raw) else: # old parameters may have been saved using repr try: data = T.evalLRData(raw) except RuntimeError: # This is a hack to parse some very old data that seems to # have been created by converting delphi data to python # format. '1.#IND' was produced by old versions of the # delphi labrad api when stringifying NaN. if '1.#IND' in raw: data = T.evalLRData(raw.replace('1.#IND', 'nan')) else: raise Exception('unable to parse parameter {}: {}'.format(label, raw)) return dict(label=label, data=data)
def getPar(i): sec = 'Parameter {}'.format(i + 1) label = S.get(sec, 'Label', raw=True) raw = S.get(sec, 'Data', raw=True) if raw.startswith(DATA_URL_PREFIX): # decode parameter data from dataurl data = labrad_urldecode(raw) else: # old parameters may have been saved using repr try: data = T.evalLRData(raw) except RuntimeError: # This is a hack to parse some very old data that seems to # have been created by converting delphi data to python # format. '1.#IND' was produced by old versions of the # delphi labrad api when stringifying NaN. if '1.#IND' in raw: data = T.evalLRData(raw.replace('1.#IND', 'nan')) else: raise Exception( 'unable to parse parameter {}: {}'.format( label, raw)) return dict(label=label, data=data)
def getPar(i): sec = 'Parameter %d' % (i + 1) label = S.get(sec, 'Label', raw=True) # TODO: big security hole! eval can execute arbitrary code data = T.evalLRData(S.get(sec, 'Data', raw=True)) return dict(label=label, data=data)
def test_eval_value_with_none_for_units(): assert T.evalLRData("""Value(1.0, None)""") == Value(1.0, '')
def test_eval_cluster_with_value_and_complex(): assert (T.evalLRData("""(Value(1.0, None), Complex(2.0, None))""") == (Value(1.0, ''), Complex(2.0, '')))
def testEvalDatetime(self): data = datetime.now() data2 = T.evalLRData(repr(data)) self.assertEquals(data, data2)
def test_eval_complex_with_none_for_units(): assert T.evalLRData("""Complex(1.1, None)""") == Complex(1.1, '')
def test_eval_cluster_with_value_and_complex(): assert (T.evalLRData("""(Value(1.0, None), Complex(2.0, None))""") == ( Value(1.0, ''), Complex(2.0, '')))