from calculate.variables.datavars import Namespace, Variable, Dependence,\ StringType, HashType, TableType,\ ListType, FloatType Variable('simple', type=StringType, source='simple value') Variable('use_local_simple', type=StringType, source=Dependence('.simple', depend=lambda simple: 'Using {}'.format( simple.value))) Variable('use_full_simple', type=StringType, source=Dependence('level.simple', depend=lambda simple: 'Using {}'.format( simple.value))) Variable('disks', type=ListType, source=["/dev/sda1", "/dev/sda2", "/dev/sda3"]) Variable('version', type=FloatType, source='1.0') Variable('my_shortname', type=StringType, source='CLD') Variable('linux', type=HashType, source=Dependence('.version', '.my_shortname', depend=lambda version, my_shortname: {'version': version.value, 'shortname': my_shortname.value})) Variable('shortname_test', type=StringType, source=Dependence('.linux.shortname', depend=lambda shortname: '{} test'.format( shortname.value))) Variable('device_list', type=ListType, source=["/dev/sda", "/dev/sdb"]) def get_device_table(device_list): map_data = {'/dev/sda': ["hdd", "Samsung SSD"], '/dev/sdb': ["flash", "Transcend 64GB"], '/dev/sdc': ["usbhdd", "WD 1TB"]} default_value = ["hdd", "Unknown"] print('device_list = {}'.format(device_list.value)) return [{"dev": device, "type": map_data.get(device, default_value)[0], "name": map_data.get(device, default_value)[1]} for device in device_list.value] Variable('device', type=TableType, source=Dependence('.device_list', depend=get_device_table)) Variable('device_child', type=StringType, source=Dependence('.device', depend=lambda device: device.value[0]['type'])) with Namespace('level_3'): Variable('my_var_1', type=StringType, source='testing') Variable('my_var_2', type=StringType, source='testing_2')