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 callinghash()
orisinstance()
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 onProxy[T]
. - The
Store
now has aregister
flag for configuring aStore
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 addStaticLifetime
implementation by @gpauloski in #542
Enhancements
- Introduce new slots-based
Proxy
implementation by @gpauloski in #539 - Add the
proxystore.mypy
mypy plugin for resolvingProxy[T]
types by @gpauloski in #545 - Add the
register
flag to auto-register aStore
after initialization by @gpauloski in #550 - Support caching target attributes in
Proxy
to avoid resolving when usinghash()
orisinstance()
by @gpauloski in #551 - Generate
Store.__repr__()
fromStore.config()
by @gpauloski in #554
Bug Fixes
- Fix incorrect ns to ms conversion in
Metrics
by @gpauloski in #538
Documentation
- Add Harish et al featured paper by @gpauloski in #537
- Add "latest" DOI badge by @gpauloski in #540
- Add an FAQ page and refresh documentation by @gpauloski in #546
- Add a Dask Distributed guide by @gpauloski in #553
Package Changes
- Remove citation metadata to preserve Zenodo defaults by @gpauloski in #541
Full Changelog: v0.6.4...v0.6.5