Best Python code snippet using autotest_python
configcomparer.py
Source:configcomparer.py
1"""2Utilities for comparing and updating configurations while keeping track of3changes in a way that can be easily reported in a state.4"""5def compare_and_update_config(config, update_config, changes, namespace=""):6 """7 Recursively compare two configs, writing any needed changes to the8 update_config and capturing changes in the changes dict.9 """10 if isinstance(config, dict):11 if not update_config:12 if config:13 # the updated config is more valid--report that we are using it14 changes[namespace] = {15 "new": config,16 "old": update_config,17 }18 return config19 elif not isinstance(update_config, dict):20 # new config is a dict, other isn't--new one wins21 changes[namespace] = {22 "new": config,23 "old": update_config,24 }25 return config26 else:27 # compare each key in the base config with the values in the28 # update_config, overwriting the values that are different but29 # keeping any that are not defined in config30 for key, value in config.items():31 _namespace = key32 if namespace:33 _namespace = "{}.{}".format(namespace, _namespace)34 update_config[key] = compare_and_update_config(35 value,36 update_config.get(key, None),37 changes,38 namespace=_namespace,39 )40 return update_config41 elif isinstance(config, list):42 if not update_config:43 if config:44 # the updated config is more valid--report that we are using it45 changes[namespace] = {46 "new": config,47 "old": update_config,48 }49 return config50 elif not isinstance(update_config, list):51 # new config is a list, other isn't--new one wins52 changes[namespace] = {53 "new": config,54 "old": update_config,55 }56 return config57 else:58 # iterate through config list, ensuring that each index in the59 # update_config list is the same60 for idx, item in enumerate(config):61 _namespace = "[{}]".format(idx)62 if namespace:63 _namespace = "{}{}".format(namespace, _namespace)64 _update = None65 if len(update_config) > idx:66 _update = update_config[idx]67 if _update:68 update_config[idx] = compare_and_update_config(69 config[idx],70 _update,71 changes,72 namespace=_namespace,73 )74 else:75 changes[_namespace] = {76 "new": config[idx],77 "old": _update,78 }79 update_config.append(config[idx])80 if len(update_config) > len(config):81 # trim any items in update_config that are not in config82 for idx, old_item in enumerate(update_config):...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!