# Wiki Tested with - Acer 314 Chromebook (x86_64) - Linux penguin 5.15.108-18910-gab0e1cb584e1 #1 SMP PREEMPT Wed Jun 21 23:24:20 PDT 2023 x86_64 GNU/Linux Virtual machine - rustc 1.70.0 (90c541806 2023-05-31) ## Getting started with Rust Link: https://wiki.iota.org/next/iota-sdk/getting-started/rust/ - Add `pkg-config` to the dependencies ### Build from source Link: https://wiki.iota.org/next/iota-sdk/getting-started/rust/#build-the-sdk-from-source - It took 1 hour to compile on the Chromebook with this command `cargo build --verbose --jobs 1` ### Client example Link: https://wiki.iota.org/next/iota-sdk/getting-started/rust/#client Ran the example with `cargo run --release --all-features clienttest.rs` ### How-to guides Link: https://wiki.iota.org/next/iota-sdk/getting-started/rust/#how-to-guides - `installed the IOTA SDK` is a recursive link: Link: https://wiki.iota.org/next/iota-sdk/getting-started/rust/#how-to-guides ![](https://hackmd.io/_uploads/rk9-19tOh.png) - `how-to guides` links to https://wiki.iota.org/next/iota-sdk/how-tos/accounts-and-addresses/create-mnemonic/ this page leaves a lot of open questions: - What is a mnemonic? - Why do I need it? - What does it have to do with IOTA-SDK? ![](https://hackmd.io/_uploads/rks0JqKuh.png) **Suggestion**: Create a short introduction to the how-to guides, which explains what is going to happen, with one flow that starts from creating a mnemonic to send the first tokens and then proceeds to try other things # Python [README](https://github.com/iotaledger/iota-sdk/blob/develop/bindings/python/README.md) ## Readme.md ### Small typo Link: https://github.com/iotaledger/iota-sdk/blob/develop/bindings/python/README.md#install-the-iota-sdk ``` (optional) Create a virtual environment and use it. On Linux and macOS, you can run the following commands: '''bash python3 -m venv iota_sdk_venv source iota_sdk_venv/bin/activate ''' ``` ### Use of VENV Link: https://github.com/iotaledger/iota-sdk/blob/develop/bindings/python/README.md#install-the-iota-sdk In case of `venv` being a best practise in Python, make that part of the instructions and reduce confusion with *optional* parts in the guide ### First wallet example is wrong #### SyntaxError in L11: positional argument follows keyword argument Link: https://github.com/iotaledger/iota-sdk/blob/develop/bindings/python/README.md#wallet-usage ```python from iota_sdk import Wallet, StrongholdSecretManager, CoinType # This example creates a new database and account wallet_options = { 'nodes': ['https://api.testnet.shimmer.network'], } secret_manager = StrongholdSecretManager("wallet.stronghold", "some_hopefully_secure_password") wallet = Wallet('./alice-database', wallet_options, coin_type=CoinType.SHIMMER, secret_manager) # Store the mnemonic in the Stronghold snapshot. This only needs to be done once account = wallet.store_mnemonic("flame fever pig forward exact dash body idea link scrub tennis minute " + "surge unaware prosper over waste kitten ceiling human knife arch situate civil") account = wallet.create_account('Alice') print(account) ``` Error ```python File "/home/antonio/dev/iota-sdk/bindings/python/examples/wallet_example.py", line 11 wallet = Wallet('./alice-database', wallet_options, coin_type=CoinType.SHIMMER, secret_manager) ^ SyntaxError: positional argument follows keyword argument ``` ![](https://hackmd.io/_uploads/BkVKC3K_2.png) ### Arguments order matters and coin_type is giving issues I tried to change the order of the arguments in L11 to `wallet = Wallet('./alice-database', wallet_options, secret_manager, coin_type=CoinType.SHIMMER)` The order of the arguments is strict and giving errors if arguments are moved: ```python Traceback (most recent call last): File "/home/antonio/dev/iota-sdk/bindings/python/examples/wallet_example.py", line 11, in <module> wallet = Wallet('./alice-database', wallet_options, secret_manager, coin_type=CoinType.SHIMMER) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: Wallet.__init__() got multiple values for argument 'coin_type' ``` ![](https://hackmd.io/_uploads/H1znThtuh.png) ### Fix for Line 11: `wallet = Wallet('./alice-database', wallet_options, coin_type=CoinType.SHIMMER, secret_manager=secret_manager)` ### Example shown in the README.md is wrong `python3 examples/client/00_get_info.py` will not work because the file `00_get_info.py` does not exist ## Examples ### Example names are confusing *Personal note: It is clear that most examples have been taken from the previous libraries, a structure can help to walk through people, on the other hand the name should explain what it does, this is a challenge* Example files have random names, sometimes they start with a number, sometimes not: https://github.com/iotaledger/iota-sdk/tree/develop/bindings/python/examples/client ![](https://hackmd.io/_uploads/SkwK2FK_h.png) ## Directory structure In `https://github.com/iotaledger/iota-sdk/tree/develop/bindings/python/examples` there are **two** `client` directories, which is confusing and unclear - https://github.com/iotaledger/iota-sdk/tree/develop/bindings/python/examples/**client** - https://github.com/iotaledger/iota-sdk/tree/develop/bindings/python/examples/how_tos/**client**