Convert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by Humps for Node.
Please email me at [email protected].
To install humps, simply use pipenv (or pip, of course):
$ pipenv install pyhumps
import humps
humps.camelize('jack_in_the_box') # jackInTheBox
humps.decamelize('rubyTuesdays') # ruby_tuesdays
humps.pascalize('red_robin') # RedRobin
import humps
array = [{'attrOne': 'foo'}, {'attrOne': 'bar'}]
humps.decamelize(array) # [{'attr_one': 'foo'}, {'attr_one': 'bar'}]
array = [{'attr_one': 'foo'}, {'attr_one': 'bar'}]
humps.camelize(array) # [{'attrOne': 'foo'}, {'attrOne': 'bar'}]
array = [{'attr_one': 'foo'}, {'attr_one': 'bar'}]
humps.pascalize(array) # [{'AttrOne': 'foo'}, {'AttrOne': 'bar'}]
import humps
humps.is_camelcase('illWearYourGranddadsClothes') # True
humps.is_pascalcase('ILookIncredible') # True
humps.is_snakecase('im_in_this_big_ass_coat') # True
humps.is_camelcase('from_that_thrift_shop') # False
humps.is_snakecase('downTheRoad') # False
# what about abbrevations, acronyms, and initialisms? No problem!
humps.decamelize('APIResponse') # api_response
# aws.py
import humps
import boto3
def api(service, decamelize=True, *args, **kwargs):
service, func = service.split(':')
client = boto3.client(service)
kwargs = humps.pascalize(kwargs)
response = getattr(client, func)(*args, **kwargs)
return (depascalize(response) if decamelize else response)
# usage
api('s3:download_file', bucket='bucket', key='hello.png', filename='hello.png')