Skip to content

Releases: abseil/abseil-py

v2.2.2

03 Apr 15:21
Compare
Choose a tag to compare

Added

  • (testing) Added a new method absltest.TestCase.assertMappingEqual that tests equality of Mapping objects not requiring them to be dicts. Similar to assertSequenceEqual but for mappings.
  • (testing) Added a new method absltest.assertDictContainsSubset that checks that a dictionary contains a subset of keys and values. Similar to a removed method unittest.assertDictContainsSubset (existed until Python 3.11).
  • Added type annotations that are compliant with MyPy.

Changed

  • Removed support for Python 3.7.

Fixed

  • (testing) Fixed an issue where the test reporter crashes with exceptions with no string representation, starting with Python 3.11.

(The change log also includes changes in 2.2.0 and 2.2.1.)

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.