Wrapper around ast.literal_eval with new {foo='bar', key=None} dict syntax.
Project description
litereval
litereval
is wrapper around ast.literal_eval
with new additional {foo='bar', key=None}
dict
syntax.
Plus some helper tools to deep merge dictionaries, parse ast.literal_eval
python data to *args
and **kwargs
.
Can be used to create wrapper command line interfaces. See pyppdf.
Install
Needs python 3.6+
pip install litereval
API
litereval
def litereval(string: str):
"""
Small extension of ``ast.literal_eval`` that also
accepts dict in a form of ``{key=100, foo='bar'}``
Returns
-------
ret :
ast.literal_eval(preprocess(string))
"""
merge
def merge(source: dict, destination: dict,
copy: bool = False) -> dict:
"""
Deep merge two dictionaries.
Overwrites in case of conflicts.
From https://stackoverflow.com/a/20666342
"""
args_kwargs
def args_kwargs(args: Any) -> Tuple[
Union[tuple, None], Union[dict, None]
]:
"""
Parses ``args`` object to ``(*args, **kwargs)`` tuple.
Special case when ``args`` is ``None``: returns ``(None, None)``.
Otherwise tries to put not iterable object to tuple:
``args`` to ``(args,)``. Examples:
* ``(1, 2)`` to ``(1, 2), {}``
* ``"foo"`` to ``("foo",), {}``
* ``{(): ('a', 0), 'foo': None} to
``('a', 0), {'foo': None}``
Returns
-------
ret :
tuple: *args, **kwargs
"""
get_args
def get_args(name: str, args, default=None) -> Args:
"""
Gets ``*args`` and ``**kwargs`` for a ``name`` function
from an ``args`` dict. Wrapper around ``args_kwargs`` function.
Returns ``NamedTuple`` ``Args``: ``(args: tuple, kwargs: dict)``
"""
get
def get(key: str, dic, default=None):
"""Gets key even from not a dictionary."""
tuple_
def tuple_(obj: Any) -> tuple:
"""Converts any object to tuple. ``string`` to ``(string,)``."""
validated
def validated(args: tuple, kwargs: dict) -> Tuple[tuple, dict]:
"""Validates inputs and returns ``*args, **kwargs``."""
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
litereval-0.0.8.tar.gz
(20.7 kB
view hashes)