Library of string functions and formatters
Project description
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.
Formatter
string_kit.Formatter is a drop-in replacement of string.Formatter and supports the same syntax and more.
- string_kit.Formatter 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 Formatter
the_weather = "Sunny but Humid"
custom_field_defaults = {
"bye": "Good bye!",
"password": lambda: random.choice(["lI0n", "rAbb1t", "tig3R"]) \
+ str(random.randint(1000, 9999)),
}
custom_convertors = {
"greeting": lambda str_, greeting: f"{greeting} {str_}",
"space2dash": lambda str_: str_.replace(" ", "-")
}
skf = Formatter(
silence_missing_fields=True,
field_defaults=custom_field_defaults, # optional, dict with str or callable values
convertors=custom_convertors, # optional, dict with callable values
field_namespaces=[locals()], # optional, namespaces to search for field names
)
print(skf.format("{name!space2dash!greeting(Hello)},"
" your random password is: '{password}'. {bye}",
name="Charlie Brown"))
# "Hello Charlie-Brown, your random password is: 'rAbb1t1258'. Good bye!"
print(skf.format("Today is {now!strftime(%A)!upper}, also a"
" {the_weather!lower:.5!replace(sunny,sunny \\(☀️\\))} day."
"{inexistent!lstrip}"))
# "Today is FRIDAY, also a sunny (☀️) day."
Some TODO Ideas
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file string_kit-0.1.0a6.tar.gz.
File metadata
- Download URL: string_kit-0.1.0a6.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.25.2 CPython/3.13.4 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f547c8e7a58db140e0bb1729558624aeb4c80035a52675203d3b8d3556889547
|
|
| MD5 |
0dca942478b9f8dedeb0e4df4786a0ae
|
|
| BLAKE2b-256 |
0a8c1f6637abd54d375282c5211afc0bca70158456dcde9f4fbf4b1d8962ac8a
|
File details
Details for the file string_kit-0.1.0a6-py3-none-any.whl.
File metadata
- Download URL: string_kit-0.1.0a6-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.25.2 CPython/3.13.4 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6af385ae6dccc8e7fca6e250a8d97f5c850bb0b2715e783bbbbe458de113566e
|
|
| MD5 |
0bb856b0ab1f380fc46b5b36b32e667a
|
|
| BLAKE2b-256 |
e14c8cc27020efada27a1d01168974f8e164fac469588cfa0f2137a1dc07b5d6
|