add twocolon_list()

This commit is contained in:
Yusur 2025-07-30 20:19:31 +02:00
parent 18b31c9889
commit 2c52f9b561
3 changed files with 15 additions and 5 deletions

View file

@ -4,7 +4,7 @@
+ `sqlalchemy`: add `unbound_fk()`, `bound_fk()`
+ Add `sqlalchemy_async` module with `SQLAlchemy()`
+ Add `timed_cache()`, `TimedDict()`, `none_pass`
+ Add `timed_cache()`, `TimedDict()`, `none_pass()`, `twocolon_list()`
+ Add module `calendar` with `want_*` date type conversion utilities and `age_and_days()`
+ Move obsolete stuff to `obsolete` package (includes configparse 0.3 as of now)
+ Add `redact` module with `redact_url_password()`

View file

@ -18,7 +18,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
from .iding import Siq, SiqCache, SiqType, SiqGen
from .codecs import (StringCase, cb32encode, cb32decode, b32lencode, b32ldecode, b64encode, b64decode, b2048encode, b2048decode,
jsonencode, want_bytes, want_str, ssv_list, want_urlsafe, want_urlsafe_bytes)
jsonencode, twocolon_list, want_bytes, want_str, ssv_list, want_urlsafe, want_urlsafe_bytes)
from .bits import count_ones, mask_shift, split_bits, join_bits, mod_ceil, mod_floor
from .calendar import want_datetime, want_isodate, want_timestamp, age_and_days
from .configparse import MissingConfigError, MissingConfigWarning, ConfigOptions, ConfigParserConfigSource, ConfigSource, DictConfigSource, ConfigValue, EnvConfigSource
@ -47,6 +47,6 @@ __all__ = (
'jsonencode', 'kwargs_prefix', 'lex', 'ltuple', 'makelist', 'mask_shift',
'matches', 'mod_ceil', 'mod_floor', 'none_pass', 'not_implemented',
'redact_url_password', 'rtuple', 'split_bits', 'ssv_list', 'symbol_table',
'timed_cache', 'want_bytes', 'want_datetime', 'want_isodate', 'want_str',
'want_timestamp', 'want_urlsafe', 'want_urlsafe_bytes'
'timed_cache', 'twocolon_list', 'want_bytes', 'want_datetime', 'want_isodate',
'want_str', 'want_timestamp', 'want_urlsafe', 'want_urlsafe_bytes'
)

View file

@ -294,6 +294,16 @@ def ssv_list(s: str, *, sep_chars = ',;') -> list[str]:
l.pop()
return l
def twocolon_list(s: str | None) -> list[str]:
"""
Parse a string on a single line as multiple lines, each line separated by double colon (::).
Returns a list.
"""
if not s:
return []
return [x.strip() for x in s.split('::')]
class StringCase(enum.Enum):
"""
Enum values used by regex validators and storage converters.
@ -329,5 +339,5 @@ class StringCase(enum.Enum):
__all__ = (
'cb32encode', 'cb32decode', 'b32lencode', 'b32ldecode', 'b64encode', 'b64decode', 'jsonencode'
'StringCase', 'want_bytes', 'want_str', 'jsondecode', 'ssv_list', 'want_urlsafe', 'want_urlsafe_bytes'
'StringCase', 'want_bytes', 'want_str', 'jsondecode', 'ssv_list', 'twocolon_list', 'want_urlsafe', 'want_urlsafe_bytes'
)