vault.curator_export
Documentation for eth_defi.vault.curator_export Python module.
Build curator metadata and recent feed entries for the vault JSON export.
Resolves curator slugs from vault records to structured metadata
(name, website, social URLs, logos) and recent feed entries from the
post database. The result is a dict keyed by curator slug, stored
at the top level of the vault metrics JSON bundle alongside
core3_protocols.
Example:
from eth_defi.feed.database import VaultPostDatabase
from eth_defi.vault.curator_export import build_curators_for_export
feed_db = VaultPostDatabase(Path("vault-post-database.duckdb"))
curators = build_curators_for_export(
["gauntlet", "re7-labs", "hyperliquid"],
feed_db=feed_db,
)
feed_db.close()
# curators["gauntlet"]["recent_posts"] → list of recent feed entries
Functions
|
Build a curator-slug-keyed dict for the vault metrics JSON export. |
Classes
Serialised curator record for the vault metrics JSON export. |
|
A single recent feed entry from a curator's tracked sources. |
- class CuratorExportRecord
Bases:
TypedDictSerialised curator record for the vault metrics JSON export.
Contains curator identity metadata and recent feed entries. Keyed by curator slug in the top-level
curatorsdict ofVaultMetricsExport.- __init__(*args, **kwargs)
- __new__(**kwargs)
- clear()
Remove all items from the dict.
- copy()
Return a shallow copy of the dict.
- fromkeys(value=None, /)
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)
Return the value for key if key is in the dictionary, else default.
- items()
Return a set-like object providing a view on the dict’s items.
- keys()
Return a set-like object providing a view on the dict’s keys.
- pop(k[, d]) v, remove specified key and return the corresponding value.
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- setdefault(key, default=None, /)
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from mapping/iterable E and F.
If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values()
Return an object providing a view on the dict’s values.
- class CuratorFeedEntry
Bases:
TypedDictA single recent feed entry from a curator’s tracked sources.
Used inside
CuratorExportRecordto surface recent social media and blog activity in the vault JSON bundle.- __init__(*args, **kwargs)
- __new__(**kwargs)
- clear()
Remove all items from the dict.
- copy()
Return a shallow copy of the dict.
- fromkeys(value=None, /)
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)
Return the value for key if key is in the dictionary, else default.
- items()
Return a set-like object providing a view on the dict’s items.
- keys()
Return a set-like object providing a view on the dict’s keys.
- pop(k[, d]) v, remove specified key and return the corresponding value.
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- setdefault(key, default=None, /)
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from mapping/iterable E and F.
If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values()
Return an object providing a view on the dict’s values.
- build_curators_for_export(curator_slugs, feed_db=None, max_posts_per_curator=10, public_url='')
Build a curator-slug-keyed dict for the vault metrics JSON export.
For each curator slug present in the exported vaults:
Load metadata from curator YAML via
build_curator_metadata_json(), or from the protocol YAML for protocol curators without a curator YAML file.Resolve
canonical_feeder_idfor alias curators so that feed posts are looked up under the correct feeder.Batch-query recent posts from the feed database.
Convert timestamps to ISO 8601 strings and assemble the final
CuratorExportRecorddicts.
When feed_db is
None(e.g. the database file does not exist), allrecent_postslists will be empty.- Parameters
curator_slugs (collections.abc.Iterable[str]) – Iterable of curator slugs to include (typically extracted from
curator_slugfields in the vault records).feed_db (Optional[eth_defi.feed.database.VaultPostDatabase]) – Open vault post database for querying recent posts. Pass
Noneto skip feed enrichment.max_posts_per_curator (int) – Maximum number of recent posts per curator.
public_url (str) – Public base URL for constructing logo URLs.
- Returns
Dict mapping curator slug to
CuratorExportRecord.- Return type
dict[str, eth_defi.vault.curator_export.CuratorExportRecord]