简单的可调用参数检查和过滤
项目描述
argset 提供了一个简单的接口,用于确定一个可调用对象是否接受具有给定名称的参数,过滤一个可能的参数 dict,使其仅包含可调用对象接受的参数,并确定从可能的参数 dict 中缺失的任何必需参数。
安装
argset 需要 Python 3.6 或更高版本。只需使用 Python 3 的 pip 安装 argset 及其依赖项即可(你有 pip,对吧?)
python3 -m pip install argset
示例
检查函数的参数
>>> from argset import argset >>> def my_func(foo, bar): ... print(f"foo={foo!r}") ... print(f"bar={bar!r}") ... >>> a = argset(my_func) >>> "foo" in a True >>> "quux" in a False
过滤一组参数,仅保留函数接受的参数
>>> a.select({"foo": 42, "bar": 23, "quux": 17}) {'foo': 42, 'bar': 23} >>> my_func(**a.select({"foo": 42, "bar": 23, "quux": 17})) foo=42 bar=23
与上述相同,但现在函数接受 **kwargs
>>> from argset import argset >>> def my_func2(foo, **kwargs): ... print(f"foo={foo!r}") ... for k, v in kwargs.items(): ... print(f"{k}={v!r}") ... >>> a2 = argset(my_func2) >>> "foo" in a2 True >>> "quux" in a2 True >>> a2.select({"foo": 42, "bar": 23, "quux": 17}) {'foo': 42, 'bar': 23, 'quux': 17} >>> my_func2(**a2.select({"foo": 42, "bar": 23, "quux": 17})) foo=42 bar=23 quux=17
API
argset(func: Callable) -> ArgSet
检查一个可调用对象,并返回其参数的摘要作为一个 ArgSet
class ArgSet
一个表示可调用参数的表示。它具有以下属性和特性
- required_positional_only: int
只有位置参数且没有默认值的参数数量
- optional_positional_only: int
只有位置参数且有默认值的参数数量
- positional_only: int
所有位置参数的总数
- required_args: frozenset[str]
所有没有默认值的位参数或关键字参数的名称
- optional_args: frozenset[str]
所有有默认值的位参数或关键字参数的名称
- argnames: frozenset[str]
所有位参数或关键字参数的名称
- takes_args: bool
可调用是否有形式为*args的参数
- takes_kwargs: bool
可调用是否有形式为**kwargs的参数
ArgSet对象支持in操作符;形式为argname in a的表达式在argname在a.argnames中或a.takes_kwargs为True时返回True。
ArgSet对象具有以下方法
ArgSet.select(kwargs: Dict[str, Any]) -> Dict[str, Any]
返回所有在kwargs中且键为可调用接受的位参数或关键字参数的项。如果takes_kwargs为True,则返回值是kwargs的副本。
ArgSet.missing(kwargs: Dict[str, Any]) -> FrozenSet[str]
返回所有在required_args中但不在kwargs中出现的键
项目详情
下载文件
下载适用于您平台文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分发
argset-0.1.0.tar.gz (6.6 kB 查看哈希值)
构建分发
argset-0.1.0-py3-none-any.whl (5.2 kB 查看哈希值)
关闭
argset-0.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8a41ee4789d37517c259984c11f2aa3639a90dc8fa446ff905ecc5fe6623c12d |
|
MD5 | 8795036c84ede7599bed722d9445611b |
|
BLAKE2b-256 | d0ee1c25e68d029e8daaf3228dababbf3261fa5d9569f6f705867b2ad4df9b6d |
关闭
argset-0.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 107a632c7112faceb9fd6e93658dd461154713db250f7ffde5bd473e17cf1db5 |
|
MD5 | 5fd57f8b97ffe7b2a98449afd293a372 |
|
BLAKE2b-256 | b52b7aa284f345e37f955d86e4cd57b1039b573552b0fc29d1a522ec05c1ee41 |