Skip to main content

Naming case conventions parsing and converting tool.

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.1-py2.py3-none-any.whl (5.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: caseutil-0.5.1-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.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e8e4a6f3d908bdbdbf0b6641aaa52e84312d4ab7a216a1c854f60f95ee471ff7
MD5 ecc6746e3c4d97747cdf2f13e6b788df
BLAKE2b-256 ed986ba2063f49262b561cd775daa50dcdb9c529b39b99a37985804c05d08a40

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