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.
- Refactor
mock_serversetup for network level TLS handling and added thread safety
- chore: update GitHub Actions runners from ubuntu-latest to hl-sdk-py-lin-md (#2021)
- Refactored the Advanced Issue Template to V2 with stricter prerequisites and a focus on architectural design (#2016).
- Refactored the Advanced Issue Template to ensure PR-level quality checklists do not block maintainers during issue creation (#2036)
- Add
__repr__method toTokenIdclass for cleaner debugging output (#1653)
- Updated
AccountUpdateTransaction.set_key()to accept genericKeyobjects (includingKeyListand threshold keys), rather than strictly requiring aPublicKey. - Fix the TransactionGetReceiptQuery to raise ReceiptStatusError for the non-retryable and non success receipt status
- Refactor
AccountInfoto use the existingStakingInfowrapper class instead of flattened staking fields. Access is now viainfo.staking_info.staked_account_id,info.staking_info.staked_node_id, andinfo.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 aDeprecationWarning. (#1366) - Added abstract
Keysupper class to handle various proto Keys.
- Added TCK endpoint for the createAccount method
- Renamed
delegate_contract_id.pytodelegate_contract_id_test.py(#2004) - Fix Flaky tests for
mock_serverby enforcing non-tls port and adding a mock_tls certificate - Implement basic fuzz testing #1872
- Add Chocolatey as a prerequisite in the Windows setup guide (#1961)
- 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.ymlworkflow runner configuration - Fix build failing in
publish.yml - Allowed
mirror.servaxnet.com:443inpr-check-test.ymlHarden-Runner allowlist for stable Kind download network egress. - Allowed
mirror.fmt-2.serverforge.org:443inpr-check-test.ymlHarden-Runner allowlist for stable Kind download network egress. - Add automated label sync workflow to propagate labels from linked issues to pull requests (#1716)
- Added CodeRabbit review instructions in
.coderabbit.yamlfor account modulesrc/hiero_sdk_python/account/. - Add support for
include_childrento TransactionRecordQuery (#1512)
- Changed pytest version to "pytest>=8.3.4,<10" (#1917)
- Update protobuf schema version to v0.72.0-rc.2 in
.coderabbit.yaml
- Updated
generated_proto.pyfile to work with new proto version - fix: Ensure UTF-8 encoding when reading and writing proto files in
generate_proto.pyto prevent encoding issues on Windows (#1963)
-
Updated the
examples/consensus/topic_create_transaction_revenue_generating.pyexample to useClient.from_env()for simpler client setup. (#1964) -
Refactored
examples/consensus/topic_delete_transaction.pyto use Client.from_env() for simplified client initialization, removed manual setup code, and cleaned up unused imports (os,AccountId,PrivateKey). (#1971)
- Replaced relative documentation links in
README.mdwith 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)
- 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-testto 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)
- 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/filemodule in.coderabbit.yamlto guide reviewers in verifying properFileAppendTransactionchunking constraints and nuances in memo handling forFileUpdateTransactionaccording 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/cryptomodule. - Added
.codacy.ymlconfiguration to exclude thetests/directory from Banditassertanalysis.
- Fixed duplication in GitHub bot next issue recommendations by parsing actual issue descriptions instead of blind truncation (#1658)
- Add
staking_infofield toContractInfoclass to expose staking metadata using theStakingInfowrapper. (#1365) - Fix
TopicInfo.__str__()to formatexpiration_timein UTC so unit tests pass in non-UTC environments. (#1800) - Resolve CodeQL
reflected-XSSwarning in TCK JSON-RPC endpoint - Improve
keccak256docstring formatting for better readability and consistency (#1624) - Added
wait_for_receiptparameter forTransaction.execute()to support optional receipt waiting, andget_receipt_query,get_record_queryandget_recordtoTransactionResponse.
-
Refactor
examples/file/file_create_transaction.pyto removeos,dotenv,AccountId,PrivateKey,Networkimports that are no longer needed and updated setup-client() (#1610) -
Refactored contract_delete_transaction example to use Client.from_env. (#1823)
- 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_uncheckedincrypto_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.mdrelative link indocs/sdk_developers/bug.mdby 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)
- Format
tests/unit/endpoint_test.pyusing black. (#1792) - Implement TCK JSON-RPC server with request handling and error management
- 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_NAMEvalidation. (#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-uvfrom v7.2.1 to v7.3.1 in workflow files (#1900)
-
Format
tests/unit/crypto_utils_test.pywith black for code style consistency (#1524) -
Standardize formatting of
tests/unit/entity_id_helper_test.pyusing Black for consistent code style across the test suite (#1527) -
Added tests for ProtoBuf Training Example Implementation
-
Formatted
tests/unit/get_receipt_query_test.pywith black for code style consistency. (#1537) -
format black
tests/unit/hbar*.py.(#1538) -
Formatted
tests/unit/conftest.pywith black for code style consistency. (#1522) -
format
black tests/unit/nft_id_test.pywith Black.(#1544) -
Format
tests/unit/executable_test.pywith Black.(#1530) -
Format
tests/unit/hedera_trust_manager_test.pywith 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.pywith Black.(#1520) -
Style: formatted
tests/unit/prng_transaction_test.pywith black (#1546) -
Formatted contract unit tests with black for consistent style. (#1523)
-
Format account test files with Black (#1519)
-
Format
tests/unit/node*.pywith 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.pyusing Black. -
Formatted client_test.py using Black.
-
Format tests/unit/query*.py using black (#1547)
-
Format
tests/unit/custom_fee_test.pywith black for code style consistency. (#1525)
-
Implement custom
__repr__method forFileIdclass that returns constructor-style representation for improved debugging experience (#1628) -
Added foundational guide for GitHub Workflows (#1741)
-
Contract-specific CodeRabbit review instructions in
.coderabbit.yamlfor improved automated PR feedback on ABI, gas, ContractId, and protobuf safety. (#1695) -
Added new members to the mentor roster. (#1693)
-
Added support for the
includeDuplicatesflag inTransactionRecordQueryandduplicatesfield inTransactionRecord(#1635) -
Added logging in bot-gfi-assign-on-comment.js to prevent silent skips. (
#1668) -
Added
AssessedCustomFeedomain 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 toTopicIdclass 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
/unassigncommand allowing contributors to remove themselves from assigned issues.(#1472) -
Added advanced CodeRabbit reviewer guidance for
tokensmodule 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
/assigncommand support and helpful reminders. (#1368) -
Added comprehensive docstring to
FeeAssessmentMethodenum explaining inclusive vs exclusive fee assessment methods with usage examples. (#1391) -
Added comprehensive docstring to
TokenTypeenum explaining fungible vs non-fungible tokens with practical use cases. (#1392) -
Enable dry run support for office hours bot via
workflow_dispatchtrigger 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
Queryclass, 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
advancedissues; requires completion of at least onegood first issueand oneintermediateissue 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
intandHbarinputs -
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.ymlto 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 toAccountInfoclass 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.pyto 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_RUNsupport, and fixed handling of cross-repo PR references for stale detection. -
Added unit tests for
SubscriptionHandleclass covering cancellation state, thread management, and join operations. -
Refactored
account_create_transaction_create_with_alias.pyexample 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.ymlto 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_fungibleexample by introducingaccount_balance_query()&transfer_transaction().Renamedtransfer_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.ymlto limit non-maintainers to 2 concurrent issue assignments. -
Configured coderabbit with a
.coderabbit.yaml -
Added
.github/workflows/bot-community-callsand its script to notify issue creators of a community call -
Added all missing fields to
__str__()method and updatedtest_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.mdto 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)(#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()andset_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.mdfile for maintainers to write Good First Issue guidelines (#1034) -
Added new
.github/ISSUE_TEMPLATE/04_good_first_issue_candidate.ymlfile (1068)(#1068) -
Enhanced
.github/ISSUE_TEMPLATE/01_good_first_issue.ymlwith 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)(#1100)
-
Add new
.github/ISSUE_TEMPLATE/05_intermediate_issue.ymlfile (1072)(#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.mdfor 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.ymlworkflow to perform scheduled monthly Markdown link validation across the entire repository with automatic issue creation for broken links (#1210) -
Added
transfer_transaction_tinybar.pyexample demonstrating tinybar transfers with both integer and Hbar object approaches. (#1249) -
Added
transfer_transaction_gigabar.pyexample demonstratingGIGABARunit usage for large-value transfers. (#1249) -
Coderabbit prompt for .github
-
Added convenient factory methods to
Hbarclass for easier instantiation:from_microbars(),from_millibars(),from_hbars(),from_kilobars(),from_megabars(), andfrom_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
TransactionIdclass, 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 andClient.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
Queryand 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.ymlto use dedicated script.github/scripts/bot-workflows.jsfor improved maintainability and testability. (#1288) -
Added MirrorNode based population for
ContractId, including parsing and serialization support. -
Added
/workingcommand to reset the inactivity timer on issues and PRs. (#1552) -
Added
grpc_deadlinesupport for transaction and query execution. -
Type hints to exception classes (
PrecheckError,MaxAttemptsError,ReceiptStatusError) constructors and string methods. -
Added
__eq__and__hash__functions for Key
- 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 upCONTRIBUTING.mdTOC, and normalize test file naming and paths (#1706) - Added comprehensive docstring to
compress_with_cryptographyfunction (#1626) - Replaced the docstring in
entity_id_helper.pywith one that is correct. (#1623)
-
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 allexamples/query/files to useClient.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.pyto useClient.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
/unassigncommand 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.ymlworkflow 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.pyto useprint(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.shtobot-advanced-check.shfor 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.pyinto 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.ymlto 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.mdtodocs/sdk_developers/training/workflow/how_to_link_issues.mdand 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.pyto improve readability by splitting the monolithic function into smaller helper functions. #1017 -
Improved docstring for
account_allowance_approve_transaction_nft.pywith 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.pyfromexamples/toexamples/account/for better organization (#1003) -
Improved consistency of transaction examples (#1120)
-
Refactored
account_create_transaction_with_fallback_alias.pyby splitting the monolithiccreate_account_with_fallback_aliasfunction into modular functions:generate_fallback_key,fetch_account_info, andprint_account_summary. The existingsetup_client()function was reused for improved readability and structure (#1018) -
Allow
PublicKeyfor batch_key inTransaction, enabling bothPrivateKeyandPublicKeyfor batched transactions -
Allow
PublicKeyforTokenUpdateKeysinTokenUpdateTransaction, 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/workflowsto 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_autoexample for pylint compliance (no functional changes). (#1079) -
Formatted
examples/queryusing black (#1082)(#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_requiredexample 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.pyto 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 theResponseCode(receipt.status).nameacross examples and integration tests for consistency. (#1136) -
Moved helpful references to Additional Context section and added clickable links.
-
Transformed
examples\tokens\custom_royalty_fee.pyto be an end-to-end example, that interacts with the Hedera network, rather than a static object demo. -
Refactored
examples/tokens/custom_royalty_fee.pyby 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.pyexample to useHbarobjects instead of raw integers and added receipt checking withResponseCodevalidation.(#1249) -
Renamed
pr-missing-linked-issue.ymlandpr_missing_linked_issue.jstobot-pr-missing-linked-issue.ymlandbot-pr-missing-linked-issue.jsrespectively. 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 withset_key_without_alias()andset_key_with_alias()across examples and tests -
Updated
pyproject.tomlto 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.shto detect and skip PRs created by bot accounts when posting office hours reminders. (#1384) -
Refactored
examples/account/account_create_transaction_create_with_alias.pyandexamples/account/account_create_transaction_evm_alias.pyto use the nativeAccountInfo.__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 inkey_format.pyto 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 viaset_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.
- 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
/assignreminders 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
/unassigncommand 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-runinput inbot-community-calls.ymlworkflow (#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
/assignreminders for repository collaborators. (#1367) - GFI workflow casing
- Update
bot-workflows.ymlto 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.pyto correctly check if tokens are associated by usingtoken_id in token_balancesinstead 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-filesandpr-check-codecov - Fixed
cron-check-broken-links.ymlstring parsing issue in context inputdry_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.shto skip posting reminders on issues created by bot accounts. (#1383) - Fixed incorrect run instructions and broaden error handling in
token_dissociate_transaction.pyexample to improve usability for new users (#1468) - Update
.github/scripts/bot-advanced-check.shto 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 optionaltimeoutparameter. - 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)
- Deleted
examples/utils.pyas its helper functions are no longer needed. (#1263)
- Remove deprecated 'in_tinybars' parameter and update related tests
/src/hiero_sdk_python/hbar.py,/tests/unit/hbar_test.pyand/src/hiero_sdk_python/tokens/custom_fixed_fee.py.
- 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_ALLOWANCEverification. - Add
max_automatic_token_associations,staked_account_id,staked_node_idanddecline_staking_rewardfields toAccountUpdateTransaction(#801) - Added docs/sdk_developers/training/setup: a training to set up as a developer to the python sdk
- Add example demonstrating usage of
CustomFeeLimitinexamples/transaction/custom_fee_limit.py - Added
.github/workflows/merge-conflict-bot.ymlto automatically detect and notify users of merge conflicts in Pull Requests. - Added
.github/workflows/bot-office-hours.ymlto automate the Weekly Office Hour Reminder. - feat: Implement account creation with EVM-style alias transaction example.
- Added validation logic in
.github/workflows/pr-checks.ymlto detect when no new chnagelog entries are added under [Unreleased]. - Support for message chunking in
TopicSubmitMessageTransaction.
- bot workflows to include new changelog entry
- Removed duplicate import of transaction_pb2 in transaction.py
- Refactor
TokenInfointo an immutable dataclass, remove all setters, and rewrite_from_protoas a pure factory for consistent parsing [#800] - feat: Add string representation method for
CustomFractionalFeeclass and updatecustom_fractional_fee.pyexample. - Moved query examples to their respective domain folders to improve structure matching.
- fixed workflow: changelog check with improved sensitivity to deletions, additions, new releases
- Add a limit of one comment for PR to the commit verification bot. [#892]
- Removed
actions/checkout@v4frombot-verified-commits.yml - Add comprehensive documentation for
ReceiptStatusErrorindocs/sdk_developers/training/receipt_status_error.md - Add practical example
examples/errors/receipt_status_error.pydemonstrating transaction error handling - Document error handling patterns and best practices for transaction receipts
- fix
pull_requesttopull_request_targetinbot-verified-commits.yml - Add more robust receipt checks and removed fallback to
examples/tokens/token_delete_transaction.py - Add detail to
token_airdrop.pyandtoken_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.pyto demonstrate howmax_automatic_token_associations=0behaves. - Add
examples/topic_id.pyto demonstrateTopicIdopeartions - Add
examples/topic_message.pyto demonstrateTopicMessageandTopicMessageChunkwith local mock data. - Added missing validation logic
fee_schedule_keyin integrationtoken_create_transaction_e2e_test.pyand ``token_update_transaction_e2e_test.py`. - Add
account_balance_query.pyexample to demonstrate how to use the CryptoGetAccountBalanceQuery class. - Add
examples/token_create_transaction_admin_key.pydemonstrating admin key privileges for token management including token updates, key changes, and deletion (#798) - Add
examples/token_create_transaction_freeze_key.pyshowcasing freeze key behavior, expected failures without the key, and the effect of freezing/unfreezing on transfers. - Add
examples/account_info.pyto demonstrateAccountInfoopeartions - Added
HbarUnitclass and ExtendHbarclass to handle floating-point numbers - Add
examples/topic_info.pyto demonstrateTopicInfooperations. - feat: Allow
PrivateKeyto be used for keys inTopicCreateTransactionfor consistency. - EvmAddress class
alias,staked_account_id,staked_node_idanddecline_staking_rewardfields to AccountCreateTransactionstaked_account_id,staked_node_idanddecline_staking_rewardfields to AccountInfo- Added
examples/token_create_transaction_supply_key.pyto demonstrate token creation with and without a supply key. - Added
examples/token_create_transaction_kyc_key.pyto 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_checksumto TokenAssociateTransaction [#795] - Added BatchTransaction class
- Add support for token metadata (bytes, max 100 bytes) in
TokenCreateTransaction, including a newset_metadatasetter, example, and tests. [#799] - Added
examples/token_create_transaction_token_fee_schedule.pyto demonstrate creating tokens with custom fee schedules and the consequences of not having it. - Added
examples/token_create_transaction_wipe_key.pyto demonstrate token wiping and the role of the wipe key. - Added
examples/account_allowance_approve_transaction_hbar.pyandexamples/account_allowance_delete_transaction_hbar.py, deletedexamples/account_allowance_hbar.py. [#775] - Added
docs\sdk_developers\training\receipts.mdas a training guide for users to understand hedera receipts. - Add
set_token_ids,_from_proto,_validate_checksumto TokenAssociateTransaction [#795] - docs: added
network_and_client.mdwith a table of contents, and added external example scripts (client.py).
- 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.pyinto separateaccount_allowance_approve_transaction_nft.pyandaccount_allowance_delete_transaction_nft.pyexamples. - chore: bump protobuf from 6.33.0 to 6.33.1 (#796)
- fix: Allow
max_automatic_token_associationsto be set to -1 (unlimited) inAccountCreateTransactionand add field toAccountInfo. - Allow
PrivateKeyto be used for keys inTopicCreateTransactionfor consistency. - Update github actions checkout from 5.0.0 to 5.0.1 (#814)
- changed to add concurrency to workflow bot
- feat: Refactor
TokenDissociateTransactionto use set_token_ids method and update transaction fee to Hbar, also updatetransaction.pyand expandexamples/token_dissociate.py,tests/unit/token_dissociate.py.
- 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
is_unknownproperty added tosrc/hiero_sdk_python/response_code.py- Example
response_code.py - Add
TokenFeeScheduleUpdateTransactionclass to support updating custom fee schedules on tokens (#471). - Add
examples/token_update_fee_schedule_fungible.pyandexamples/token_update_fee_schedule_nft.pydemonstrating the use ofTokenFeeScheduleUpdateTransaction. - Update
docs/sdk_users/running_examples.mdto includeTokenFeeScheduleUpdateTransaction. - 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
TokenIdclass and its methods intoken_id.py. - added Google-style docstrings to the
TransactionRecordclass including all dataclass fields,__repr__,_from_proto()&_to_proto()methods. - Standardized docstrings, improved error handling, and updated type hinting (
str | NonetoOptional[str]) for theFileIdclass (#652). - Add Google-style docstrings to
AccountInfoclass and its methods inaccount_info.py. - Added comprehensive Google-style docstrings to the
Loggerclass and all utility functions insrc/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(), andTransaction.from_bytes()methods for offline signing and transaction storage - docs: Add Google-style docstrings to
ContractIdclass and methods incontract_id.py. - Added TokenUnpauseTransaction class
- Added expiration_time, auto_renew_period, auto_renew_account, fee_schedule_key, kyc_key in
TokenCreateTransaction,TokenUpdateTransactionclasses - Added comprehensive Google-style docstrings to the
CustomFeeclass and its methods incustom_fee.py. - docs: Add
docs/sdk_developers/project_structure.mdto explain repository layout and import paths.
- 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.mdfromexamples/sdk_developers/todocs/sdk_developers/for unified documentation management (#516). - chore: Refactored the script of examples/custom_fee.py into modular functions
- fix: Replaced
collections.namedtuplewithtyping.NamedTupleinclient.pyfor improved type checking. - chore: Refactored examples/custom_fee.py into three separate example files.
- Expanded
docs/sdk_developers/checklist.mdwith 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
AbstractTokenTransferTransactionto unify Token/NFT transfer logic.
- 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.pyto resolve 'mypy --strict` errors. (#495) - fix: Resolve
__eq__type conflict inCustomFeeclass (#627) - Fixes a type conflict in
token_id.pywherefrom_stringcould receiveNone, preventing a runtime error by raising aValueErrorif the input is missing. #630 - Dependabot alerts (version bumps)
- Fixed incorrect
TokenTypeimport (protobuf vs. SDK enum) in 18 example files. - Update
schedule_sign_transaction_e2e_testto check for key presence instead of relying on index. - Add
localhostandlocalas network names
-
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
TokenAirdropTransactionthe 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)
- Expanded
README.mdwith a new "Follow Us" section detailing how to watch, star, and fork the repository (#472). - Refactored
examples/topic_create.pyinto 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.pydemonstrating AccountId class usage including creating standard AccountIds, parsing from strings, comparing instances, and creating AccountIds with public key aliases - Added Google-style docstrings to
CustomFractionalFeeclass and its methods incustom_fractional_fee.py. - Added
dependabot.yamlfile 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.mdto help contributors create proper changelog entries (#532). - docs: Added Google-style docstrings to
CustomFixedFeeclass and its methods incustom_fixed_fee.py. - docs: Add Google-style docstrings to
CustomRoyaltyFeeclass and its methods incustom_royalty_fee.py. - docs: Add Google-style docstrings to
AbstractTokenTransferTransactionclass and its methods inabstract_token_transfer_transaction.py. - docs: Add Google-style docstrings to
TokenRelationshipclass and its methods intoken_relationship.py. - feat: add initial testing guide structure
- Added
checksumfiled 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.mdexplaining how to join and navigate the Hiero community Discord (#614).
- 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.pytoexamples/account_allowance_nft.pyfor consistency with account class naming scheme - Added changelog conflict resolution examples to
docs/common_issues.md - Refactored
examples/topic_create.pyto be more modular by splitting functions and renamingcreate_topic()tomain(). - Refactored
examples/transfer_hbar.pyto 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.pyto be more modular by isolating transfer logic. - Refactored
examples/file_append.pyinto 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.pytoexamples/account_allowance_hbar.pyfor naming consistency - Converted monolithic function in
token_create_nft_infinite.pyto 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.pyinto modular, reusable functions withsetup_client(),create_account(),get_balance(),transfer_hbars(), andmain()for improved readability, maintainability, and error handling. - Unified balance and transfer logging format — both now consistently display values in hbars for clarity.
- Add type hints to
setup_client()andcreate_new_account()functions inexamples/account_create.py(#418) - Added explicit read and write permissions to test.yml
- Type hinting for
Topicrelated transactions.
- Remove deprecated camelCase alias support and
_DeprecatedAliasesMixin; SDK now only exposes snake_case attributes forNftId,TokenInfo, andTransactionReceipt. (Issue #428)
- 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)
- 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.mdto clarify commit signing requirements, including DCO, GPG, and branch-specific guidelines (#459)
- Rearranged running_examples.md to be alphabetical
- Refactor token_associate.py for better structure, add association verification query (#367)
- Refactored
examples/account_create.pyto improve modularity and readability (#363) - Replace Hendrik Ebbers with Sophie Bulloch in the MAINTAINERS.md file
- Improved
CONTRIBUTING.mdby explaining the /docs folder structure and fixing broken hyperlinks.(#431) - Converted class in
token_nft_info.pyto dataclass for simplicity.
- 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
TokenInfoclass: -_copy_msg_to_proto-_copy_key_if_present-_parse_custom_feesKept 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
- 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
devandlintdependency groups as default inpyproject.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.mdwith 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
- 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
/documentationto/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.mdwith clarification on usinggit 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}"
- 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 the old
/documentationfolder. - Rebase command in README_upstream changed to just -S
- generate_proto.sh
- pkg_resources dependency in generate_proto.py
- 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
- 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.
- 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
- 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
We have several camelCase uses that will be deprecated → snake_case Original aliases will continue to function, with a warning, until the following release.
- 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
- tokenId → token_id
- serialNumber → serial_number
- tokenId → token_id
- topicId → topic_id
- accountId → account_id
- fileId → file_id
- 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).
-
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
-
TransactionRecordQuery Class
-
AccountInfoQuery Class
- 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.mdtolinting.md- Renamed and movedREADME_types.mdtotypes.md- Renamed and movedCommit_Signing.mdtosigning.md - Created
sdk_usersdocs folder and renamedexamples/README.mdtorunning_examples.md - Updated references and links accordingly
- fixed INVALID_NODE_ACCOUNT during node switching
- fixed ed25519 key ambiguity (PrivateKey.from_string -> PrivateKey.from_string_ed25519 in examples)
- Redundant test.py file
- NFTId Class
- use SEC1 ECPrivateKey instead of PKCS#8
- PR checks
- misnamed parameter (ECDSASecp256k1=pub_bytes -> ECDSA_secp256k1=pub_bytes)
- .DS_store file
- RELEASE.md
- CONTRIBUTING.md
- 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
- pdm.lock & uv.lock file
- Initial release of the Python SDK core functionality.
- Basic documentation on how to install and use the SDK.
- Example scripts illustrating setup and usage.
- N/A
- N/A
- N/A