- Fix websocket poison connection and leaks on failed requests by @basfroman in #367
Full Changelog: https://github.com/latent-to/async-substrate-interface/compare/v2.2.0...v2.2.1
- iscoroutinefunction deprecation by @thewhaleking in #362
- New Method:
runtime_callsby @thewhaleking in #361 - Batch StorageKey creation by @thewhaleking in #363
- fix(pyproject): drop unused wheel dep, update setuptools by @kilyanni in #364
- @kilyanni made their first contribution in #364
Full Changelog: https://github.com/latent-to/async-substrate-interface/compare/v2.1.0...v2.2.0
- Cache inflight current chain-head requests by @thewhaleking in #357
- Run bittensor e2e concurrently by @thewhaleking in #358
Full Changelog: https://github.com/latent-to/async-substrate-interface/compare/v2.0.4...v2.1.0
- Bumps wheel for CVE-2026-24049 by @thewhaleking in #340
- Bump pytest for consistency with bittensor by @thewhaleking in #343
- Raises correct exception for Storage Function Not Found by @thewhaleking in #342
- Fixes return type hint for
get_extrinsicsby @thewhaleking in #341 - Bumps workflow versions by @thewhaleking in #351
- Batches the query_map decoding during fully_exhaust=True. by @thewhaleking in #349
- Respects max_results in query_map results by @thewhaleking in #350
- fix:auto-signed extrinsics to use account_nextIndex by @zeus1959 in #345
- Correctly handle nonce is get_payment_info by @thewhaleking in #355
- @zeus1959 made their first contribution in #345
Full Changelog: https://github.com/latent-to/async-substrate-interface/compare/v2.0.3...v2.0.4
- use cyscale 0.3.1 by @thewhaleking in #332
- Removes the potential of a None result. by @thewhaleking in #335
- Updates README regarding cyscale by @thewhaleking in #334
- Bumps cyscale + cache version by @thewhaleking in #338
Full Changelog: https://github.com/latent-to/async-substrate-interface/compare/v2.0.1...v2.0.3
- use cyscale 0.3.1 by @thewhaleking in #332
Full Changelog: https://github.com/latent-to/async-substrate-interface/compare/v2.0.1...v2.0.2
- Bump aiohttp from 3.13.3 to 3.13.4 by @dependabot[bot] in #325
- Improves the scalecodec conflict detected message by @thewhaleking in #329
- Restricts the pickling to certain classes by @thewhaleking in #328
- @dependabot[bot] made their first contribution in #325
Full Changelog: https://github.com/latent-to/async-substrate-interface/compare/v2.0.0...v2.0.1
-
SS58 format now defaults to 42 instead of None. It can still be manually set to
None, which will trigger the chain pull. -
query now always returns a ScaleType object. Previously it could return ScaleObj | None | dict. The underlying data has not changed, but always needs to be retrieved by the
.value(or.value_objector.value_serialized). -
runtime_call now always returns the decoded value. Previously it could return the decoded object, or a ScaleObj. This was done for consistency, as legacy methods (pre-v15 metadata) required their own predefined decoders, and the decoders did not give a ScaleType object, so to keep things consistent, it's always the decoded value.
-
query_multi previously returned
[(StorageKey, ScaleType), ...], now returns[(StorageKey, decoded value), ...]. We made significant speed improvements in cyscale with batch-decoding, and this works great here. -
query_map.records previously returned
[(key, ScaleObj), ...]. Now returns[(key, decoded value), ...]for the same reasons as listed in the query_multi note. -
query_multiple: removed, was not so useful
-
reuse_block_hash: removed, was not so useful
-
SS58 addresses are always decoded now. No more need to manually decode after retrieving results.
-
For instantiation of any of the *Substrate classes, only the uri is a positional argument. All other arguments are keyword-only.
-
Better DiskCached behavior. Loading from cache is 2-3x faster, and dumping to cache 3-∞ faster (does not dump if the object is unchanged).
-
Mypy support added.
Because of the change from the combination py-scale-codec and bt-decode to cyscale, we no longer support having the
py-scale-codec installed (cyscale fits the same namespace, scalecodec). If you attempt to run ASI with py-scale-codec
installed, you will receive an error and instructions to uninstall that first. To prevent this, before upgrade, you can
remove it as such:
pip uninstall scalecodec -y
pip install -U cyscale
- Better typing for ScaleObj by @thewhaleking in #278
- Faster startup by @thewhaleking in #277
- DNS/SSL Caching by @thewhaleking in #279
- Added info about signed commits by @thewhaleking in #280
- [fix] change legacy (old) runtimeApi params encoding by @camfairchild in #194
- Prefer v15 metadata when available by @thewhaleking in #282
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.6.3...v1.6.4
- Fix: Supp for third-party runtimes by @ibraheem-abe in #274
- Extend
get_account_next_indexlogic by @basfroman in #273
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.6.2...v1.6.3
- Typing by @thewhaleking in #265
- Cache Improvements by @thewhaleking in #267
- improve (async) query map result by @thewhaleking in #266
- Use threaded bt-decode by @thewhaleking in #268
- Feat: Handle new error message fmt for InBlock source by @ibraheem-abe in #269
- Update: Remove python 3.9 support by @ibraheem-abe in #271
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.6.1...v1.6.2
- RuntimeCache updates by @thewhaleking in #260
- fix memory leak by @thewhaleking in #261
- Avoid Race Condition on SQLite Table Creation by @thewhaleking in #263
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.6.0...v1.6.1
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.15...v1.6.0
- Modifies the CachedFetcher to not keep pending exceptions by @thewhaleking in #253
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.14...v1.5.15
- Update: Adds support for custom extrinsic
DecryptionFailedby @ibraheem-abe in #247
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.13...v1.5.14
- Update
Checkout PR branch in async-substrate-interfacestep by @basfroman in #240 - No continual reconnection without cause by @thewhaleking in #241
- Feat: Add support for MeV shield extrinsics by @ibraheem-abe in #242
- Handle subscription failures from substrate by @thewhaleking in #243
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.12...v1.5.13
- RecursionError in
_wait_with_activity_timeoutwith concurrent tasks by @Arthurdw in #238 - Improved Test Running + Race Condition Catch by @thewhaleking in #236
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.11...v1.5.12
- Race Condition Bug fixes by @thewhaleking in #234
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.10...v1.5.11
- bug fixes 1.5.10 by @thewhaleking in #231
- no double-sleep in async-substrate-interface websocket querying
- KeyError catching on websocket race conditions
- corrected state check on disconnecting
- reset ws attempts on close
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.9...v1.5.10
- Adds metadata call functions retrieval by @thewhaleking in #223
- move metadata methods to SubstrateMixin by @thewhaleking in #224
- Update get_payment_info to include addl params by @thewhaleking in #226
- Python 3.14 by @thewhaleking in #228
- Support python 3.14 by @Moisan in #210
- @Moisan made their first contribution in #210
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.8...v1.5.9
- Fix parameter name conflict in retry substrate _retry() methods by @Arthurdw in #218
- Use uv for test dependencies by @thewhaleking in #219
- Reconnection/Resubmission Logic Improved by @thewhaleking in #217
- @Arthurdw made their first contribution in #218
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.7...v1.5.8
- Updates the type hint on ws_shutdown_timer in RetryAsyncSubstrate by @thewhaleking in #203
- correct type hint by @thewhaleking in #204
- Clear asyncio.Queue after retrieval by @thewhaleking in #206
- Add the option to manually specify the Bittensor branch when running with
workflow_dispatchby @basfroman in #208 - Subscription Exception Handling by @thewhaleking in #207
- more efficient query map by @thewhaleking in #211
- Unique keys in request manager by @thewhaleking in #212
- Adds type annotations for Runtime by @thewhaleking in #214
- Edge case ss58 decoding in decode_query_map by @thewhaleking in #213
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.6...v1.5.7
- Clean Up Error Handling by @thewhaleking in #193
- Avoids ID of 'None' in queries by @thewhaleking in #196
- Allows AsyncSubstrateInterface's Websocket connection to not automatically shut down by @thewhaleking in #197
- return type annotation for
get_metadata_call_functionby @thewhaleking in #199 - Change responses["results"] to deque by @thewhaleking in #198
- do not attempt to reconnect if there are open subscriptions by @thewhaleking in #200
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.5...v1.5.6
- Improve timeout task cancellation by @thewhaleking in #190
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.4...v1.5.5
- Raw Websocket Logger Inconsistency Fix by @thewhaleking in #188
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.3...v1.5.4
- edge case query map keys by @thewhaleking in #186
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.2...v1.5.3
- Improve test workflows by @basfroman in #173
- Adds env var support for setting cache size by @thewhaleking in #174
- Set env vars as str in unit test by @thewhaleking in #177
- DiskCachedAsyncSubstrateInterface: use aiosqlite by @thewhaleking in #176
- Additional Debug Logging by @thewhaleking in #178
- None type edge case catch by @thewhaleking in #184
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.1...v1.5.2
- query multiple/decoding fix by @thewhaleking in #168
- Fix reconnection logic by @thewhaleking in #169
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.5.0...v1.5.1
- ConcurrencyError fix by @thewhaleking in #162
- Added better typing by @thewhaleking in #163
- Fix arg order in retries by @thewhaleking in #165
- removes "bool object has no attribute Metadata" errors
- Concurrency improvements by @thewhaleking in #164
- True Runtime independence in AsyncSubstrateInterface:
- ensures no need to reload types from a shared object that may interfere with concurrency
- increases memory usage slightly, but drops CPU usage dramatically by not needing to reload the type registry when retrieving from cache
- RuntimeCache improved to automatically add additional mappings
- Uses a single dispatcher queue for concurrent sending/receiving which eliminates the need for coroutines to manage their own state in regard to connection management.
- Futures from the Websocket now get assigned their own exceptions
- Overall cleaner logic flow with regard to rpc requests
- The Websocket object now handles reconnections/timeouts
- Separation of normal ping-pong calls and longer-running subscriptions
- True Runtime independence in AsyncSubstrateInterface:
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.4.3...v1.5.0
- Add "Token" to caught error messages for extrinsic receipts by @thewhaleking in #156
- runtime version switching by @thewhaleking in #157
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.4.2...v1.4.3
- Use scalecodec rather than bt-decode for query_multi by @thewhaleking in #152
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.4.1...v1.4.2
- Missed passing runtime in encoding by @thewhaleking in #149
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.4.0...v1.4.1
- Removes unused imports by @thewhaleking in #139
- Improve CachedFetcher by @thewhaleking in #140
- Only use Runtime objects in AsyncSubstrateInterface by @thewhaleking in #141
- python ss58 conversion by @thewhaleking in #143
- fully exhaust query map by @thewhaleking in #144
- Only use v14 decoding for events by @thewhaleking in #145
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.3.1...v1.4.0
- Fixes default vals for archive_nodes by @thewhaleking in #134
- Adds ability to log raw websockets for debugging. by @thewhaleking in #133
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.3.0...v1.3.1
- Add GH test runner by @thewhaleking in #129
- Edge Case Fixes by @thewhaleking in #127
- Add archive node to retry substrate by @thewhaleking in #128
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.2.2...v1.3.0
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.2.1...v1.2.2
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.2.0...v1.2.1
- Add missing methods by @thewhaleking in #104
- Max subscriptions semaphore added by @thewhaleking in #107
- Expose
_get_block_handlerpublicly by @thewhaleking in #108 - safe
__del__by @thewhaleking in #110 - Tensorshield/main by @thewhaleking in #111
- Support async key implementations by @immortalizzy in #94
- Add MetadataAtVersionNotFound error by @thewhaleking in #113
- Fallback chains by @thewhaleking in #100
- @immortalizzy made their first contribution in #94
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.1.1...v1.2.0
- State-Safe RNG by @thewhaleking in #97
- Fix tests requirements by @thewhaleking in #98
- Update maintainers emails by @thewhaleking in #99
- Adds additional exception for catching by @thewhaleking in #96
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.1.0...v1.1.1
- Fix: response is still missing for callback by @zyzniewski-reef in #90
- Expose websockets exceptions by @thewhaleking in #91
- Improved Query Map Decodes by @thewhaleking in #84
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.9...v1.1.0
- Add workflows for run SDK and BTCLI tests if labels are applied by @roman-opentensor in #83
- Update docker image name by @roman-opentensor in #85
- Updates
_load_registry_type_mapby @ibraheem-opentensor in #87
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.8...v1.0.9
- Allows installing on Python 3.13 by @thewhaleking in #79
- Support Option types by @ibraheem-opentensor in #80
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.7...v1.0.8
- Improves the logic of the disk cache so that it doesn't spill over by @thewhaleking in #76
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.6...v1.0.7
- On-disk cache by @thewhaleking in #67
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.5...v1.0.6
- Fixes a memory leak by @thewhaleking in #70
- Backmerge main to staging 104 by @ibraheem-opentensor in #71
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.4...v1.0.5
- Warn users about too old blocks by @thewhaleking in #60
- Runtime version fixes by @thewhaleking in #65
- Feat/mvds00/runtime version fixes by @mvds00 in #63
- Backmerge main to staging 103 by @ibraheem-opentensor in #66
- @mvds00 made their first contribution in #63
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.3...v1.0.4
- Refactor generate_unique_id by @thewhaleking in #56
- Backmerge main to staging 103 by @ibraheem-opentensor in #57
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.1...v1.0.3
- Closes the connection on the object being garbage-collected by @thewhaleking in #51
- Generate UIDs for websockets by @thewhaleking in #50
- Dynamically pulls the info for Vec from the metadata by @thewhaleking in #47
- Fix readme by @igorsyl in #46
- Handle options with bt-decode by @thewhaleking in #52
- Backmerge main to staging 101 by @ibraheem-opentensor in #53
- Handles None change_data by @ibraheem-opentensor in #54
- @igorsyl made their first contribution in #46
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.1...v1.0.2
- Updates type for vec acc id by @ibraheem-opentensor in #45
- Backmerge main staging 101 by @ibraheem-opentensor in #48
Full Changelog: https://github.com/opentensor/async-substrate-interface/compare/v1.0.0...v1.0.1
- New Async Substrate Interface by @thewhaleking and @roman-opentensor in https://github.com/opentensor/async-substrate-interface/tree/main
- Github release + bumps version by @ibraheem-opentensor in #1
- Improve
ScaleObjby @roman-opentensor in #2 - Backmerge staging main by @ibraheem-opentensor in #4
- Release/1.0.0rc2 by @ibraheem-opentensor in #5
- EventLoopManager, factory function by @thewhaleking in #3
- Adds nonce implementation by @ibraheem-opentensor in #8
- Exception for uninitialised by @thewhaleking in #6
- Update build/release to use pyproject.toml by @thewhaleking in #10
- Fixes nonce management & bumps version by @ibraheem-opentensor in #11
- Sync Substrate Rewritten by @thewhaleking in #9
- Remove ujson by @thewhaleking in #12
- Backmerge main to staging rc4 by @ibraheem-opentensor in #13
- Release/1.0.0rc5 by @ibraheem-opentensor in #14
- Update project name for PyPI by @thewhaleking in #16
- Fixes _metadata_cache, bumps version and changelog by @ibraheem-opentensor in #17
- feat: use bt_decode in runtime_call by @zyzniewski-reef in #15
- Move logic to mixin + fix tests by @thewhaleking in #18
- Fix decode scale by @thewhaleking in #19
- Backmerge main to staging rc5 by @ibraheem-opentensor in #20
- Release/1.0.0rc7 by @ibraheem-opentensor in #21
- Release/1.0.0rc8 by @ibraheem-opentensor in #22
- Fixes decoding acc ids by @ibraheem-opentensor in #23
- Backmerge/1.0.0rc8 by @ibraheem-opentensor in #24
- Release/1.0.0rc9 by @ibraheem-opentensor in #25
- Fixes sync ss58 decoding by @ibraheem-opentensor in #26
- Backmerge main staging rc9 by @ibraheem-opentensor in #27
- Release/1.0.0rc10 by @ibraheem-opentensor in #28
- Reuses the websocket for sync Substrate by @thewhaleking in #29
- Feat/metadata v15 cache by @camfairchild in #30
- Backmerge main to staging rc10 by @ibraheem-opentensor in #31
- Release/1.0.0rc11 by @ibraheem-opentensor in #32
- python 3.9 support by @roman-opentensor in #33
- Backmerge main to staging RC11 by @ibraheem-opentensor in #34
- Release/1.0.0rc12 by @ibraheem-opentensor in #35
- Improve logging by @roman-opentensor in #36
- Backmerge main to staging rc12 by @ibraheem-opentensor in #37
- Release/1.0.0rc13 by @ibraheem-opentensor in #38
- Improves the error-handling of initialisation of the object by @thewhaleking in #39
- Backmerge main to staging rc12 by @ibraheem-opentensor in #40
- Release/1.0.0rc14 by @ibraheem-opentensor in #41
Full Changelog: https://github.com/opentensor/async-substrate-interface/commits/v1.0.0
- Improves the error-handling of initialisation of the object @thewhaleking in #39
- Backmerge main to staging rc12 by @ibraheem-opentensor in #40
- Improve logging by @roman-opentensor and @thewhaleking in #36
- Backmerge main to staging rc12 by @ibraheem-opentensor in #37
- python 3.9 support by @roman-opentensor in #33
- Reuses the websocket for sync Substrate by @thewhaleking in #29
- Feat/metadata v15 cache by @camfairchild in #30
- Backmerge main to staging rc10 by @ibraheem-opentensor in #31
- Fixes decoding account ids for sync substrate
- Fixes decoding account ids
- Minor bug fixes
- feat: use bt_decode in runtime_call by @zyzniewski-reef in #15
- Move logic to mixin + fix tests by @thewhaleking in #18
- Fix decode scale by @thewhaleking in #19
- Backmerge main to staging rc5 by @ibraheem-opentensor in #20
- Minor bug fix
- Backmerge staging main by @ibraheem-opentensor in #4
- EventLoopManager, factory function by @thewhaleking in #3
- Exception for uninitialised by @thewhaleking in #6
- Update build/release to use pyproject.toml by @thewhaleking in #10
- Sync Substrate Rewritten by @thewhaleking in #9
- Remove ujson by @thewhaleking in #12
- Minor bug fixes and improvements
- Adds nonce implementation @ibraheem-opentensor in #8
- Improve ScaleObj by @roman-opentensor in #2
- New Async Substrate Interface by @thewhaleking and @roman-opentensor in https://github.com/opentensor/async-substrate-interface/tree/main