<p align="center">
<img src="https://raw.githubusercontent.com/nficano/humps/master/artwork/humps.png" alt="Humps logo" width="245" height="118">
</p>
<div align="center">
<a href="http://humps.readthedocs.io/en/latest/?badge=latest">
<img src="https://readthedocs.org/projects/humps/badge/?version=latest" />
</a>
<a href="https://coveralls.io/github/nficano/humps?branch=master">
<img src="https://coveralls.io/repos/github/nficano/humps/badge.svg?branch=master#cachebus" />
</a>
<a href="https://pypi.org/project/pyhumps/">
<img src="https://img.shields.io/pypi/v/pyhumps.svg#cachebust" />
</a>
<a href="https://pypi.org/project/pyhumps/">
<img src="https://img.shields.io/pypi/dm/pyhumps.svg" />
</a>
<a href="https://pypi.python.org/pypi/pyhumps/">
<img src="https://img.shields.io/pypi/pyversions/pyhumps.svg" />
</a>
</div>
</p>
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.
## Jan 11, 2021: An open call for contributors:
Please email me at nficano@gmail.com.
## 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
```
<hr>
## 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")
```
Raw data
{
"_id": null,
"home_page": "https://github.com/nficano/humps",
"name": "pyhumps",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "humps,snakecase,convert case,camelcase",
"author": "Nick Ficano",
"author_email": "nficano@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/c4/83/fa6f8fb7accb21f39e8f2b6a18f76f6d90626bdb0a5e5448e5cc9b8ab014/pyhumps-3.8.0.tar.gz",
"platform": null,
"description": "\n<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/nficano/humps/master/artwork/humps.png\" alt=\"Humps logo\" width=\"245\" height=\"118\">\n</p>\n\n<div align=\"center\">\n <a href=\"http://humps.readthedocs.io/en/latest/?badge=latest\">\n <img src=\"https://readthedocs.org/projects/humps/badge/?version=latest\" />\n </a>\n <a href=\"https://coveralls.io/github/nficano/humps?branch=master\">\n <img src=\"https://coveralls.io/repos/github/nficano/humps/badge.svg?branch=master#cachebus\" />\n </a>\n <a href=\"https://pypi.org/project/pyhumps/\">\n <img src=\"https://img.shields.io/pypi/v/pyhumps.svg#cachebust\" />\n </a>\n <a href=\"https://pypi.org/project/pyhumps/\">\n <img src=\"https://img.shields.io/pypi/dm/pyhumps.svg\" />\n </a>\n <a href=\"https://pypi.python.org/pypi/pyhumps/\">\n <img src=\"https://img.shields.io/pypi/pyversions/pyhumps.svg\" />\n </a>\n</div>\n</p>\n\nConvert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by [Humps](https://github.com/domchristie/humps) for Node.\n\n## Jan 11, 2021: An open call for contributors:\n\nPlease email me at nficano@gmail.com.\n\n## Installation\n\nTo install humps, simply use pipenv (or pip, of course):\n\n```bash\n$ pipenv install pyhumps\n```\n\n## Usage\n\n### Converting strings\n\n```python\nimport humps\n\nhumps.camelize(\"jack_in_the_box\") # jackInTheBox\nhumps.decamelize(\"rubyTuesdays\") # ruby_tuesdays\nhumps.pascalize(\"red_robin\") # RedRobin\nhumps.kebabize(\"white_castle\") # white-castle\n```\n\n### Converting dictionary keys\n\n```python\nimport humps\n\narray = [{\"attrOne\": \"foo\"}, {\"attrOne\": \"bar\"}]\nhumps.decamelize(array) # [{\"attr_one\": \"foo\"}, {\"attr_one\": \"bar\"}]\n\narray = [{\"attr_one\": \"foo\"}, {\"attr_one\": \"bar\"}]\nhumps.camelize(array) # [{\"attrOne\": \"foo\"}, {\"attrOne\": \"bar\"}]\n\narray = [{'attr_one': 'foo'}, {'attr_one': 'bar'}]\nhumps.kebabize(array) # [{'attr-one': 'foo'}, {'attr-one': 'bar'}]\n\narray = [{\"attr_one\": \"foo\"}, {\"attr_one\": \"bar\"}]\nhumps.pascalize(array) # [{\"AttrOne\": \"foo\"}, {\"AttrOne\": \"bar\"}]\n```\n\n### Checking character casing\n\n```python\nimport humps\n\nhumps.is_camelcase(\"illWearYourGranddadsClothes\") # True\nhumps.is_pascalcase(\"ILookIncredible\") # True\nhumps.is_snakecase(\"im_in_this_big_ass_coat\") # True\nhumps.is_kebabcase('from-that-thrift-shop') # True\nhumps.is_camelcase(\"down_the_road\") # False\n\nhumps.is_snakecase(\"imGonnaPopSomeTags\") # False\nhumps.is_kebabcase('only_got_twenty_dollars_in_my_pocket') # False\n\n\n# what about abbrevations, acronyms, and initialisms? No problem!\nhumps.decamelize(\"APIResponse\") # api_response\n```\n\n<hr>\n\n## Cookbook\n\n#### Pythonic Boto3 API Wrapper\n\n```python\n# aws.py\nimport humps\nimport boto3\n\ndef api(service, decamelize=True, *args, **kwargs):\n service, func = service.split(\":\")\n client = boto3.client(service)\n kwargs = humps.pascalize(kwargs)\n response = getattr(client, func)(*args, **kwargs)\n return (depascalize(response) if decamelize else response)\n\n# usage\napi(\"s3:download_file\", bucket=\"bucket\", key=\"hello.png\", filename=\"hello.png\")\n```\n",
"bugtrack_url": null,
"license": "The Unlicense (Unlicense)",
"summary": "\ud83d\udc2b Convert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by Humps for Node",
"version": "3.8.0",
"split_keywords": [
"humps",
"snakecase",
"convert case",
"camelcase"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "d2476e8fb8c0cbedca855e55d70891ee",
"sha256": "060e1954d9069f428232a1adda165db0b9d8dfdce1d265d36df7fbff540acfd6"
},
"downloads": -1,
"filename": "pyhumps-3.8.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d2476e8fb8c0cbedca855e55d70891ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6095,
"upload_time": "2022-10-21T10:38:58",
"upload_time_iso_8601": "2022-10-21T10:38:58.231075Z",
"url": "https://files.pythonhosted.org/packages/9e/11/a1938340ecb32d71e47ad4914843775011e6e9da59ba1229f181fef3119e/pyhumps-3.8.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "c9cf66913dbcc98513af00035fcbc8e9",
"sha256": "498026258f7ee1a8e447c2e28526c0bea9407f9a59c03260aee4bd6c04d681a3"
},
"downloads": -1,
"filename": "pyhumps-3.8.0.tar.gz",
"has_sig": false,
"md5_digest": "c9cf66913dbcc98513af00035fcbc8e9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9018,
"upload_time": "2022-10-21T10:38:59",
"upload_time_iso_8601": "2022-10-21T10:38:59.496082Z",
"url": "https://files.pythonhosted.org/packages/c4/83/fa6f8fb7accb21f39e8f2b6a18f76f6d90626bdb0a5e5448e5cc9b8ab014/pyhumps-3.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-10-21 10:38:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "nficano",
"github_project": "humps",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyhumps"
}