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

Blogs

Check out the latest blogs from LambdaTest on this topic:

Test Optimization for Continuous Integration

“Test frequently and early.” If you’ve been following my testing agenda, you’re probably sick of hearing me repeat that. However, it is making sense that if your tests detect an issue soon after it occurs, it will be easier to resolve. This is one of the guiding concepts that makes continuous integration such an effective method. I’ve encountered several teams who have a lot of automated tests but don’t use them as part of a continuous integration approach. There are frequently various reasons why the team believes these tests cannot be used with continuous integration. Perhaps the tests take too long to run, or they are not dependable enough to provide correct results on their own, necessitating human interpretation.

A Complete Guide To CSS Houdini

As a developer, checking the cross browser compatibility of your CSS properties is of utmost importance when building your website. I have often found myself excited to use a CSS feature only to discover that it’s still not supported on all browsers. Even if it is supported, the feature might be experimental and not work consistently across all browsers. Ask any front-end developer about using a CSS feature whose support is still in the experimental phase in most prominent web browsers. ????

Different Ways To Style CSS Box Shadow Effects

Have you ever visited a website that only has plain text and images? Most probably, no. It’s because such websites do not exist now. But there was a time when websites only had plain text and images with almost no styling. For the longest time, websites did not focus on user experience. For instance, this is how eBay’s homepage looked in 1999.

Fluent Interface Design Pattern in Automation Testing

Recently, I was going through some of the design patterns in Java by reading the book Head First Design Patterns by Eric Freeman, Elisabeth Robson, Bert Bates, and Kathy Sierra.

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