Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
aaf5874
feat: add issue reminder bot
prajeeta15 Dec 10, 2025
a21570e
Merge branch 'main' into reminder
prajeeta15 Dec 10, 2025
6e2add8
feat: add issue reminder bot
prajeeta15 Dec 12, 2025
b89bcdd
Merge branch 'main' into reminder
prajeeta15 Dec 12, 2025
a3b537e
Merge branch 'main' into reminder
prajeeta15 Dec 13, 2025
72a07df
test: accelerate ReminderBot for fork testing
prajeeta15 Dec 13, 2025
00aed66
Merge pull request #1 from prajeeta15/reminder-test
prajeeta15 Dec 13, 2025
e3e2ca2
test
prajeeta15 Dec 13, 2025
6d1cd34
Merge pull request #3 from prajeeta15/reminder-test
prajeeta15 Dec 13, 2025
0f0a777
Change pull request permission from read to write
prajeeta15 Dec 13, 2025
cd9e1cf
Update bot-issue-reminder-no-pr.yml
prajeeta15 Dec 13, 2025
a41082e
Update bot-issue-reminder-no-pr.yml
prajeeta15 Dec 13, 2025
1a28de6
docs: add fix: inactivity bot pagination and assignment date detectio…
Akshat8510 Dec 13, 2025
c0ee5ca
chore: split monolithic example into modular helpers and main entrypo…
Rowrow620 Dec 13, 2025
aa1de28
chore: bot filenames changed in to be consistent. Changelog entry ad…
Mickey08JK Dec 13, 2025
eb15c1b
refactor(example): sync transaction_to_bytes with main (#1045)
dantesb777 Dec 14, 2025
628d000
docs: update good first issue template with welcome + criteria (#1057)
prishajaiswal75 Dec 14, 2025
94a527e
chore: rename workflow files to use pr-check prefix (#1091)
prishajaiswal75 Dec 14, 2025
19fa310
chore: clean up token airdrop example for pylint compliance (#1094)
prishajaiswal75 Dec 14, 2025
8c6a9a9
feat: auto-draft PRs when reviewers request changes (#1095)
Mounil2005 Dec 15, 2025
1572f72
feat: create 04_good_first_issue_candidate.yml (#1086)
AntonioCeppellini Dec 15, 2025
39f27ad
fix: Update unit test for test_query.py (#1047)
manishdait Dec 15, 2025
0f4bc48
chore(deps): bump actions/github-script from 7.0.1 to 8.0.0 (#1106)
dependabot[bot] Dec 16, 2025
0b12797
feat: Add workflow to notify team about P0 issues (#1104)
MonaaEid Dec 16, 2025
66c08d1
fix: update team notification script and workflow for P0 issues (#1113)
MonaaEid Dec 16, 2025
3e10c6d
chore: move account allowance example to correct folder (#1007)
tWiLighT-xY91 Dec 16, 2025
727ecb6
fix: correct token association check (#1044)
AubreyDDD Dec 16, 2025
92f97ff
chore: rename all test files for consistency (#1055) (#1093)
kplnosmn94-droid Dec 17, 2025
2558679
chore: formatted examples/query (#1118)
andrerovee Dec 17, 2025
9c52369
ci: enable codecov (#1060)
exploreriii Dec 17, 2025
d89c01f
chore: format transaction examples with black (#1126)
rahul-797 Dec 17, 2025
18e6666
chore: clean up token_airdrop_claim_signature_required example for py…
kplnosmn94-droid Dec 17, 2025
ad911a9
feat: add tests for key format (#1092)
aceppaluni Dec 17, 2025
0f53e9d
docs: add GFI-Guidelines Doc File (#1128)
aceppaluni Dec 17, 2025
a54c914
docs: Add GFI-Management and GFI-Frequency docs files (#1132)
aceppaluni Dec 17, 2025
ac29ef7
chore: rename file test_token_fee_schedule_update_transaction_e2e.py …
Bhavanahegde-23 Dec 18, 2025
55c27b1
feat(account): add __str__ and __repr__ to AccountInfo (#1129)
Akshat8510 Dec 18, 2025
ebec9a2
feat: Add workflow to notify team about Good first issues (#1123)
kplnosmn94-droid Dec 18, 2025
68c6775
chore: format token examples with black (#1127)
thzthix Dec 18, 2025
5739053
chore(examples): move account_allowance_delete_transaction_hbar.py to…
TianyangRen Dec 18, 2025
2dac996
feat: create new .github/ISSUE_TEMPLATE/05_intermediate_issue.yml (#1…
AntonioCeppellini Dec 18, 2025
4f1f893
chore(deps): bump astral-sh/setup-uv from 7.1.1 to 7.1.6 (#1135)
dependabot[bot] Dec 18, 2025
da8488c
docs: gfi guidelines (#1133)
exploreriii Dec 18, 2025
2187e8d
feat: Add support for include_children in TransactionGetReceiptQuery …
AntonioCeppellini Dec 18, 2025
ab92a11
feat(account): add __str__ and __repr__ to AccountBalance (#1122)
mukundkumarjha Dec 18, 2025
5c7e74c
feat: added github workflow that checks test file names (#1054) (#1096)
HusseinYasser Dec 18, 2025
f4ad3b2
fix: pylint cleanup for token_airdrop_transaction_cancel.py (#1146)
tiya-15 Dec 18, 2025
7deae3c
chore: rename/response code name (#1151)
ChaitanyaChute Dec 18, 2025
71558ec
fix: TLS Hostname Mismatch & Certificate Verification Failure for Nod…
manishdait Dec 18, 2025
fc4f13c
feat: Transform custom_fee_fixed example to end-to-end test (#1148)
Adityarya11 Dec 19, 2025
64371be
feat: Create advanced issue template for contributors (#1152)
MonaaEid Dec 19, 2025
c2d3979
fix: support public for batch_key in Transaction (#1051)
AubreyDDD Dec 19, 2025
d9624fa
ci: reduce office-hours reminder spam by posting only on most recent …
TianyangRen Dec 19, 2025
5dd213f
chore: move helpful references to additional context (#1162)
andrerovee Dec 19, 2025
d80089c
feat: Refactor custom_royalty_fee.py example for end-to-end execution…
Adityarya11 Dec 19, 2025
87df1e0
fix: Workflow permissions for test file naming checks and codecov (#1…
manishdait Dec 20, 2025
6d84655
feat: added new tests to topic_info_query_test.py (#1163)
AntonioCeppellini Dec 20, 2025
1361429
fix: hbar transfer
prajeeta15 Dec 4, 2025
940643f
fix: hbar support
prajeeta15 Dec 4, 2025
18861a8
fix: hbar support errors
prajeeta15 Dec 5, 2025
2d9f6f5
feat: hbar support
prajeeta15 Dec 9, 2025
816def4
fix: Restore CHANGELOG and optimize script
prajeeta15 Dec 17, 2025
522b1eb
fix: hbar errors
prajeeta15 Dec 23, 2025
5dfc4b5
chore: remove accidental build artifact
prajeeta15 Dec 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[run]
source = src

omit =
*/hiero_sdk_python/hapi/*
*/__pycache__/*
*/cache/*
*/.cache/*
42 changes: 42 additions & 0 deletions .github/ISSUE_TEMPLATE/01_good_first_issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ title: "[Good First Issue]: "
labels: ["Good First Issue"]
assignees: []
body:
- type: markdown
attributes:
value: |
---
## **Thanks for contributing!** 😊

We truly appreciate your time and effort. If this is your first open-source contribution, welcome!
This template is designed to help you create a Good First Issue (GFI) : a small, well-scoped task that helps new contributors learn the codebase and workflow.
---
- type: textarea
id: intro
attributes:
Expand All @@ -16,6 +25,39 @@ body:
validations:
required: false

- type: markdown
attributes:
value: |
> [!IMPORTANT]
> ### 📋 Good First Issue (GFI) Guidelines
>
> **What we generally consider good first issues:**
>
> - **Narrow changes or additions to `src` functionality** that use generic Python skills which can be tested by adding to an existing test. For example:
> - `__str__` functions
> - `__repr__` functions
> - Typing fixes, like return type hints or basic type conflicts
> - **Refactors of existing examples:**
> - Separating existing examples into separate functions
> - Or, conversely, taking a split example into a monolithic function
> - **Improvements to documentation** in examples and source code:
> - Docstrings: module docstrings, function docstrings
> - Inline comments
> - Addition or changes to print statements to improve clarity
> - **Functional improvements to examples:**
> - Additional steps that would help to illustrate functionality
> - **Specific additions to existing unit or integration tests**
>
> **What we generally do NOT consider good first issues:**
>
> - Creation of new examples
> - Creation of new unit and integration tests
> - Changes to DLT functionality, like `to_proto` and `from_proto`
> - Anything requiring knowledge of multiple areas of the codebase
>
> 📖 *For a more detailed explanation, refer to:
> [`docs/maintainers/good_first_issues_guidelines.md`](docs/maintainers/good_first_issues_guidelines.md).*

- type: textarea
id: issue
attributes:
Expand Down
282 changes: 282 additions & 0 deletions .github/ISSUE_TEMPLATE/04_good_first_issue_candidate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
name: Good First Issue Candidate Template
description: Propose a potential Good First Issue (candidate)
title: "[Good First Issue]:"
labels: ["Good First Issue Candidate"]
assignees: []
body:
- type: textarea
id: intro-gfi-candidate
attributes:
label: ⚠️ Good First Issue — Candidate
value: |
> This issue is not yet a confirmed Good First Issue.
> It is being evaluated for suitability and may require
> clarification or refinement before it is ready to be picked up.
>
> Please wait for maintainer confirmation before starting work.
>
> Maintainers and reviewers can read more about Good First Issues:
> docs/maintainers/good_first_issue_guidelines.md

validations:
required: false

- type: textarea
id: intro
attributes:
label: 🆕🐥 First Timers Only
description: Who is this issue for?
value: |
This issue is reserved for people who have never contributed or have made minimal contributions to [Hiero Python SDK](https://hiero.org).
We know that creating a pull request (PR) is a major barrier for new contributors.
The goal of this issue and all other issues in [**find a good first issue**](https://github.com/issues?q=is%3Aopen+is%3Aissue+org%3Ahiero-ledger+archived%3Afalse+label%3A%22good+first+issue%22+) is to help you make your first contribution to the Hiero Python SDK.
validations:
required: false

- type: markdown
attributes:
value: |
> [!IMPORTANT]
> ### 📋 Good First Issue (GFI) Guidelines
>
> **What we generally consider good first issues:**
>
> - **Narrow changes or additions to `src` functionality** that use generic Python skills which can be tested by adding to an existing test. For example:
> - `__str__` functions
> - `__repr__` functions
> - Typing fixes, like return type hints or basic type conflicts
> - **Refactors of existing examples:**
> - Separating existing examples into separate functions
> - Or, conversely, taking a split example into a monolithic function
> - **Improvements to documentation** in examples and source code:
> - Docstrings: module docstrings, function docstrings
> - Inline comments
> - Addition or changes to print statements to improve clarity
> - **Functional improvements to examples:**
> - Additional steps that would help to illustrate functionality
> - **Specific additions to existing unit or integration tests**
>
> **What we generally do NOT consider good first issues:**
>
> - Creation of new examples
> - Creation of new unit and integration tests
> - Changes to DLT functionality, like `to_proto` and `from_proto`
> - Anything requiring knowledge of multiple areas of the codebase
>
> 📖 *For a more detailed explanation, refer to:
> [`docs/maintainers/good_first_issue_candidate_guidelines.md`](docs/maintainers/good_first_issue_candidate_guidelines.md).*

- type: textarea
id: issue
attributes:
label: 👾 Description of the issue
description: |
DESCRIBE THE ISSUE IN A WAY THAT IS UNDERSTANDABLE TO NEW CONTRIBUTORS.
YOU MUST NOT ASSUME THAT SUCH CONTRIBUTORS HAVE ANY KNOWLEDGE ABOUT THE CODEBASE OR HIERO.
IT IS HELPFUL TO ADD LINKS TO THE RELEVANT DOCUMENTATION AND/OR CODE SECTIONS.
BELOW IS AN EXAMPLE.
value: |
Edit here. Example provided below.

validations:
required: true

- type: markdown
attributes:
value: |
<!-- Example for problem (hidden in submission) -->
## 👾 Description of the issue - Example

The example for Token Associate Transaction located at examples/tokens/token_associate_transaction.py can be improved. It correctly illustrates how to associate a token, however, it does so all from one function main()

As everything is grouped together in main(), it is difficult for a user to understand all the individual steps required to associate a token.

For example:
```python

def run_demo():
"""Monolithic token association demo."""
print(f"🚀 Connecting to Hedera {network_name} network!")
client = Client(Network(network_name))
operator_id = AccountId.from_string(os.getenv("OPERATOR_ID", ""))
operator_key = PrivateKey.from_string(os.getenv("OPERATOR_KEY", ""))
client.set_operator(operator_id, operator_key)
print(f"✅ Client ready (operator {operator_id})")

test_key = PrivateKey.generate_ed25519()
receipt = (
AccountCreateTransaction()
.set_key(test_key.public_key())
.set_initial_balance(Hbar(1))
.set_account_memo("Test account for token association demo")
.freeze_with(client)
.sign(operator_key)
.execute(client)
)
if receipt.status != ResponseCode.SUCCESS:
raise Exception(receipt.status)
account_id = receipt.account_id
print(f"✅ Created test account {account_id}")

# Create tokens
tokens = []
for i in range(3):
try:
receipt = (
TokenCreateTransaction()
.set_token_name(f"DemoToken{i}")
.set_token_symbol(f"DTK{i}")
.set_decimals(2)
.set_initial_supply(100_000)
.set_treasury_account_id(operator_id)
.freeze_with(client)
.sign(operator_key)
.execute(client)
)
if receipt.status != ResponseCode.SUCCESS:
raise Exception(receipt.status)
token_id = receipt.token_id
tokens.append(token_id)
print(f"✅ Created token {token_id}")
except Exception as e:
print(f"❌ Token creation failed: {e}")
sys.exit(1)

# Associate first token
try:
TokenAssociateTransaction().set_account_id(account_id).add_token_id(tokens[0]).freeze_with(client).sign(test_key).execute(client)
print(f"✅ Token {tokens[0]} associated with account {account_id}")
except Exception as e:
print(f"❌ Token association failed: {e}")
sys.exit(1)
```

- type: textarea
id: solution
attributes:
label: 💡 Proposed Solution
description: |
AT THIS SECTION YOU NEED TO DESCRIBE THE STEPS NEEDED TO SOLVE THE ISSUE.
PLEASE BREAK DOWN THE STEPS AS MUCH AS POSSIBLE AND MAKE SURE THAT THEY
ARE EASY TO FOLLOW. IF POSSIBLE, ADD LINKS TO THE RELEVANT
DOCUMENTATION AND/OR CODE SECTIONS.
value: |
Edit here. Example provided below.

validations:
required: true

- type: markdown
attributes:
value: |
<!-- Example for the solution (hidden in submission) -->
## 💡 Solution - Example

For the TokenAssociateTransaction example, the solution is to split the monolithic main() function for illustrating TokenAssociateTransaction into separate smaller functions which are called from main().
Such as:
- Setting up the client
- Creating an account
- Creating a token
- Associating the account to the token

- type: textarea
id: implementation
attributes:
label: 👩‍💻 Implementation Steps
description: |
AT THIS SECTION YOU NEED TO DESCRIBE THE TECHNICAL STEPS NEEDED TO SOLVE THE ISSUE.
PLEASE BREAK DOWN THE STEPS AS MUCH AS POSSIBLE AND MAKE SURE THAT THEY ARE EASY TO FOLLOW.
IF POSSIBLE, ADD LINKS TO THE RELEVANT DOCUMENTATION AND/OR CODE.
value: |
Edit here. Example provided below.

validations:
required: true

- type: markdown
attributes:
value: |
<!-- Example implementation (hidden in submission) -->
### 👩‍💻 Implementation - Example

To break down the monolithic main function, you need to:
- [ ] Extract the Key Steps (set up a client, create a test account, create a token, associate the token)
- [ ] Copy and paste the functionality for each key step into its own function
- [ ] Pass to each function the variables you need to run it
- [ ] Call each function in main()
- [ ] Ensure you return the values you'll need to pass on to the next step in main
- [ ] Ensure the example still runs and has the same output!

For example:
```python

def setup_client():
"""Initialize and set up the client with operator account."""

def create_test_account(client, operator_key):
"""Create a new test account for demonstration."""

def create_fungible_token(client, operator_id, operator_key):
"""Create a fungible token for association with test account."""

def associate_token_with_account(client, token_id, account_id, account_key):
"""Associate the token with the test account."""

def main():
client, operator_id, operator_key = setup_client()
account_id, account_private_key = create_test_account(client, operator_key)
token_id = create_fungible_token(client, operator_id, operator_key)
associate_token_with_account(client, token_id, account_id, account_private_key)
```

- type: textarea
id: acceptance-criteria
attributes:
label: ✅ Acceptance Criteria
description: |
EDIT OR EXPAND THE CHECKLIST ON WHAT IS REQUIRED TO BE ABLE TO MERGE A PULL REQUEST FOR THIS ISSUE
value: |
To be able to merge a pull request for this issue, we need:
- [ ] **Changelog Entry:** Correct changelog entry (please link to the documentation - [see guide](https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/changelog_entry.md))
- [ ] **Signed commits:** commits must be DCO and GPG key signed ([see guide](https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/signing.md))
- [ ] **All Tests Pass:** our workflow checks like unit and integration tests must pass
- [ ] **Issue is Solved:** The implementation fully addresses the issue requirements as described above
- [ ] **No Further Changes are Made:** Code review feedback has been addressed and no further changes are requested
validations:
required: true

- type: textarea
id: contribution_steps
attributes:
label: 📋 Step-by-Step Contribution Guide
description: Provide a contribution workflow suitable for new contributors
value: |
If you have never contributed to an open source project at GitHub, the following step-by-step guide will introduce you to the workflow.

- [ ] **Claim this issue:** Comment below that you are interested in working on the issue. Without assignment, your pull requests might be closed and the issue given to another developer.
- [ ] **Wait for assignment:** A community member with the given rights will add you as an assignee of the issue
- [ ] **Fork, Branch and Work on the issue:** Create a copy of the repository, create a branch for the issue and solve the problem. For instructions, please read our [Contributing guide](https://github.com/hiero-ledger/hiero-sdk-python/blob/main/CONTRIBUTING.md) file. Further help can be found at [Set-up Training](https://github.com/hiero-ledger/hiero-sdk-python/tree/main/docs/sdk_developers/training/setup) and [Workflow Training](https://github.com/hiero-ledger/hiero-sdk-python/tree/main/docs/sdk_developers/training/workflow).
- [ ] **DCO and GPG key sign each commit :** each commit must be -s and -S signed. An explanation on how to do this is at [Signing Guide](https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/signing.md)
- [ ] **Add a Changelog Entry :** your pull request will require a changelog. Read [Changelog Entry Guide](https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/changelog_entry.md) to learn how.
- [ ] **Push and Create a Pull Request :** Once your issue is resolved, and your commits are signed, and you have a changelog entry, push your changes and create a pull request. Detailed instructions can be found at [Submit PR Training](https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/training/workflow/11_submit_pull_request.md), part of [Workflow Training](https://github.com/hiero-ledger/hiero-sdk-python/tree/main/docs/sdk_developers/training/workflow).
- [ ] **You did it 🎉:** A maintainer or committer will review your pull request and provide feedback. If approved, we will merge the fix in the main branch. Thanks for being part of the Hiero community as an open-source contributor ❤️

***IMPORTANT*** Your pull request CANNOT BE MERGED until you add a changelog entry AND sign your commits each with `git commit -S -s -m "chore: your commit message"` with a GPG key setup.
validations:
required: true

- type: textarea
id: information
attributes:
label: 🤔 Additional Information
description: Provide any extra resources or context for contributors to solve this good first issue
value: |
For more help, we have extensive documentation attributes:
- [SDK Developer Docs](https://github.com/hiero-ledger/hiero-sdk-python/tree/main/docs/sdk_developers)
- [SDK Developer Training](https://github.com/hiero-ledger/hiero-sdk-python/tree/main/docs/sdk_developers/training)

Additionally, we invite you to join our community on our [Discord](https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/discord.md) server.

We also invite you to attend each Wednesday, 2pm UTC our [Python SDK Office Hour and Community Calls](https://zoom-lfx.platform.linuxfoundation.org/meetings/hiero?view=week). The Python SDK Office hour is for hands-on-help and the Community Call for general community discussion.

You can also ask for help in a comment below!
Loading
Loading