问题标签 [voluptuous]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-2.7 - 从其字符串名称创建(实例化?)对内置类型的引用
我希望能够在 yaml 中定义一个模式,在使用中读取它,pyyaml
然后使用voluptuous
(或其他模式验证器!)进行验证。但是,正如问题标题中所述,我遇到了需要为str
voluptuous 实例化内置类而不是它的字符串表示形式。
但是,此模式现在正在寻找字符串str
作为 的唯一可接受的值a
。使用直接 pyyaml(例如 'a': !!python/int)失败。相反,我想要下面的架构:
我很清楚这eval
不是生产解决方案,但evaler
下面的功能将转换schema1
为schema2
...
我也知道你可以实例化一个空类:
但是使用内置函数这是不可能的:
我探索了new
andtype
模块,但没有任何运气......
python-2.7 - 这是一个有效的性感结构还是我错过了什么
我有这个 YAML 文件。我有必需和可选键,还有可选块,如“linux”、“http”等。
我正在以这种方式加载和验证它:
但我收到此错误:
所以,看起来我在做一些非常糟糕的事情。对此有任何提示吗?问题是,我想要一个类似的东西:
['plugins']['linux']['settings']['disk'],或 ['plugins']['http']['settings']['disk'] 是 'linux' 或'http ' 具有可选设置的变量字段。
华丽的文档对新手不友好:/
python - 是否有任何关于肉欲的条件规则?
有没有办法使用 voluptuous 来定义条件规则?
这是我的架构:
没关系,但现在我想根据分辨率值验证比特率值。如果我有1920x1080
分辨率,那么我需要确保比特率是以下值之一:20、16、12、8;然后1280x720
比特率应该是以下之一:10、8、6、4。
我怎样才能做到这一点?该项目的 github 页面上有信息,但我在那里找不到我的案例。
python - 性感的代码可以通过pylint吗?
我pylint -E
作为 Python 项目测试的一部分运行,以确保错误不会蔓延到未经测试的代码中。一般来说,这工作得很好。但最近我遇到了voluptuous和 pylint 的问题。
问题是 pylint 认为 voluptuous Schemas 返回的值是列表,而事实并非如此。这是一个玩具程序:
它运行得很好:
但是,pylint 会标记.get()
调用:
我怎样才能让这个程序通过pylint -E
?
python - 如何使用单个多部分帖子标题键上传可变数量的文件
我有一个可重复的表单字段:
这将(使用jQuery)例如导致
根据用户要上传的文件数量。forms 方法是post
,enctype 是multipart/form-data
。
使用cherrypy作为我的服务器和性感的验证库我想保存上传的文件:
因此,我实际上需要一个包含所有文件信息的帖子标题(最好是文件列表),根据一个名为的键files
,但我得到的只是多个键,例如files[0]
,files[1]
等等......
我该如何处理?我是否必须以某种方式手动创建一个包含所有files
信息的数组,还是有更常见或实用的方法来做到这一点?
解决方案(按照 saaj 的建议):
像这样 aSchema
显然可以包含许多其他字段。提交的文件一般被添加到任何Schema
. 凉爽的!
python - 妖娆无法处理 unicode 字符串?
我正在尝试使用 voluptuous 来验证来自 HTTP 请求的 JSON 输入。但是,它似乎不能很好地处理 unicode 字符串。
上面的代码会产生以下错误:
但是,如果我u
从 URL 中删除符号,一切正常。这是一个错误还是我做错了?
附言。如果它与它有任何关系,我正在使用 python 2.7。
python - voluptuous:如何在 HTTP POST 中验证来自 json 数据的非字符串值
我正在用烧瓶实现一些 REST API。在其中一个 API 中,我需要提交一个由经度和纬度定义的位置。所以我很自然地用 httpie 做这个:
在烧瓶端,我使用 voluptuous 来验证 JSON 数据。但是,后端收到的所有数据都是unicode
类型的。我必须做这样的事情:
这感觉很笨重,有点超出了性感的目的。我做错了还是有更好的方法?
python - 使用装饰器处理函数参数
在核心,我想要做的是采用一些看起来像这个 未经修饰的验证函数的函数:
并使它们看起来像这个修饰的验证函数:
这里的想法k
是在所有实现功能中描述相同的功能。
具体来说,这些函数都返回“验证”函数,以与voluptuous 验证框架一起使用。因此,所有类型的函数f()
都返回一个稍后由Schema()
. k
is 实际上allow_none
,也就是说一个标志,确定一个None
值是否正常。一个非常简单的例子可能是这个示例使用代码:
在不更改示例使用代码的情况下,我试图通过将未修饰的验证函数更改为修饰的验证函数来实现相同的结果。举一个具体的例子,改变这个:
对此:
这两个返回的函数应该是等价的。
我试图写的是这个,利用decorator
图书馆:
我有一个unittest.TestCase
为了测试这是否按预期工作:
但我的测试返回以下失败:
我尝试对此进行调试,但无法让调试器实际进入装饰。我怀疑由于命名问题,例如在这个(非常长的)博客文章系列中提出的问题,test_wrapped_func
没有正确设置它的参数列表,因此装饰器甚至从未被执行,但它也可能完全是另外一回事。
我尝试了其他一些变化。通过从 中删除函数括号@allow_none
:
我得到一个不同的错误:
删除@decorator
失败:
这是有道理的,因为@allow_none
需要一个参数,因此逻辑上需要括号。替换它们会给出原始错误。
装饰器很微妙,我显然在这里遗漏了一些东西。这类似于对函数进行柯里化,但它并不完全有效。关于如何实施,我缺少什么?
python - 妖娆专属班
我正在使用 voluptuous 0.9.2,但 Exclusive 类有问题。我需要,如果没有键,它应该给出一个错误。但是,这对于性感来说是可以的。这是肉欲的错误吗?如果没有,我该如何为此编写脚本?
为了澄清我的问题,假设我们构建了这样的模式:
我需要提供一个且只有一个排除组中的密钥。但是当我用 进行测试时{'c': 5}
,即使我没有给出a
或,它似乎也是有效的b
。我不知道如何使它特别适用于这种情况。
python - 性感的 2 出 3 类
我一直在尝试使用 python 库voluptuous几个小时,但我无法做出我想要的。
这是现在正在工作的内容:
但我想添加另一个约束:我希望提供2个[CONF_START, CONF_END, CONF_DURATION]
。不多不少,不少于2个。
有人告诉我使用Exclusive
and Inclusive
,但我对 voluptuous 的工作原理感到非常困惑。
我怎样才能让它像我想要的那样工作?