Skip to main content

Case convert and verify for Python: snake_case, camelCase, kebab-case, and more.

Project description

caseutil

license Coverage Status pypi versions

Case convert and verify for Python: 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.3-py2.py3-none-any.whl (5.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: caseutil-0.5.3-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.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 734c4f04150e250c9ef87d8b16611cdc0dd02fbb51eeadbd5ad843c061af20f5
MD5 cb74378cfb6c5e83124a8cae46540b52
BLAKE2b-256 2084f5fb334631cae26681c9ea675458bc8daef1cf1e0e8f6aaa58df5405e434

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