用于修复关键字参数的键的命名约定的修饰符使用错误的命名(如保留关键字或Python内置函数)向键添加尾随下划线
cure的Python项目详细描述
cure
Library,用于向来自第三方库的传递的关键字参数添加尾随下划线。如果键与Python保留关键字或Python内置冲突,则在kwarg中的键中添加首选的尾随下划线。方法可以用@cure
修饰符修饰。
也可用于将输入关键字参数转换为snake case。总而言之,是一个装饰器,用于安装从依赖于用户输入的第三方库获取输入的函数。根据我的经验,当使用web框架时,可能会发生这种情况,这些框架可能会将查询值应用为kwargs,或者与GraphQL库交互,后者将以kwargs形式发送用户输入参数。在
如pep8——Python代码风格指南(https://www.python.org/dev/peps/pep-0008/)中所述:
The following special forms using leading or trailing underscores are recognized (these can generally be combined with any case convention):
single_trailing_underscore_
: used by convention to avoid conflicts with Python keyword.
使用pip
安装
与安装任何其他Python包一样,使用pip
、poetry
、pipenv
或您选择的武器。在
$ pip install cure
用法和示例
使用@cure.decorator
^{pr2}$
然后可以使用关键字参数id
、username
和/或type
调用此函数。由于id
和type
要么是保留的Python关键字,要么是Python内置的,不应该用作名称,所以在将它们传递到函数my_function
之前,修饰符将在kwargs后面添加一个下划线。在
也将kwargs转换为snake case
importcure@cure.decorator(cure.KEYWORD_TRAILING_UNDERSCORES|cure.KEYWORD_SNAKE_CASE_RECURSIVE)defgraphql_resolver(obj,info,resource_id,type_=None):pass
此函数使用向保留关键字和内置项添加尾随下划线的选项,以及将输入kwargs转换为snake case的选项。假设我们正在处理一个GraphQL框架,它会像这样调用我们的函数,这取决于用户输入my_function(None, info, resourceId=kwargs["resourceId"], type=kwargs["type"])
,或者更像是my_function(None, info, **kwargs)
,其中{resourceId
和{@cure.decorator
可以帮助我们消除转换kwargs的障碍,或者跳过其他需要的障碍。在
可用选项
cure.KEYWORD_TRAILING_UNDERSCORES
:为关键字参数中使用保留关键字或Python内置名称的键添加尾随下划线。在cure.KEYWORD_SNAKE_CASE
:将关键字参数中的键转换为snake大小写。在cure.KEYWORD_SNAKE_CASE_RECURSIVE
:将关键字参数中的键转换为snake case。如果关键字参数的值是dict或dict列表,它还将把这些dict中的键转换为snake case。在cure.KEYWORD_CAMEL_CASE
:将关键字参数中的键转换为驼峰大小写。不建议这样做,但可以将其用作snake case decorator转换的值的反转。在cure.KEYWORD_CAMEL_CASE_RECURSIVE
:递归转换为camel case。在
其他功能
该模块还提供以下功能。在
cure.is_keyword(kw)
importcurecure.is_keyword("id")# Truecure.is_keyword("type")# Truecure.is_keyword("api")# False
cure.trail_name(kw)
importcurecure.trail_name("id")# "id_"cure.trail_name("type")# "type_"cure.trail_name("api")# "api"
cure.snake_case_name(kw)
和{}
importcurecure.snake_case_name("apiSecret")# "api_secret"cure.snake_case_dict({"user":{"userId":4711,"userLevel":"ADMIN"}},recursive=True)# {'user': {'user_id': 4711, 'user_level': 'ADMIN'}}
cure.camel_case_name(kw)
和{}
importcurecure.camel_case_name("api_secret")# "apiSecret"cure.camel_case_dict({"user":{"user_id":4711,"user_level":"ADMIN"}},recursive=True)# {'user': {'userId': 4711, 'userLevel': 'ADMIN'}}
- 项目
标签: