Best Python code snippet using prospector_python
profile.py
Source:profile.py  
...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 []...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!!
