mypydantic.helpers.parsers

 1from typing import Literal
 2
 3
 4def snake_case(text: str):
 5    convert = "".join(["_" + i.lower() if i.isupper() else i for i in text]).lstrip("_")
 6    check_convert = convert.split("_")
 7    # Handle ARN, IP, HTTP, AWS, KMS, ACL
 8    return "".join(
 9        [
10            "" + j if len(j) == 1 and j not in ("p", "s", "l") else j + "_"
11            for j in check_convert
12        ]
13    ).rstrip("_")
14
15
16def camel_case(text: str):
17    # AWS uses ARN, IP, KMS, AWS, etc...
18    return "".join(
19        [
20            i.capitalize() if i not in ("arn", "ip", "aws", "kms") else i.upper()
21            for i in text.split("_")
22        ]
23    )
24
25
26def convert_all_keys(dict_object: dict, conversion_type: Literal["snake", "camel"]):
27    if conversion_type == "snake":
28        case_type = snake_case
29    if conversion_type == "camel":
30        case_type = camel_case
31    case_keys = [case_type(i) for i in dict_object.keys()]
32    message = dict(zip(case_keys, list(dict_object.values())))
33    for key, value in dict_object.items():
34        if isinstance(value, dict):
35            message[case_type(key)] = convert_all_keys(value, conversion_type)
36        if isinstance(value, list):
37            for idx, item in enumerate(value):
38                if isinstance(item, dict):
39                    message[case_type(key)][idx] = convert_all_keys(
40                        item, conversion_type
41                    )
42    return message
43
44
45def sanitize(dict_object: dict) -> dict:
46    for key, value in dict_object.items():
47        if isinstance(value, str):
48            dict_object[key] = value.replace("\n", " ").rstrip(" ")
49        if isinstance(value, dict):
50            sanitize(value)
51        if isinstance(value, list):
52            for item in value:
53                if isinstance(item, dict):
54                    sanitize(item)
55    return dict_object
def snake_case(text: str):
 5def snake_case(text: str):
 6    convert = "".join(["_" + i.lower() if i.isupper() else i for i in text]).lstrip("_")
 7    check_convert = convert.split("_")
 8    # Handle ARN, IP, HTTP, AWS, KMS, ACL
 9    return "".join(
10        [
11            "" + j if len(j) == 1 and j not in ("p", "s", "l") else j + "_"
12            for j in check_convert
13        ]
14    ).rstrip("_")
def camel_case(text: str):
17def camel_case(text: str):
18    # AWS uses ARN, IP, KMS, AWS, etc...
19    return "".join(
20        [
21            i.capitalize() if i not in ("arn", "ip", "aws", "kms") else i.upper()
22            for i in text.split("_")
23        ]
24    )
def convert_all_keys(dict_object: dict, conversion_type: Literal['snake', 'camel']):
27def convert_all_keys(dict_object: dict, conversion_type: Literal["snake", "camel"]):
28    if conversion_type == "snake":
29        case_type = snake_case
30    if conversion_type == "camel":
31        case_type = camel_case
32    case_keys = [case_type(i) for i in dict_object.keys()]
33    message = dict(zip(case_keys, list(dict_object.values())))
34    for key, value in dict_object.items():
35        if isinstance(value, dict):
36            message[case_type(key)] = convert_all_keys(value, conversion_type)
37        if isinstance(value, list):
38            for idx, item in enumerate(value):
39                if isinstance(item, dict):
40                    message[case_type(key)][idx] = convert_all_keys(
41                        item, conversion_type
42                    )
43    return message
def sanitize(dict_object: dict) -> dict:
46def sanitize(dict_object: dict) -> dict:
47    for key, value in dict_object.items():
48        if isinstance(value, str):
49            dict_object[key] = value.replace("\n", " ").rstrip(" ")
50        if isinstance(value, dict):
51            sanitize(value)
52        if isinstance(value, list):
53            for item in value:
54                if isinstance(item, dict):
55                    sanitize(item)
56    return dict_object