Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nficano/humps

Convert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by Humps for Node
https://github.com/nficano/humps

camelcase-to-snakecase pascal python3 snakecase

Last synced: 2 days ago
JSON representation

Convert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by Humps for Node

Awesome Lists containing this project

README

        


Humps logo

















Convert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by [Humps](https://github.com/domchristie/humps) for Node.

## Installation

To install humps, simply use pipenv (or pip, of course):

```bash
$ pipenv install pyhumps
```

## Usage

### Converting strings

```python
import humps

humps.camelize("jack_in_the_box") # jackInTheBox
humps.decamelize("rubyTuesdays") # ruby_tuesdays
humps.pascalize("red_robin") # RedRobin
humps.kebabize("white_castle") # white-castle
```

### Converting dictionary keys

```python
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.kebabize(array) # [{'attr-one': 'foo'}, {'attr-one': 'bar'}]

array = [{"attr_one": "foo"}, {"attr_one": "bar"}]
humps.pascalize(array) # [{"AttrOne": "foo"}, {"AttrOne": "bar"}]
```

### Checking character casing

```python
import humps

humps.is_camelcase("illWearYourGranddadsClothes") # True
humps.is_pascalcase("ILookIncredible") # True
humps.is_snakecase("im_in_this_big_ass_coat") # True
humps.is_kebabcase('from-that-thrift-shop') # True
humps.is_camelcase("down_the_road") # False

humps.is_snakecase("imGonnaPopSomeTags") # False
humps.is_kebabcase('only_got_twenty_dollars_in_my_pocket') # False

# what about abbrevations, acronyms, and initialisms? No problem!
humps.decamelize("APIResponse") # api_response
```


## Cookbook

#### Pythonic Boto3 API Wrapper

```python
# 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")
```