Metadata-Version: 2.1
Name: iotexapi
Version: 0.0.1
Summary: A Python API for interacting with IoTeX
Home-page: https://github.com/iotask/iotex-api-python
Author: IoTASK
Author-email: iotask@iotask.io
License: MIT License
Keywords: iotex iotex-api iotex-api-python
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=3.6,<4
Description-Content-Type: text/markdown
Requires-Dist: eth-abi (<3.0.0,>=2.0.0b6)
Requires-Dist: eth-account (<0.4.0,>=0.2.1)
Requires-Dist: eth-utils (<2.0.0,>=1.3.0)
Requires-Dist: eth-hash[pycryptodome] (<1.0.0,>=0.2.0)
Requires-Dist: bech32 (>=1.1.0)
Requires-Dist: google-api-core (>=1.11.0)
Requires-Dist: grpcio (>=1.20.1)
Requires-Dist: hexbytes (<1.0.0,>=0.1.0)
Requires-Dist: requests (<3.0.0,>=2.16.0)
Requires-Dist: base58
Requires-Dist: ecdsa
Requires-Dist: attrdict
Requires-Dist: cytoolz (<1.0.0,>=0.9.0) ; implementation_name == "cpython"
Requires-Dist: toolz (<1.0.0,>=0.9.0) ; implementation_name == "pypy"
Provides-Extra: dev
Requires-Dist: coverage ; extra == 'dev'
Requires-Dist: pep8 ; extra == 'dev'
Requires-Dist: pyflakes ; extra == 'dev'
Requires-Dist: pylint ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: mock ; extra == 'dev'
Requires-Dist: sphinx-better-theme (>=0.1.4) ; extra == 'dev'
Requires-Dist: click (>=5.1) ; extra == 'dev'
Requires-Dist: configparser (==3.5.0) ; extra == 'dev'
Requires-Dist: contextlib2 (>=0.5.4) ; extra == 'dev'
Requires-Dist: py-solc (>=0.4.0) ; extra == 'dev'
Requires-Dist: pytest (>=2.7.2) ; extra == 'dev'
Requires-Dist: sphinx ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme (>=0.1.9) ; extra == 'dev'
Requires-Dist: toposort (>=1.4) ; extra == 'dev'
Requires-Dist: urllib3 ; extra == 'dev'
Requires-Dist: iotexapi ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Requires-Dist: bumpversion ; extra == 'dev'
Requires-Dist: flaky (>=3.3.0) ; extra == 'dev'
Requires-Dist: hypothesis (>=3.31.2) ; extra == 'dev'
Requires-Dist: pytest (<4,>=3.5.0) ; extra == 'dev'
Requires-Dist: pytest-mock (==1.*) ; extra == 'dev'
Requires-Dist: pytest-pythonpath (>=0.3) ; extra == 'dev'
Requires-Dist: pytest-watch (==4.*) ; extra == 'dev'
Requires-Dist: pytest-xdist (==1.*) ; extra == 'dev'
Requires-Dist: setuptools (>=36.2.0) ; extra == 'dev'
Requires-Dist: tox (>=1.8.0) ; extra == 'dev'
Requires-Dist: tqdm ; extra == 'dev'
Requires-Dist: when-changed ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mock ; extra == 'docs'
Requires-Dist: sphinx-better-theme (>=0.1.4) ; extra == 'docs'
Requires-Dist: click (>=5.1) ; extra == 'docs'
Requires-Dist: configparser (==3.5.0) ; extra == 'docs'
Requires-Dist: contextlib2 (>=0.5.4) ; extra == 'docs'
Requires-Dist: py-solc (>=0.4.0) ; extra == 'docs'
Requires-Dist: pytest (>=2.7.2) ; extra == 'docs'
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme (>=0.1.9) ; extra == 'docs'
Requires-Dist: toposort (>=1.4) ; extra == 'docs'
Requires-Dist: urllib3 ; extra == 'docs'
Requires-Dist: iotexapi ; extra == 'docs'
Requires-Dist: wheel ; extra == 'docs'
Provides-Extra: tester
Requires-Dist: coverage ; extra == 'tester'
Requires-Dist: pep8 ; extra == 'tester'
Requires-Dist: pyflakes ; extra == 'tester'
Requires-Dist: pylint ; extra == 'tester'
Requires-Dist: pytest-cov ; extra == 'tester'

IoTeX API for Python
=====


Install it in a system-wide location via pip:

.. code-block:: bash

    sudo pip install iotexpai

Install it locally using `virtualenv`:

.. code-block:: bash

    virtualenv .env
    source .env/bin/activate
    pip install iotexapi

------------

Base Example
-------
.. code-block:: python

    from iotexapi import Iotex
    from google.protobuf.json_format import MessageToJson
    import json
    import logging
    import time

    logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")
    logger = logging.getLogger()

    iotex = Iotex()

    acc = iotex.create_account
    logger.debug('Generated account: ')
    logger.debug('- Private Key: ' + acc.private_key)
    logger.debug('- Public Key: ' + acc.public_key)
    logger.debug('- Address: ')
    logger.debug('-- IO: ' + acc.address.io)
    logger.debug('-- ETH: ' + acc.address.eth)
    logger.debug('-----------')

    address = iotex.address.from_private_key("b5a4cea271ff424d7c31dc12a3e43e401df7a40d7412a15750f3f0b6b5449a28")
    logger.debug('Address from PrivateKey: ')
    logger.debug('- IO: ' + address.io)
    logger.debug('- ETH: ' + address.eth)
    logger.debug('-----------')

    iotex.private_key = "b5a4cea271ff424d7c31dc12a3e43e401df7a40d7412a15750f3f0b6b5449a28"
    logger.debug('Default PrivateKey: ')
    logger.debug('- Private Key: ' + iotex.private_key)
    logger.debug('- Public Key: ' + iotex.public_key)
    logger.debug('- Address: ')
    logger.debug('-- IO: ' + iotex.default_address.io)
    logger.debug('-- ETH: ' + iotex.default_address.eth)
    logger.debug('-----------')

    chainMeta = iotex.iotx.getChainMeta().chainMeta
    logger.debug('Chain Meta: ')
    logger.debug('- Height: ' + str(chainMeta.height))
    logger.debug('- NumActions: ' + str(chainMeta.numActions))
    logger.debug('- Epoch: ' + str(chainMeta.epoch.num))
    logger.debug('-----------')

    accountInfo = iotex.iotx.getAccount("io1epvezy0jns0pupsjvk62lyl2run544u2a4jpn3").accountMeta
    logger.debug('Account Info: ')
    logger.debug('- Address: ' + accountInfo.address)
    logger.debug('- Balance: ' + accountInfo.balance)
    logger.debug('- Nonce: ' + str(accountInfo.nonce))
    logger.debug('- PendingNonce: ' + str(accountInfo.pendingNonce))
    logger.debug('- NumActions: ' + str(accountInfo.numActions))
    logger.debug('-----------')

    actions = iotex.iotx.getActionsByAddress("io1epvezy0jns0pupsjvk62lyl2run544u2a4jpn3",0,2)
    actions = MessageToJson(actions)
    logger.debug('Actions by Address: ')
    logger.debug('- List: ' + json.dumps(actions, indent=2))
    logger.debug('-----------')

    blocks = iotex.iotx.getBlockMetas(start=1, count=5)
    blocks = MessageToJson(blocks)
    logger.debug('Blocks by height: ')
    logger.debug('- List: ' + json.dumps(blocks, indent=2))
    logger.debug('-----------')


    block = iotex.iotx.getBlockMetas(hash="fda7d0e46023628198589cc31d7eb2a085e866b8cf8329e784685a54527b2745")
    block = MessageToJson(block)
    logger.debug('Block by Hash: ')
    logger.debug('- Block: ' + json.dumps(block, indent=2))
    logger.debug('-----------')

    epoch = iotex.iotx.getEpochMeta(epoch=100)
    epoch = MessageToJson(epoch)
    logger.debug('Epoch by Num')
    logger.debug('- Data: ' + json.dumps(epoch, indent=2))
    logger.debug('-----------')

    logger.debug('Transfer')
    txId = iotex.iotx.transferTo("io12aymfg8gp2kjeugwdjd50lv3v7wh23v4qgm3x4", 1, {"message": "IoTASK Test"})
    logger.debug('Watting...')
    time.sleep( 15 )
    receipt = iotex.iotx.getReceiptByAction(actionHash=txId.actionHash)
    receipt = MessageToJson(receipt)
    logger.debug('Transaction: ')
    logger.debug('- Hash: ' + txId.actionHash)
    logger.debug('- Transaction: ' + json.dumps(receipt, indent=2))
    logger.debug('-----------')

