sol.models.utils
-- Utilities¶
Simple helper functions.
- sol.models.utils.asunicode(s: Any) str | None ¶
Force a string to be a unicode instance.
- Parameters:
s -- any value
- Return type:
str
If s is not already an unicode string, it is assumed to be a
utf-8
bytes string, and thus decoded to unicode and returned. Otherwise s is returned as is:>>> assert asunicode(None) is None >>> assert not isinstance(asunicode(b'ascii'), bytes)
- sol.models.utils.normalize(s: str | None, title: bool | None = None) str | None ¶
Normalize the case of a string, removing spurious spaces.
- Parameters:
s -- a string
title -- if True always titleize the string, if False never do that, if None (default) only when the input string is all lower case or all upper case
- Return type:
unicode
>>> assert normalize(None) is None >>> print(normalize('lele gaifax')) Lele Gaifax >>> print(normalize('LELE')) Lele >>> print(normalize('LeLe', title=False)) LeLe
- sol.models.utils.njoin(elts: ~collections.abc.Sequence[~typing.Any] | ~collections.abc.Generator[~typing.Any, None, None], stringify: ~collections.abc.Callable[[~typing.Any], str | None] = <function asunicode>, localized: bool = True) str ¶
Given a sequence of items, concatenate them in a nice way.
- Parameters:
elts -- a sequence of elements
stringify -- the stringification function applied to all elements, by default coerced to unicode
localized -- a boolean flag to disable the translation of the final 'and'
- Return type:
unicode
If elts is empty returns an empty unicode string; if it contains a single element, returns the stringified element; otherwise returns a unicode string composed by all but the last elements stringified and joined by a comma, followed by the localized version of and followed by the last element stringified:
>>> print(njoin([1,2,3])) 1, 2 and 3 >>> print(njoin([1,2])) 1 and 2 >>> print(njoin([1])) 1 >>> assert njoin([]) == '' >>> print(njoin([1,2], stringify=lambda x: str(x*10))) 10 and 20
Note that falsey elements are skipped:
>>> print(njoin(['first', None, False, '', 'last'])) first and last
but
0
(zero) isn't considered a falsey value:>>> print(njoin([1,0,2])) 1, 0 and 2
- sol.models.utils.entity_from_primary_key(pkname: str) Base ¶
Given the name of a primary key, return the mapped entity.
- Parameters:
pkname -- the name of a primary key
- Return type:
a mapped class
- sol.models.utils.table_from_primary_key(pkname: str)¶
Given the name of a primary key, return the related table.
- Parameters:
pkname -- the name of a primary key
- Return type:
a SQLAlchemy table