問題タブ [cerberus]
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 - Cerberus を使用した依存関係の検証
CSV ファイルをCerberusで検証していますが、いくつかの基本的なロジックであると想定しているものに苦労しています
シナリオ:
CSV ファイルには 2 つの列があります。Column 2
に値がある場合にのみ、値を持つ必要がColumn 1
あります。Column 1
が空の場合は、空Column 2
でもある必要があります。
これは最も簡単に記述できるルールの 1 つになると考えていますが、これまでのところ期待どおりに機能しているものはありません。
以下は、python 辞書を使用した同じロジックです。
Column 2
が提供されているため、ここではエラーが発生すると予想しColumn 1
ていましたが、ここでは結果はTrue
エラーなしを意味します
githubで提起された問題を確認しましたが、明らかな解決策が見つからないようです。
python - 同じルールを rules_set に渡す方法
Cerberusを使用して、ルールに渡されたいくつかのパラメーターに基づいてデータ (CSV データ) を検証するカスタム ルールを定義しました。私が尋ねた別の質問の回答からコピーした以下のルールの例を参照してください。
上記のフィールド 2 などの 1 つのフィールドで、ルールを複数回使用できますが、パラメータは異なります。したがって、上記の例では、フィールド 1 はフィールド 2 に依存し、フィールド 1 はフィールド 3 に依存する可能性があります。つまり、このルールを 2 回パス/実行する必要があります。
問題は、ルールが一意である必要があることを意味するarules_set
のみを取ることです。dict
問題は、どうすれば同じルールを複数回パスできるかということです。
ドキュメントの状態に注意してください。A validation schema is a mapping, usually a dict.
疑問に思っています。リストにすることができますか?はいの場合、ルールをリストとして渡すにはどうすればよいですか?
python - Cerberus は検証に非常に時間がかかります。何が間違っていますか?
(免責事項:私が読んだstackoverflowのすべてのパフォーマンス比較は、包括的/正確/適切に書かれていない/関連性がないなどの理由で非難されます.-これが実際の比較または完全にセットアップされているふりをしているわけではありません。 cerberus にデータをより迅速に検証させることができます。)
cerberusを使用した次のモデル設定があります。
これはデータの検証に使用されており、データの約 50% が通過しdo_validation
ます。
問題は、この検証を行うときに cerberus が非常に遅く、各検証に平均で 1 ミリ秒以上かかることです。比較すると、これは他のライブラリよりも 10 倍以上遅く、pydantic
私がベンチマークしたライブラリよりも 26 倍遅いです。
cerberus がもう少し遅かったとしても驚かないでしょうが、この差は極端すぎて意味がないように思えます。
パフォーマンスを大幅に損なう何か間違ったことをしていますか?
上記のコードは、pydantic のドキュメントのベンチマーク セクション用に作成されました。
cerberus を追加する PR は、(現在)ここで完全なコードと結果とともに公開されています。