Skip to main content

Case conversion and verification Python library for snake_case, camelCase, kebab-case, and more.

Project description

caseutil

license Coverage Status pypi versions

Case conversion and verification Python library for snake_case, camelCase, kebab-case, and more.

Features

  • Verify and convert between most popular cases
  • Custom separators: 'my.variable.name', 'my/variable/name'
  • Command line mode: caseutil
  • Pure Python 2.7 to 3.13+
  • No dependencies
  • 100% test coverage

Supported Cases

case name func example
Snake case to_snake my_variable_name
All caps, screaming snake to_allcaps MY_VARIABLE_NAME
Camel case to_camel myVariableName
Pascal case to_pascal MyVariableName
Kebab case, spinal case to_kebab my-variable-name
Lower space-separated to_lower my variable name
Upper space-separated to_upper MY VARIABLE NAME
Title space-separated to_title My Variable Name

Installation

$ pip install caseutil

Quick Start

Call is_* to verify case format, and to_* to convert to specific case:

>>> from caseutil import *
>>> is_snake('My variable-name')
False
>>> to_snake('My variable-name')
'my_variable_name'

Use as command line tool, pass multiple values in argument or stdin:

$ caseutil -c allcaps "hi there"
HI_THERE
$ echo "hi_there\nsee you" | python -m caseutil -c camel
hiThere
seeYou

Universal Functions

Use functions is_case() and to_case() to deal with arbitrary case:

>>> is_case('camel', 'myVariableName')
True
>>> to_case(Case.ALLCAPS, 'myVariableName')
'MY_VARIABLE_NAME'

All supported cases are gathered in Case enum:

class Case(StrEnum):
    ALLCAPS = 'allcaps'
    CAMEL = 'camel'
    KEBAB = 'kebab'
    LOWER = 'lower'
    PASCAL = 'pascal'
    SNAKE = 'snake'
    TITLE = 'title'
    UPPER = 'upper'

Tokenization

Word separators are non-word characters including underscore, and places where text case is changed from lower to upper. Digits are not treated as separators. For more details, see this example and unit tests.

>>> words('!some_reallyMESsy text--wit4Digits.3VeryWh3re--')
['some', 'really', 'ME', 'Ssy', 'text', 'wit4', 'Digits', '3Very', 'Wh3re']

Custom Separators

For custom separators, use words() function:

>>> '/'.join(words(to_lower('myVariableName')))
'my/variable/name'
>>> '.'.join(words('myVariableName'))
'my.Variable.Name'

Unicode

Only ASCII names are supported. Unicode support is planned.


🛠 Developer's Corner

Develop on Mac OS X

Requires Docker and Homebrew.

git clone https://github.com/makukha/caseutil.git
brew install go-task
task init

Testing:

task test

Plans

  • Add more test, explore edge cases
  • Add Unicode support (write tests)
  • Add more cases

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

caseutil-0.5.2-py2.py3-none-any.whl (5.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file caseutil-0.5.2-py2.py3-none-any.whl.

File metadata

  • Download URL: caseutil-0.5.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Darwin/21.6.0

File hashes

Hashes for caseutil-0.5.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1b77664c3345edd3fddf87310342308619ed5c773cc47bfdd568f8e318f6c324
MD5 0c718d269fd7665110c8d97870748e19
BLAKE2b-256 264f292c77f1e3b5be479351d80c2d359b1513ace9a3db0ce7c87c293dc1f2ba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page