System-level utilities and helper functions.
Interpret a string as a boolean.
A case-insensitive match is performed such that strings matching ‘t’, ‘true’, ‘on’, ‘y’, ‘yes’, or ‘1’ are considered True and, when strict=False, anything else returns the value specified by ‘default’.
Useful for JSON-decoded stuff and config file parsing.
If strict=True, unrecognized values, including None, will raise a ValueError which is useful when parsing values passed in from an API call. Strings yielding False are ‘f’, ‘false’, ‘off’, ‘n’, ‘no’, or ‘0’.
Check the length of specified string.
Parameters: |
|
---|---|
Raises TypeError, ValueError: | |
For any invalid input. |
New in version 3.7.
Interpret a string as a boolean and return either 1 or 0.
Any string value in:
(‘True’, ‘true’, ‘On’, ‘on’, ‘1’)
is interpreted as a boolean True.
Useful for JSON-decoded stuff and config file parsing
Check if a value looks like an integer with base 10.
Parameters: | val (string) – Value to verify |
---|---|
Returns: | bool |
New in version 1.1.
Replace password with secret in a dictionary recursively.
Parameters: |
|
---|---|
Returns: | The dictionary with string substitutions. |
A dictionary (which may contain nested dictionaries) contains information (such as passwords) which should not be revealed, and this function helps detect and replace those with the ‘secret’ provided (or ‘***‘ if none is provided).
Substitution is performed in one of three situations:
If the key is something that is considered to be indicative of a secret, then the corresponding value is replaced with the secret provided (or ‘***‘ if none is provided).
If a value in the dictionary is a string, then it is masked using the mask_password() function.
Finally, if a value is a dictionary, this function will recursively mask that dictionary as well.
For example:
>>> mask_dict_password({'password': 'd81juxmEW_',
>>> 'user': 'admin',
>>> 'home-dir': '/home/admin'},
>>> '???')
{'password': '???', 'user': 'admin', 'home-dir': '/home/admin'}
For example (the value is masked using mask_password())
>>> mask_dict_password({'password': '--password d81juxmEW_',
>>> 'user': 'admin',
>>> 'home-dir': '/home/admin'},
>>> '???')
{'password': '--password ???', 'user': 'admin',
'home-dir': '/home/admin'}
For example (a nested dictionary is masked):
>>> mask_dict_password({"nested": {'password': 'd81juxmEW_',
>>> 'user': 'admin',
>>> 'home': '/home/admin'}},
>>> '???')
{"nested": {'password': '???', 'user': 'admin', 'home': '/home/admin'}}
New in version 3.4.
Replace password with secret in message.
Parameters: |
|
---|---|
Returns: | The unicode value of message with the password fields masked. |
For example:
>>> mask_password("'adminPass' : 'aaaaa'")
"'adminPass' : '***'"
>>> mask_password("'admin_pass' : 'aaaaa'")
"'admin_pass' : '***'"
>>> mask_password('"password" : "aaaaa"')
'"password" : "***"'
>>> mask_password("'original_password' : 'aaaaa'")
"'original_password' : '***'"
>>> mask_password("u'original_password' : u'aaaaa'")
"u'original_password' : u'***'"
New in version 0.2.
Changed in version 1.1: Replace also 'auth_token', 'new_pass' and 'auth_password' keys.
Changed in version 1.1.1: Replace also 'secret_uuid' key.
Changed in version 1.5: Replace also 'sys_pswd' key.
Changed in version 2.6: Replace also 'token' key.
Changed in version 2.7: Replace also 'secret' key.
Changed in version 3.4: Replace also 'configdrive' key.
Changed in version 3.8: Replace also 'CHAPPASSWORD' key.
Validate and split the given HTTP request path.
Examples:
['a'] = _split_path('/a')
['a', None] = _split_path('/a', 1, 2)
['a', 'c'] = _split_path('/a/c', 1, 2)
['a', 'c', 'o/r'] = _split_path('/a/c/o/r', 1, 3, True)
Parameters: |
|
---|---|
Returns: | list of segments with a length of maxsegs (non-existent segments will return as None) |
Raises: | ValueError if given an invalid path |
New in version 3.11.
Converts a string into an float representation of bytes.
The units supported for IEC
Kb(it), Kib(it), Mb(it), Mib(it), Gb(it), Gib(it), Tb(it), Tib(it)
KB, KiB, MB, MiB, GB, GiB, TB, TiB
The units supported for SI
kb(it), Mb(it), Gb(it), Tb(it)
kB, MB, GB, TB
Note that the SI unit system does not support capital letter ‘K’
Parameters: |
|
---|---|
Returns: | Numerical representation of text in bytes. |
Raises ValueError: | |
If text has an invalid value. |
Normalize string.
Convert to lowercase, remove non-word characters, and convert spaces to hyphens.
Inspired by Django’s slugify filter.
Parameters: |
|
---|---|
Returns: | slugified unicode representation of value |
Raises TypeError: | |
If text is not an instance of str |