Skip to content

Releases: abseil/abseil-py

v2.1.0

16 Jan 22:16
Compare
Choose a tag to compare

Added

  • (flags) Added 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.
  • (testing) Added a new method absltest.TestCase.assertDataclassEqual that tests equality of dataclass.dataclass objects with better error messages when the assert fails.

Changed

  • (flags) absl.flags.argparse_flags.ArgumentParser now correctly inherits an empty instance of FlagValues to ensure that absl flags, such as --flagfile, --undefok are supported.
  • (testing) Do not exit 5 if tests were skipped on Python 3.12. This follows the CPython change in python/cpython#113856.

Fixed

  • (flags) The flag foo no longer retains the value bar after FLAGS.foo = bar fails due to a validation error.
  • (testing) Fixed an issue caused by this Python 3.12.1 change where the test reporter crashes when all tests are skipped.

v2.0.0

19 Sep 17:29
Compare
Choose a tag to compare

New

  • Support Python 3.12.

Changed

  • absl-py no longer supports Python 3.6. It has reached end-of-life for more
    than a year now.
  • (logging) 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.
  • (testing) For Python 3.11+, the calls to 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.
  • (testing) absltest.TestCase.assertSameStructure() now uses the test case's
    equality functions (registered with TestCase.addTypeEqualityFunc()) for
    comparing leaves of the structure.
  • (testing) 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.
  • (testing) Updated 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.
  • (testing) absltest.TestCase.assertSequenceStartsWith now explicitly fail
    when passed a Mapping or Set object as the whole argument.

v1.4.0

11 Jan 18:06
127c988
Compare
Choose a tag to compare

New

  • (testing) Added @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.

Changed

  • (logging) If no log dir is specified logging.find_log_dir() now falls back
    to tempfile.gettempdir() instead of /tmp/.

Fixed

  • (flags) Additional kwargs (e.g. short_name=) to DEFINE_multi_enum_class
    are now correctly passed to the underlying Flag object.

v1.3.0

13 Oct 20:33
9ac99c1
Compare
Choose a tag to compare

Added

  • (flags) Added a new 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.
  • (flags) The following functions now also accept 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

Changed

  • (testing) Assertions assertRaisesWithPredicateMatch and
    assertRaisesWithLiteralMatch now capture the raised Exception for
    further analysis when used as a context manager.
  • (testing) TextAndXMLTestRunner now produces time duration values with
    millisecond precision in XML test result output.
  • (flags) Keyword access to 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

v1.2.0

18 Jul 21:26
f0679ed
Compare
Choose a tag to compare

Fixed

  • Fixed a crash in Python 3.11 when TempFileCleanup.SUCCESS is used.

v1.1.0

01 Jun 21:57
58ead8c
Compare
Choose a tag to compare

Changed

  • Flag instances now raise an error if used in a bool context. This prevents the occasional mistake of testing an instance for truthiness rather than testing flag.value.
  • absl-py no longer depends on six.

v1.0.0

10 Nov 17:18
0f86230
Compare
Choose a tag to compare

Changed

  • absl-py no longer supports Python 2.7, 3.4, 3.5. All versions have reached
    end-of-life for more than a year now.
  • New releases will be tagged as vX.Y.Z instead of pypi-vX.Y.Z in the git
    repo going forward.