|
| 1 | +# Contribute to the Python client library |
| 2 | + |
| 3 | +This document describes how to contribute to the Python client library. |
| 4 | + |
| 5 | +We encourage everyone with knowledge of IOTA technology to contribute. |
| 6 | + |
| 7 | +Thanks! :heart: |
| 8 | + |
| 9 | +<details> |
| 10 | +<summary>Do you have a question :question:</summary> |
| 11 | +<br> |
| 12 | + |
| 13 | +If you have a general or technical question, you can use one of the following resources instead of submitting an issue: |
| 14 | + |
| 15 | +- [**Developer documentation:**](https://docs.iota.org/) For official information about developing with IOTA technology |
| 16 | +- [**Discord:**](https://discord.iota.org/) For real-time chats with the developers and community members |
| 17 | +- [**IOTA cafe:**](https://iota.cafe/) For technical discussions with the Research and Development Department at the IOTA Foundation |
| 18 | +- [**StackExchange:**](https://iota.stackexchange.com/) For technical and troubleshooting questions |
| 19 | +</details> |
| 20 | + |
| 21 | +<br> |
| 22 | + |
| 23 | +<details> |
| 24 | +<summary>Ways to contribute :mag:</summary> |
| 25 | +<br> |
| 26 | + |
| 27 | +To contribute to the Python client library on GitHub, you can: |
| 28 | + |
| 29 | +- Report a bug |
| 30 | +- Suggest a new feature |
| 31 | +- Build a new feature |
| 32 | +- Contribute to the documentation |
| 33 | +</details> |
| 34 | + |
| 35 | +<br> |
| 36 | + |
| 37 | +<details> |
| 38 | +<summary>Report a bug :bug:</summary> |
| 39 | +<br> |
| 40 | + |
| 41 | +This section guides you through reporting a bug. Following these guidelines helps maintainers and the community understand the bug, reproduce the behavior, and find related bugs. |
| 42 | + |
| 43 | +### Before reporting a bug |
| 44 | + |
| 45 | +Please check the following list: |
| 46 | + |
| 47 | +- **Do not open a GitHub issue for [security vulnerabilities](SECURITY.MD)**, instead, please contact us at [security@iota.org](mailto:security@iota.org). |
| 48 | + |
| 49 | +- **Ensure the bug was not already reported** by searching on GitHub under [**Issues**](https://github.com/iotaledger/iota.py/issues). If the bug has already been reported **and the issue is still open**, add a comment to the existing issue instead of opening a new one. You can also find related issues by their [label](https://github.com/iotaledger/iota.py/labels?page=1&sort=name-asc). |
| 50 | + |
| 51 | +**Note:** If you find a **Closed** issue that seems similar to what you're experiencing, open a new issue and include a link to the original issue in the body of your new one. |
| 52 | + |
| 53 | +### Submitting A Bug Report |
| 54 | + |
| 55 | +To report a bug, [open a new issue](https://github.com/iotaledger/iota.py/issues/new), and be sure to include as many details as possible, using the template. |
| 56 | + |
| 57 | +**Note:** Minor changes such as fixing a typo can but do not need an open issue. |
| 58 | + |
| 59 | +If you also want to fix the bug, submit a [pull request](#pull-requests) and reference the issue. |
| 60 | +</details> |
| 61 | + |
| 62 | +<br> |
| 63 | + |
| 64 | +<details> |
| 65 | +<summary>Suggest a new feature :bulb:</summary> |
| 66 | +<br> |
| 67 | + |
| 68 | +This section guides you through suggesting a new feature. Following these guidelines helps maintainers and the community collaborate to find the best possible way forward with your suggestion. |
| 69 | + |
| 70 | +### Before suggesting a new feature |
| 71 | + |
| 72 | +**Ensure the feature has not already been suggested** by searching on GitHub under [**Issues**](https://github.com/iotaledger/iota.py/issues). |
| 73 | + |
| 74 | +### Suggesting a new feature |
| 75 | + |
| 76 | +To suggest a new feature, talk to the IOTA community and IOTA Foundation members on [Discord](https://discord.iota.org/). |
| 77 | + |
| 78 | +If the team members approve your feature, they will create an issue for it. |
| 79 | +</details> |
| 80 | + |
| 81 | +<br> |
| 82 | + |
| 83 | +<details> |
| 84 | +<summary>Build a new feature :hammer:</summary> |
| 85 | +<br> |
| 86 | + |
| 87 | +This section guides you through building a new feature. Following these guidelines helps give your feature the best chance of being approved and merged. |
| 88 | + |
| 89 | +### Before building a new feature |
| 90 | + |
| 91 | +Make sure to discuss the feature with the developers on [Discord](https://discord.iota.org/). |
| 92 | + |
| 93 | +Otherwise, your feature may not be approved at all. |
| 94 | + |
| 95 | +### Building a new feature |
| 96 | + |
| 97 | +To build a new feature, check out a new branch based on the `develop` branch, and be sure to consider the following: |
| 98 | + |
| 99 | +- If the feature will become part of PyOTA's public interface (i.e., it includes methods that will be invoked by other developers in their applications), make sure to document it, using [Sphinx-style](https://www.sphinx-doc.org/en/master/) code comments. |
| 100 | + |
| 101 | +</details> |
| 102 | + |
| 103 | +<br> |
| 104 | + |
| 105 | +<details> |
| 106 | +<summary>Contribute to the documentation :black_nib:</summary> |
| 107 | +<br> |
| 108 | + |
| 109 | +The Python client library documentation is hosted on https://docs.iota.org, which is built from content in the [documentation](https://github.com/iotaledger/documentation) repository. |
| 110 | + |
| 111 | +Please see the [guidelines](https://github.com/iotaledger/documentation/CONTRIBUTING.md) on the documentation repository for information on how to contribute to the documentation. |
| 112 | +</details> |
| 113 | + |
| 114 | +<br> |
| 115 | + |
| 116 | +<details> |
| 117 | +<summary>Pull requests :mega:</summary> |
| 118 | +<br> |
| 119 | + |
| 120 | +This section guides you through submitting a pull request (PR). Following these guidelines helps give your PR the best chance of being approved and merged. |
| 121 | + |
| 122 | +### Before submitting a pull request |
| 123 | + |
| 124 | +When creating a pull request, please follow these steps to have your contribution considered by the maintainers: |
| 125 | + |
| 126 | +- A pull request should have only one concern (for example one feature or one bug). If a PR addresses more than one concern, it should be split into two or more PRs. |
| 127 | + |
| 128 | +- A pull request can be merged only if it references an open issue. |
| 129 | + |
| 130 | + **Note:** Minor changes such as fixing a typo can but do not need an open issue. |
| 131 | + |
| 132 | +- All code should include comprehensive unit tests. |
| 133 | + |
| 134 | +### Submitting a pull request |
| 135 | + |
| 136 | +The following is a typical workflow for submitting a new pull request: |
| 137 | + |
| 138 | +1. Fork this repository |
| 139 | +2. Create a new branch based on your fork |
| 140 | +3. Commit changes and push them to your fork |
| 141 | +4. Create a pull request against the `develop` branch |
| 142 | + |
| 143 | +If all [status checks](https://help.github.com/articles/about-status-checks/) pass, and the maintainer approves the PR, it will be merged. |
| 144 | + |
| 145 | +**Note:** Reviewers may request changes before your pull request can be approved and merged. |
| 146 | +</details> |
| 147 | + |
| 148 | +<br> |
| 149 | + |
| 150 | +<details> |
| 151 | +<summary>Code of Conduct :clipboard:</summary> |
| 152 | +<br> |
| 153 | + |
| 154 | +This project and everyone participating in it are governed by the [IOTA Code of Conduct](CODE_OF_CONDUCT.md). |
0 commit comments