Best Python code snippet using localstack_python
template_deployer.py
Source:template_deployer.py  
...465            for key, val in item_to_sub[1].items():466                val = resolve_refs_recursively(stack_name, val, resources)467                result = result.replace("${%s}" % key, val)468            # resolve placeholders469            result = resolve_placeholders_in_string(470                result, stack_name=stack_name, resources=resources471            )472            return result473        if stripped_fn_lower == "findinmap":474            attr = resolve_refs_recursively(stack_name, value[keys_list[0]][1], resources)475            result = resolve_ref(stack_name, value[keys_list[0]][0], resources, attribute=attr)476            if not result:477                raise Exception(478                    "Cannot resolve fn::FindInMap: %s %s"479                    % (value[keys_list[0]], list(resources.keys()))480                )481            key = value[keys_list[0]][2]482            if not isinstance(key, str):483                key = resolve_refs_recursively(stack_name, key, resources)484            return result.get(key)485        if stripped_fn_lower == "importvalue":486            import_value_key = resolve_refs_recursively(stack_name, value[keys_list[0]], resources)487            stack = find_stack(stack_name)488            stack_export = stack.exports_map.get(import_value_key) or {}489            if not stack_export.get("Value"):490                LOG.info(491                    'Unable to find export "%s" in stack "%s", existing export names: %s'492                    % (import_value_key, stack_name, list(stack.exports_map.keys()))493                )494                return None495            return stack_export["Value"]496        if stripped_fn_lower == "if":497            condition, option1, option2 = value[keys_list[0]]498            condition = evaluate_condition(stack_name, condition, resources)499            return resolve_refs_recursively(500                stack_name, option1 if condition else option2, resources501            )502        if stripped_fn_lower == "condition":503            result = evaluate_condition(stack_name, value[keys_list[0]], resources)504            return result505        if stripped_fn_lower == "not":506            condition = value[keys_list[0]][0]507            condition = resolve_refs_recursively(stack_name, condition, resources)508            return not condition509        if stripped_fn_lower in ["and", "or"]:510            conditions = value[keys_list[0]]511            results = [resolve_refs_recursively(stack_name, cond, resources) for cond in conditions]512            result = all(results) if stripped_fn_lower == "and" else any(results)513            return result514        if stripped_fn_lower == "equals":515            operand1, operand2 = value[keys_list[0]]516            operand1 = resolve_refs_recursively(stack_name, operand1, resources)517            operand2 = resolve_refs_recursively(stack_name, operand2, resources)518            return str(operand1) == str(operand2)519        if stripped_fn_lower == "select":520            index, values = value[keys_list[0]]521            index = resolve_refs_recursively(stack_name, index, resources)522            values = resolve_refs_recursively(stack_name, values, resources)523            return values[index]524        if stripped_fn_lower == "split":525            delimiter, string = value[keys_list[0]]526            delimiter = resolve_refs_recursively(stack_name, delimiter, resources)527            string = resolve_refs_recursively(stack_name, string, resources)528            return string.split(delimiter)529        if stripped_fn_lower == "getazs":530            region = (531                resolve_refs_recursively(stack_name, value["Fn::GetAZs"], resources)532                or aws_stack.get_region()533            )534            azs = []535            for az in ("a", "b", "c", "d"):536                azs.append("%s%s" % (region, az))537            return azs538        if stripped_fn_lower == "base64":539            value_to_encode = value[keys_list[0]]540            value_to_encode = resolve_refs_recursively(stack_name, value_to_encode, resources)541            return to_str(base64.b64encode(to_bytes(value_to_encode)))542        for key, val in dict(value).items():543            value[key] = resolve_refs_recursively(stack_name, val, resources)544    if isinstance(value, list):545        for i in range(len(value)):546            value[i] = resolve_refs_recursively(stack_name, value[i], resources)547    return value548def resolve_placeholders_in_string(result, stack_name=None, resources=None):549    def _replace(match):550        parts = match.group(1).split(".")551        if len(parts) >= 2:552            resource_name, _, attr_name = match.group(1).partition(".")553            resolved = resolve_ref(554                stack_name, resource_name.strip(), resources, attribute=attr_name.strip()555            )556            if resolved is None:557                raise DependencyNotYetSatisfied(558                    resource_ids=resource_name,559                    message="Unable to resolve attribute ref %s" % match.group(1),560                )561            return resolved562        if len(parts) == 1 and parts[0] in resources:...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!!
