Skip to main content

Library of string functions and formatters

Project description

PyPI Version PyPI Downloads

Description

Provides advanced string utilities and a powerful Formatter.

This is a development version, and while it has been thoroughly tested, it will be battle-tested in a live project and updated as needed.

PowerFormatter

PowerFormatter is a drop-in replacement of string.Formatter and supports the same syntax and more.

PowerFormatter adds the following features:
  • virtual fields now, uuid1, uuid4, uuid5 (no key is required in the format parameters, however if present, they take precedence); many more coming up.

  • user-defined virtual fields can be added through field_default init parm.

  • can send namespaces where format field values are searched through namespaces init parm.

  • !capitalize, !lower, !lstrip, !rstrip, !slug, !strip, !title, !upper; many more coming up.

  • user-defined convertors can be added through convertors init parm.

  • chained conversions and format specifications in any order: {field!slug:.10s!upper}.

  • user-configurable silence_missing_fields, if set True, will suppress IndexError and KeyError and will quietly replace with empty string.

  • user-configurable characters to identify fields (default {}), convertors (default !) and format specifiers (default :).

A simple example:

import random
from string_kit import PowerFormatter

the_weather = "Sunny but Humid"

my_field_defaults = {
    "greeting": "Hello",
    "password": lambda: random.choice(["lI0n", "rAbb1t", "tig3R"]) \
                        + str(random.randint(1000, 9999)),
}

my_convertors = {
    "space2dash": lambda s: s.replace(" ", "-")
}

pf = PowerFormatter(
    silence_missing_fields=True,
    field_defaults=my_field_defaults,  # optional, dict with str or callable values
    convertors=my_convertors,          # optional, dict with callable values
    field_namespaces=[locals()],       # optional, namespaces to search for field names
)

print(pf.format("{greeting!upper} {name!space2dash}, your random password is:"
                " '{password}'.", name="Charlie Brown"))
# "HELLO Charlie-Brown, your random password is: 'rAbb1t5302'."

print(pf.format("Today is a {the_weather:.5!lower} day.{inexistent!lstrip}"))
# "Today is a sunny day."

Some TODO Ideas

  • somehow send static parameters to convertors in format string, e.g. replace convertor with field-level replace string, i.e. {field!replace(x,y)}`

  • add snake_case, kebab-case, PascalCase, camelCase as built-in convertors

  • add sqids convertor with parameters (strings allowed, length) passed as static values

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

string_kit-0.1.0a5.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

string_kit-0.1.0a5-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file string_kit-0.1.0a5.tar.gz.

File metadata

  • Download URL: string_kit-0.1.0a5.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.25.2 CPython/3.13.4 Windows/11

File hashes

Hashes for string_kit-0.1.0a5.tar.gz
Algorithm Hash digest
SHA256 b9cdb8bcbb8bf46323264561bdd88922819b5f13a03103508783223ded3a1414
MD5 2012094d629f2bd3e636f36d6dbc9aee
BLAKE2b-256 533f88179764fe74cc83a22431c1a9c56f4c21ff8c5aed7d27a45ea0086c7bc0

See more details on using hashes here.

File details

Details for the file string_kit-0.1.0a5-py3-none-any.whl.

File metadata

  • Download URL: string_kit-0.1.0a5-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.25.2 CPython/3.13.4 Windows/11

File hashes

Hashes for string_kit-0.1.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 7b40a5dbfe45386a3e23ee6432f81a6c453a5e3a3039955fa83d4ef4398cf2a3
MD5 2d1db84e81b8c3fb3c0efa6b51c5f2c8
BLAKE2b-256 01e0f9aa42042c8c589f04aef7faa6249680657516aa95812f62cb2860e3e5ae

See more details on using hashes here.

Supported by

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