問題タブ [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
を文字列表現ではなく官能的にインスタンス化する必要があります。
str
ただし、このスキーマは現在、 の唯一の許容値として文字列を探していますa
。直接 pyyaml (例: 'a': !!python/int) を使用すると失敗します。代わりに、以下のスキーマが必要です。
eval
これが本番ソリューションではないことは十分承知していますが、evaler
以下の関数は次のように変換schema1
されschema2
ます...
また、空のクラスをインスタンス化できることも認識しています。
しかし、ビルトインではこれは不可能です:
new
およびモジュールを調査しましたtype
が、運がありませんでした...
python-2.7 - これは voluptuous の有効な構造ですか、それとも何か不足していますか
私はこのYAMLファイルを持っています。必須キーとオプション キーがあり、「linux」、「http」などのオプション ブロックもあります。
この方法でロードして検証しています:
しかし、私はこのエラーが発生しています:
だから、私は本当に悪いことをしているように見えます。これに関するヒントはありますか?問題は、次のようなものが欲しいということです:
['plugins']['linux']['settings']['disk']、または ['plugins']['http']['settings']['disk'] は 'linux'or'http ' オプションの設定を含む変数フィールド。
官能的なドキュメンテーションは初心者向けではありません:/
python - 官能的な条件付きのルールはありますか?
voluptuous を使用して条件付きルールを定義する方法はありますか?
私が持っているスキーマは次のとおりです。
それは問題ありませんが、解像度の値に基づいてビットレートの値を検証したいと思います。解像度がある場合1920x1080
、ビットレートが次のいずれかの値であることを確認する必要があります。20、16、12、8。その場合1280x720
、ビットレートは 10、8、6、4 のいずれかになります。
どうやってやるの?プロジェクトの github ページに情報がありますが、私のケースが見つかりません。
python - 単一のマルチパート ポスト ヘッダー キーを使用して可変量のファイルをアップロードする方法
私は繰り返し可能なフォームフィールドを持っています:
たとえば、(jQueryを使用して)結果は次のようになります
ユーザーがアップロードしたいファイルの数に応じて。フォーム メソッドはpost
で、enctype はmultipart/form-data
です。
サーバーとしてcherrypyを使用し、官能的な検証ライブラリを使用して、アップロードしたファイルを保存したいと思います:
したがって、実際には、という1 つのキーに従って、すべてのファイルの情報を含むポスト ヘッダー (ファイルのリストのようなものが最適です) が必要になりますが、取得できるのは などのfiles
複数のキーだけです...files[0]
files[1]
どうすればこれにアプローチできますか? すべての情報を含む配列を手動で作成するfiles
必要がありますか、それともより一般的または実用的な方法がありますか?
解決策(saajの提案に従う):
このように、Schema
明らかに他の多くのフィールドを含むことができます。送信されたファイルは、一般的に任意のSchema
. 涼しい!
python - 官能的なユニコード文字列を処理できませんか?
HTTPリクエストからのJSON入力を検証するために官能的なものを使用しようとしています。ただし、ユニコード文字列をうまく処理していないようです。
上記のコードは、次のエラーを生成します。
u
ただし、 URL から表記を削除すると、すべて正常に動作します。これはバグですか、それとも間違っていますか?
ps。何か関係がある場合は、python 2.7を使用しています。
python - デコレーターで関数の引数を処理する
核心で、私がやろうとしているのは、この 装飾されていない検証関数のように見えるいくつかの関数を取ることです:
そして、それらを次の装飾された検証関数のようにします:
ここでの考え方k
は、すべての実装関数で同じ機能を記述しているということです。
具体的には、これらの関数はすべて官能的な検証フレームワークで使用するための「検証」関数を返します。したがって、 type のすべての関数は、f()
後で によって実行される関数を返しSchema()
ます。k
は実際には です。つまり、値が OKallow_none
かどうかを判断するフラグです。None
非常に単純な例は、次のサンプル使用コードです。
サンプルの使用コードを変更せずに、装飾されていない検証関数を装飾された検証関数に変更することで、同じ結果を達成しようとしています。具体例を挙げると、これを次のように変更します。
これに:
これら 2 つの関数から返される関数は同等である必要があります。
私が書こうとしたのは、decorator
ライブラリを利用してこれです:
そしてunittest.TestCase
、これが期待どおりに機能するかどうかをテストするために、次のものがあります。
しかし、私のテストは次の失敗を返します:
これをデバッグしようとしましたが、デバッガーが実際に装飾に入ることができませんでした。この (非常に長い) ブログ投稿シリーズで提起されたような命名の問題が原因で、test_wrapped_func
引数リストが適切に設定されていないため、デコレータが実行されることさえありませんが、完全に別のものである可能性もあります。
他のバリエーションも試してみました。から関数の括弧を削除することにより@allow_none
:
別のエラーが発生します。
@decorator
失敗をドロップすると:
@allow_none
引数を取るため、これは理にかなっています。そのため、論理的に括弧が必要になります。それらを置き換えると、元のエラーが発生します。
デコレータは微妙で、明らかに何かが欠けています。これは関数のカリー化に似ていますが、あまり機能していません。これをどのように実装する必要があるかについて、何が欠けていますか?