Option Setting Locations¶
The get_location() method of ConfigOpts can
be used to determine where the value for an option was set, either by
the user or by the application code. The return value is a
LocationInfo instance, which includes 2 fields: location
and detail.
The location value is a member of the Locations enum,
which has 5 possible values. The detail value is a string
describing the location. Its value depends on the location.
Value |
|
Description |
|
|---|---|---|---|
|
|
The original default set when the option was defined. |
The source file name where the option is defined. |
|
|
A default value set by the application as an override of the original default. This usually only applies to options defined in libraries. |
The source file name where |
|
|
A forced value set by the application. |
The source file name where |
|
|
A value set by the user through a configuration backend such as a file. |
The configuration file where the option is set. |
|
|
A value set by the user on the command line. |
Empty string. |
|
|
A value set by the user in the process environment. |
The name of the environment variable. |
Did a user set a configuration option?¶
Each Locations enum value has a boolean property indicating
whether that type of location is managed by the user. This eliminates
the need for application code to track which types of locations are
user-controlled separately.
loc = CONF.get_location('normal_opt').location
if loc.is_user_controlled:
print('normal_opt was set by the user')
else:
print('normal_opt was set by the application')