Abseil Common Libraries (Python)
absl.flags.override_value
function to provide FlagHolder
with a construct to modify values. The new interface parallels absl.flags.FlagValues.__setattr__
but checks that the provided value conforms to the flag's expected type.absltest.TestCase.assertDataclassEqual
that tests equality of dataclass.dataclass
objects with better error messages when the assert fails.absl.flags.argparse_flags.ArgumentParser
now correctly inherits an empty instance of FlagValues
to ensure that absl flags, such as --flagfile
, --undefok
are supported.foo
no longer retains the value bar
after FLAGS.foo = bar
fails due to a validation error.absl-py
no longer supports Python 3.6. It has reached end-of-life for more
than a year now.logging.exception
can now take exc_info
as argument, with
default value True
. Prior to this change setting exc_info
would raise
KeyError
, this change fixes this behaviour.absltest.TestCase.enter_context
are forwarded to unittest.TestCase.enterContext
(when called via instance)
or unittest.TestCase.enterClassContext
(when called via class) now. As a
result, on Python 3.11+, the private _cls_exit_stack
attribute is not
defined on absltest.TestCase
and _exit_stack
attribute is not defined on
its instances.absltest.TestCase.assertSameStructure()
now uses the test case's
equality functions (registered with TestCase.addTypeEqualityFunc()
) for
comparing leaves of the structure.abslTest.TestCase.fail()
now names its arguments
(self, msg=None, user_msg=None)
, and not (self, msg=None, prefix=None)
,
better reflecting the behavior and usage of the two message arguments.DEFINE_enum
, DEFINE_multi_enum
, and EnumParser
now raise errors when
enum_values
is provided as a single string value. Additionally,
EnumParser.enum_values
is now stored as a list copy of the provided
enum_values
parameter.paramaterized.CoopTestCase()
to use Python 3 metaclass
idioms. Most uses of this function continued working during the Python 3
migration still worked because a Python 2 compatibility __metaclass__
variables also existed. Now pure Python 3 base classes without backwards
compatibility will work as intended.absltest.TestCase.assertSequenceStartsWith
now explicitly fail
when passed a Mapping
or Set
object as the whole
argument.@flagsaver.as_parsed
: this allows saving/restoring flags
using string values as if parsed from the command line and will also reflect
other flag states after command line parsing, e.g. .present
is set.logging.find_log_dir()
now falls back
to tempfile.gettempdir()
instead of /tmp/
.short_name=
) to DEFINE_multi_enum_class
are now correctly passed to the underlying Flag
object.absl.flags.set_default
function that updates the flag
default for a provided FlagHolder
. This parallels the
absl.flags.FlagValues.set_default
interface which takes a flag name.FlagHolder
instance(s) in
addition to flag name(s) as their first positional argument:
flags.register_validator
flags.validator
flags.register_multi_flags_validator
flags.multi_flags_validator
flags.mark_flag_as_required
flags.mark_flags_as_required
flags.mark_flags_as_mutual_exclusive
flags.mark_bool_flags_as_mutual_exclusive
flags.declare_key_flag
assertRaisesWithPredicateMatch
and
assertRaisesWithLiteralMatch
now capture the raised Exception
for
further analysis when used as a context manager.flag_name
arguments in the following functions
is deprecated. This parameter will be renamed in a future 2.0.0 release.
flags.register_validator
flags.validator
flags.register_multi_flags_validator
flags.multi_flags_validator
flags.mark_flag_as_required
flags.mark_flags_as_required
flags.mark_flags_as_mutual_exclusive
flags.mark_bool_flags_as_mutual_exclusive
flags.declare_key_flag