Skip to content

Releases: abseil/abseil-py

v2.5.0

Choose a tag to compare

@YukaSadaoka YukaSadaoka released this 03 Jul 10:57

Added

  • (app) Add support for enabling Python profiling via the ABSL_PYTHON_PROFILE_FILE environment variable.
  • (flags) Introduce --only_check_flags built-in flag to validate flag definitions without executing main().
  • (flagsaver) Add support for async test functions in @flagsaver.flagsaver.
  • (testing) Add record_property and get_recorded_properties methods to absltest.TestCase.

Changed

  • (flags) Apply defensive copying in save_flag_values to prevent dictionary mutation flakiness.
  • (logging) Update type signatures for absl.logging functions to support standard logging arguments (exc_info, stack_info, stacklevel, extra).
  • (cleanup) Expand usage of FlagHolder objects in app and absltest.

Fixed

  • (flags) Improve formatting and clarity of DuplicateFlagError message.
  • (testing) Fix assertion logic in absltest.TestCase.create_file.
  • (typechecking) Fix type annotations and compatibility with MyPy and Pyrefly.

v2.4.0

Choose a tag to compare

@AleksMat AleksMat released this 28 Jan 10:16

Added

  • Added support for Python 3.14.
  • Allow $PYTHONBREAKPOINT to affect runcall and post_mortem debugging.
  • (logging) Propagate **kwargs in conditional/rate-limited logging functions.

Changed

  • Dropped support for Python 3.8 and 3.9.
  • (flags) Change internals of absl.flags.get_help_width() implementation.
  • (cleanup) Modernize Bazel setup with MODULE.bazel.
  • (cleanup) Modernize type annotations using Python 3.10+ features.

Fixed

  • (flags) Fix duplicate flag definition when reloading a module.
  • (typechecking) Correct type signature of absltest.skipThisClass.

v2.3.1

Choose a tag to compare

@QEDady QEDady released this 03 Jul 09:31

Changed

  • (cleanup) Removed leftover code supporting Python < 3.8, as well as other
    references to older Python versions.

Fixed

  • (typechecking) Fixed typechecking errors that appeared under mypy release 1.16

v2.3.0

Choose a tag to compare

@AleksMat AleksMat released this 27 May 09:15

Added

  • (testing) Add extension point for letting TestLoader specify a custom
    sharding scheme.

Changed

  • Update package build and release process. Switched to using pyproject.toml,
    hatch, and GitHub Actions.

v2.2.2

Choose a tag to compare

@AleksMat AleksMat released this 03 Apr 15:21

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

Choose a tag to compare

@yilei yilei released this 16 Jan 22:16

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

Choose a tag to compare

@yilei yilei released this 19 Sep 17:29

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

Choose a tag to compare

@yilei yilei released this 11 Jan 18:06
127c988

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

Choose a tag to compare

@yilei yilei released this 13 Oct 20:33
9ac99c1

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

Choose a tag to compare

@yilei yilei released this 18 Jul 21:26
f0679ed

Fixed

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