def test_errors(self): with self.assertRaises(ValueError) as cm: main._parse_op_args(['=9']) self.assertEqual(str(cm.exception), "missing input name") with self.assertRaises(ValueError) as cm: main._parse_op_args(['8=9']) self.assertEqual(str(cm.exception), '"8" is not a valid input name') with self.assertRaises(ValueError) as cm: main._parse_op_args(['thres="x"'], input_props=dict(thres=dict(data_type=float))) self.assertEqual( str(cm.exception), "value <\"x\"> for input 'thres' is not compatible with type float" ) with self.assertRaises(ValueError) as cm: main._parse_op_args( ['thres="x"'], input_props=dict(thres=dict(data_type=PointLike))) self.assertEqual( str(cm.exception), "value <\"x\"> for input 'thres' is not compatible with type PointLike" )
def test_existing_method(self): op = OP_REGISTRY.get_op('cate.ops.timeseries.tseries_point', True) op_args, op_kwargs = main._parse_op_args(['ds=@ds', 'point=12.2,54.3', 'var=temperature', 'method=bfill'], input_props=op.op_meta_info.inputs) self.assertEqual(op_args, []) self.assertEqual(op_kwargs, OrderedDict([('ds', dict(source='ds')), ('point', dict(value=(12.2, 54.3))), ('var', dict(value='temperature')), ('method', dict(value='bfill'))]))
def test_errors(self): with self.assertRaises(ValueError) as cm: main._parse_op_args(['=9']) self.assertEqual(str(cm.exception), "missing input name") with self.assertRaises(ValueError) as cm: main._parse_op_args(['8=9']) self.assertEqual(str(cm.exception), '"8" is not a valid input name') with self.assertRaises(ValueError) as cm: main._parse_op_args(['thres="x"'], input_props=dict(thres=dict(data_type=float))) self.assertEqual(str(cm.exception), "value <\"x\"> for input 'thres' is not compatible with type float") with self.assertRaises(ValueError) as cm: main._parse_op_args(['thres="x"'], input_props=dict(thres=dict(data_type=PointLike))) self.assertEqual(str(cm.exception), "value <\"x\"> for input 'thres' is not compatible with type PointLike")
def test_with_namespace(self): class Dataset: pass ds = Dataset() ds.sst = 237.8 import math as m namespace = dict(ds=ds, m=m) self.assertEqual(main._parse_op_args(['ds', 'm.pi', 'b=ds.sst + 0.2', 'u=m.cos(m.pi)'], namespace=namespace), ([dict(value=ds), dict(value=m.pi)], OrderedDict([('b', dict(value=238.0)), ('u', dict(value=m.cos(m.pi)))])))
def test_with_input_props(self): class Dataset: pass ds = Dataset() ds.sst = 237.8 input_props = dict(a=dict(data_type=PointLike), b=dict(data_type=TimeRangeLike), c=dict(data_type=int)) self.assertEqual( main._parse_op_args([ 'a = 11.3, 52.9', 'b = 2001-01-01, 2004-05-06', 'c=8.3', 'd="Bibo"', 'e=ds.sst' ], input_props=input_props, namespace=dict(ds=ds)), ([], OrderedDict([('a', dict(value=(11.3, 52.9))), ('b', dict(value='2001-01-01, 2004-05-06')), ('c', dict(value=8.3)), ('d', dict(value='Bibo')), ('e', dict(value=237.8))])))
def test_with_input_props(self): class Dataset: pass ds = Dataset() ds.sst = 237.8 input_props = dict(a=dict(data_type=PointLike), b=dict(data_type=TimeRangeLike), c=dict(data_type=int)) self.assertEqual(main._parse_op_args(['a = 11.3, 52.9', 'b = 2001-01-01, 2004-05-06', 'c=8.3', 'd="Bibo"', 'e=ds.sst'], input_props=input_props, namespace=dict(ds=ds)), ([], OrderedDict([('a', dict(value=(11.3, 52.9))), ('b', dict(value='2001-01-01, 2004-05-06')), ('c', dict(value=8.3)), ('d', dict(value='Bibo')), ('e', dict(value=237.8))])) )
def test_no_namespace(self): self.assertEqual(main._parse_op_args([]), ([], OrderedDict())) self.assertEqual(main._parse_op_args(['']), ([dict(value=None)], OrderedDict())) self.assertEqual(main._parse_op_args(['a=@b']), ([], OrderedDict(a=dict(source='b')))) self.assertEqual(main._parse_op_args(['[email protected]']), ([], OrderedDict(a=dict(source='b.x')))) self.assertEqual(main._parse_op_args(['a=b']), ([], OrderedDict(a=dict(value='b')))) self.assertEqual(main._parse_op_args(['a="b"']), ([], OrderedDict(a=dict(value='b')))) self.assertEqual(main._parse_op_args(['a="C:\\\\Users"']), ([], OrderedDict(a=dict(value='C:\\Users')))) self.assertEqual( main._parse_op_args(['a=2', 'b=']), ([], OrderedDict([('a', dict(value=2)), ('b', dict(value=None))]))) self.assertEqual(main._parse_op_args(['a="c"']), ([], OrderedDict(a=dict(value='c')))) self.assertEqual(main._parse_op_args(['a=True']), ([], OrderedDict(a=dict(value=True)))) self.assertEqual(main._parse_op_args(['z=4.6', 'y=1', 'x=2.+6j']), ([], OrderedDict([('z', dict(value=4.6)), ('y', dict(value=1)), ('x', dict(value=(2 + 6j)))])))
def test_no_namespace(self): self.assertEqual(main._parse_op_args([]), ([], OrderedDict())) self.assertEqual(main._parse_op_args(['']), ([dict(value=None)], OrderedDict())) self.assertEqual(main._parse_op_args(['a=@b']), ([], OrderedDict(a=dict(source='b')))) self.assertEqual(main._parse_op_args(['[email protected]']), ([], OrderedDict(a=dict(source='b.x')))) self.assertEqual(main._parse_op_args(['a=b']), ([], OrderedDict(a=dict(value='b')))) self.assertEqual(main._parse_op_args(['a="b"']), ([], OrderedDict(a=dict(value='b')))) self.assertEqual(main._parse_op_args(['a="C:\\\\Users"']), ([], OrderedDict(a=dict(value='C:\\Users')))) self.assertEqual(main._parse_op_args(['a=2', 'b=']), ([], OrderedDict([('a', dict(value=2)), ('b', dict(value=None))]))) self.assertEqual(main._parse_op_args(['a="c"']), ([], OrderedDict(a=dict(value='c')))) self.assertEqual(main._parse_op_args(['a=True']), ([], OrderedDict(a=dict(value=True)))) self.assertEqual(main._parse_op_args(['z=4.6', 'y=1', 'x=2.+6j']), ([], OrderedDict([('z', dict(value=4.6)), ('y', dict(value=1)), ('x', dict(value=(2 + 6j)))])))