Skip to content

Latest commit

Β 

History

History
1023 lines (865 loc) Β· 72.3 KB

File metadata and controls

1023 lines (865 loc) Β· 72.3 KB

Changelog

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning. This changelog is based on Keep a Changelog.

[Unreleased]

Src

  • Updated AccountUpdateTransaction.set_key() to accept generic Key objects (including KeyList and threshold keys), rather than strictly requiring a PublicKey.
  • Fix the TransactionGetReceiptQuery to raise ReceiptStatusError for the non-retryable and non success receipt status
  • Refactor AccountInfo to use the existing StakingInfo wrapper class instead of flattened staking fields. Access is now via info.staking_info.staked_account_id, info.staking_info.staked_node_id, and info.staking_info.decline_reward. The old flat accessors (info.staked_account_id, info.staked_node_id, info.decline_staking_reward) are still available as deprecated properties and will emit a DeprecationWarning. (#1366)
  • Added abstract Key supper class to handle various proto Keys.

Examples

Tests

  • Added TCK endpoint for the createAccount method
  • Renamed delegate_contract_id.py to delegate_contract_id_test.py (#2004)
  • Fix Flaky tests for mock_server by enforcing non-tls port and adding a mock_tls certificate

Docs

  • Add Chocolatey as a prerequisite in the Windows setup guide (#1961)

.github

  • chore: update several ubuntu runners to hl-sdk-py-lin-md (#1480)
  • Refactored intermediate issue template with quality standards, testing requirements, breaking change awareness, and protobuf verification guidance to reduce review burden and improve PR quality (#1892)
  • fix: prevent CodeRabbit from posting comments on closed issues(#1962)
  • chore: update spam list #1988
  • chore: Update bot-advanced-check.yml, bot-gfi-assign-on-comment.yml, bot-intermediate-assignment.yml, bot-linked-issue-enforcer.yml, unassign-on-comment.yml, working-on-comment.yml workflow runner configuration

[0.2.2] - 2026-03-17

Added

  • Added CodeRabbit review instructions in .coderabbit.yaml for account module src/hiero_sdk_python/account/.
  • Add support for include_children to TransactionRecordQuery (#1512)

Changed

  • Changed pytest version to "pytest>=8.3.4,<10" (#1917)
  • Update protobuf schema version to v0.72.0-rc.2 in .coderabbit.yaml

Src

  • Updated generated_proto.py file to work with new proto version
  • fix: Ensure UTF-8 encoding when reading and writing proto files in generate_proto.py to prevent encoding issues on Windows (#1963)

Examples

  • Updated the examples/consensus/topic_create_transaction_revenue_generating.py example to use Client.from_env() for simpler client setup. (#1964)

  • Refactored examples/consensus/topic_delete_transaction.py to use Client.from_env() for simplified client initialization, removed manual setup code, and cleaned up unused imports (os, AccountId, PrivateKey). (#1971)

Tests

Docs

  • Replaced relative documentation links in README.md with absolute GitHub URLs to fix broken PyPI rendering.
  • docs: Clarified AI usage in Good First Issues templates. (#1923)
  • docs: Moved the Windows setup guide to docs/sdk_developers/ and added missing setup sections. (#1953)

.github

  • chore: ensure uv run uses lowest-direct resolution in deps-check workflow (#1919)
  • Added PR draft explainer workflow to comment when PRs are converted to draft after changes are requested. (#1723)
  • changed pr-check-test to run unit matrix first, run integration matrix only after unit success, skip docs/examples/.github-only changes, and parallelize integration tests with xdist (#1878)
  • archived workflows relating to PR reminders
  • chore: switch workflow runner from ubuntu-latest to hl-sdk-py-lin-md for bot-assignment-check.yml workflow
  • chore: update concurrency group for GFI assignment workflow to prevent race conditions (#1910)
  • chore: switch workflow runner from ubuntu-latest to hl-sdk-py-lin-md for bot-beginner-assign-on-comment workflow
  • chore: update bot-coderabbit-plan-trigger workflow to use self-hosted runner (#1925)
  • Require contributors to complete 1 beginner issue before they can be assigned an intermediate issue (#1939)
  • Expand spam list (#1933)
  • Expand spam list (#1972)
  • chore: add ndpvt-web to spam list (#1945)
  • chore: update bot-community-calls workflow to use self hosted runner (#1942)
  • chore(ci): update bot-inactivity-unassign workflow to use hl-sdk-py-lin-md runner
  • chore: update bot-gfi-candidate-notification workflow to use hl-sdk-py-lin-md runner (#1966)

[0.2.1] - 2026-03-05

Added

  • Added unit test and repr for NftId class(#1627).
  • Added CodeRabbit review instructions for the nodes module in .coderabbit.yaml (#1699)
  • Added CodeRabbit review instructions for the transaction module in .coderabbit.yaml (#1696)
  • Added CodeRabbit review instructions and path mapping for the schedule module (src/hiero_sdk_python/schedule/) in .coderabbit.yaml (#1698)
  • Added advanced code review prompts for the src/hiero_sdk_python/file module in .coderabbit.yaml to guide reviewers in verifying proper FileAppendTransaction chunking constraints and nuances in memo handling for FileUpdateTransaction according to Hiero SDK best practices. (#1697)
  • Added CodeRabbit review instructions for consensus module src/hiero_sdk_python/consensus/ with critical focus on protobuf alignment .coderabbit.yaml.
  • Added CodeRabbit prompt to review the src/hiero_sdk_python/crypto module.
  • Added .codacy.yml configuration to exclude the tests/ directory from Bandit assert analysis.

Fixed

  • Fixed duplication in GitHub bot next issue recommendations by parsing actual issue descriptions instead of blind truncation (#1658)

Src

  • Add staking_info field to ContractInfo class to expose staking metadata using the StakingInfo wrapper. (#1365)
  • Fix TopicInfo.__str__() to format expiration_time in UTC so unit tests pass in non-UTC environments. (#1800)
  • Resolve CodeQL reflected-XSS warning in TCK JSON-RPC endpoint
  • Improve keccak256 docstring formatting for better readability and consistency (#1624)
  • Added wait_for_receipt parameter for Transaction.execute() to support optional receipt waiting, and get_receipt_query, get_record_query and get_record to TransactionResponse.

Examples

  • Refactor examples/file/file_create_transaction.py to remove os,dotenv,AccountId,PrivateKey,Network imports that are no longer needed and updated setup-client() (#1610)

  • Refactored contract_delete_transaction example to use Client.from_env. (#1823)

Docs

  • docs: Improving formatting will make the pull request process clearer. (#1858)
  • Added Python compatibility badge to README for improved visibility of supported versions (#1830)
  • Fixed Test Improvements header formatting in Good First Issue guidelines by adding missing space before parenthetical and removing stray bold marker (#1829)
  • Improved Google-style docstring for compress_point_unchecked in crypto_utils.py. (#1625)
  • chore: update office hours and community calls to use direct links (#1804)
  • docs: create workflow best practices guide (docs/workflows/03-workflow-best-practices.md) (#1743)
  • Fixed broken MAINTAINERS.md relative link in docs/sdk_developers/bug.md by using the repository-root GitHub URL. (#1666)
  • docs(setup): specify unit tests for local setup verification. (#1856)
  • docs: Clarify issues need to be assigned in template files. (#1884)
  • doc: Fix testnet link in README.md. (#1879)

Tests

  • Format tests/unit/endpoint_test.py using black. (#1792)
  • Implement TCK JSON-RPC server with request handling and error management

.github

  • Added triage members max assignment is protected from being a mentor in .github/scripts/bot-assignment-check.sh. (#1718)
  • Added automated bot to comment on PRs with invalid conventional commit titles, providing guidance on fixing the title format (#1705)
  • Revert PythonBot workflow to restore previous stable behavior. (#1825)
  • Added GitHub Actions workflow to remind draft PR authors to mark ready for review after pushing changes. (#1722)
  • Fixed bot workflow runtime failure caused by strict FAILED_WORKFLOW_NAME validation. (#1690)
  • Reverted PR #1739 checking assignment counts
  • chore: update step-security/harden-runner from 2.14.1 to 2.14.2 in a workflow
  • Redesigned beginner issue template with readiness self-check, exploration-based task structure, compact workflow reference, and common pitfalls guidance to improve completion rates (#1651)
  • Added workflow documentation guide (docs/github/04_workflow_documentation.md) with best practices for documenting GitHub workflows and automation scripts (#1745)
  • Updated CodeRabbit workflow and script review instructions to nudge higher-quality patterns without imposing rigid rules (#1799)
  • Added hiero-sdk-js to the next issue recommendation bot (#1847)
  • feat(bot): warn PR authors that unlinked PRs will be closed (#1886)
  • updated spam list users (#1894)
  • trigger spam list updates every hour (#1864)
  • close unlinked pull requests after 12 hours rather than 3 days (#1863)
  • feat(bot): enforce linked issue assignment check for PR authors (#1889)
  • Bumped astral-sh/setup-uv from v7.2.1 to v7.3.1 in workflow files (#1900)

[0.2.0] - 2026-11-02

Tests

  • Format tests/unit/crypto_utils_test.py with black for code style consistency (#1524)

  • Standardize formatting of tests/unit/entity_id_helper_test.py using Black for consistent code style across the test suite (#1527)

  • Added tests for ProtoBuf Training Example Implementation

  • Formatted tests/unit/get_receipt_query_test.py with black for code style consistency. (#1537)

  • format black tests/unit/hbar*.py.(#1538)

  • Formatted tests/unit/conftest.py with black for code style consistency. (#1522)

  • format black tests/unit/nft_id_test.py with Black.(#1544)

  • Format tests/unit/executable_test.py with Black.(#1530)

  • Format tests/unit/hedera_trust_manager_test.py with Black for consistent code style (#1539)

  • Format tests/unit/logger_test.py with black for code style consistency (#1541)

  • Format tests/unit/batch_transaction_test.py with Black.(#1520)

  • Style: formatted tests/unit/prng_transaction_test.py with black (#1546)

  • Formatted contract unit tests with black for consistent style. (#1523)

  • Format account test files with Black (#1519)

  • Format tests/unit/node*.py with Black for consistent code style (#1545)

  • Improve unit test coverage for Hbar, including edge cases, validation, comparisons, and hashing. (#1483)

  • Standardize formatting of evm_address_test.py using Black for improved consistency and readability (#1529)

  • Formatted unit test files using Black.

  • Format tests/unit/network_tls_test.py with black for code style consistency (#1543)

  • Formatted ethereum_transaction_test.py using Black.

  • Formatted client_test.py using Black.

  • Format tests/unit/query*.py using black (#1547)

  • Format tests/unit/custom_fee_test.py with black for code style consistency. (#1525)

Added

  • Implement custom __repr__ method for FileId class that returns constructor-style representation for improved debugging experience (#1628)

  • Added foundational guide for GitHub Workflows (#1741)

  • Contract-specific CodeRabbit review instructions in .coderabbit.yaml for improved automated PR feedback on ABI, gas, ContractId, and protobuf safety. (#1695)

  • Added new members to the mentor roster. (#1693)

  • Added support for the includeDuplicates flag in TransactionRecordQuery and duplicates field in TransactionRecord (#1635)

  • Added logging in bot-gfi-assign-on-comment.js to prevent silent skips. (#1668)

  • Added AssessedCustomFee domain model to represent assessed custom fees. (#1637)

  • Add repr method for ContractId class to improve debugging (#1714)

  • Added Protobuf Training guide to enhance developer understanding of proto serialization and deserialization (#1645)

  • Add __repr__() method to TopicId class for improved debugging with constructor-style representation (#1629)

  • Added guide for resolving CHANGELOG.md conflicts using GitHub's web editor (#1591)

  • Added Windows setup guide for SDK developers (docs/sdk_developers/training/setup/setup_windows.md) with PowerShell installation instructions. (#1570)

  • Added a beginner assignment guard that requires completion of a Good First Issue. (#1484)

  • Added /unassign command allowing contributors to remove themselves from assigned issues.(#1472)

  • Added advanced CodeRabbit reviewer guidance for tokens module changes, with specialized validation rules for token transactions, token classes, and enums. (#1496)

  • Advanced-check bot unassigns users from issues if they do not meet the requirements and provides an explanatory message. (#1477)

  • Auto-assignment bot for beginner-labeled issues with /assign command support and helpful reminders. (#1368)

  • Added comprehensive docstring to FeeAssessmentMethod enum explaining inclusive vs exclusive fee assessment methods with usage examples. (#1391)

  • Added comprehensive docstring to TokenType enum explaining fungible vs non-fungible tokens with practical use cases. (#1392)

  • Enable dry run support for office hours bot via workflow_dispatch trigger for testing without posting comments. (#1426)

  • Trigger CodeRabbit plan comment after Good First Issue assignment to provide AI-generated implementation guidance to new contributors. (#1432)

  • Added a notification workflow that alerts the support team when an issue is labeled as a Good First Issue Candidate.[(#1296)]

  • Added comprehensive training documentation for the Query class, covering execution flow, payments, retries, and building child queries. (#1238)

  • Beginner issue documentation and updated GFI and GFIC templates and documentation

  • Enable auto assignment to good first issues (#1312), archived good first issue support team notification. Changed templates with new assign instruction.

  • Intermediate issue documentation

  • Added unit test for 'endpoint.py' to increase coverage.

  • Automated assignment guard for advanced issues; requires completion of at least one good first issue and one intermediate issue before assignment (exempts maintainers, committers, and triage members). (#1142)

  • Added Hbar object support for TransferTransaction HBAR transfers:

  • Methods now accept Union[int, Hbar] for amount parameters with immediate normalization to tinybars

  • Includes comprehensive unit tests covering various Hbar units (HBAR, MICROBAR, NANOBAR, TINYBAR) and accumulation behavior with mixed int and Hbar inputs

  • Added a module-level docstring to the HBAR allowance approval example to clarify delegated spending behavior and key concepts. #1202

  • Added a GitHub Actions workflow to validate broken Markdown links in pull requests.

  • Added method chaining examples to the developer training guide (docs/sdk_developers/training/coding_token_transactions.md) (#1194)

  • Added documentation explaining how to pin GitHub Actions to specific commit SHAs (docs/sdk_developers/how-to-pin-github-actions.md)(#1211)

  • examples/mypy.ini for stricter type checking in example scripts

  • Formatted examples/tokens directory using black code formatter for consistent code style

  • Added .github/workflows/bot-coderabbit-plan-trigger.yml to automatically invoke CodeRabbit's plan feature on intermediate and advanced issues, providing implementation guidance to help contributors assess complexity and understand requirements. (#1289)

  • Added a GitHub Actions workflow that reminds contributors to link pull requests to issues.

  • Added __str__ and __repr__ methods to AccountInfo class for improved logging and debugging experience (#1098)

  • Added Good First Issue (GFI) management and frequency documentation to clarify maintainer expectations and SDK-level GFI governance.

  • Added SDK-level Good First Issue (GFI) guidelines for maintainers to clarify what qualifies as a good first issue.

  • Codecov workflow

  • Added unit tests for key_format.py to improve coverage.

  • Fix inactivity bot execution for local dry-run testing.

  • Added Good First Issue candidate guidelines documentation (docs/maintainers/good_first_issue_candidate_guidelines.md) and Good First Issues guidelines documentation (docs/maintainers/good_first_issues_guidelines.md) (#1066)

  • Added documentation: "Testing GitHub Actions using Forks" (docs/sdk_developers/training/testing_forks.md).

  • Documentation: created docs/maintainers/hiero_python_sdk_team.md

  • Unified the inactivity-unassign bot into a single script with DRY_RUN support, and fixed handling of cross-repo PR references for stale detection.

  • Added unit tests for SubscriptionHandle class covering cancellation state, thread management, and join operations.

  • Refactored account_create_transaction_create_with_alias.py example by splitting monolithic function into modular functions: generate_main_and_alias_keys(), create_account_with_ecdsa_alias(), fetch_account_info(), print_account_summary() (#1016)

  • Added .github/workflows/bot-pr-auto-draft-on-changes.yml to automatically convert PRs to draft and notify authors when reviewers request changes.

  • Add beginner issue template

  • Add relevant examples to the beginner issue template

  • Add Github CODEOWNERS

  • Modularized transfer_transaction_fungible example by introducing account_balance_query() & transfer_transaction().Renamed transfer_tokens() β†’ main()

  • Phase 2 of the inactivity-unassign bot: Automatically detects stale open pull requests (no commit activity for 21+ days), comments with a helpful InactivityBot message, closes the stale PR, and unassigns the contributor from the linked issue.

  • Added __str__() to CustomFixedFee and updated examples and tests accordingly.

  • Added unit tests for crypto_utils (#993)

  • Added a github template for good first issues

  • Added .github/workflows/bot-assignment-check.yml to limit non-maintainers to 2 concurrent issue assignments.

  • Configured coderabbit with a .coderabbit.yaml

  • Added .github/workflows/bot-community-calls and its script to notify issue creators of a community call

  • Added all missing fields to __str__() method and updated test_tokem_info.py

  • Add examples/tokens/token_create_transaction_pause_key.py example demonstrating token pause/unpause behavior and pause key usage (#833)

  • Added docs/sdk_developers/training/transaction_lifecycle.md to explain the typical lifecycle of executing a transaction using the Hedera Python SDK.

  • Add inactivity bot workflow to unassign stale issue assignees (#952)

  • Made custom fraction fee end to end

  • feat: AccountCreateTransaction now supports both PrivateKey and PublicKey #939

  • Added Acceptance Criteria section to Good First Issue template for better contributor guidance (#997)

  • Added __str__() to CustomRoyaltyFee and updated examples and tests accordingly (#986)

  • Restore bug and feature request issue templates (#996)(hiero-ledger#996)

  • Support selecting specific node account ID(s) for queries and transactions and added Network._get_node() with updated execution flow (#362)

  • Add TLS support with two-stage control (set_transport_security() and set_verify_certificates()) for encrypted connections to Hedera networks. TLS is enabled by default for hosted networks (mainnet, testnet, previewnet) and disabled for local networks (solo, localhost) (#855)

  • Add PR inactivity reminder bot for stale pull requests .github/workflows/pr-inactivity-reminder-bot.yml

  • Add comprehensive training documentation for _Executable class docs/sdk_developers/training/executable.md

  • Added empty docs/maintainers/good_first_issues.md file for maintainers to write Good First Issue guidelines (#1034)

  • Added new .github/ISSUE_TEMPLATE/04_good_first_issue_candidate.yml file (1068)(hiero-ledger#1068)

  • Enhanced .github/ISSUE_TEMPLATE/01_good_first_issue.yml with welcoming message and acceptance criteria sections to guide contributors in creating quality GFIs (#1052)

  • Add workflow to notify team about P0 issues bot-p0-issues-notify-team.yml

  • Added Issue Reminder (no-PR) bot, .github/scripts/issue_reminder_no_pr.sh and .github/workflows/bot-issue-reminder-no-pr.yml to automatically detect assigned issues with no linked pull requests for 7+ days and post a gentle ReminderBot comment.(#951)

  • Add support for include_children in TransactionGetReceiptQuery (#1100)(hiero-ledger#1100)

  • Add new .github/ISSUE_TEMPLATE/05_intermediate_issue.yml file (1072)(hiero-ledger#1072)

  • Add a workflow to notify the team when issues are labeled as β€œgood first issues” or identified as candidates for that label: bot-gfi-notify-team.yml(#1115)

  • Added str and repr to AccountBalance

  • Added GitHub workflow that makes sure newly added test files follow pytest test files naming conventions (#1054)

  • Added advanced issue template

  • Added advanced issue template for contributors .github/ISSUE_TEMPLATE/06_advanced_issue.yml.

  • Add new tests to tests/unit/topic_info_query_test.py (#1124)

  • Added coding_token_transactions.md for a high level overview training on how token transactions are created in the python sdk.

  • Added prompt for codeRabbit on how to review /examples (#1180)

  • Add Linked Issue Enforcer to automatically close PRs without linked issues .github/workflows/bot-linked-issue-enforcer.yml.

  • Added support for include duplicates in get transaction receipt query (#1166)

  • Added .github/workflows/cron-check-broken-links.yml workflow to perform scheduled monthly Markdown link validation across the entire repository with automatic issue creation for broken links (#1210)

  • Added transfer_transaction_tinybar.py example demonstrating tinybar transfers with both integer and Hbar object approaches. (#1249)

  • Added transfer_transaction_gigabar.py example demonstrating GIGABAR unit usage for large-value transfers. (#1249)

  • Coderabbit prompt for .github

  • Added convenient factory methods to Hbar class for easier instantiation: from_microbars(), from_millibars(), from_hbars(), from_kilobars(), from_megabars(), and from_gigabars(). #1272

  • Added merge conflict bot workflow (.github/workflows/bot-merge-conflict.yml) and helper script (.github/scripts/bot-merge-conflict.js) to detect and notify about PR merge conflicts, with retry logic for unknown mergeable states, idempotent commenting, and push-to-main recheck logic (#1247)

  • Added workflow to prevent assigning intermediate issues to contributors without prior Good First Issue completion (#1143).

  • Added Client.from_env() and network-specific factory methods (e.g., Client.for_testnet()) to simplify client initialization and reduce boilerplate. [#1251]

  • Improved unit test coverage for TransactionId class, covering parsing logic, hashing, and scheduled transactions.

  • Add contract_id support for CryptoGetAccountBalanceQuery(#1293)

  • Support for setting max_query_payment, Query.set_max_query_payment() allows setting a per-query maximum Hbar payment and Client.set_default_max_query_payment() sets a client-wide default maximum payment.

  • Chained Good First Issue assignment with mentor assignment to bypass GitHub's anti-recursion protection - mentor assignment now occurs immediately after successful user assignment in the same workflow execution. (#1369)

  • Add GitHub Actions script and workflow for automatic spam list updates.

  • Added technical docstrings and hardening (set -euo pipefail) to the pr-check-test-files.sh script (#1336)

  • Added prompt for coderabbit to review Query and it's sub-classes.

  • Updated the mentor assignment bot welcome message to be more structured. (#1487)

  • Add StakingInfo class (1364)

  • Added a visible confirmation comment when a user unassigns themselves from an issue (#1506)

  • Added first-class support for EVM address aliases in AccountId, including parsing, serialization, Mirror Node population helpers.

  • Add automated bot to recommend next issues to contributors after their first PR merge (#1380)

  • Added dry-run support and refactored .github/workflows/bot-workflows.yml to use dedicated script .github/scripts/bot-workflows.js for improved maintainability and testability. (#1288)

  • Added MirrorNode based population for ContractId, including parsing and serialization support.

  • Added /working command to reset the inactivity timer on issues and PRs. (#1552)

  • Added grpc_deadline support for transaction and query execution.

  • Type hints to exception classes (PrecheckError, MaxAttemptsError, ReceiptStatusError) constructors and string methods.

  • Added __eq__ and __hash__ functions for Key

Documentation

  • Added docs/workflows/02-architecture.md: explains the orchestration (YAML) vs. business logic (JS) separation pattern for GitHub workflows (#1742)
  • Fix relative links in testing.md, clean up CONTRIBUTING.md TOC, and normalize test file naming and paths (#1706)
  • Added comprehensive docstring to compress_with_cryptography function (#1626)
  • Replaced the docstring in entity_id_helper.py with one that is correct. (#1623)

Changed

  • Reduced linting errors in examples/ directory by 80% (952 β†’ 185) by fixing docstring formatting, import ordering, and applying auto-fixes (#1768)

  • Improved bot message formatting in LinkBot to display issue linking format as a code block for better clarity (#1762)

  • Refactored setup_client() in all examples/query/ files to use Client.from_env() for simplified client initialization (#1449)

  • Improve the changelog check by posting informative PR comments when entries are missing or placed under a released version. (#1683)

  • Updated return of to_bytes function in src/hiero_sdk_python/transaction/transaction.py. (#1631)

  • Added missing return type src/hiero_sdk_python/utils/entity_id_helper.py. (#1622)

  • Update verify_freeze() to treat only ACCOUNT_FROZEN_FOR_TOKEN as a successful freeze verification (#1515)

  • Updated team.md with new triage, committers and maintainer (#1692)

  • Removed outdated "Common Issues" section from CONTRIBUTING.md that referenced non-existent docs/common_issues.md (#1665)

  • Hide the commit verification bot marker in pull request comments.

  • Added missing type hints to sign method in Transaction class (#1630)

  • Refactored examples/consensus/topic_create_transaction.py to use Client.from_env() (#1611)

  • Updated GitHub Actions setup-node action to v6.2.0.

  • chore: format tests/unit/mock_server.py with black (#1542)

  • Updated actions/checkout to v6.0.1 and actions/github-script v8.0.0 in bot-next-issue-recommendation workflow (#1586)

  • Expanded inactivity bot messages to include /unassign command information for contributors (#1555)

  • Update the acceptance criteria wording in the issue templates to improve clarity and consistency for contributors (#1491)

  • Add return type hint to AccountId.__repr__ for type consistency. (#1503)

  • Good First Issue template to have more guidance and renamed other templates for consistency with upstream

  • Added AI usage guidelines to the Good First Issue and Beginner issue templates to guide contributors on responsible AI use. (#1490)

  • Refactored bot-verified-commits.yml workflow to use modular JavaScript with configurable environment variables, input sanitization, dry-run mode support, and SHA-pinned actions. (#1482)

  • Refactored the advanced issue assignment guard to use a single configurable variable for the required number of completed intermediate issues. (#1479)

  • Align Good First Issue and Good First Issue β€” Candidate guidelines with the Hiero C++ SDK for clarity and consistency.(#1421)

  • Make the required signed commit command explicit in all issue templates to reduce PR signing errors for contributors (#1489)

  • Refactored file_info_query.py to use print(info) instead of manual formatting (#1451)

  • Enable CodeRabbit walkthrough mode by default to improve PR review visibility (#1439)

  • Move assignment guards to be directly inside the gfi and beginner auto assign

  • Remove the commented out blocks in config.yml (#1435)

  • Renamed .github/scripts/check_advanced_requirement.sh to bot-advanced-check.sh for workflow consistency (#1341)

  • Difficulty guidelines to feel more welcoming

  • Added global review instructions to CodeRabbit configuration to limit reviews to issue/PR scope and prevent scope creep [#1373]

  • Archived unused auto draft GitHub workflow to prevent it from running (#1371)

  • Added comprehensive documentation to the PR changelog check script (.github/scripts/pr-check-changelog.sh) to clarify behavior, inputs, permissions, and dependencies [(#1337)]

  • Refactored account_create_transaction_without_alias.py into smaller, modular functions.(#1321)

  • Renamed bot-inactivity workflow files to remove "-phase" suffix since the process no longer uses phased execution (#1339)

  • Renamed the GitHub notify team script to match its corresponding workflow filename for better maintainability (#1338)

  • style: apply black formatting to examples (#1299)

  • Update GitHub workflow names in .github/workflows/bot-workflows.yml to match correct references [(#1284)]

  • Updated set up and workflow documents for improved clarity and organisation

  • Renamed templates for improved clarity [(#1265)]

  • Updated Good First Issue notifications to trigger only after the first comment is posted, reducing noise on unassigned issues.(#1212)

  • Bumped requests from 2.32.3 to 2.32.4 to 2.32.5

  • Moved docs/sdk_developers/how_to_link_issues.md to docs/sdk_developers/training/workflow/how_to_link_issues.md and updated all references (#1222)

  • Moved docs/sdk_developers/project_structure.md to docs/sdk_developers/training/setup/project_structure.md and ensured all previous references are updated #1223

  • Renamed workflow scripts in .github/scripts/ to match their corresponding workflow file names for improved consistency and maintainability (#1198)

  • Refactored account_create_transaction_evm_alias.py to improve readability by splitting the monolithic function into smaller helper functions. #1017

  • Improved docstring for account_allowance_approve_transaction_nft.py with purpose, key concepts and required vs optional steps.

  • Updated Codecov coverage thresholds in 'codecov.yml' to require 90% of project coverage and 92% of patch coverage (#1157)

  • Reduce office-hours reminder spam by posting only on each user's most recent open PR, grouping by author and sorting by creation time (#1121)

  • Reduce office-hours reminder spam by never posting on PRs of maintainers and committers

  • Pylint cleanup for token_airdrop_transaction_cancel.py (#1081) @tiya-15

  • Move account_allowance_delete_transaction_hbar.py from examples/ to examples/account/ for better organization (#1003)

  • Improved consistency of transaction examples (#1120)

  • Refactored account_create_transaction_with_fallback_alias.py by splitting the monolithic create_account_with_fallback_alias function into modular functions: generate_fallback_key, fetch_account_info, and print_account_summary. The existing setup_client() function was reused for improved readability and structure (#1018)

  • Allow PublicKey for batch_key in Transaction, enabling both PrivateKey and PublicKey for batched transactions

  • Allow PublicKey for TokenUpdateKeys in TokenUpdateTransaction, enabling non-custodial workflows where operators can build transactions using only public keys (#934).

  • Bump protobuf toml to protobuf==6.33.2

  • Improved the contributing section for sdk developers in CONTRIBUTING.md for clarity and including new documentation

  • chore: Move account allowance example to correct folder

  • Added more tests to the CustomFee class for different functionalities (#991)

  • Changed messaged for test failure summaries so it is clearer by extracting test failure names into summary

  • Renamed example files to match src naming (#1053)

  • Updated bot naming conventions in .github/workflows to be consistent (#1042)

  • Renamed workflow files for consistent PR check naming: examples.yml β†’ pr-check-examples.yml, test.yml β†’ pr-check-test.yml (#1043)

  • Cleaned up token_airdrop_claim_auto example for pylint compliance (no functional changes). (#1079)

  • Formatted examples/query using black (#1082)(hiero-ledger#1082)

  • Update team notification script and workflow for P0 issues 'p0_issues_notify_team.js'

  • Rename test files across the repository to ensure they consistently end with _test.py (#1055)

  • Cleaned up token_airdrop_claim_signature_required example for pylint compliance (no functional changes). (#1080)

  • Rename the file 'test_token_fee_schedule_update_transaction_e2e.py' to make it ends with _test.py as all other test files.(#1117)

  • Format token examples with Black for consistent code style and improved readability (#1119)

  • Transformed examples/tokens/custom_fee_fixed.py to be an end-to-end example, that interacts with the Hedera network, rather than a static object demo.

  • Format token examples with Black for consistent code style and improved readability (#1119)

  • Replaced ResponseCode.get_name(receipt.status) with the ResponseCode(receipt.status).name across examples and integration tests for consistency. (#1136)

  • Moved helpful references to Additional Context section and added clickable links.

  • Transformed examples\tokens\custom_royalty_fee.py to be an end-to-end example, that interacts with the Hedera network, rather than a static object demo.

  • Refactored examples/tokens/custom_royalty_fee.py by splitting monolithic function custom_royalty_fee_example() into modular functions create_royalty_fee_object(), create_token_with_fee(), verify_token_fee(), and main() to improve readability, cleaned up setup_client() (#1169)

  • Added comprehensive unit tests for Timestamp class (#1158)

  • Enhance unit and integration test review instructions for clarity and coverage .coderabbit.yaml.

  • Issue reminder bot now explicitly mentions assignees (e.g., @user) in comments. (#1232)

  • Updated transfer_transaction_hbar.py example to use Hbar objects instead of raw integers and added receipt checking with ResponseCode validation.(#1249)

  • Renamed pr-missing-linked-issue.yml and pr_missing_linked_issue.js to bot-pr-missing-linked-issue.yml and bot-pr-missing-linked-issue.js respectively. Enhanced LinkBot PR comment with clickable hyperlinks to documentation for linking issues and creating issues. (#1264)

  • Enhance assignment bot to guard against users with spam PRs .github/scripts/bot-assignment-check.sh

  • Add CodeRabbit documentation review prompts for docs, sdk_users, and sdk_developers with priorities, philosophy, and edge case checks. (#1236)

  • Enhance NodeAddress tests with additional coverage for proto conversion tests/unit/node_address_test.py

  • Replaced deprecated AccountCreateTransaction.set_key() usage with set_key_without_alias() and set_key_with_alias() across examples and tests

  • Updated pyproject.toml to enforce stricter Ruff linting rules, including Google-style docstrings (D), import sorting (I), and modern Python syntax (UP).

  • Modified and renamed hasIntermediateOrAdvancedLabel() to check if issue label is beginner or higher (#1385)

  • Updated .github/scripts/bot-office-hours.sh to detect and skip PRs created by bot accounts when posting office hours reminders. (#1384)

  • Refactored examples/account/account_create_transaction_create_with_alias.py and examples/account/account_create_transaction_evm_alias.py to use the native AccountInfo.__str__ method for printing account details, replacing manual JSON serialization. (#1263)

  • Enhance TopicInfo __str__ method and tests with additional coverage, and update the format_key function in key_format.py to handle objects with a _to_proto method.

  • Update changelog workflow to trigger automatically on pull requests instead of manual dispatch (#1567)

  • Formatted key-related unit test files (key_utils_test.py, test_key_format.py, test_key_list.py) using the black formatter

  • Add return type hint to ContractId.__str__. (#1654)

  • chore: update maintainer guidelines link in MAINTAINERS.md (#1605)

  • chore: update merge conflict bot message with web editor tips (#1592)

  • chore: update MAINTAINERS.md to include new maintainer Manish Dait and sort maintainers by GitHub ID. (#1691)

  • Changed TransactionResponse.get_receipt() so now pins receipt queries to the submitting node via set_node_account_ids() (#1686)

  • chore: clarify wording in the bot-assignment-check.sh (#1748)

  • Refactored SDK dependencies to use version ranges, moved build-only deps out of runtime, removed unused core deps and added optional extras.

Fixed

  • Added a fork guard condition to prevent Codecov upload failures on fork PRs due to missing token. (#1485)
  • Corrected broken documentation links in SDK developer training files.(#1707)
  • Updated Good First Issue recommendations to supported Hiero repositories. (#1689)
  • Fix the next-issue recommendation bot to post the correct issue recommendation comment. (#1593)
  • Ensured that the GFI assignment bot skips posting /assign reminders for repository collaborators to avoid unnecessary notifications.(#1568).
  • Reduced notification spam by skipping the entire advanced qualification job for non-advanced issues and irrelevant events (#1517)
  • Aligned token freeze example filename references and improved error handling by catching broader exceptions with clearer messages. (#1412)
  • Fixed jq syntax in bot-office-hours.sh (#1502)
  • Fixed formatting of /unassign command in the PR inactivity reminder message so it displays correctly with backticks. (#1582)
  • Prevented linkbot from commenting on or auto-closing bot-authored pull requests. (#1516)
  • Respect dry-run input in bot-community-calls.yml workflow (#1425)
  • Updated LinkBot regex in the GitHub Actions bot script to support "Closes" and "Resolves" keywords for improved PR body-link detection (#1465)
  • Fixed CodeRabbit plan trigger workflow running multiple times when issues are created with multiple labels by switching to labeled event trigger only. (#1427)
  • Prevent LinkBot from posting duplicate β€œmissing linked issue” comments on pull requests. (#1475)
  • Refined intermediate assignment guard to validate Beginner issue completion with improved logging and GraphQL-based counting. (#1424)
  • Improved filename-related error handling with clearer and more descriptive error messages.(#1413)
  • Good First Issue bot no longer posts /assign reminders for repository collaborators. (#1367)
  • GFI workflow casing
  • Update bot-workflows.yml to trigger only on open PRs with failed workflows; ignore closed PRs and branches without open PRs.
  • Fixed step-security/harden-runner action SHA in merge conflict bot workflow (#1278)
  • Fixed the README account balance example to use correct SDK APIs and provide a runnable testnet setup. (#1250)
  • Fix token association verification in token_airdrop_transaction.py to correctly check if tokens are associated by using token_id in token_balances instead of incorrectly displaying zero balances which was misleading (#[815])
  • Fixed inactivity bot workflow not checking out repository before running (#964)
  • Fixed the topic_message_query integarion test
  • good first issue template yaml rendering
  • Fixed solo workflow defaulting to zero
  • Fix unit test tet_query.py
  • TLS Hostname Mismatch & Certificate Verification Failure for Nodes
  • Workflow does not contain permissions for pr-check-test-files and pr-check-codecov
  • Fixed cron-check-broken-links.yml string parsing issue in context input dry_run (#1235)
  • Flaky tests by disabling TLS in mock Hedera nodes in mock_server.py
  • Fixed LinkBot permission issue for fork PRs by changing trigger to pull_request_target and adding proper permissions.
  • Fixed token examples to consistently use setup_client without tuple unpacking.(#1397)
  • Fixed duplicate comment prevention in issue reminder bot by adding hidden HTML marker for reliable comment detection (.github/scripts/bot-issue-reminder-no-pr.sh) (#1372)
  • Fixed bot-pr-missing-linked-issue to skip commenting on pull requests created by automated bots. (#1382)
  • Updated .github/scripts/bot-community-calls.sh to skip posting reminders on issues created by bot accounts. (#1383)
  • Fixed incorrect run instructions and broaden error handling in token_dissociate_transaction.py example to improve usability for new users (#1468)
  • Update .github/scripts/bot-advanced-check.sh to unassign unqualified users.
  • Fixed broken project structure link in CONTRIBUTING.md (#1664)
  • Refactor spam list update logic and remove unused pull request creation step .github/scripts/update-spam-list.js .github/workflows/cron-update-spam-list.yml.
  • Ensure all Query sub-class execute() function to correctly propagate the optional timeout parameter.
  • Refactor assignment time retrieval and open PR check to use GraphQL API instead of REST API .github/scripts/bot-issue-reminder-no-pr.sh (#1746)

Removed

  • Deleted examples/utils.py as its helper functions are no longer needed. (#1263)

Breaking Change

  • Remove deprecated 'in_tinybars' parameter and update related tests /src/hiero_sdk_python/hbar.py, /tests/unit/hbar_test.py and /src/hiero_sdk_python/tokens/custom_fixed_fee.py.

[0.1.10] - 2025-12-03

Added

  • Added docs/sdk_developers/training/workflow: a training for developers to learn the workflow to contribute to the python SDK.
  • Added Improved NFT allowance deletion flow with receipt-based status checks and strict SPENDER_DOES_NOT_HAVE_ALLOWANCE verification.
  • Add max_automatic_token_associations, staked_account_id, staked_node_id and decline_staking_reward fields to AccountUpdateTransaction (#801)
  • Added docs/sdk_developers/training/setup: a training to set up as a developer to the python sdk
  • Add example demonstrating usage of CustomFeeLimit in examples/transaction/custom_fee_limit.py
  • Added .github/workflows/merge-conflict-bot.yml to automatically detect and notify users of merge conflicts in Pull Requests.
  • Added .github/workflows/bot-office-hours.yml to automate the Weekly Office Hour Reminder.
  • feat: Implement account creation with EVM-style alias transaction example.
  • Added validation logic in .github/workflows/pr-checks.yml to detect when no new chnagelog entries are added under [Unreleased].
  • Support for message chunking in TopicSubmitMessageTransaction.

Changed

  • bot workflows to include new changelog entry
  • Removed duplicate import of transaction_pb2 in transaction.py
  • Refactor TokenInfo into an immutable dataclass, remove all setters, and rewrite _from_proto as a pure factory for consistent parsing [#800]
  • feat: Add string representation method for CustomFractionalFee class and update custom_fractional_fee.py example.
  • Moved query examples to their respective domain folders to improve structure matching.

Fixed

  • fixed workflow: changelog check with improved sensitivity to deletions, additions, new releases

[0.1.9] - 2025-11-26

Added

  • Add a limit of one comment for PR to the commit verification bot. [#892]
  • Removed actions/checkout@v4 from bot-verified-commits.yml
  • Add comprehensive documentation for ReceiptStatusError in docs/sdk_developers/training/receipt_status_error.md
  • Add practical example examples/errors/receipt_status_error.py demonstrating transaction error handling
  • Document error handling patterns and best practices for transaction receipts
  • fix pull_request to pull_request_target in bot-verified-commits.yml
  • Add more robust receipt checks and removed fallback to examples/tokens/token_delete_transaction.py
  • Add detail to token_airdrop.py and token_airdrop_cancel.py
  • Add workflow: github bot to respond to unverified PR commits (#750)
  • Add workflow: bot workflow which notifies developers of workflow failures in their pull requests.
  • Add examples/token_create_transaction_max_automatic_token_associations_0.py to demonstrate how max_automatic_token_associations=0 behaves.
  • Add examples/topic_id.py to demonstrate TopicId opeartions
  • Add examples/topic_message.py to demonstrate TopicMessage and TopicMessageChunk with local mock data.
  • Added missing validation logic fee_schedule_key in integration token_create_transaction_e2e_test.py and ``token_update_transaction_e2e_test.py`.
  • Add account_balance_query.py example to demonstrate how to use the CryptoGetAccountBalanceQuery class.
  • Add examples/token_create_transaction_admin_key.py demonstrating admin key privileges for token management including token updates, key changes, and deletion (#798)
  • Add examples/token_create_transaction_freeze_key.py showcasing freeze key behavior, expected failures without the key, and the effect of freezing/unfreezing on transfers.
  • Add examples/account_info.py to demonstrate AccountInfo opeartions
  • Added HbarUnit class and Extend Hbar class to handle floating-point numbers
  • Add examples/topic_info.py to demonstrate TopicInfo operations.
  • feat: Allow PrivateKey to be used for keys in TopicCreateTransaction for consistency.
  • EvmAddress class
  • alias, staked_account_id, staked_node_id and decline_staking_reward fields to AccountCreateTransaction
  • staked_account_id, staked_node_id and decline_staking_reward fields to AccountInfo
  • Added examples/token_create_transaction_supply_key.py to demonstrate token creation with and without a supply key.
  • Added examples/token_create_transaction_kyc_key.py to demonstrate KYC key functionality, including creating tokens with/without KYC keys, granting/revoking KYC status, and understanding KYC requirements for token transfers.
  • Add set_token_ids, _from_proto, _validate_checksum to TokenAssociateTransaction [#795]
  • Added BatchTransaction class
  • Add support for token metadata (bytes, max 100 bytes) in TokenCreateTransaction, including a new set_metadata setter, example, and tests. [#799]
  • Added examples/token_create_transaction_token_fee_schedule.py to demonstrate creating tokens with custom fee schedules and the consequences of not having it.
  • Added examples/token_create_transaction_wipe_key.py to demonstrate token wiping and the role of the wipe key.
  • Added examples/account_allowance_approve_transaction_hbar.py and examples/account_allowance_delete_transaction_hbar.py, deleted examples/account_allowance_hbar.py. [#775]
  • Added docs\sdk_developers\training\receipts.md as a training guide for users to understand hedera receipts.
  • Add set_token_ids, _from_proto, _validate_checksum to TokenAssociateTransaction [#795]
  • docs: added network_and_client.md with a table of contents, and added external example scripts (client.py).

Changed

  • Upgraded step-security/harden-runner v2.13.2
  • bumped actions/checkout from 5.0.0 to 6.0.0
  • Limit workflow bot to one message per PR
  • Refactored token-related example scripts (token_delete.py, token_dissociate.py, etc.) for improved readability and modularity. [#370]
  • upgrade: step security action upgraded from harden-runner-2.13.1 to harden-runner-2.13.1
  • chore: Split examples/account_allowance_nft.py into separate account_allowance_approve_transaction_nft.py and account_allowance_delete_transaction_nft.py examples.
  • chore: bump protobuf from 6.33.0 to 6.33.1 (#796)
  • fix: Allow max_automatic_token_associations to be set to -1 (unlimited) in AccountCreateTransaction and add field to AccountInfo.
  • Allow PrivateKey to be used for keys in TopicCreateTransaction for consistency.
  • Update github actions checkout from 5.0.0 to 5.0.1 (#814)
  • changed to add concurrency to workflow bot
  • feat: Refactor TokenDissociateTransaction to use set_token_ids method and update transaction fee to Hbar, also update transaction.py and expand examples/token_dissociate.py, tests/unit/token_dissociate.py.

Fixed

  • chore: updated solo action to avoid v5
  • chore: fix test.yml workflow to log import errors (#740)
  • chore: fixed integration test names without a test prefix or postfix
  • Staked node ID id issue in the account_create_transationt_e2e_test
  • workflow: verified commits syntax for verfication bot

[0.1.8] - 2025-11-07

Added

  • is_unknown property added to src/hiero_sdk_python/response_code.py
  • Example response_code.py
  • Add TokenFeeScheduleUpdateTransaction class to support updating custom fee schedules on tokens (#471).
  • Add examples/token_update_fee_schedule_fungible.py and examples/token_update_fee_schedule_nft.py demonstrating the use of TokenFeeScheduleUpdateTransaction.
  • Update docs/sdk_users/running_examples.md to include TokenFeeScheduleUpdateTransaction.
  • added FreezeTransaction class
  • added FreezeType class
  • Added docs/sdk_developers/pylance.md, a new guide explaining how to set up and use Pylance in VS Code for validating imports, file references, and methods before review. (#713)
  • feat: TokenAirdropClaim Transaction, examples (with signing required and not), unit and integration tests (#201)
  • docs: Add Google-style docstrings to TokenId class and its methods in token_id.py.
  • added Google-style docstrings to the TransactionRecord class including all dataclass fields, __repr__, _from_proto() & _to_proto() methods.
  • Standardized docstrings, improved error handling, and updated type hinting (str | None to Optional[str]) for the FileId class (#652).
  • Add Google-style docstrings to AccountInfo class and its methods in account_info.py.
  • Added comprehensive Google-style docstrings to the Logger class and all utility functions in src/hiero_sdk_python/logger/logger.py (#639).
  • add AccountRecordsQuery class
  • chore: added python 3.13 to test.yml workflow (#510, #449)
  • Transaction bytes serialization support: Transaction.freeze(), Transaction.to_bytes(), and Transaction.from_bytes() methods for offline signing and transaction storage
  • docs: Add Google-style docstrings to ContractId class and methods in contract_id.py.
  • Added TokenUnpauseTransaction class
  • Added expiration_time, auto_renew_period, auto_renew_account, fee_schedule_key, kyc_key in TokenCreateTransaction, TokenUpdateTransaction classes
  • Added comprehensive Google-style docstrings to the CustomFee class and its methods in custom_fee.py.
  • docs: Add docs/sdk_developers/project_structure.md to explain repository layout and import paths.

Changed

  • chore: renamed examples to match src where possible
  • Moved examples/ to be inside subfiles to match src structure
  • changed example script workflow to run on new subdirectory structure
  • chore: bumped solo action from 14.0 to 15.0 (#764)
  • chore: replaced hardcoded 'testnet' messages with environment network name
  • chore: validate that token airdrop transactions require an available token service on the channel (#632)
  • chore: update local environment configuration in env.example (#649)
  • chore: Update env.example NETWORK to encourage testnet or local usage (#659)
  • chore: updated pyproject.toml with python 3.10 to 3.13 (#510, #449)
  • chore: fix type hint for TokenCancelAirdropTransaction pending_airdrops parameter
  • chore: Moved documentation file common_issues.md from examples/sdk_developers/ to docs/sdk_developers/ for unified documentation management (#516).
  • chore: Refactored the script of examples/custom_fee.py into modular functions
  • fix: Replaced collections.namedtuple with typing.NamedTuple in client.py for improved type checking.
  • chore: Refactored examples/custom_fee.py into three separate example files.
  • Expanded docs/sdk_developers/checklist.md with a self-review guide for all pull request submission requirements (#645).
  • Expanded docs/sdk_developers/signing.md to clarify GPG and DCO requirements and add a Table of Contents (#455).
  • chore: Standardized client initialization across all examples/ files to promote consistency (#658).
  • chore: changed the file names of airdrop examples, classes, unit and integration tests so they are grouped together. (#631)
  • Refactor AbstractTokenTransferTransaction to unify Token/NFT transfer logic.

Fixed

  • Added explicit read permissions to examples.yml (#623)
  • Removed deprecated Logger.warn() method and legacy parameter swap logic from get_logger() (#673).
  • Improved type hinting in file_append_transaction.py to resolve 'mypy --strict` errors. (#495)
  • fix: Resolve __eq__ type conflict in CustomFee class (#627)
  • Fixes a type conflict in token_id.py where from_string could receive None, preventing a runtime error by raising a ValueError if the input is missing. #630
  • Dependabot alerts (version bumps)
  • Fixed incorrect TokenType import (protobuf vs. SDK enum) in 18 example files.
  • Update schedule_sign_transaction_e2e_test to check for key presence instead of relying on index.
  • Add localhost and local as network names

Breaking Changes

  • chore: changed the file names airdrop classes (#631) {pending_airdrop_id.py -> token_airdrop_pending_id.py} {pending_airdrop_record.py -> token_airdrop_pending_record.py} {token_cancel_airdrop_transaction.py -> token_airdrop_transaction_cancel.py}

  • In TokenAirdropTransaction the parameters of the following methods have been renamed:

    • add_nft_transfer(sender β†’ sender_id, receiver β†’ receiver_id)
    • add_approved_nft_transfer(sender β†’ sender_id, receiver β†’ receiver_id)

[0.1.7] - 2025-10-28

Added

  • Expanded README.md with a new "Follow Us" section detailing how to watch, star, and fork the repository (#472).
  • Refactored examples/topic_create.py into modular functions for better readability and reuse.
  • Add Rebasing and Signing section to signing.md with instructions for maintaining commit verification during rebase operations (#556)
  • Add examples/account_id.py demonstrating AccountId class usage including creating standard AccountIds, parsing from strings, comparing instances, and creating AccountIds with public key aliases
  • Added Google-style docstrings to CustomFractionalFee class and its methods in custom_fractional_fee.py.
  • Added dependabot.yaml file to enable automated dependency management.
  • Common issues guide for SDK developers at examples/sdk_developers/common_issues.md
  • Added documentation for resolving changelog conflicts in docs/common_issues.md
  • Added comprehensive changelog entry guide at docs/sdk_developers/changelog.md to help contributors create proper changelog entries (#532).
  • docs: Added Google-style docstrings to CustomFixedFee class and its methods in custom_fixed_fee.py.
  • docs: Add Google-style docstrings to CustomRoyaltyFee class and its methods in custom_royalty_fee.py.
  • docs: Add Google-style docstrings to AbstractTokenTransferTransaction class and its methods in abstract_token_transfer_transaction.py.
  • docs: Add Google-style docstrings to TokenRelationship class and its methods in token_relationship.py.
  • feat: add initial testing guide structure
  • Added checksum filed for TopicId, FileId, ContractId, ScheduleId class
  • Added workflow for running example scripts.
  • docs: workflow.md documenting key steps to creating a pull request (#605)
  • chore: fix the examples workflow to log error messages and run on import failure (#738)
  • Added docs/discord.md explaining how to join and navigate the Hiero community Discord (#614).

Changed

  • Added direct links to Python SDK channel in Linux Foundation Decentralized Trust Discord back in
  • Updated all occurrences of non-functional Discord invite links throughout the documentation with the new, stable Hyperledger and Hedera invite links (#603).
  • Refactored TopicId class to use @dataclass decorator for reducing boilerplate code
  • Renamed examples/nft_allowance.py to examples/account_allowance_nft.py for consistency with account class naming scheme
  • Added changelog conflict resolution examples to docs/common_issues.md
  • Refactored examples/topic_create.py to be more modular by splitting functions and renaming create_topic() to main().
  • Refactored examples/transfer_hbar.py to improve modularity by separating transfer and balance query operations into dedicated functions
  • Enhanced contributing section in README.md with resource links
  • Refactored examples/topic_message_submit.py to be more modular
  • Added "One Issue Per Pull Request" section to examples/sdk_developers/common_issues.md.
  • docs: Improved the contributing section in the README.md file
  • Refactored examples/transfer_nft.py to be more modular by isolating transfer logic.
  • Refactored examples/file_append.py into modular functions for better readability, reuse, and consistency across examples.
  • Ensured identical runtime behavior and output to the previous version to maintain backward compatibility.
  • Renamed examples/hbar_allowance.py to examples/account_allowance_hbar.py for naming consistency
  • Converted monolithic function in token_create_nft_infinite.py to multiple modular functions for better structure and ease.
  • docs: Use relative paths for internal GitHub links (#560).
  • Update pyproject.toml maintainers list. – docs: Updated README.md/CHANGELOG.md and added blog.md, bud.md and setup.md (#474)
  • renamed docs/sdk_developers/changelog.md to docs/sdk_developers/changelog_entry.md for clarity.
  • Refactor query_balance.py into modular, reusable functions with setup_client(), create_account(), get_balance(), transfer_hbars(), and main() for improved readability, maintainability, and error handling.
  • Unified balance and transfer logging format β€” both now consistently display values in hbars for clarity.

Fixed

  • Add type hints to setup_client() and create_new_account() functions in examples/account_create.py (#418)
  • Added explicit read and write permissions to test.yml
  • Type hinting for Topic related transactions.

Removed

  • Remove deprecated camelCase alias support and _DeprecatedAliasesMixin; SDK now only exposes snake_case attributes for NftId, TokenInfo, and TransactionReceipt. (Issue #428)

[0.1.6] - 2025-10-21

Added

  • Add comprehensive Google-style docstrings to examples/account_create.py
  • add revenue generating topic tests/example
  • add fee_schedule_key, fee_exempt_keys, custom_fees fields in TopicCreateTransaction, TopicUpdateTransaction, TopicInfo classes
  • add CustomFeeLimit class
  • TokenNftAllowance class
  • TokenAllowance class
  • HbarAllowance class
  • HbarTransfer class
  • AccountAllowanceApproveTransaction class
  • AccountAllowanceDeleteTransaction class
  • FileAppendTransaction class
  • Documentation examples for Allowance Approve Transaction, Allowance Delete Transaction, and File Append Transaction
  • Approved transfer support to TransferTransaction
  • set_transaction_id() API to Transaction class
  • Allowance examples (hbar_allowance.py, token_allowance.py, nft_allowance.py)
  • Refactored examples/logging_example.py for better modularity (#478)

Changed

  • TransferTransaction refactored to use TokenTransfer and HbarTransfer classes instead of dictionaries
  • Added checksum validation for TokenId
  • Refactor examples/token_cancel_airdrop
  • Refactor token creation examples for modularity and consistency
  • Updated signing.md to clarify commit signing requirements, including DCO, GPG, and branch-specific guidelines (#459)

Changed

  • Rearranged running_examples.md to be alphabetical
  • Refactor token_associate.py for better structure, add association verification query (#367)
  • Refactored examples/account_create.py to improve modularity and readability (#363)
  • Replace Hendrik Ebbers with Sophie Bulloch in the MAINTAINERS.md file
  • Improved CONTRIBUTING.md by explaining the /docs folder structure and fixing broken hyperlinks.(#431)
  • Converted class in token_nft_info.py to dataclass for simplicity.

Fixed

  • Incompatible Types assignment in token_transfer_list.py
  • Corrected references to _require_not_frozen() and removed the surplus _is_frozen
  • Removed duplicate static methods in TokenInfo class: Β  - _copy_msg_to_proto Β  - _copy_key_if_present Β  - _parse_custom_fees Β  Kept robust versions with proper docstrings and error handling.
  • Add strict type hints to TransactionGetReceiptQuery (#420)
  • Fixed broken documentation links in CONTRIBUTING.md by converting absolute GitHub URLs to relative paths
  • Updated all documentation references to use local paths instead of pointing to hiero-sdk project hub

[0.1.5] - 2025-09-25

Added

  • ScheduleSignTransaction class
  • NodeUpdateTransaction class
  • NodeDeleteTransaction class
  • ScheduleDeleteTransaction class
  • prng_number and prng_bytes properties in TransactionRecord
  • PrngTransaction class
  • ScheduleInfoQuery class
  • ScheduleInfo class
  • Exposed node_id property in TransactionReceipt
  • NodeCreateTransaction class
  • ScheduleId() class
  • ScheduleCreateTransaction() class
  • build_scheduled_body() in every transaction
  • ContractDeleteTransaction class
  • ContractExecuteTransaction class
  • setMessageAndPay() function in StatefulContract
  • AccountDeleteTransaction Class
  • generate_proto.py
  • Bumped Hedera proto version from v0.57.3 to v0.64.3
  • Added dev and lint dependency groups as default in pyproject.toml
  • EthereumTransaction class
  • AccountId support for ECDSA alias accounts
  • ContractId.to_evm_address() method for EVM compatibility
  • consumeLargeData() function in StatefulContract
  • example script for Token Airdrop
  • added variables directly in the example script to reduce the need for users to supply extra environment variables.
  • Added new merge_conflicts.md with detailed guidance on handling conflicts during rebase.
  • Type hinting to /tokens, /transaction, /query, /consensus
  • Linting to /tokens, /transaction, /query, /consensus
  • Module docstrings in /tokens, /transaction, /query, /consensus
  • Function docstrings in /tokens, /transaction, /query, /consensus

Changed

  • bump solo version to v0.14
  • bump protobufs version to v0.66.0
  • bump solo version to v0.13
  • Extract _build_proto_body() from build_transaction_body() in every transaction
  • StatefulContract's setMessage() function designed with no access restrictions, allowing calls from any address
  • bump solo version to v0.12
  • Extract Ed25519 byte loading logic into private helper method _from_bytes_ed25519()
  • Documentation structure updated: contents moved from /documentation to /docs.
  • Switched Mirror Node endpoints used by SDK to secure ones instead of deprecated insecure endpoints (shut down on Aug 20th, see Hedera blogpost)
  • Update protobuf dependency from 5.28.1 to 5.29.1
  • Update grpcio dependency from 1.68.1 to 1.71.2
  • Updated rebasing.md with clarification on using git reset --soft HEAD~<n> where <n> specifies the number of commits to rewind.
  • Calls in examples for PrivateKey.from_string_ed25519(os.getenv('OPERATOR_KEY')) to PrivateKey.from_string(os.getenv('OPERATOR_KEY')) to enable general key types
  • Add CI tests across Python 3.10–3.12.
  • kyc_status: Optional[TokenFreezeStatusProto] = None β†’ kyc_status: Optional[TokenKycStatus] = None
  • assert relationship.freeze_status == TokenFreezeStatus.FROZEN, f"Expected freeze status to be FROZEN, but got {relationship.freeze_status}" β†’ assert relationship.freeze_status == TokenFreezeStatus.UNFROZEN, f"Expected freeze status to be UNFROZEN, but got {relationship.freeze_status}"

Fixed

  • Format account_create_transaction.py and add type hints
  • Format account_balance.py and fix pylint issues
  • Format account_delete_transaction.py and fix pylint issues
  • Format account_id.py and fix pylint issues
  • Format account_info.py and fix pylint issues
  • Format account_update_transaction.py and fix pylint issues
  • Unit test compatibility issues when running with UV package manager
  • Type annotations in TokenRelationship class (kyc_status and freeze_status)
  • Test assertions in test_executable.py using pytest match parameter
  • Moved and renamed README_upstream.md to docs/sdk_developers/rebasing.md
  • Invalid DRE Hex representation in examples/keys_private_ecdsa.py
  • Windows malformed path using uv run generate_proto.py using as_posix()
  • Changed README MIT license to Apache
  • deprecated CamelCase instances in /examples such as TokenId and totalSupply to snake_case
  • Invalid HEX representation and signature validation in keys_public_ecdsa.py
  • Invalid signature verification for examples/keys_public_der.py
  • Duplicate validation function in TokenCreate

Removed

  • Removed the old /documentation folder.
  • Rebase command in README_upstream changed to just -S
  • generate_proto.sh
  • pkg_resources dependency in generate_proto.py

Breaking API changes

  • We have some changed imports and returns to maintain compatability in the proto bump

transaction_body_pb2.TransactionBody -> transaction_pb2.TransactionBody contract_call_local_pb2.ContractFunctionResult -> contract_types_pb2.ContractFunctionResult contract_call_local_pb2.ContractLoginfo -> contract_types_pb2.ContractLoginfo

  • Removed init.py content in /tokens

Changed imports

  • src/hiero_sdk_python/consensus/topic_message.py: from hiero_sdk_python import Timestamp β†’ from hiero_sdk_python.timestamp import Timestamp
  • src/hiero_sdk_python/query/topic_message_query.py: from hiero_sdk_python import Client β†’ from hiero_sdk_python.client.client import Client
  • src/hiero_sdk_python/tokens/init.py: content removed.
  • src/hiero_sdk_python/tokens/token_info.py: from hiero_sdk_python.hapi.services.token_get_info_pb2 import TokenInfo as proto_TokenInfo β†’ from hiero_sdk_python.hapi.services import token_get_info_pb2
  • src/hiero_sdk_python/tokens/token_key_validation.py: from hiero_sdk_python.hapi.services β†’ import basic_types_pb2
  • src/hiero_sdk_python/tokens/token_kyc_status.py: from hiero_sdk_python.hapi.services.basic_types_pb2 import TokenKycStatus as proto_TokenKycStatus β†’ from hiero_sdk_python.hapi.services import basic_types_pb2
  • src/hiero_sdk_python/tokens/token_pause_status.py: from hiero_sdk_python.hapi.services.basic_types_pb2 import (TokenPauseStatus as proto_TokenPauseStatus,) β†’ from hiero_sdk_python.hapi.services import basic_types_pb2
  • src/hiero_sdk_python/tokens/token_pause_transaction.py: from hiero_sdk_python.hapi.services.token_pause_pb2 import TokenPauseTransactionBody β†’ from hiero_sdk_python.hapi.services import token_pause_pb2, transaction_pb2
  • from hiero_sdk_python.hapi.services.token_revoke_kyc_pb2 import TokenRevokeKycTransactionBody β†’ from hiero_sdk_python.hapi.services import token_revoke_kyc_pb2, transaction_pb2
  • src/hiero_sdk_python/tokens/token_update_nfts_transaction.py: from hiero_sdk_python.hapi.services.token_update_nfts_pb2 import TokenUpdateNftsTransactionBody β†’ from hiero_sdk_python.hapi.services import token_update_nfts_pb2,transaction_pb2
  • src/hiero_sdk_python/tokens/token_wipe_transaction.py: from hiero_sdk_python.hapi.services.token_wipe_account_pb2 import TokenWipeAccountTransactionBody β†’ from hiero_sdk_python.hapi.services import token_wipe_account_pb2, transaction_pb2

[0.1.4] - 2025-08-19

Added

  • CONTRIBUTING.md: expanded documentation detailing various contribution processes in a step-by-step way. Includes new sections: blog posts and support.
  • README_upstream.md: documentation explaining how to rebase to main.

Added

  • Legacy ECDSA DER parse support
  • documented private key from_string method behavior
  • ContractInfo class
  • ContractInfoQuery class
  • ContractID check in PublicKey._from_proto() method
  • PendingAirdropId Class
  • PendingAirdropRecord Class
  • TokenCancelAirdropTransaction Class
  • AccountUpdateTransaction class
  • ContractBytecodeQuery class
  • SimpleStorage.bin-runtime
  • Support for both .bin and .bin-runtime contract bytecode extensions in contract_utils.py
  • ContractUpdateTransaction class

Fixed

  • missing ECDSA support in query.py and contract_create_transaction.py (was only creating ED25519 keys)
  • Applied linting and code formatting across the consensus module
  • fixed pip install hiero_sdk_python -> pip install hiero-sdk-python in README.md

Breaking API changes

We have several camelCase uses that will be deprecated β†’ snake_case Original aliases will continue to function, with a warning, until the following release.

In token_info.py

  • tokenId β†’ token_id
  • totalSupply β†’ total_supply
  • isDeleted β†’ is_deleted
  • tokenType β†’ token_type
  • maxSupply β†’ max_supply
  • adminKey β†’ admin_key
  • kycKey β†’ kyc_key
  • freezeKey β†’ freeze_key
  • wipeKey β†’ wipe_key
  • supplyKey β†’ supply_key
  • defaultFreezeStatus β†’ default_freeze_status
  • defaultKycStatus β†’ default_kyc_status
  • autoRenewAccount β†’ auto_renew_account
  • autoRenewPeriod β†’ auto_renew_period
  • pauseStatus β†’ pause_status
  • supplyType β†’ supply_type

In nft_id.py

  • tokenId β†’ token_id
  • serialNumber β†’ serial_number

In transaction_receipt.py

  • tokenId β†’ token_id
  • topicId β†’ topic_id
  • accountId β†’ account_id
  • fileId β†’ file_id

Deprecated Additions

  • logger.warn will be deprecated in v0.1.4. Please use logger.warning instead.
  • get_logger method passing (name, level) will be deprecated in v0.1.4 for (level, name).

[0.1.3] - 2025-07-03

Added

  • TokenType Class

  • MAINTAINERS.md file

  • Duration Class

  • NFTTokenCreateTransaction Class

  • TokenUnfreezeTransaction

  • Executable Abstraction

  • Logger

  • Node Implementation

  • Integration Tests across the board

  • TokenWipeTransaction Class

  • TokenNFTInfoQuery Class

  • TokenInfo Class

  • TokenRejectTransaction Class

  • TokenUpdateNftsTransaction Class

  • TokenInfoQuery Class

  • TokenPauseTransaction Class

  • TokenBurnTransaction Class

  • TokenGrantKycTransaction Class

  • TokenUpdateTransaction Class

  • added Type hinting and initial methods to several modules

  • TokenRevoceKycTransaction Class

  • Types Guide

  • TransactionRecordQuery Class

  • AccountInfoQuery Class

Changed

  • replace datetime.utcnow() with datetime.now(timezone.utc) for Python 3.10
  • updated pr-checks.yml
  • added add_require_frozen() to Transaction Base Class
  • added NFT Transfer in TransferTransaction
  • bumped solo-actions to latest release
  • updated to/from_proto method to be protected
  • Example scripts updated to be easily run form root
  • README updated
  • added PublicKey.from_proto to PublicKey class
  • changed Query Class to have method get_cost
  • SimpleContract and StatefulContract constructors to be payable
  • added new_pending_airdrops to TransactionRecord Class
  • Reorganized SDK developer documentation: Β  - Renamed and moved README_linting.md to linting.md Β  - Renamed and moved README_types.md to types.md Β  - Renamed and moved Commit_Signing.md to signing.md
  • Created sdk_users docs folder and renamed examples/README.md to running_examples.md
  • Updated references and links accordingly

Fixed

  • fixed INVALID_NODE_ACCOUNT during node switching
  • fixed ed25519 key ambiguity (PrivateKey.from_string -> PrivateKey.from_string_ed25519 in examples)

Removed

  • Redundant test.py file

[0.1.2] - 2025-03-12

Added

  • NFTId Class

Changed

  • use SEC1 ECPrivateKey instead of PKCS#8

Fixed

  • PR checks
  • misnamed parameter (ECDSASecp256k1=pub_bytes -> ECDSA_secp256k1=pub_bytes)

Removed

  • .DS_store file

[0.1.1] – 2025-02-25

Added

  • RELEASE.md
  • CONTRIBUTING.md

Changed

  • README now split into root README for project overview and /examples README for transaction types and syntax.
  • Python version incremented from 3.9 to 3.10

Removed

  • pdm.lock & uv.lock file

[0.1.0] - 2025-02-19

Added

  • Initial release of the Python SDK core functionality.
  • Basic documentation on how to install and use the SDK.
  • Example scripts illustrating setup and usage.

Changed

  • N/A

Fixed

  • N/A

Removed

  • N/A

[0.1.0] - 2025-02-19