Use enum.Flag for boolean flag collections
mainenum.Flag (and enum.IntFlag) are treated as collections of boolean flags. You can provide multiple flags via the CLI to combine them.
Behavior:
- Case-insensitive name lookup.
- Underscores in names become hyphens in the CLI.
- You can pass multiple flags as positional arguments or as specific options (e.g.,
--permissions.write).
To expose flags directly as individual booleans (e.g., --read instead of --permissions.read), use Namespace Flattening.
from cyclopts import App
from enum import Flag, auto
app = App()
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
@app.default
def default(permissions: Permission = Permission.READ):
print(f"Permissions: {permissions}")
app()