2016-09-07 8 views
0

を持っている二つの相互除くフラグでPythonのArgumentParserの設定:1つのフラグが、私はPythonのArgumentParserを使用して、次の定義したいオプションの追加のフラグ

--mutually_exclusive_flag_A stringParameter 

--mutually_exclusive_flag_B stringParameter 
    --optional_b_flag_one 
    --optional_b_flag_two 

一つはmutually_exclusive_flag_Aまたはmutually_exclusive_flag_Bのいずれかを使用することができ、両方はできません。

mutually_exclusive_flag_Bを使用する場合は、optional_b_flag_oneとoptional_b_flag_twoを使用できます。

optional_b_flag_oneとoptional_b_flag_twoは論理フラグです。

mutually_exclusive_flag_Aまたはmutually_exclusive_flag_Bの選択を処理するにはadd_mutally_exclusive_groupが表示されます。しかし、私はどのように行うか分からないのは、私がmutally_exclusive_flag_Bを使用すると、optional_b_flag_oneとoptional_b_flag_twoが有効なフラグであることを宣言することです。

サブパーザ機能を使用して、mutally_exclusive_flag_Aとmutually_exclusive_flag_Bをコマンドに変換することができるようです。

私の最善の選択肢は何ですか?

答えて

0

​​は、その複雑なテストを処理できません。相互に排他的なグループはネストすることはできず、他の種類のロジック(xorandおよびorではない)のみを処理しません。私はPythonのバグや問題でこのような拡張を検討しましたが、それは簡単な追加ではありません。

最良の選択は、解析後に独自のテストを行うことです。

​​の主な目的は、ユーザーが望むものを把握することです。妥当性をチェックし、素晴らしいエラーメッセージを出すことはプラスですが、解析作業の中心にはなりません。

このメカニズムを拡張する際の問題の1つは、一般的な組み合わせに対して意味のある使用方法メッセージを書き込むことです。この要件をユーザーに説明する方法について考えましたか?

関連する問題