Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!ecngs!feeder2.ecngs.de!newsfeed.freenet.ag!news2.euro.net!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.81.MISMATCH!newsfeed.xs4all.nl!newsfeed2.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.002 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'arguments': 0.07; 'logic': 0.09; 'positional': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'terry': 0.09; '--config': 0.16; 'argparse': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'reedy': 0.16; 'required):': 0.16; 'roy': 0.16; 'subject:argparse': 0.16; 'wrote:': 0.17; 'config': 0.17; 'specify': 0.17; '(in': 0.18; 'jan': 0.18; 'command': 0.24; 'header:In-Reply-To:1': 0.25; 'header:User- Agent:1': 0.26; '(as': 0.27; 'header:X-Complaints-To:1': 0.28; 'represent': 0.28; 'optional': 0.29; 'case,': 0.29; 'code': 0.31; 'file': 0.32; 'could': 0.32; 'subject: -- ': 0.33; 'handle': 0.33; 'to:addr:python-list': 0.33; 'described': 0.35; 'pm,': 0.35; 'subject:?': 0.35; 'received:org': 0.36; 'but': 0.36; 'two': 0.37; 'quite': 0.37; 'far': 0.37; 'subject:: ': 0.38; 'to:addr:python.org': 0.39; 'takes': 0.39; 'header:Received:5': 0.40; 'your': 0.60; 'skip:a 30': 0.60; 'more': 0.63; 'smith': 0.71; 'received:fios.verizon.net': 0.84; 'returns.': 0.84 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Terry Reedy Subject: Re: argparse -- mutually exclusive sets of arguments? Date: Fri, 23 Nov 2012 13:56:50 -0500 References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Gmane-NNTP-Posting-Host: pool-173-75-251-66.phlapa.fios.verizon.net User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121026 Thunderbird/16.0.2 In-Reply-To: X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 24 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1353697034 news.xs4all.nl 6987 [2001:888:2000:d::a6]:49176 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:33864 On 11/23/2012 1:46 PM, Roy Smith wrote: > My command either takes two positional arguments (in which case, both > are required): > > $ command foo bar > > or the name of a config file (in which case, the positional arguments > are forbidden): > > $ command --config file > > How can I represent this with argparse; add_mutually_exclusive_group() > isn't quite the right thing. It could specify that foo and --config are > mutually exclusive, but not (as far as I can see) the more complicated > logic described above. Make the two positional arguments be one duple? Or tell argparse that all three are optional and handle the 'more complicated logic' in your own code after argparse returns. -- Terry Jan Reedy