Skip to main content

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

Project description

caseutil ⇄ 🐍🐫🍢

license Tests Coverage 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 Example Functions
snake_case my_variable_name is_snake, to_snake
CONST_CASE MY_VARIABLE_NAME is_const, to_const
camelCase myVariableName is_camel, to_camel
PascalCase MyVariableName is_pascal, to_pascal
kebab-case my-variable-name is_kebab, to_kebab
lower space my variable name is_lower, to_lower
UPPER SPACE MY VARIABLE NAME is_upper, to_upper
Title Space My Variable Name is_title, to_title

Installation

$ pip install caseutil

Quick Start

>>> from caseutil import *

Verify case format:

>>> is_snake('My variable-name')
False

Convert to case:

>>> to_snake('My variable-name')
'my_variable_name'

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

$ caseutil -c const "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.CONST, 'myVariableName')
'MY_VARIABLE_NAME'

All supported cases are gathered in Case enum:

class Case(StrEnum):
    CAMEL = 'camel'
    CONST = 'const'
    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 Notes

OS X

This project requires Homebrew. Other tools like PDM, Tox, and even Alacritty, will be installed automatically.

git clone https://github.com/makukha/caseutil.git
cd caseutil
brew bundle
task init install

Operations

Command Description
task init Initialize system environment
task install Install Python environment
task test Run tests

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 Distribution

caseutil-0.6.2.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

caseutil-0.6.2-py2.py3-none-any.whl (5.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file caseutil-0.6.2.tar.gz.

File metadata

  • Download URL: caseutil-0.6.2.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.17.3 CPython/3.12.4 Darwin/21.6.0

File hashes

Hashes for caseutil-0.6.2.tar.gz
Algorithm Hash digest
SHA256 dd5c5d5a4c948282bfd31357767a1ff67c9576036b3ad914eb90c5bdedbb3a89
MD5 02e88dbe3791855d1c38f8cedb654394
BLAKE2b-256 8f12901f0d05f1a9b11bab0d4b5ade00f80b6fa2095b5927fc7c2494d77a05dc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for caseutil-0.6.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 df9e751eacb1b76179bc45b2d389e8bda3d17f952bae68cd80b644af1e927be8
MD5 2b5f8c3d9ec7aab907b235bd07956403
BLAKE2b-256 42af9a7a346b34840490f5f7994f40b8d4e31c80ae83ebd8506aae326643d38a

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