@@ -148,6 +148,23 @@ def DEFINE_flag( # pylint: disable=invalid-name
148148 fv , flag , ensure_non_none_value = ensure_non_none_value )
149149
150150
151+ def set_default (flag_holder , value ):
152+ """Changes the default value of the provided flag object.
153+
154+ The flag's current value is also updated if the flag is currently using
155+ the default value, i.e. not specified in the command line, and not set
156+ by FLAGS.name = value.
157+
158+ Args:
159+ flag_holder: FlagHolder, the flag to modify.
160+ value: The new default value.
161+
162+ Raises:
163+ IllegalFlagValueError: Raised when value is not valid.
164+ """
165+ flag_holder ._flagvalues .set_default (flag_holder .name , value ) # pylint: disable=protected-access
166+
167+
151168def _internal_declare_key_flags (flag_names ,
152169 flag_values = _flagvalues .FLAGS ,
153170 key_flag_values = None ):
@@ -157,8 +174,7 @@ def _internal_declare_key_flags(flag_names,
157174 adopt_module_key_flags instead.
158175
159176 Args:
160- flag_names: [str], a list of strings that are names of already-registered
161- Flag objects.
177+ flag_names: [str], a list of names of already-registered Flag objects.
162178 flag_values: :class:`FlagValues`, the FlagValues instance with which the
163179 flags listed in flag_names have registered (the value of the flag_values
164180 argument from the ``DEFINE_*`` calls that defined those flags). This
@@ -176,8 +192,7 @@ def _internal_declare_key_flags(flag_names,
176192 module = _helpers .get_calling_module ()
177193
178194 for flag_name in flag_names :
179- flag = flag_values [flag_name ]
180- key_flag_values .register_key_flag_for_module (module , flag )
195+ key_flag_values .register_key_flag_for_module (module , flag_values [flag_name ])
181196
182197
183198def declare_key_flag (flag_name , flag_values = _flagvalues .FLAGS ):
@@ -194,16 +209,18 @@ def declare_key_flag(flag_name, flag_values=_flagvalues.FLAGS):
194209 flags.declare_key_flag('flag_1')
195210
196211 Args:
197- flag_name: str, the name of an already declared flag. (Redeclaring flags as
198- key, including flags implicitly key because they were declared in this
199- module, is a no-op.)
212+ flag_name: str | :class:`FlagHolder`, the name or holder of an already
213+ declared flag. (Redeclaring flags as key, including flags implicitly key
214+ because they were declared in this module, is a no-op.)
215+ Positional-only parameter.
200216 flag_values: :class:`FlagValues`, the FlagValues instance in which the
201217 flag will be declared as a key flag. This should almost never need to be
202218 overridden.
203219
204220 Raises:
205221 ValueError: Raised if flag_name not defined as a Python flag.
206222 """
223+ flag_name , flag_values = _flagvalues .resolve_flag_ref (flag_name , flag_values )
207224 if flag_name in _helpers .SPECIAL_FLAGS :
208225 # Take care of the special flags, e.g., --flagfile, --undefok.
209226 # These flags are defined in SPECIAL_FLAGS, and are treated
0 commit comments