Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kiwi0fruit/litereval
Wrapper around ast.literal_eval with additional {foo='bar', key=None} dict syntax. + Deep merge two dictionaries.
https://github.com/kiwi0fruit/litereval
cli eval literal-eval python python-cli
Last synced: about 1 month ago
JSON representation
Wrapper around ast.literal_eval with additional {foo='bar', key=None} dict syntax. + Deep merge two dictionaries.
- Host: GitHub
- URL: https://github.com/kiwi0fruit/litereval
- Owner: kiwi0fruit
- License: mit
- Created: 2019-01-16T15:27:16.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-02-11T07:01:38.000Z (almost 6 years ago)
- Last Synced: 2024-02-29T16:02:51.490Z (9 months ago)
- Topics: cli, eval, literal-eval, python, python-cli
- Language: Python
- Homepage:
- Size: 55.7 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://github.com/kiwi0fruit/pyppdf).
# Install
Needs python 3.6+
```bash
conda install -c defaults -c conda-forge litereval
```or
```bash
pip install litereval
```# API
### litereval
```py
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
```py
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
```py
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
```py
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
```py
def get(key: str, dic, default=None):
"""Gets key even from not a dictionary."""
```### tuple\_
```py
def tuple_(obj: Any) -> tuple:
"""Converts any object to tuple. ``string`` to ``(string,)``."""
```### validated
```py
def validated(args: tuple, kwargs: dict) -> Tuple[tuple, dict]:
"""Validates inputs and returns ``*args, **kwargs``."""
```