Changelog¶
The canonical changelog lives in the repo root at
CHANGELOG.md.
The current release is v0.2.1.
v0.2.1 — highlights¶
New features¶
ogpu.chain— new top-level home forChainConfig,ChainId,Web3Manager,NonceManager, ABI files, and RPC URL config. Role-agnostic, used by every SDK module.from ogpu import ChainConfigergonomically re-exports the public surface.ogpu.ipfs— public module (previously_ipfs) withpublish_to_ipfsandfetch_ipfs_json, top-level re-exported:from ogpu import publish_to_ipfs, fetch_ipfs_json.- Instance classes —
Source,Task,Response,Provider,Masteras live stateless proxies bound to contract addresses. Full read + write methods andsnapshot()batch capture. - Vault module (
ogpu.protocol.vault) — deposit, withdraw, lock, unbond, cancel_unbonding, claim, plus 9 reads and 2 constants. Previously 0% covered from Python. - Event subscription (
ogpu.events) — 6 async generators for critical Nexus events. The one async island — rest of SDK stays sync. - Agent package (
ogpu.agent) — scheduler wrappers for agent-role operations (register_to,unregister_from,attempt). UsesAGENT_PRIVATE_KEYenv var fallback. - Exception hierarchy — 22 concrete exception classes under
OGPUErrorbase, grouped by domain (NotFound, State, Permission, Vault, Tx, Config, IPFS). TxExecutor— unified transaction sender with nonce retry, underpriced backoff, and typed revert decoding. Replaces ~300 lines of duplicated retry logic.Receiptdataclass — unified return type for all write operations.ChainConfig.set_rpc / get_rpc / reset_rpc— custom RPC endpoint support.- Type-safe status enums —
TaskStatus,SourceStatus,ResponseStatus,Environment,DeliveryMethod. Response.fetch_data()— follows the URL returned byresponse.get_data()and parses the JSON body.- Pagination helper — transparent internal chunking for all list-returning methods.
Breaking changes¶
publish_source()now returnsSource(wasstr). Use.addressfor the raw address.publish_task()now returnsTask(wasstr).- Default chain flipped to
OGPU_MAINNET(wasOGPU_TESTNET). Testnet users must prependChainConfig.set_chain(ChainId.OGPU_TESTNET). get_confirmed_response()standalone function deleted. UseTask(addr).get_confirmed_response()instead (chain-only, no HTTP).get_task_responses()returnslist[Response]instances (was list of old dataclass).ogpu.agentmodule previously existed forset_agent— that has been replaced.set_agentis now atogpu.protocol.terminal.set_agentorogpu.client.set_agent;ogpu.agentis now the scheduler-role high-level package.ImageMetadatarenamed toSourceMetadata.- Old
ResponseandConfirmedResponsedataclasses deleted. Replaced byResponseinstance class. requires-pythonbumped to>=3.10.- No HTTP dependency for contract reads. The management-backend
HTTP call in the old
get_confirmed_responseis removed entirely. - Chain infrastructure moved out of
ogpu.client(clean break):from ogpu.client import ChainConfig→from ogpu import ChainConfigfrom ogpu.client.chain_config import ChainId→from ogpu.chain.config import ChainIdfrom ogpu.client import fix_nonce→from ogpu import fix_nonce- ABI files moved from
ogpu/client/abis/toogpu/chain/abis/
SourceInfo.to_source_params/TaskInfo.to_task_paramsdeleted. These type-methods triggered hidden IPFS uploads. The work is now in private helpers inogpu.client— user-facing API is unchanged, butSourceInfoandTaskInfoare now pure dataclasses.
See the full changelog for every entry.