Skip to content
This repository has been archived by the owner on Jan 13, 2023. It is now read-only.

PyOTA v3.0.0-beta1 #322

Merged
merged 85 commits into from
Mar 20, 2020
Merged
Changes from 10 commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
1eef60b
Merge pull request #296 from iotaledger/master
lzpap Jan 27, 2020
dd190e1
add tests for `iter_used_addresses`
lzpap Jan 29, 2020
feef769
fix typos in `util_test.py`
lzpap Jan 30, 2020
870fb9c
Fixes #263 Rename `testnet` to `devnet`
lzpap Jan 29, 2020
363a0bf
Merge pull request #299 from lzpap/utils_test
lzpap Jan 30, 2020
46cfd52
Merge pull request #298 from lzpap/rename_testnet
lzpap Jan 30, 2020
3857f05
Replace 'requests' with 'httpx' for networking
lzpap Feb 5, 2020
2186fde
Rewrite adapter tests for async networking
lzpap Feb 6, 2020
7ab91b3
Make `RoutingWrapper` work with async
lzpap Feb 6, 2020
61f8f96
Refactor API classes for async
lzpap Feb 6, 2020
dabcd3e
Make adapter and api tests async
lzpap Feb 7, 2020
9347e94
Make `BroadcastAndStoreCommand` async
lzpap Feb 7, 2020
ee2361b
Make `bundle` commands async
lzpap Feb 7, 2020
e5e339e
Make `FindTransactionObjectsCommand` async
lzpap Feb 7, 2020
703694a
Make `GetAccountDataCommand` async
lzpap Feb 7, 2020
6f33904
Make `GetInputsCommand` async
lzpap Feb 7, 2020
59fe3e9
Make `GetLatestInclusionCommand` async
lzpap Feb 10, 2020
61e4911
Make `GetNewAddressesCommand` async
lzpap Feb 10, 2020
1793754
Make `GetTransactionObjectsCommand` async
lzpap Feb 10, 2020
93ef6ff
Make `GetTransfersCommand` async
lzpap Feb 10, 2020
8640b2f
Remove `Helpers` class from api
lzpap Feb 10, 2020
d696b96
Make `IsPromotableCommand` async
lzpap Feb 10, 2020
c0bbcad
Make `IsReattachableCommand` async
lzpap Feb 10, 2020
e900067
Make `PrepareTransferCommand` async
lzpap Feb 10, 2020
049c0e6
Make `PromoteTransactionCommand` async
lzpap Feb 10, 2020
f238471
Make `ReplayBundleCommand` async
lzpap Feb 10, 2020
6dd62fc
Make `SendTransferCommand` async
lzpap Feb 10, 2020
40f5a30
Make `SendTrytesCommand` async
lzpap Feb 10, 2020
cfcfb2d
Update core command tests for async
lzpap Feb 11, 2020
271cfcf
Update Multisig API to handle async
lzpap Feb 11, 2020
5a71f8c
Remove support for Python 2 and 3.5
lzpap Feb 11, 2020
920fb67
Install [test-runner] in Travis CI
lzpap Feb 11, 2020
455940a
fix bug in Tutorial 7
lzpap Feb 12, 2020
1423951
Merge pull request #303 from lzpap/tutorial7_bug
lzpap Feb 12, 2020
321fa47
Use py3-style super() calls in api classes
lzpap Feb 12, 2020
e91a59f
Reorder deps and imports in alphabetical order
lzpap Feb 14, 2020
ee7faa5
Update docs: no more PY2 and PY3.5 support
lzpap Feb 14, 2020
2c59955
Separate sync and async api into two src files
lzpap Feb 17, 2020
0207cbc
Remove ``requests`` dependency
lzpap Feb 17, 2020
ce55c6b
code formatting, type hints
lzpap Feb 17, 2020
a2630fd
Add connection pooling to HttpAdapter
lzpap Feb 18, 2020
d7d7285
Merge pull request #301 from lzpap/async
lzpap Feb 18, 2020
e315335
docs: update API docs with async
lzpap Feb 18, 2020
1147435
docs: Update multisigs, add info on async
lzpap Feb 19, 2020
c7a95e2
Merge pull request #304 from lzpap/async_docs
lzpap Feb 20, 2020
1aacb70
Configure sphinx to render coroutines in docs
lzpap Feb 20, 2020
35f0a1f
Merge pull request #305 from lzpap/sphinx_async
lzpap Feb 20, 2020
e9795a9
Install requirements on RTD
lzpap Feb 20, 2020
d732e90
Merge pull request #306 from lzpap/rtd_reqs
lzpap Feb 20, 2020
11bf6bb
Update sphinx on RTD and locally
lzpap Feb 21, 2020
edbea7d
Remove sphinxcontrib.asyncio from docs build
lzpap Feb 21, 2020
e72ec3d
Merge pull request #309 from lzpap/docs_builder_updates
lzpap Feb 21, 2020
c04ea13
Add src file for Tutorial 8
lzpap Feb 24, 2020
dd88a79
docs: add Tutorial 8: Async Send and Monitor
lzpap Feb 25, 2020
955d94b
Minor fixes after PR review
lzpap Feb 26, 2020
29cf906
Merge pull request #312 from lzpap/async_tutorial
lzpap Feb 26, 2020
3a3904f
Fix error message in PromoteTransactionCommand
lzpap Feb 26, 2020
daacbd6
Fix PromoteTransactionCommandTestCase
lzpap Feb 26, 2020
0f15772
Merge pull request #313 from lzpap/promote_fix
lzpap Feb 27, 2020
b80d360
Add tests for get_bundles_from_transactions_hashes util method
lzpap Feb 26, 2020
202c811
Merge pull request #314 from lzpap/get_bundle_from_transaction_hashes…
lzpap Feb 28, 2020
45df9fb
docs: append file name to auto generated section label
lzpap Mar 3, 2020
ef31646
Rename transaction's method
lzpap Mar 3, 2020
9ea1f16
docs: Add section `Creating Transfers`
lzpap Mar 3, 2020
676f913
Apply suggestions from code review
lzpap Mar 5, 2020
06d5a94
docs: Improvements on `Creating Transfers`
lzpap Mar 6, 2020
25d3914
Merge pull request #316 from lzpap/docs_transfers
lzpap Mar 6, 2020
10f3f41
Remove PY2 compatibility code
lzpap Mar 10, 2020
d5450d0
Remove 'six' from package deps
lzpap Mar 13, 2020
ac153bc
Merge pull request #317 from lzpap/py2_cleanup
lzpap Mar 13, 2020
6916516
Add conttributing documentation
Mar 16, 2020
459e684
Apply suggestions from code review
JakeSCahill Mar 17, 2020
5558c32
Update .github/CONTRIBUTING.md
lzpap Mar 18, 2020
782873e
Update .github/pull_request_template.md
lzpap Mar 18, 2020
43f0911
Update .github/CONTRIBUTING.md
lzpap Mar 18, 2020
05d82de
Update .github/CONTRIBUTING.md
lzpap Mar 19, 2020
5b49373
Update .github/ISSUE_TEMPLATE/bug_report.md
lzpap Mar 19, 2020
29e01ff
Introduce Type Annotations
lzpap Mar 13, 2020
8010d66
Update .github/ISSUE_TEMPLATE/bug_report.md
lzpap Mar 19, 2020
40c0130
Update .github/pull_request_template.md
lzpap Mar 19, 2020
b1b068f
Merge pull request #319 from JakeSCahill/add/contributing
lzpap Mar 19, 2020
9c95b9c
Apply suggestions from code review
lzpap Mar 20, 2020
0e609ad
PR review changes
lzpap Mar 20, 2020
07f9a86
Merge pull request #321 from lzpap/type_annotations
lzpap Mar 20, 2020
078feb8
Bump version number to 3.0.0b1
lzpap Mar 20, 2020
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
58 changes: 58 additions & 0 deletions .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Community Code of Conduct

In the IOTA community, participants from all over the world come together to create. This is made possible by the support, hard work and enthusiasm of thousands of people, including those who create and use the IOTA technology.

This document offers some guidance to ensure IOTA participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.

This Code of Conduct is shared by all contributors and users who engage with the IOTA Foundation team and its community services.

## Overview

This Code of Conduct presents a summary of the shared values and “common sense” thinking in our community. The basic social ingredients that hold our project together include:

- Being considerate
- Being respectful
- Being collaborative
- Being pragmatic
- Supporting others in the community
- Getting support from others in the community

This Code of Conduct reflects the agreed standards of behavior for members of the IOTA community, in any social media platform, forum, mailing list, wiki, web site, discord channel, public meeting or private correspondence within the context of the IOTA Foundation team and the IOTA Tangle technology. The community acts according to the standards written down in this Code of Conduct and will defend these standards for the benefit of the community. Leaders of any group, such as moderators of social media groups, mailing lists, discord channels, forums, etc., will exercise the right to suspend access to any person who persistently breaks our shared Code of Conduct.

## Be considerate

Your actions and work will affect and be used by other people and you, in turn, will depend on the work and actions of others. Any decision you take will affect other community members, and we expect you to take those consequences into account when making decisions.

As a user, remember that community members work hard on their part of IOTA and take great pride in it.

## Be respectful

In order for the IOTA community to stay healthy, its members must feel comfortable and accepted. Treating one another with respect is absolutely necessary for this. In a disagreement, in the first instance, assume that people mean well.

We do not tolerate personal attacks, racism, sexism or any other form of discrimination. Disagreement is inevitable, from time to time, but respect for the views of others will go a long way to winning respect for your own view. Respecting other people, their work, their contributions and assuming well-meaning motivation will make community members feel comfortable and safe and will result in motivation and productivity.

We expect members of our community to be respectful when dealing with other contributors, users, and communities. Remember that IOTA is an international project and that you may be unaware of important aspects of other cultures.

## Be collaborative

Your feedback is important, as is its form. Poorly thought out comments can cause pain and the demotivation of other community members, but considerate discussion of problems can bring positive results. An encouraging word works wonders.

## Be pragmatic

The IOTA community is pragmatic and fair. We value tangible results over having the last word in a discussion. We defend our core values like freedom and respectful collaboration, but we don’t let arguments about minor issues get in the way of achieving more important results. We are open to suggestions and welcome solutions regardless of their origin. When in doubt support a solution which helps to get things done over one which has theoretical merits, but isn’t being worked on. Use the tools and methods which help to get the job done. Let decisions be taken by those who do the work.

## Support others in the community

The IOTA community is made strong by mutual respect, collaboration and pragmatic, responsible behavior. Sometimes there are situations where this has to be defended and other community members need help.

If you witness others being attacked, think first about how you can offer them personal support. If you feel that the situation is beyond your ability to help individually, go privately to the victim and ask if some form of official intervention is needed.

When problems do arise, consider respectfully reminding those involved of our shared Code of Conduct as a first action. Leaders are defined by their actions and can help set a good example by working to resolve issues in the spirit of this Code of Conduct before they escalate.

## Get support from others in the community

Disagreements, both political and technical, happen all the time. Our community is no exception to the rule. The goal is not to avoid disagreements or differing views but to resolve them constructively. You should turn to the community to seek advice and to resolve disagreements and where possible consult the team most directly involved.

Think deeply before turning a disagreement into a public dispute. If necessary, request mediation, and try to resolve differences in a less emotional medium. If you do feel that you or your work is being attacked, take your time to think things through before writing heated replies. Consider a 24-hour moratorium if emotional language is being used – a cooling-off period is sometimes all that is needed. If you really want to go a different way, then we encourage you to publish your ideas and your work, so that it can be tried and tested.

This work, "IOTA Community Guidelines", is a derivative of the [Community code of conduct by ownCloud](https://owncloud.org/community/code-of-conduct/), used under [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/). "IOTA Community Guidelines" is licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by IOTA Foundation.
154 changes: 154 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
# Contribute to the Python client library

This document describes how to contribute to the Python client library.

We encourage everyone with knowledge of IOTA technology to contribute.

Thanks! :heart:

<details>
<summary>Do you have a question :question:</summary>
<br>

If you have a general or technical question, you can use one of the following resources instead of submitting an issue:

- [**Developer documentation:**](https://docs.iota.org/) For official information about developing with IOTA technology
- [**Discord:**](https://discord.iota.org/) For real-time chats with the developers and community members
- [**IOTA cafe:**](https://iota.cafe/) For technical discussions with the Research and Development Department at the IOTA Foundation
- [**StackExchange:**](https://iota.stackexchange.com/) For technical and troubleshooting questions
</details>

<br>

<details>
<summary>Ways to contribute :mag:</summary>
<br>

To contribute to the Python client library on GitHub, you can:

- Report a bug
- Suggest a new feature
- Build a new feature
- Contribute to the documentation
</details>

<br>

<details>
<summary>Report a bug :bug:</summary>
<br>

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.

### Before reporting a bug

Please check the following list:

- **Do not open a GitHub issue for [security vulnerabilities](SECURITY.MD)**, instead, please contact us at [security@iota.org](mailto:security@iota.org).

- **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).

**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.

### Submitting A Bug Report

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.

**Note:** Minor changes such as fixing a typo can but do not need an open issue.

If you also want to fix the bug, submit a [pull request](#pull-requests) and reference the issue.
</details>

<br>

<details>
<summary>Suggest a new feature :bulb:</summary>
<br>

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.

### Before suggesting a new feature

**Ensure the feature has not already been suggested** by searching on GitHub under [**Issues**](https://github.com/iotaledger/iota.py/issues).

### Suggesting a new feature

To suggest a new feature, talk to the IOTA community and IOTA Foundation members on [Discord](https://discord.iota.org/).

If the team members approve your feature, they will create an issue for it.
</details>

<br>

<details>
<summary>Build a new feature :hammer:</summary>
<br>

This section guides you through building a new feature. Following these guidelines helps give your feature the best chance of being approved and merged.

### Before building a new feature

Make sure to discuss the feature with the developers on [Discord](https://discord.iota.org/).

Otherwise, your feature may not be approved at all.

### Building a new feature

To build a new feature, check out a new branch based on the `develop` branch, and be sure to consider the following:

- 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.

</details>

<br>

<details>
<summary>Contribute to the documentation :black_nib:</summary>
<br>

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.

Please see the [guidelines](https://github.com/iotaledger/documentation/CONTRIBUTING.md) on the documentation repository for information on how to contribute to the documentation.
</details>

<br>

<details>
<summary>Pull requests :mega:</summary>
<br>

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.

### Before submitting a pull request

When creating a pull request, please follow these steps to have your contribution considered by the maintainers:

- 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.

- A pull request can be merged only if it references an open issue.

**Note:** Minor changes such as fixing a typo can but do not need an open issue.

- All code should include comprehensive unit tests.

### Submitting a pull request

The following is a typical workflow for submitting a new pull request:

1. Fork this repository
2. Create a new branch based on your fork
3. Commit changes and push them to your fork
4. Create a pull request against the `develop` branch

If all [status checks](https://help.github.com/articles/about-status-checks/) pass, and the maintainer approves the PR, it will be merged.

**Note:** Reviewers may request changes before your pull request can be approved and merged.
</details>

<br>

<details>
<summary>Code of Conduct :clipboard:</summary>
<br>

This project and everyone participating in it are governed by the [IOTA Code of Conduct](CODE_OF_CONDUCT.md).
48 changes: 48 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: Report a bug in the Python client library
about: Report a bug
labels: bug
---

## Bug description

Briefly describe the bug.

## Version

Which version of the library are you running?

- PyOTA Version:
- Python Version:

## IOTA network

Which node are you connected to and which IOTA network is it in?

- Node URL:
- Network:

## Environment

What operating system are you using?

- Operating system:
## Steps To reproduce the bug

Explain how the maintainer can reproduce the bug.

1.
2.
3.

## Expected behaviour

Describe what you expect to happen.

## Actual behaviour

Describe what actually happens.

## Errors

Paste here any error messages and/or stacktraces that you see.
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Discord
url: https://discord.iota.org/
about: Please ask and answer questions here.
- name: Security vulnerabilities
url: security@iota.org
about: Please report security vulnerabilities here.
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Request a feature for the Python client library
about: Request a feature
---

## Description

Briefly describe the feature that you are requesting.

## Motivation

Explain why this feature is needed.

## Requirements

Write a list of what you want this feature to do.

1.
2.
3.

## Open questions (optional)

Use this section to ask any questions that are related to the feature.

## Are you planning to do it yourself in a pull request?

Yes/No.
22 changes: 22 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<h2>Responsible disclosure policy</h2>

At the IOTA Foundation, we consider the security of our systems a top priority. But no matter how much effort we put into system security, there can still be vulnerabilities present. If you've discovered a vulnerability, please follow the guidelines below to report it to our security team:
<ul>
<li>E-mail your findings to security@iota.org. If the report contains highly sensitive information, please consider encrypting your findings using our contact@iota.org PGP key (fingerprint 466385BD0B40D9550F93C04746A440CCE5664A64).</li>
</ul>
Please follow these rules when testing/reporting vulnerabilities:
<ul>
<li>Do not take advantage of the vulnerability you have discovered, for example by downloading more data than is necessary to demonstrate the vulnerability.</li>
<li>Do not read, modify or delete data that isn't your own.</li>
<li>We ask that you not disclose the problem to third parties until it has been resolved.</li>
<li>The scope of the program is limited to technical vulnerabilities in IOTA Foundations's web applications and open source software packages distributed through GitHub — please do not try to test physical security or attempt phishing attacks against our employees, and so on.</li>
<li>Out of concern for the availability of our services to all users, please do not attempt to carry out DoS attacks, leverage black hat SEO techniques, spam people, and do other similarly questionable things. We also discourage the use of any vulnerability testing tools that automatically generate significant volumes of traffic.</li>
</ul>
What we promise:
<ul>
<li>We will respond to your report within 3 business days with our evaluation of the report and an expected resolution date.</li>
<li>If you have followed the instructions above, we will not take any legal action against you in regard to the report.</li>
<li>We will keep you informed during all stages of resolving the problem.</li>
<li>To show our appreciation for your effort and cooperation during the report, we will list your name and a link to a personal website/social network profile on the page below so that the public can know you've helped keep the IOTA Foundation secure.</li>
</ul>
We sincerely appreciate the efforts of security researchers in keeping our community safe.
8 changes: 8 additions & 0 deletions .github/SUPPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Community resources

If you have a general or technical question, you can use one of the following resources instead of submitting an issue:

- [**Developer documentation:**](https://docs.iota.org/) For official information about developing with IOTA technology
- [**Discord:**](https://discord.iota.org/) For real-time chats with the developers and community members
- [**IOTA cafe:**](https://iota.cafe/) For technical discussions with the Research and Development Department at the IOTA Foundation
- [**StackExchange:**](https://iota.stackexchange.com/) For technical and troubleshooting questions
29 changes: 29 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Description of change

Please write a summary of your changes and why you made them. Be sure to reference any related issues by adding `fixes # (issue)`.

## Type of change

Choose a type of change, and delete any options that are not relevant.

- Bug fix (a non-breaking change which fixes an issue)
- Enhancement (a non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
- Documentation Fix

## How the change has been tested

Describe the tests that you ran to verify your changes.

Make sure to provide instructions for the maintainer as well as any relevant configurations.

## Change checklist

Add an `x` to the boxes that are relevant to your changes, and delete any items that are not.

- [ ] My code follows the contribution guidelines for this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation (`docs/` directory and/or `docstring`s in source code)
- [ ] I have followed [PEP-8](https://www.python.org/dev/peps/pep-0008/) Style Guide in my code.
- [ ] New and existing unit tests pass locally with my changes
167 changes: 0 additions & 167 deletions CONTRIBUTING.rst

This file was deleted.

11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -149,8 +149,9 @@ print(result['bundle'].hash)

## Supporting the project

If the IOTA Python client library has been useful to you and you feel like contributing, consider posting a [bug report](https://github.com/iotaledger/iota.py/issues/new-issue), feature request or a [pull request](https://github.com/iotaledger/iota.py/pulls/).
We have some [basic contribution guidelines](CONTRIBUTING.rst) to keep our code base stable and consistent.
If the IOTA Python client library has been useful to you and you feel like contributing, consider posting a [bug report](https://github.com/iotaledger/iota.py/issues/new-issue), feature request or a [pull request](https://github.com/iotaledger/iota.py/pulls/).

We have some [basic contribution guidelines](.github/CONTRIBUTING.md) to keep our code base stable and consistent.

### Running test cases

@@ -173,9 +174,9 @@ pip install -e .[test-runner]
tox -v -p all
```

### Building the auto-generated documentation
### Building the autogenerated documentation

The auto-generated documentation can be generated on your local device by doing the following:
The autogenerated documentation can be generated on your local device by doing the following:

```bash
# Install extra dependencies (you only have to do this once)
@@ -187,4 +188,4 @@ make html

## Joining the discussion

If you want to get involved in the community, need help with getting setup, have any issues related with the library or just want to discuss blockchain, distributed ledgers, and IoT with other people, feel free to join our [Discord](https://discord.iota.org/).
If you want to get involved in the community, need help with getting set up, have any issues related with the library or just want to discuss blockchain, distributed ledgers, and IoT with other people, feel free to join our [Discord](https://discord.iota.org/).
2 changes: 1 addition & 1 deletion docs/commands.rst
Original file line number Diff line number Diff line change
@@ -214,4 +214,4 @@ it constructs a list of transaction objects that are returned to
.. _filters documentation site: https://filters.readthedocs.io/en/latest/
.. _create custom filters: https://filters.readthedocs.io/en/latest/writing_filters.html
.. _PyOTA Bug Tracker: https://github.com/iotaledger/iota.py/issues
.. _Contributing to PyOTA: https://github.com/iotaledger/iota.py/blob/master/CONTRIBUTING.rst
.. _Contributing to PyOTA: https://github.com/iotaledger/iota.py/blob/master/.github/CONTRIBUTING.md