Skip to main content

Casefy

Active Issues

Introduction

Casefy (/keɪsfaɪ/) is a lightweight Python package to convert the casing of strings. It has no third-party dependencies and supports Unicode.


Installation

The latest release can be installed using pip:

pip install -U casefy

Casefy is also available as an Arch Linux AUR package.


Examples

Note: for more details, you can check the API Reference.

import casefy

# Alphanum3ric case (removes non-alphanumeric chars)
string = casefy.alphanumcase("foo - 123 ; bar!")
print(string)  # foo123bar

# camelCase
string = casefy.camelcase("foo_bar")
print(string)  # fooBar

string = casefy.camelcase("FooBar")
print(string)  # fooBar

string = casefy.camelcase("FOO BAR")
print(string)  # fooBar

# Capital Case
string = casefy.capitalcase("fooBar")
print(string)  # FooBar

# CONST_CASE
string = casefy.constcase("fooBar")
print(string)  # FOO_BAR

# kebab-case
string = casefy.kebabcase("fooBar")
print(string)  # foo-bar

# lowercase
string = casefy.lowercase("fooBar")
print(string)  # foobar

# PascalCase
string = casefy.pascalcase("foo_bar")
print(string)  # FooBar

string = casefy.pascalcase("fooBar")
print(string)  # FooBar

# Sentence case
string = casefy.sentencecase("fooBar")
print(string)  # Foo bar

# Separator case
string = casefy.separatorcase("fooBar", separator="/")
print(string)  # foo/bar

string = casefy.separatorcase("fooBARbaz", separator="%", keep_together=["BAR"])
print(string)  # foo%bar%baz

# snake_case
string = casefy.snakecase("fooBar")
print(string)  # foo_bar

string = casefy.snakecase("fooBARbaz", keep_together=["BAR"])
print(string)  # foo_bar_baz

string = casefy.snakecase("FOO BAR")
print(string)  # foo_bar

# Title Case
string = casefy.titlecase("fooBarBaz")
print(string)  # Foo Bar Baz

# UPPERCASE
string = casefy.uppercase("fooBar")
print(string)  # FOOBAR

# UPPER-KEBAB-CASE
string = casefy.upperkebabcase("fooBar")
print(string)  # FOO-BAR

Contribute

If you find a bug, please open an issue. Pull Requests are also welcome!


Acknowledgements

This project started when I saw that the package python-stringcase was flagged-out-of-date in the Arch AUR Repository. The project stringcase seems not to be actively maintained anymore, so I decided to address its issues and pull requests and solve them in this new package. I kept the API as similar as possible, in order to facilitate any possible migration. I thank Taka Okunishi (author of stringcase) and its contributors for their work.


Related projects

  • case-conversion offers a very similar functionality as this project. I probably wouldn't have written this package if I had known of it before. However, the code of Casefy is more lightweight and just enough for most cases. If you need more functionality, e.g., detecting the case of a string, go with case-conversion.

  • Inflection presents some overlap with this project as well, allowing the transformation of strings from CamelCase to underscored_string, but also singularizing and pluralizing English words.


License

Casefy is distributed under the MIT license.

Metadata

Release files for casefy 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for casefy 1.1.0
File Size Uploaded
casefy-1.1.0.tar.gz 123.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for casefy 1.1.0
File Interpreter ABI Platform
casefy-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 130.4 kB

Release files / casefy-1.1.0.tar.gz

Download URL casefy-1.1.0.tar.gz
Size 123.9 kB
Tags Source
SHA-256 checksum
How to use checksums
849d6e0f80506fac70ab8e18999a4ca1eb7d8f70941682383d64aa22a7497f8f
BLAKE2b-256 checksum
How to use checksums
48249c732e8e3585a1dc621c9c1349e55e87070c95d3c2d57bd8c5083ec8d731
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / casefy-1.1.0-py3-none-any.whl

Download URL casefy-1.1.0-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a3dfcb14d85902d90702db1e9835760237f6a73ec0ae3b7e991ad767513a3cbc
BLAKE2b-256 checksum
How to use checksums
f16a1766f8c163951a3c9aeb30a4e6f5de9b2eed8389e3906c4cf30fcb475be6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

0.1.7

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page