"""Key transforms for diot@Attribute: TRANSFORMS: Builtin transforms"""fromtypingimportDict,Callableimportreimportkeywordimportinflectiondefsafe_transform(item:str)->str:DOCS"""Transform an arbitrary key into a safe key for dot notation Examples: >>> safe_transform("a,b") # a_b >>> safe_transform("a_,_b") # a__b >>> safe_transform("in") # _in Args: item: The item to be transformed Returns: The safely-transformed item """# // support bytes transform to keys in bytes?ifisinstance(item,bytes):item=item.decode("utf-8")item=str(item)item=re.sub(r'[^A-Za-z0-9_]+','.',item)item=re.sub(r'_?\.+|\.+_?','_',item)ifnotitem:return''return('_'+itemifitem[0]in'0123456789'oriteminkeyword.kwlistelseitem)defcamel_case(item:str)->str:DOCS"""Transform item to camel case format The item will be first safely-transformed. Examples: >>> camel_case('one_two') # oneTwo >>> camel_case('_one') # _one >>> camel_case('o_one') # oOne Args: item: The item to be transformed Returns: The camel_case-transformed item """item=safe_transform(item)returninflection.camelize(item,False)defsnake_case(item:str)->str:DOCS"""Transform item to snake case The item will be first safely-transformed. Examples: >>> snake_case('oneTwo') # one_two >>> snake_case('One') # one >>> snake_case('1One') # _1_one Args: item: The item to be transformed Returns: The snake_case-transformed item """item=safe_transform(item)returninflection.underscore(item)defupper_case(item:str)->str:DOCS"""Transform item to upper case The item will be first safely-transformed. Examples: >>> upper_case('oneTwo') # ONETWO >>> upper_case('One') # ONE >>> upper_case('1One') # _1ONE Args: item: The item to be transformed Returns: The uppercase-transformed item """item=safe_transform(item)returnitem.upper()deflower_case(item:str)->str:DOCS"""Transform item to lower case The item will be first safely-transformed. Examples: >>> lower_case('ONETWO') # onetwo >>> lower_case('One') # one >>> lower_case('1One') # _1one Args: item: The item to be transformed Returns: The lowercase-transformed item """item=safe_transform(item)returnitem.lower()TRANSFORMS:Dict[str,Callable[[str],str]]=dict(safe=safe_transform,safe_transform=safe_transform,camel_case=camel_case,camelCase=camel_case,snake_case=snake_case,upper=upper_case,lower=lower_case,upper_case=upper_case,lower_case=lower_case,uppercase=upper_case,lowercase=lower_case,UPPERCASE=upper_case,UPPER_CASE=upper_case,)