Releases: proxystore/proxystore
ProxyStore v0.8.3
Highlights
This is a bug fix only release.
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]
What's Changed
Bug Fixes
- Fix silent file truncation when very large objects are written by @gpauloski in #705
- Fix recursion error when using mypy plugin on classes that derive from Proxy by @gpauloski in #709
- Change Globus user auth to use
subfield by @AK2000 in #715
Development Workflows
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #712
Full Changelog: v0.8.2...v0.8.3
ProxyStore v0.8.2
Highlights
Stack traces are now more readable when an error is caught while resolving a proxy.
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]What's Changed
Breaking Changes
- Improve clarity of proxy resolve errors by @gpauloski in #696
Enhancements
- Support static endpoint host types and revert default to IP by @gpauloski in #687
Internal Changes
- Check correct CLI exit codes in newer click versions by @gpauloski in #691
- Fix minor warnings in CI workflows by @gpauloski in #699
Documentation
- Add node on ip vs fqdn host type for endpoints by @gpauloski in #685
- Fix deprecated redis docs link by @gpauloski in #697
- Update doc examples to be runnable by @gpauloski in #698
Package Changes
- Bump to ProxyStore v0.8.2 by @gpauloski in #700
Full Changelog: v0.8.1...v0.8.2
ProxyStore v0.8.1
Highlights
This release adds quality-of-life improvements to ProxyStore Endpoints and Globus Auth tooling.
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]What's Changed
Enhancements
- Skip
data_accessscopes on HA Globus Collections and add CLI option for session required domains by @gpauloski in #680 - Reduce likelihood of endpoint errors due to certain external environments by @gpauloski in #672
Internal Changes
- Minor test suite improvements (Python 3.13, warnings, and forking) by @gpauloski in #664
Documentation
- Update TPDS citation in README by @gpauloski in #660
- Add MOFA paper and HPPSS slides by @gpauloski in #666
- Change arxiv link to IEEE link for proxy patterns paper by @gpauloski in #674
- Expand warnings about Globus Transfer directory cleanup by @gpauloski in #676
- Fix typo in concepts page factory example by @gpauloski in #682
Full Changelog: v0.8.0...v0.8.1
ProxyStore v0.8.0
Highlights
This release migrates Globus Auth tooling to use the Globus SDK's GlobusApp, refactors the experimental streaming interfaces to support more flexible usage and third party integrations, and drops support for Python 3.8. Installing in Python 3.13 generally works, except for [endpoints] due to third-party dependencies.
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]What's Changed
Breaking Changes
- Refactor streaming interfaces and protocols to support new features by @gpauloski in #641
- Migrate to Globus SDK's GlobusApp by @gpauloski in #646
Documentation
- Add warning to
Storedocstring about serialization by @gpauloski in #628 - Update related publications by @gpauloski in #631
- Add Flight paper to related publication by @gpauloski in #633
- Add Colmena IJHPCA article to related publications by @gpauloski in #636
- Add HPPSS24 preprint to publications by @gpauloski in #637
- Clarify closing topics in streaming guide by @gpauloski in #640
- Update color palette and background for dark mode in doc figures by @gpauloski in #643
- Add warning to endpoints debugging guide about HTTP proxy errors by @gpauloski in #649
- Update Proxy Patterns paper with TPDS publication by @gpauloski in #653
Package Changes
- Drop Python 3.8 and upgrade dependencies by @gpauloski in #647
Development Workflows
- Use trusted publishing for PyPI releases by @gpauloski in #632
Full Changelog: v0.7.1...v0.8.0
ProxyStore v0.7.1
Highlights
This release addresses some minor bugs and improves the documentation with update logos, colors, descriptions, and API formatting.
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]What's Changed
Enhancements
- Enhance compatibility of the
StoreExecutorwith non-concurrent.futures.Executortypes by @gpauloski in #612
Bug Fixes
- Exclude state by default in
LocalConnectorconfig by @gpauloski in #602 - Improve thread-safety in the
Storeby @gpauloski in #609 - Fix deadlock in
StoreExecutortest with MacOS runners by @gpauloski in #614 - Improve which relay registration errors are raised versus retried by @gpauloski in #621
Internal Changes
- Return
selfinstart()/stop()ofTimerby @gpauloski in #611
Documentation
- Add TaPS to featured papers by @gpauloski in #606
- Fix docstring link for websockets>=13.0 by @gpauloski in #615
- Improve API documentation templates by @gpauloski in #616
- Update logo, icon, and color palette in docs by @gpauloski in #617
- Improve ProxyStore descriptions in docs, project metadata, and README by @gpauloski in #623
- Update README intro and improve docs build process by @gpauloski in #624
Package Changes
- Update documentation dependency versions by @gpauloski in #610
Development Workflows
- Upgrade all MacOS runners to 14 (ARM) by @gpauloski in #613
Full Changelog: v0.7.0...v0.7.1
ProxyStore v0.7.0
Highlights
This releases introduces a variety of quality of life improvements for ProxyStore.
- The type and hash of proxied objects are cached in the proxy by default to avoid incidental proxy resolution for common object operations (e.g.,
isinstance()or insert into hash-map type). See thepopulate_targetflag of theStoreto learn more. - Added the
StoreExecutor, which wrapsconcurrent.futures.Executorinstances with automatic input/output proxying. - Improved serialization performance for common scientific datatypes (dataframes and numpy arrays).
- Improved the mypy plugin.
- Added the Proxy Patterns paper to the publications.
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]What's Changed
Breaking Changes
- Migrate from
kafka-pythontoconfluent_kafkaby @gpauloski in #574 - Populate target objects by default in
Storeby @gpauloski in #581
Enhancements
- Support
Uniontypes in the mypy plugin and create theProxyOr[T]type alias by @gpauloski in #575 - Add the
StoreExecutorthat wrapsconcurrent.futures.Executorinstances with automatic input/output proxying by @gpauloski in #578 - Improve mypy plugin error messages by @gpauloski in #588
- Make
StoreConfiga PydanticBaseModelby @gpauloski in #589 - Improve serialization performance with buffers and custom type support by @KlaudiuszRydzy in #595
Bug Fixes
- Fix mypy plugin crashes by defaulting types to
Anywhen internal assertions fail by @gpauloski in #567 - Fix error messages printing "type" rather than the actual object's type name by @gpauloski in #568
- Restore defaults in ref proxy trampoline by @gpauloski in #580
Internal Changes
- Fix and/or remove
DeprecationWarningandExperimentalWarningby @gpauloski in #576 - Refactor serialization logic by @KlaudiuszRydzy in #594
Documentation
- Fix typo in FAQ by @gpauloski in #571
- Add FAQ on
isinstance()behavior with generic alias types by @gpauloski in #585 - Clarify
populate_target=Truebehavior with custom (de)serializers inStore.proxy()by @gpauloski in #586 - Add Proxy Patterns preprint to publications by @gpauloski in #592
Package Changes
- Remove
CITATION.cffby @gpauloski in #566 - Bump to ProxyStore v0.7.0 by @gpauloski in #597
New Contributors
- @KlaudiuszRydzy made their first contribution in #594
Full Changelog: v0.6.5...v0.7.0
ProxyStore v0.6.5
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
Proxyimplementation 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
Storenow has aregisterflag for configuring aStoreinstances to always register themselves. - Added the
StaticLifetime
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]What's Changed
Breaking Changes
- Improve flexibility of
Lifetimeprotocol and addStaticLifetimeimplementation by @gpauloski in #542
Enhancements
- Introduce new slots-based
Proxyimplementation by @gpauloski in #539 - Add the
proxystore.mypymypy plugin for resolvingProxy[T]types by @gpauloski in #545 - Add the
registerflag to auto-register aStoreafter initialization by @gpauloski in #550 - Support caching target attributes in
Proxyto 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
Metricsby @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
ProxyStore v0.6.4
Highlights
- Automatic proxy memory management via the "Ownership" model and "Lifetime" managers. Learn more in the new Object Lifetimes Guide.
- Added the
populate_targetflag toStore.proxy()for "pre-resolving" proxies. - Renamed
proxystore.store.future.ProxyFuturetoproxystore.store.future.Future. - Added support for Pydantic V1.
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]What's Changed
Breaking Changes
- Rename
ProxyFuturetoFutureby @gpauloski in #487
Enhancements
- Add
done()method toFutureby @gpauloski in #488 - Add the
iter_with_metadata()anditer_objects_with_metadata()methods toStreamConsumerby @gpauloski in #489 - Implement proxy ownership and borrowing references, rules, and interfaces by @gpauloski in #493
- Initial proxy ownership model integration for the
Storeand task execution by @gpauloski in #494 - Support exponential backoff factor in
PollingStoreFactoryby @gpauloski in #498 - Add
populate_targetflag toStore.proxy()to set created proxies as pre-resolved by @gpauloski in #500 - Document and add utilities for taking ownership of returned proxies by @gpauloski in #502
- Expose
publisherandsubscriberattributes inStreamConsumerandStreamProducerrespectively by @gpauloski in #504 - Leave stores open by default in stream interfaces by @gpauloski in #505
- Add queue-based Redis shim for streaming by @gpauloski in #511
- Add
Lifetimesupport for managing shared objects by @gpauloski in #513 - Improve
unregister_storeandStore.future()logging by @gpauloski in #524 - Mark
Connector.close()as idempotent by @gpauloski in #526
Bug Fixes
- Invalidate cache entry when using
Store._set()by @gpauloski in #492 - Fix
Store.put_batch()called with empty list inStreamProducer.flush_topic()by @gpauloski in #503 - Copy target by default in
borrow(),mut_borrow(), andinto_owned()by @gpauloski in #506 - Fix
submit()resolvingRefProxyandRefMutProxyarguments by @gpauloski in #507 - Fix
submit()resolvingProxyarguments (re: #507) by @gpauloski in #508 - Handle and pass on SIGINT propagated by Uvicorn after cleanup by @gpauloski in #514
- Prevent evicting the target object when invalidated
OwnedProxyinstances are garbage collected by @gpauloski in #525 - Log warning when an
EndpointConnectorfinds an unstarted endpoint by @gpauloski in #529 - Improve serialization error handling when resolving a proxy by @gpauloski in #531
Internal Changes
- Fix
LeaseLifetimefailing on MacOS runners by @gpauloski in #523
Documentation
- Fix typo in Object Lifetimes guide by @gpauloski in #528
Package Changes
- Update copyright year by @gpauloski in #496
- Add backwards compatibility for Pydantic V1 by @gpauloski in #501
Development Workflows
- Move ruff linter settings to lint section by @gpauloski in #490
- Use Apple Silicon GitHub Actions Runners by @gpauloski in #491
- Bump softprops/action-gh-release from 1 to 2 by @dependabot in #509
Full Changelog: v0.6.3...v0.6.4
ProxyStore v0.6.3
Highlights
This patch introduces the beta ProxyStore streaming interface. Check out the guide for more info!
Upgrade Steps
pip install --upgrade proxystore # or proxystore[all]
What's Changed
Enhancements
- Switch from dataclasses to Pydantic BaseModels for configuration classes by @gpauloski in #446
- Add prototype streaming interface by @gpauloski in #447
- Add the
RedisPublisherandRedisSubscriberfor use with ProxyStore streams by @gpauloski in #451 - Add the
KafkaPublisherandKafkaSubscriberfor use with ProxyStore streams by @gpauloski in #452 - Add the
ZeroMQPublisherandZeroMQSubscriberfor use with ProxyStore streams by @gpauloski in #453 - Make
StreamProducer/StreamConsumernot generic by @gpauloski in #466 - Consolidate streaming-related modules under
proxystore.streamby @gpauloski in #468 - Simplify
Producer/Subscriberinterfaces and adjust to match other libraries by @gpauloski in #470 - Make
StreamProducer/StreamConsumergeneric type containers by @gpauloski in #471 - Add end of stream events between the
StreamProducerandStreamConsumerby @gpauloski in #472 StreamProducercontrols whichStoreinstances are used for each stream topic by @gpauloski in #473- Support aggregation, batching, and filtering in stream interfaces by @gpauloski in #475
- Add the
next_object()anditer_object()methods toStreamConsumerby @gpauloski in #476
- Add the
Internal Changes
- Remove redundant unit test docstring requirements by @gpauloski in #469
Documentation
- Add new protein generation paper by Dharuman et al. by @gpauloski in #438
- Update and pin
mkdocstrings+ related packages by @gpauloski in #454 - Add a ProxyStore Streaming guide by @gpauloski in #457
- Refresh README with better overview, links, and badges by @gpauloski in #459
- Alias docs for latest release as stable and make the default by @gpauloski in #460
- Use
latestas canonical docs version and symlink it to latest release by @gpauloski in #474 - Add Harb et al. featured publication by @gpauloski in #478
Development Workflows
- Bump actions/cache from 3 to 4 by @dependabot in #456
- Enable and fix ruff
C90,SIM, andYTTlints by @gpauloski in #458
Full Changelog: v0.6.2...v0.6.3
ProxyStore v0.6.2
Highlights
This is a small patch release that improves compatibility with the ProxyStore Extensions package.
- Features from
proxystore-exare re-exported inproxystore.ex. - Documentation has been improved to reflect changes in
proxystore-ex.
In addition, Python 3.12 is now fully supported and tested against!
Upgrade Steps
$ pip install --upgrade proxystore[all]
What's Changed
Enhancements
- Modules in
proxystore_exare re-exported underproxystore.exby @gpauloski in #428
Internal Changes
- Upgrade to
pytest_asyncio>=0.23.2by @gpauloski in #430 - Test against Python 3.12 by @gpauloski in #431
- Improve logging verification in NAT type tests by @gpauloski in #434
Documentation
- List ProxyStore presentations on publications page of docs by @gpauloski in #423
- Add
proxystore[extensions]installation option to install the extensions package by @gpauloski in #427 - Add link in table of contents to guides in the extensions package by @gpauloski in #435
Development Workflows
- Switch auto-formatting from
blacktoruff formatby @gpauloski in #429 - Bump actions/setup-python from 4 to 5 by @dependabot in #433
- Fix wrong Python version requested in MacOS Python 3.9 tests by @gpauloski in #426
Full Changelog: v0.6.1...v0.6.2