Skip to content

Releases: Erotemic/ubelt

Version 1.3.6

09 Jun 02:31
fa6a803
Compare
Choose a tag to compare

For new stuff: there is a quality of life improvements in ub.Path.chmod, you can use string-codes like ub.Path(...).chmod('+x') now! I think that's pretty neat. There isalso new functionality in ub.IndexableWalker.diff, which lets you compare similar, nested structures.

This update also vendors part of jaraco.windows so no-dependency versions of ubelt can now be installed on windows. The jaraco.windows can still be used, but it is now a truly optional dependency.

For fixed stuff: It looks like editable installs now use type annotations in their MAPPER files, so modname_to_modpath has been updated to account for this. This fixes several issues in experienced by consumers of this package.

There is also a fix that almost nobody will ever notice, but it blocked the above update from getting released for several weeks by causing a single CI job to fail. The library now handles new corner cases on pypy on windows with path related things (getting tests to pass was here far too much work - I nearly dropped pypy or windows support in frustration).

Version 1.3.6 - Released 2024-06-08

Added:

  • Add ub.IndexableWalker.diff

Fixed:

  • Added workarounds for copy / symlinks via ub.Path and ub.symlink on pypy.
  • ub.import_module_from_path now correctly accepts PathLike objects.
  • ub.modname_to_modpath fixed in cases where editable installs use type
    annotations in their MAPPING definition.

Added

  • Support for UNIX special permission (suid/sgid/svtx) codes in Path.chmod.

Changed

  • Moved windows dependencies from requires to optional. Windows users that make
    use of these will need to update their ubelt install or explicitly depend on
    them as well.

What's Changed

Full Changelog: v1.3.5...refs/heads/release

Version 1.3.5

20 Mar 18:41
6b1da49
Compare
Choose a tag to compare

Added:

  • New wrapper around pathlib.Path.chmod in ubelt.Path.chmod. Can now
    specify string codes like "u+x" or "+rw". Old stat logic works as it
    previously did.

Changed:

  • Allow the argument to ubelt.cmd to be a PathLike object, which we will
    expect to be an executable.

Fixed

  • ub.modname_to_modpath now handles cases where editable packages have modules where the name is different than the package.
  • Fixed deprecated usage of ast.Num

What's Changed

Full Changelog: v1.3.4...v1.3.5

Version 1.3.4

27 Oct 23:09
39e8230
Compare
Choose a tag to compare

Added

  • Add backend option to highlight_code which can be "pygments" or "rich".
  • Support for Python 3.12

Changed

  • Improve speed of inplace dictionary set operations.

Fixed

  • Align in the case of nobraces=1 for ubelt.urepr.

Version 1.3.3

10 Jul 20:55
Compare
Choose a tag to compare

Fixed

  • Bug where the first call to ub.hash_data would error if it was given a
    ndarray with object type.
  • Actually exposed ChDir.

Changed

  • Docs and typing improvements

Version 1.3.2

22 Jun 22:15
7bdd15f
Compare
Choose a tag to compare

Fixed

  • Bug where the first call to ub.hash_data would error if it was given a
    ndarray with object type.

Notes

  • Skipped a release version due to a bad github tag.

Version 1.3.0

15 Jun 02:16
Compare
Choose a tag to compare

Version 1.3.0 - 2022-06-14

Changed

  • Removed experimental warning from Path.copy and Path.move; they are now well enough tested.
  • The util_format submodule has been renamed to util_repr. The
    util_format is now a deprecated alias for util_repr.
  • Stub out merge methods for SetDict.
  • Renamed FormatterExtensions to ReprExtensions, with the former now being a deprecated alias.
  • ubelt.cmd now returns an object that ducktypes subprocess.CompletedProcess.
  • ubelt.cmd now contains a capture argument which will disable capturing of output.
  • ubelt.cmd ...detaching now only prints if verbosity is > 1

Version 1.2.4

28 Feb 21:37
3f124a7
Compare
Choose a tag to compare

Version 1.2.4

Added

  • Added ChDir to util_path.
  • Add transient option to JobPool so references to futures are released after they are yielded to the user.
  • Added "base32" as an option for hash_data. Note that it is unpadded, hence non-RFC compliant.
  • Added pattern as a convenience option to ubelt.Path.ls.

Changed

  • Updated vendored ProgIter to match progiter 1.3.0
  • The download progress bar now gives more relevant information and updates less frequently.
  • IndexableWalker.allclose can now take unwrapped objects.

Fixed

  • ubelt.cmd now respects cwd when system=True.

Version 1.2.3

03 Dec 05:16
Compare
Choose a tag to compare

Added

  • Support for FreeBSD in util_platform
  • ub.Path.copy and ub.Path.move
  • Tentative Python 3.11 support
  • ub.utext which is a repr2 with new defaults.
  • ub.IndexableWalker.allclose method to replace indexable_allclose

Changed

  • ub.schedule_deprecation can now accept the strings "soon" or "now" for "when" arguments.
  • ub.schedule_deprecation can now accept stacklevel as as an argument.
  • ub.Path.apppdir can now be called without arguments.
  • Deprecate TempDir
  • ub.Timer can now accept ns as a keyword to enable nanosecond resolution.
  • ProgIter.format_message return value has changed.
  • ub.Path.mkdir now returns itself
  • Speedup dict_hist in the basic case by 2x

Fixed

  • Issue in indexable_allclose where tolerances were not respected.
  • Issue in modname_to_modpath with exclude and editable installs.
  • Incompatibility with pathlib in PythonPathContext
  • Fixed issue in progiter with line clears
  • Issue in import_module_from_modname with editable installs where it would try to match modules that had the requested module as a prefix.
  • The timeout argument is now respected in the thread / process case of JobPool

Version 1.2.2

05 Sep 16:49
374f43d
Compare
Choose a tag to compare

Added

  • Add ubelt.util_dict.UDict.take.
  • Added __add__, __radd__, startswith, and endswith methods to ubelt.Path to make
    it a better drop-in replacement for string based paths.

Changed

  • Reverse dunder methods of ubelt.SetDict now promote the type.
  • Add cls keyword argument to ubelt.SetDict methods.
  • Deprecate: ensure_app_cache_dir, ensure_app_config_dir, ensure_app_data_dir,
    get_app_cache_dir, get_app_config_dir, get_app_data_dir, readfrom, writeto, ensure_unicode.
  • Initial work on new Path methods for move and copy.
  • CacheStamp.renew now does nothing and returns None if the stamp is disabled.
  • AutoDict, SetDict, and UDict are now always ordered. In Python 3.6 it inherits from OrderedDict. Otherwise it uses regular dict, which will be ordered in 3.7+
  • AutoDict now inherits from UDict.
  • PathLike objects can now be used in args to ub.cmd when the command is an iterable.

Deprecated

  • deprecate AutoOrderedDict, which is now indistinguishable from AutoDict

Fixed

  • Tentative fixes for new __editable__ based install path with ub.modname_to_modpath

Version 1.2.1

06 Aug 20:03
da6bc93
Compare
Choose a tag to compare

Version 1.2.1 - Released 2022-08-06

Fixed

  • Implemented inplace and reverse versions of dictionary set operations
  • Added copy to setdict