pallets / click

Python composable command line interface toolkit

Home Page:https://click.palletsprojects.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mutually exclusive required options

ror6ax opened this issue · comments

Hi.

I have a situation where there's 3 ways a subcommand can go and each has a distinct option assigned to it. One of 3 has to be picked, but never in a combination with others.

Is there a way to achieve native click required=True- type of functionality(prompts, errors etc) in such case? So far I'm left with forest of ugly ifs.

Hi,

You could try making a subclass of option as suggested here:
https://stackoverflow.com/questions/37310718/mutually-exclusive-option-groups-in-python-click

Also see these issues for related discussion:
#257
#509

I am going to close this since something similar has been proposed and rejected in the past. However if you have a strong case for including something like this in click feel free to continue discussing it here. (Or if I've misunderstood what you're asking for.)

commented

This feature has been requested 4 years ago. It has been requested multiple times. It is listed as missing functionality on multiple blogs. Is the basis of rejections a combination of (1) having to modify interface and (2) you can implement it yourself? Or am I misunderstanding something here?

Based on the original rejection, it looks like Armin didn't think there was a clean way to implement this. It is also fairly easy to subclass option and get the requested behavior, which I think is a compelling reason to not add it to Click unless there is a really clean API for it.

Alternatively maybe we could add a section of some more subclass examples to the docs?