Skip to content

v1.0.0

Latest

Choose a tag to compare

@eliezhao eliezhao released this 20 Oct 15:20

πŸ“¦ ICP-PY-CORE Release Notes

🏷️ Version: v1.0.0

Release Date: 2025-10-20
Author: Elie Zhao ([email protected])


πŸš€ Overview

This release marks the first stable version of icp-py-core, a fully refactored and modernized fork of ic-py.
It introduces a modular architecture, improved maintainability, and full compatibility with Boundary Node v3 endpoints of the Internet Computer.


🧩 Major Code Changes

1. Modular Architecture

Reorganized code under src/ into focused, independent modules:

src/
β”œβ”€β”€ icp_agent/         # Agent & HTTP client
β”œβ”€β”€ icp_identity/      # Identity management (ed25519, secp256k1)
β”œβ”€β”€ icp_candid/        # Candid encoder/decoder & parser
β”œβ”€β”€ icp_principal/     # Principal utilities (strict DER mode)
β”œβ”€β”€ icp_certificate/   # Certificate verification (BLS12-381)
β”œβ”€β”€ icp_core/          # Unified import facade

2. New Unified Facade (icp_core)

Simplified imports for developers:

from icp_core import Agent, Client, Identity, Principal, encode, decode, Types

The facade re-exports key APIs from submodules, providing a single consistent interface.

3. Updated Agent APIs

New high-level methods mirror Rust/TypeScript IC agents:

  • Agent.update() β€” Auto-encodes args, handles polling until completion.
  • Agent.query() β€” One-shot query call.

All arguments are automatically encoded with Candid when not provided as bytes.

4. Identity Enhancements

  • Introduced SLIP-10 deterministic key derivation (replacing legacy scheme).
  • Unified support for Ed25519 and Secp256k1.
  • Added identity unit tests and improved PEM parsing.

5. Principal Strict Mode

Principal.self_authenticating() now requires DER-format public keys to ensure strict validation and consistency with DFINITY standards.

6. Agent & Polling Improvements

  • Added exponential backoff and configurable timeouts.
  • poll() and poll_and_wait() now match Rust Agent semantics.
  • Enhanced error handling for malformed or partial replica responses.

7. Candid Parser Fixes

  • Pinned antlr4-python3-runtime==4.9.3 to fix ATN version mismatch.
  • Updated parser imports for compatibility.

8. Packaging Modernization

  • Added PEP 621-compliant pyproject.toml (replacing setup.py).
  • Added MANIFEST.in to exclude .venv-test, tests/, and .git/.
  • Declared runtime dependencies: httpx, cbor2, leb128, ecdsa, PyNaCl.
  • Added optional blst dependency (manual install required).

πŸ—ΊοΈ Roadmap

Milestone Status Description
v1.0.0 βœ… Released Modular refactor, v3 endpoints, certificate verification
v1.1.0 🚧 Planned Candid type-system enhancements

πŸ™Œ Acknowledgments

Special thanks to the DFINITY community, original ic-py contributors, and all who supported the continued development of this Python SDK for the Internet Computer.


Β© 2025 ICP-PY-CORE Maintainers | MIT License