How to use _merge_profile_dict method in prospector

Best Python code snippet using prospector_python

profile.py

Source:profile.py Github

copy

Full Screen

...149 pri_enabled = priority.get("enable") or []150 out["disable"] = list(set(pri_disabled) | (set(base_disabled) - set(pri_enabled)))151 out["enable"] = list(set(pri_enabled) | (set(base_enabled) - set(pri_disabled)))152 return out153def _merge_profile_dict(priority, base):154 # copy the base dict into our output155 out = dict(base.items())156 for key, value in priority.items():157 if key in (158 "strictness",159 "doc-warnings",160 "test-warnings",161 "member-warnings",162 "output-format",163 "autodetect",164 "max-line-length",165 ):166 # some keys are simple values which are overwritten167 out[key] = value168 elif key in (169 "ignore",170 "ignore-patterns",171 "ignore-paths",172 "uses",173 "requirements",174 "python-targets",175 "output-target",176 ):177 # some keys should be appended178 out[key] = _ensure_list(value) + _ensure_list(base.get(key, []))179 elif key in TOOLS.keys():180 # this is tool config!181 out[key] = _merge_tool_config(value, base.get(key, {}))182 return out183def _determine_strictness(profile_dict, inherits):184 for profile in inherits:185 if profile.startswith("strictness_"):186 return None, False187 strictness = profile_dict.get("strictness")188 if strictness is None:189 return None, False190 return ("strictness_%s" % strictness), True191def _determine_pep8(profile_dict):192 pep8 = profile_dict.get("pep8", {})193 if pep8.get("full", False):194 return "full_pep8", True195 elif pep8.get("none", False):196 return "no_pep8", True197 return None, False198def _determine_doc_warnings(profile_dict):199 doc_warnings = profile_dict.get("doc-warnings")200 if doc_warnings is None:201 return None, False202 return ("doc_warnings" if doc_warnings else "no_doc_warnings"), True203def _determine_test_warnings(profile_dict):204 test_warnings = profile_dict.get("test-warnings")205 if test_warnings is None:206 return None, False207 return (None if test_warnings else "no_test_warnings"), True208def _determine_member_warnings(profile_dict):209 member_warnings = profile_dict.get("member-warnings")210 if member_warnings is None:211 return None, False212 return ("member_warnings" if member_warnings else "no_member_warnings"), True213def _determine_implicit_inherits(profile_dict, already_inherits, shorthands_found):214 # Note: the ordering is very important here - the earlier items215 # in the list have precedence over the later items. The point of216 # the doc/test/pep8 profiles is usually to restore items which were217 # turned off in the strictness profile, so they must appear first.218 implicit = [219 ("pep8", _determine_pep8(profile_dict)),220 ("docs", _determine_doc_warnings(profile_dict)),221 ("tests", _determine_test_warnings(profile_dict)),222 ("strictness", _determine_strictness(profile_dict, already_inherits)),223 ("members", _determine_member_warnings(profile_dict)),224 ]225 inherits = []226 for shorthand_name, determined in implicit:227 if shorthand_name in shorthands_found:228 continue229 extra_inherits, shorthand_found = determined230 if not shorthand_found:231 continue232 shorthands_found.add(shorthand_name)233 if extra_inherits is not None:234 inherits.append(extra_inherits)235 return inherits, shorthands_found236def _append_profiles(name, profile_path, data, inherit_list, allow_shorthand=False):237 new_data, new_il, _ = _load_profile(name, profile_path, allow_shorthand=allow_shorthand)238 data.update(new_data)239 inherit_list += new_il240 return data, inherit_list241def _load_and_merge(name_or_path, profile_path, allow_shorthand=True, forced_inherits=None):242 # First simply load all of the profiles and those that it explicitly inherits from243 data, inherit_list, shorthands_found = _load_profile(244 name_or_path,245 profile_path,246 allow_shorthand=allow_shorthand,247 forced_inherits=forced_inherits or [],248 )249 if allow_shorthand:250 if "docs" not in shorthands_found:251 data, inherit_list = _append_profiles("no_doc_warnings", profile_path, data, inherit_list)252 if "members" not in shorthands_found:253 data, inherit_list = _append_profiles("no_member_warnings", profile_path, data, inherit_list)254 if "tests" not in shorthands_found:255 data, inherit_list = _append_profiles("no_test_warnings", profile_path, data, inherit_list)256 if "strictness" not in shorthands_found:257 # if no strictness was specified, then we should manually insert the medium strictness258 for inherit in inherit_list:259 if inherit.startswith("strictness_"):260 break261 else:262 data, inherit_list = _append_profiles("strictness_medium", profile_path, data, inherit_list)263 # Now we merge all of the values together, from 'right to left' (ie, from the264 # top of the inheritance tree to the bottom). This means that the lower down265 # values overwrite those from above, meaning that the initially provided profile266 # has precedence.267 merged = {}268 for name in inherit_list[::-1]:269 priority = data[name]270 merged = _merge_profile_dict(priority, merged)271 return merged, inherit_list272def _load_profile(273 name_or_path,274 profile_path,275 shorthands_found=None,276 already_loaded=None,277 allow_shorthand=True,278 forced_inherits=None,279):280 # recursively get the contents of the basic profile and those it inherits from281 base_contents = _load_content(name_or_path, profile_path)282 inherit_order = [name_or_path]283 shorthands_found = shorthands_found or set()284 already_loaded = already_loaded or []...

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run prospector automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful