Camel Converter
In JSON keys are frequently in camelCase format, while variable names in Python are typically snake_case. The purpose of this package is to help convert between the two formats.
Usage
-
To convert from camel case to snake case:
from camel_converter import to_snake snake = to_snake("myString")
This will convert
myStringintomy_string -
To convert a dictionary's keys from camel case to snake case:
from camel_converter import dict_to_snake snake = dict_to_snake({"myString": "val 1"})
This will convert
{"myString": "val 1"}into{"my_string": "val 1"}. Non-string keys will be left unchanged.This is also available as a decorator for functions that return a dictionary.
from camel_converter.decorators import dict_to_snake @dict_to_snake def my_func() -> dict[str, str]: return {"myString": "val 1"} snake = my_func()
my_funcwill return{"my_string": "val 1"}. Non-string keys will be left unchanged. -
To convert from snake case to camel case:
from camel_converter import to_camel camel = to_camel("my_string")
This will convert
my_stringintomyString -
To convert from a dictionary's keys from snake case to camel case:
from camel_converter import dict_to_camel camel = to_camel({"my_string": "val 1"})
This will convert
{"my_string": "val 1"}into{"myString": "val 1"}Non-string keys will be left unchanged.This is also available as a decorator for functions that return a dictionary.
from camel_converter.decorators import dict_to_camel @dict_to_camel def my_func() -> dict[str, str]: return {"my_string": "val 1"} camel = my_func()
my_funcwill return{"myString": "val 1"}. Non-string keys will be left unchanged. -
To convert from snake to pascal case:
from camel_converter import to_pascal pascal = to_pascal("my_string")
This will convert
my_stringintoMyString -
To convert from a dictionary's keys from snake case to pascal case:
from camel_converter import dict_to_pascal pascal = to_pascal({"my_string": "val 1"})
This will convert
{"my_string": "val 1"}into{"MyString": "val 1"}Non-string keys will be left unchanged.This is also available as a decorator for functions that return a dictionary.
from camel_converter.decorators import dict_to_pascal @dict_to_pascal def my_func() -> dict[str, str]: return {"my_string": "val 1"} pascal = my_func()
my_funcwill return{"MyString": "val 1"}. Non-string keys will be left unchanged. -
Class base model to add methods
Inheriting the Converter adds to_camel and from_camel methods to your class
from camel_converrter import Converter
class SomeClass(Converter):
some_value = "some value"
def __init__(self) -> None:
self.another_value = "another value"
example = SomeClass()
print(example)
This will print {"someValue": "some value", "anotherValue": "another value"}
from camel_converrter import Converter
class SomeClass(Converter):
def __init__(self, some_value: str) -> None:
self.some_value = "some value"
example = SomeClass.from_camel({"someValue": "some value"})
print(example.some_value)
This will print some value
Optional Extras
An optional extra is provided for Pydantic that provides a base class to automatically convert between snake case and camel case. To use this Pydantic class install camel converter with:
pip install camel-converter[pydantic]
Then your Pydantic classes can inherit from CamelBase.
from camel_converter.pydantic_base import CamelBase
class MyModel(CamelBase):
test_field: str
my_data = MyModel(**{"testField": "my value"})
print(my_data.test_field)
will result in my value being printed.
With setting up your model in this way myField from the source, i.e. JSON data, will map to my_field in your model.
Contributing
If you are interested in contributing to this project please see our contributing guide
Metadata
Release files for camel-converter 6.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| camel_converter-6.0.0.tar.gz | 51.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| camel_converter-6.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.1 kB
Release files / camel_converter-6.0.0.tar.gz
| Download URL | camel_converter-6.0.0.tar.gz |
|---|---|
| Size | 51.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
46cd2c5608f81442ce36853a21c14c2b08313806cfb00dba4353e3b944575d20
|
|
BLAKE2b-256 checksum How to use checksums |
179ef730007f9786ea64f319d6dbb2979853e1e7fa0e044074f401523157366f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / camel_converter-6.0.0-py3-none-any.whl
| Download URL | camel_converter-6.0.0-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ca5e712b57dd3139ee12f6959e32dd37cfa32ea27f120c281f2aa3930d2dc853
|
|
BLAKE2b-256 checksum How to use checksums |
f87153efdd418759d57de014c2e3929022ecafd0c88176cff6b30a8518d219dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|