# Default Parameter

The default values of `Parameter` for an app can be configured via `App.default_parameter`.

For example, to disable the `negative` flag feature across your entire app:

    from cyclopts import App, Parameter

    app = App(default_parameter=Parameter(negative=()))

    @app.command
    def foo(*, flag: bool):
        pass

    app()

Consequently, `--no-flag` is no longer an allowed flag:

    $ my-script foo --help
    Usage: my-script foo [ARGS] [OPTIONS]

    ╭─ Parameters ──────────────────────────────────────────────────╮
    │ *  --flag  [required]                                         │
    ╰───────────────────────────────────────────────────────────────╯

Explicitly annotating the parameter with `negative` overrides this configuration and works as expected:

    from cyclopts import App, Parameter
    from typing import Annotated

    app = App(default_parameter=Parameter(negative=()))

    @app.command
    def foo(*, flag: Annotated[bool, Parameter(negative="--anti-flag")]):
        pass

    app()

    $ my-script foo --help
    Usage: my-script foo [ARGS] [OPTIONS]

    ╭─ Parameters ──────────────────────────────────────────────────╮
    │ *  --flag --anti-flag  [required]                             │
    ╰───────────────────────────────────────────────────────────────╯

## Resolution Order

When resolving what the `Parameter` values for an individual function parameter should be, explicitly set attributes of higher priority `Parameter` s override lower priority `Parameter` s. The resolution order is as follows:

1. Highest Priority: Parameter-annotated command function signature `Annotated[..., Parameter()]`.

2. `Group.default_parameter` that the parameter belongs to.

3. `App.default_parameter` of the app that registered the command.

4. `Group.default_parameter` of the app that the function belongs to.

5. Lowest Priority: (2-4) recursively of the parenting app call-chain.

Any of Parameter's fields can be set to None to revert back to the true-original Cyclopts default.