Skip to content

Commit 321c827

Browse files
committed
Good stopping point until bt-decode is updated.
1 parent c7a93a5 commit 321c827

File tree

2 files changed

+38
-20
lines changed

2 files changed

+38
-20
lines changed

async_substrate_interface/async_substrate.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4272,12 +4272,12 @@ async def close(self):
42724272
"""
42734273
try:
42744274
await self.runtime_cache.dump_to_disk(self.url)
4275+
print(4276)
42754276
await self.ws.shutdown()
42764277
except AttributeError:
42774278
pass
4278-
db_conn = AsyncSqliteDB(self.url)
4279-
if db_conn._db is not None:
4280-
await db_conn._db.close()
4279+
for db in AsyncSqliteDB._instances.values():
4280+
await db.close()
42814281

42824282
@async_sql_lru_cache(maxsize=SUBSTRATE_CACHE_METHOD_SIZE)
42834283
async def get_parent_block_hash(self, block_hash):

async_substrate_interface/types.py

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,26 @@ def retrieve(
101101

102102
async def load_from_disk(self, chain_endpoint: str):
103103
db = AsyncSqliteDB(chain_endpoint=chain_endpoint)
104-
block_mapping, block_hash_mapping, runtime_version_mapping = await db.load_runtime_cache(chain_endpoint)
104+
(
105+
block_mapping,
106+
block_hash_mapping,
107+
runtime_version_mapping,
108+
) = await db.load_runtime_cache(chain_endpoint)
105109
if not any([block_mapping, block_hash_mapping, runtime_version_mapping]):
106110
logger.debug("No runtime mappings in disk cache")
107111
else:
108112
logger.debug("Found runtime mappings in disk cache")
109-
self.blocks = {x: Runtime.deserialize(y) for x, y in block_mapping.items()}
110-
self.block_hashes = {x: Runtime.deserialize(y) for x, y in block_hash_mapping.items()}
111-
self.versions = {x: Runtime.deserialize(y) for x, y in runtime_version_mapping.items()}
113+
self.blocks = block_mapping
114+
self.block_hashes = block_hash_mapping
115+
self.versions = {
116+
x: Runtime.deserialize(y) for x, y in runtime_version_mapping.items()
117+
}
112118

113119
async def dump_to_disk(self, chain_endpoint: str):
114120
db = AsyncSqliteDB(chain_endpoint=chain_endpoint)
115-
await db.dump_runtime_cache(chain_endpoint, self.blocks, self.block_hashes, self.versions)
121+
await db.dump_runtime_cache(
122+
chain_endpoint, self.blocks, self.block_hashes, self.versions
123+
)
116124

117125

118126
class Runtime:
@@ -163,30 +171,40 @@ def __init__(
163171
self.load_registry_type_map()
164172

165173
def serialize(self):
174+
metadata_value = self.metadata.data.data
166175
return {
167176
"chain": self.chain,
168177
"type_registry": self.type_registry,
169-
"metadata": self.metadata,
170-
"metadata_v15": self.metadata_v15.to_json() if self.metadata_v15 is not None else None,
171-
"runtime_info": self.runtime_info,
172-
"registry": None, # gets loaded from metadata_v15
178+
"metadata_value": metadata_value,
179+
"metadata_v15": None, # TODO new bt-decode
180+
"runtime_info": {
181+
"specVersion": self.runtime_version,
182+
"transactionVersion": self.transaction_version,
183+
},
184+
"registry": self.registry.registry if self.registry is not None else None,
173185
"ss58_format": self.ss58_format,
174-
"runtime_config": self.runtime_config,
175186
}
176187

177188
@classmethod
178189
def deserialize(cls, serialized: dict) -> "Runtime":
179-
mdv15 = MetadataV15
180-
registry = PortableRegistry.from_metadata_v15(mdv15) if (mdv15 := serialized["metadata_v15"]) else None
190+
ss58_format = serialized["ss58_format"]
191+
runtime_config = RuntimeConfigurationObject(ss58_format=ss58_format)
192+
runtime_config.clear_type_registry()
193+
runtime_config.update_type_registry(load_type_registry_preset(name="core"))
194+
metadata = runtime_config.create_scale_object(
195+
"MetadataVersioned", data=ScaleBytes(serialized["metadata_value"])
196+
)
197+
metadata.decode()
198+
registry = PortableRegistry.from_json(serialized["registry"])
181199
return cls(
182200
chain=serialized["chain"],
183-
metadata=serialized["metadata"],
201+
metadata=metadata,
184202
type_registry=serialized["type_registry"],
185-
runtime_config=serialized["runtime_config"],
186-
metadata_v15=mdv15 if mdv15 is not None else None,
203+
runtime_config=runtime_config,
204+
metadata_v15=None,
187205
registry=registry,
188-
ss58_format=serialized["ss58_format"],
189-
runtime_info=serialized["runtime_info"]
206+
ss58_format=ss58_format,
207+
runtime_info=serialized["runtime_info"],
190208
)
191209

192210
def load_runtime(self):

0 commit comments

Comments
 (0)