argparse documentation Help

Argument dependencies

Mutually exclusive arguments

Mutually exclusive arguments (i.e., those that can’t be used together) can be declared using MutuallyExclusive() UDA:

import argparse; struct T { @MutuallyExclusive() { string a; string b; } } T t; // One of them or no argument is allowed assert(CLI!T.parseArgs(t, ["-a","a"])); assert(CLI!T.parseArgs(t, ["-b","b"])); assert(CLI!T.parseArgs(t, [])); // Both arguments or no argument is not allowed assert(!CLI!T.parseArgs(t, ["-a","a","-b","b"]));

Set of mutually exclusive arguments can be marked as required in order to require exactly one of the arguments:

import argparse; struct T { @(MutuallyExclusive.Required) { string a; string b; } } T t; // Either argument is allowed assert(CLI!T.parseArgs(t, ["-a","a"])); assert(CLI!T.parseArgs(t, ["-b","b"])); // Both or no arguments are not allowed assert(!CLI!T.parseArgs(t, ["-a","a","-b","b"])); assert(!CLI!T.parseArgs(t, []));

Mutually required arguments

Mutually required arguments (i.e., those that require other arguments) can be declared using RequiredTogether() UDA:

import argparse; struct T { @RequiredTogether() { string a; string b; } } T t; // Both or no argument is allowed assert(CLI!T.parseArgs(t, ["-a","a","-b","b"])); assert(CLI!T.parseArgs(t, [])); // Only one argument is not allowed assert(!CLI!T.parseArgs(t, ["-a","a"])); assert(!CLI!T.parseArgs(t, ["-b","b"]));

Set of mutually required arguments can be marked as required in order to require all arguments:

import argparse; struct T { @(RequiredTogether.Required) { string a; string b; } } T t; // Both arguments are allowed assert(CLI!T.parseArgs(t, ["-a","a","-b","b"])); // Single argument or no argument is not allowed assert(!CLI!T.parseArgs(t, ["-a","a"])); assert(!CLI!T.parseArgs(t, ["-b","b"])); assert(!CLI!T.parseArgs(t, []));
Last modified: 07 August 2024