Skip to content

ProxyStore v0.6.5

Latest
Compare
Choose a tag to compare
@gpauloski gpauloski released this 25 Apr 14:21
· 10 commits to main since this release
v0.6.5
0becbb2

Highlights

This primary goal of this release is to improve some of the subtle challenges of working with Proxy objects. Specifically, that (1) serialization can fail on Proxy class attribute access, (2) serializers/compute frameworks will accidentally resolve a Proxy instance when doing simple operations like checking types or hashing, and (3) mypy cannot infer the types of most operations on a Proxy[T].

  • ProxyStore now uses a new slots-based Proxy implementation which will improve serialization compatibility.
  • Store.proxy(..., populate_target=True) will now cache some attributes of the target object so that calling hash() or isinstance() on a proxy does not require the proxy to be resolved.
  • An FAQ guide has been created to discuss these common pitfalls and their remedies.
  • The proxystore.mypy_plugin, when enabled, allows mypy to infer attribute types on Proxy[T].
  • The Store now has a register flag for configuring a Store instances to always register themselves.
  • Added the StaticLifetime

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Breaking Changes

  • Improve flexibility of Lifetime protocol and add StaticLifetime implementation by @gpauloski in #542

Enhancements

  • Introduce new slots-based Proxy implementation by @gpauloski in #539
  • Add the proxystore.mypy mypy plugin for resolving Proxy[T] types by @gpauloski in #545
  • Add the register flag to auto-register a Store after initialization by @gpauloski in #550
  • Support caching target attributes in Proxy to avoid resolving when using hash() or isinstance() by @gpauloski in #551
  • Generate Store.__repr__() from Store.config() by @gpauloski in #554

Bug Fixes

Documentation

Package Changes

  • Remove citation metadata to preserve Zenodo defaults by @gpauloski in #541

Full Changelog: v0.6.4...v0.6.5