---
feature_story: FS_20_88_05_60
feature_title: dictated_arg
feature_status: PARTIAL
---
Keywords: `keyword` `dictated` `named`

# Explanation

A `command_arg` which has both `arg_name` and `arg_value` is called `dicated_arg`.

"Dictated" means that there is no room to choose which `arg_name` this `arg_value` belongs to
(`arg_name` is explicitly specified).

The `arg_name` on the command line is specified by starting it with `SpecialChar.ArgNamePrefix`.

# `offered_arg` vs `dictated_arg`

The opposite of `dictated_arg` is FS_96_46_42_30 `offered_arg`:

*   Unlike `offered_arg` which has only a value, `dictated_arg` has both a name and a value.

    `dictated_arg` "dictates" `arg_name` for FS_31_70_49_15 `search_control`.

*   `dictated_arg` can potentially specify any value.

     This is not possible with `offered_arg` due to "guessing" by value (see its limitations in FS_96_46_42_30).

     `arg_value` of `dictated_arg` is not inspected - they are set as is.

     If non-existing `arg_value` is mapped into `prop_value` via FS_31_70_49_15 `search_control`,
     it will result in empty search (given there is no such `arg_value` among `prop_value`-s).

     Alternatively, they may be used as FS_61_67_08_53 non-searchable `arg_value`.

# Python keyword arg vs `dictated_arg`

`dictated_arg` is similar to the concept of keyword argument for functions in Python language.

# Background

For a long time, `dictated_arg`-s  were not necessary in most of the cases because the value sets themselves
can contain unique values and do not intersect.
For example, for all IP addresses, values can be prefixed with `ip.` and specifying `ip.` on the command line
will only suggest options from that specific value set (as if prefix `-ip_address` was specified).
This may still be preferred (simpler) way to specify input
(by single FS_96_46_42_30 `offered_arg` rather than by paired `dictated_arg`).

TODO: TODO_66_66_75_78: Split `arg` to `prop` concepts.
      Also, review names for the args concepts - possibly rename them for clarity.
      For example, equivalents of Python positional args do not really exists
      (or exists only for interp tree to select special functions)
      and should rather be called FS_96_46_42_30 `offered_arg` everywhere.
