Abseil Py Versions Save

Abseil Common Libraries (Python)

v2.1.0

3 months ago

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 https://github.com/python/cpython/pull/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

7 months ago

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

1 year ago

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

1 year ago

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

1 year ago

Fixed

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

v1.1.0

1 year ago

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

2 years ago

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.