Skip to content

Releases: google/etils

v1.6.0

11 Dec 10:35
Compare
Choose a tag to compare
  • ecolab:
    • Added protobuf repeated fields support to ecolab.inspect
    • ecolab.auto_display:
      • Support specifiers to customize auto-display (;s, ;a, ;i,
        ;p,...)
      • Fixed auto-display when the line contain UTF-8 character
    • Fix a bug for ecolab.highlight_html to escape HTML string.
  • epy:
    • epy.lazy_imports() support adhoc imports (will re-create the original
      ecolab.adhoc context when resolved)
    • Added: epy.binary_adhoc() to add adhoc imports when using Python
      interpreter.
    • epy.lazy_imports() supports error and success callbacks
      (error_callback/success_callback).
    • Added: epy.pretty_repr support attr dataclass-like objects.
  • exm:
    • Adding artifacts can be used inside with xm.create_experiment()

v1.5.2

24 Oct 12:23
Compare
Choose a tag to compare
  • ecolab:
    • Fix import error in IPython when 7.0 <= version < 8
  • epath:
    • Fix resource_path when used on a adhoc-imported module.

v1.5.1

11 Oct 15:25
Compare
Choose a tag to compare
  • epath:
    • Fix glob issue when used with ffspec.

v1.5.0

19 Sep 16:59
Compare
Choose a tag to compare
  • ecolab:
    • Auto display statements ending with ; (assignments, return
      statements, expressions,...).
    • Adhoc proto now supports message extensions.
  • epath:
    • Add missing_ok=False kwargs to path.rmtree.
    • Add fsspec_backend relying on fsspec to handle GCS/S3 without needing
      TensorFlow. This means that gcsfs and s3fs become required
      dependencies to read respectively GCS and S3. TensorFlow is no more
      required. Note: If TensorFlow is installed, we still default to
      the tf_backend for backward compatibility.
    • Changed: path.glob raise an error if insufficient permission.
  • enp:
    • ArraySpec.from_array:
      • Fix when TF is in graph mode.
      • Add orbax metadata support
  • epy:
    • Add epy.pretty_repr for pretty print an object (including dataclass).
    • Add epy.diff_str for pretty diff print of 2 objects.
    • Add epy.is_namedtuple
  • etree:
    • Fix etree.map for namedtuple (Python backend)

v1.4.1

31 Jul 13:39
Compare
Choose a tag to compare
  • lazy_imports: More lazy imports
  • epath: Remove circular deps

v1.4.0

25 Jul 14:32
Compare
Choose a tag to compare
  • epy:
    • Add @epy.lazy_imports to lazyly import modules.
    • Fix @epy.frozen when class has custom __getattr__
  • ecolab:
    • ecolab.collapse()
      • Breaking: Remove widget=True argument to (widget always enabled).
        • Add expanded: bool kwargs to control whether the widget is
          expanded or collapsed by default.
    • Breaking: Remove keep_proto kwargs from clear_cached_modules and
      import_proto kwargs from adhoc (proto always supported)
    • Add expanded argument to ecolab.json() and change default behavior
      to False.
  • enp:
    • Make array spec (e.g. etree.spec_like()) hashable.
    • enp.lazy.is_tf returns True for tf.TensorSpec
    • Remove array_types.dtypes and array_types.typing (should use
      enp.dtypes and enp.typing instead).
  • epath:
    • Add owner and group to epath.Path.stat output. Does not work for
      Windows nor when tf.io.gfile is used.
  • etree:
    • Fix etree.map for collections.defaultdict
  • internal:
    • Add a unwrap_on_reload to save/restore original function after a
      module is reloaded (e.g. on colab)

v1.3.0

12 May 12:50
Compare
Choose a tag to compare
  • ecolab:
    • Add widget=True argument to ecolab.collapse() for better
      interactivity.
    • Add ecolab.highlight_html(code) to add syntax highlighting to cell
      outputs of specific objects.
  • edc:
    • Add contextvars option: Fields annotated as edc.ContextVars[T] are
      wrapped in contextvars.ContextVars.
    • Fix error when using _: dataclasses.KW_ONLY
    • __repr__ now also pretty-print nested dataclasses, list, dict,...
  • enp:
    • ArraySpec support grain.ArraySpec (allow support
      etree.spec_like(ds.element_spec) on grain datasets)
  • epy:
    • Better epy.Lines.make_block for custom pretty print classes, list,...

v1.2.0

04 Apr 10:26
Compare
Choose a tag to compare
  • enp:
    • etree.spec_like support f32,... annotations (when fully defined).
  • etree:
    • Add optree backend.
  • ecolab:
    • Add ecolab.auto_inspect() to allow inspecting all colab outputs.
    • Fix various ecolab.inspect issues (e.g. when used on metaclasses,...).
    • Add ecolab.inspect support for Jupyter notebook (non-Colab).

v1.1.1

20 Mar 15:13
Compare
Choose a tag to compare
  • enp:
    • Fix torch==2.0 compatibility.
  • Fix warning during pip install (missing epath-no-tf)

v1.1.0

13 Mar 16:23
Compare
Choose a tag to compare
  • enp:
    • Add torch support!
    • Add enp.lazy.LazyArray to lazily check
      isinstance(array, enp.lazy.LazyArray) without triggering TF,
      jax,... imports
    • Add skip=['jnp', ...] kwarg to enp.testing.parametrize_xnp to
      exclude a specific xnp module from tests.
    • Add enp.compat function to fix compatibility issues between Jax, TF,
      torch, numpy (e.g. x.astype() missing from torch, but working in
      jax, tf, np).
    • Breaking: Move some functions from enp.linalg to enp.compat.
    • Add more enp.lazy. methods for conversions from/to dtype
  • ecolab:
    • Add ecolab.inspect for interactively inspect any Python objects.
    • Add ecolab.json for interactive expandable JSON display.
    • ecolab.auto_plot_array
      • Add torch
      • Small/large images (height outside 100-250px) are automatically
        scaled up/down. Can be disabled with
        ecolab.auto_plot_array(height=None)
      • Can overwrite mediapy default options with show_images_kwargs
        and show_videos_kwargs
    • Add ecolab.interruptible for graceful interruption of loops.
    • Fixed: Pytype/pylance support for lazy_imports: unlock auto-complete,
      docstring tooltip, do not trigger linter errors anymore
      ("xxx" is not definedPylancereportUndefinedVariable).
  • etree:
    • from etils import etree now expose the Python backend (
      etree.map,...). Other backend are still available as previously
      (etree.jax.map,...)
  • epy:
    • Added: epy.splitby to split an iterator in 2, based on a predicate.
      (e.g. small, big = epy.splitby([20, 1, 30, 1, 2], lambda x: x > 10))