{ "info": { "author": "Emiliano A. Billi", "author_email": "emiliano.billi@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# ethlite - Ethereum/RSK Lite Client Library\nA tiny web3/python alternative to interact with any ethereum compatible blockchain\n\n## Getting started\n\n### Requiremetns\n\n- pysha3\n- requests\n- six\n\n### Install\n\n```\n $ pip install ethlite\n```\n\n\n## Contents\n\n- [Contracts](#contracts \"https://github.com/emilianobilli/ethlite/blob/master/README.md#contracts\")\n- [Transaction](#transaction \"https://github.com/emilianobilli/ethlite#transaction\")\n- [Account](#account \"https://github.com/emilianobilli/ethlite/blob/master/README.md#account\")\n- [Wallet](#wallet \"https://github.com/emilianobilli/ethlite/blob/master/README.md#wallet\")\n\n***\n\n## Contracts\n\nClass to intereact with smart contracts\n\n### Create a new contract instance\n\nTo create a new contract instance it is necessary to know the **address** and the **ABI** contract. After initialization, you must assign the **jsonrpc_provider** attribute with the url of the node with which we will interact\n```\n>> from ethlite.Contracts import Contract\n>> from json import loads\n>> \n>> address = '0xE8A3AF60260c4d5226ac6fC841A0AFD65BB4B4f1'\n>> abi = loads('[{\"constant\":false,\"inputs\":[{\"name\":\"u\",\"type\":\"uint256\"},{\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"change\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getValues\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"change_uint\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"change_int\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"changer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"UintChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"changer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"u\",\"type\":\"int256\"}],\"name\":\"IntChange\",\"type\":\"event\"}]')\n\n\n>> contract = Contract(abi, address=address)\n>> contract.net.jsonrpc_provider = 'https://kovan.infura.io'\n\n# Other way to init it with only one call\n>> contract = Contract(abi, address=address, jsonrpc_provider='https://kovan.infura.io')\n```\n\nIf the contract instance is created (not exception is thrown), each functions and events of the contract are created as a instance of the class **ContractFunction** and **Event** respectively as attributes of **functions** and **events**.\n\n- In contract.events are defined all the events as Event() \n- In contract.functions are defined all the functions as ContractFunction()\n\n### Create a Void contract instance\n\nThe void contract instance is a way to query for events in all contracts that share the same abi. You can initialice a Contract void not passing an address at __init__\n\n```\n>> contract = Contract(abi)\n>> contract.net.jsonrpc_provider = 'https://kovan.infura.io'\n```\n\n### Call \"View\" functions\n\nThe view functions are those that do not change the status in the smart contract. For example to call the function **getValues()**\n\n```\n>> ret = contract.functions.getValues()\nor\n>> ret = contract.functions.getValues.call()\n```\n\nThe return value **ret** is a [] with the values in same order that are returned in the smart contract\n\nIf the \"view\" function expect arguments, is possible do it in two ways.\n\n```\n>> contract.functions.functionName(arg_1,arg_2,arg_3,...,arg_N)\nor \n>> contract.functions.functionName.call(arg_1,arg_2,arg_3,...,arg_N)\n```\n\n### Call function that modify the state of the smart contract\n\nTo proceed with call that modify the state of the smart contract, first is necessary to attach a Account\n\n```\n>> contract.account = 0x4646464646464646464646464646464646464646464646464646464646464646\nor\n>> contract.account = '0x4646464646464646464646464646464646464646464646464646464646464646'\nor \n>> account = Account(0x4646464646464646464646464646464646464646464646464646464646464646)\n>> contract.account = account\n```\n\nWhen account has been attached to the contract, is possible to proceed with the call.\n\n```\n>> from random import randint\n\n>> u = randint(1,100000000)\n>> i = -randint(1,100000000)\n>> tx = contract.functions.change(u,i,gasPrice=21000000000)\nor\n>> tx = contract.functions.change.commit(u,i,gasPrice=2000000000)\n\n```\n\n#### Arguments/Parameters\n\nThe arguments are passed in the same way as a **view** function, but this call expect some extra arguments in the **kwargs**.\n\nThe list of valid **kwargs** are:\n- **gasPrice**: If this parameter is missing, the contract do tha call with **self.default_gasPrice**\n- **gasLimit**: If this parameter is missing, it is estimated automatically before the call\n- **value**: If the funcions is payable\n- **chainId**\n- **nonce**: If this parameter is missing, it is estimated automatically before de call\n\n#### Return Value\n\nThe return value of this kind of function (that change the status in the smart contract) is an instance of class CommittedTransaction. \nThe way to know the status of the transaction is call the method **receipt()**. This method return **None** until the transaction is confirmed and then return a receipt.\n\n```\n>> from time import sleep\n>>\n>> tx = contract.functions.change(u,i,gasPrice=21000000000)\n>> '''\n>> Waiting receipt (finish)\n>> '''\n>> receipt = tx.receipt()\n>> while receipt == None:\n>> sleep(1)\n>> receipt = tx.receipt()\n>>\n>> print('Transaction Status:', receipt['status'])\n\n```\n\n### Query to contract's events\n\nWhen the contract is initialized with the abi, all events are attributes of the contract's attribute **events**. To query a particular event you must specify the name of the event, if it has an indexed parameter or more you must provide as an argument if you want filter for that topic.\n\n\n#### Query for a particular event. e.g IntChange\n\n```\n>> logs = contract.events.IntChange(fromblock=0x0)\n```\n\n#### Query for a particular event. e.g IntChange but filter with the first topic (address indexed addr)\n\n```\n>> logs = contract.events.IntChange('0x7113fFcb9c18a97DA1b9cfc43e6Cb44Ed9165509',fromblock=0x0)\n```\n\n#### Query for all events that's occurred between the block 0 and the block 100000\n\n```\n>> logs = contract.events.getAll(fromblock=0x0,toBlock=0x2710)\n```\n\n#### Parse logs in the receipt\n\n```\n>> receipt = tx.receipt()\n>> while receipt == None:\n>> sleep(1)\n>> receipt = tx.receipt()\n>>\n>> logs = contract.events.parseLogData(receipt['logs'])\n```\n\n#### Return value\n\nThe return value of any event query or parsed from the receipt is a list of **EventLogDict** objects. \nEach one has:\n\n- **event_name**\n- **blockHash**\n- **transactionHash**\n- **blockNumber**\n- **All of the event parameters as a list**\n- **All of the event parameters as a key/value and object attribute**\n\n\n***\n\n\n## Transaction \n\nClass to create transactions\n\n### Create a transaction\n\n```\nfrom ethlite.Transaction import Transanction\n\n>> tx = Transaction()\n>> tx.nonce = 9\n>> tx.gasLimit = 21000\n>> tx.gasPrice = 20 * 10**9\n>> tx.value = 10**18\n>> tx.data = ''\n>> tx.to = '0x3535353535353535353535353535353535353535'\n\n# Other way to initialize the tx\n>> tx = Transaction(nonce=9, gasLimit=21000, gasPrice=20*10**9, value=10**18, data='', to='0x3535353535353535353535353535353535353535')\n```\n### Methods\n\n#### to_dict(signature=True,hexstring=False)\n\nReturn a dict instance of the transaction. \n\n**Params:**\n- **signature**: if True -> return the attributes/fields v, r, s\n- **hexstring**: if True -> return the integer values of the transaction enconding in hexstring (starting with 0x)\n\n```\n>> tx.to_dict(signature=False,hexstring=True)\n\n{\n 'nonce': '0x9', \n 'gasPrice': '0x4a817c800', \n 'gas': '0x5208', \n 'to': '0x3535353535353535353535353535353535353535', \n 'value': '0xde0b6b3a7640000', \n 'data': ''\n}\n```\n\n#### sign()\n\nReturn a RLP encoded of the signed transction\n\n**Params:**\n\n- **private_key**: a private key, can be in one these formats: Account instance, integer in (base 10 or in base 16) or hexstring (starting with 0x) \n\n```\n>> rlp_encoded = tx.sign('0x4646464646464646464646464646464646464646464646464646464646464646')\n>> print(rlp_encoded)\n'0xf86b098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a7640000801ba03b5da84dcc0783a0aa7a6fb580cb47004c7621b9945befb8e397ad5e97458ea99fee048566d0ce3144fe16da44ca8fbeef6f64001c2b3b3056daff9288fd3f05'\n```\n\n*If **chainId** is setted in the transaction the signature is agrees with eip155* (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md)\n\n```\n>> tx.chainId = 1\n>> rlp_encoded = tx.sign('0x4646464646464646464646464646464646464646464646464646464646464646')\n\n>> print(tx)\nTransaction({'nonce': 9, 'gasPrice': 20000000000, 'gas': 21000, 'to': '0x3535353535353535353535353535353535353535', 'value': 1000000000000000000, 'data': '', 'v': 38, 'r': 43077613174109092491961660322778806267205871822317054604199428521941921778512, 's': 18513993392415436760536700545833252249819770065433633383952513597988743771836})\n\n>> print(rlp_encoded)\n'0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008026a05f3d10a56c633f476ffffe3595353e480611dba01124fd3d5334d0faacf14b50a028ee8c85a63ae513a58871cba502f8077f79581460e76dbd272fff9a9aad76bc'\n```\n\n***\n\n## Account\n\nClass to manipulate private/public key\n\n**ToDo: compliance with eip55** (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-55.md)\n\nActual work according with the yellow paper -> A(pr) = B(96..255)(KEC(ECDSAPUBKEY(pr)))\n\n\n### Import private key\n\n```\n>> from ethlite.Account import Account\n\n>> addr = Account(0x4646464646464646464646464646464646464646464646464646464646464646)\n>> print(addr.addr)\n'0x9d8a62f656a8d1615c1294fd71e9cfb3e4855a4f'\n\n```\n\n### Methods\n\n#### sign(message)\nPerform a keccak_256(message) and them sign it with the private key. Return an instance of *Sign()* representing a signature:\n\n**Params**\n- message: The bytearray to be signed\n\n```\n>> addr.sign(bytearray.fromhex('ec098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a764000080018080'))\n\n5f3d10a56c633f476ffffe3595353e480611dba01124fd3d5334d0faacf14b5028ee8c85a63ae513a58871cba502f8077f79581460e76dbd272fff9a9aad76bc\n```\n\n#### sign_digest(digest)\nPerform a signature of a digested message\n\n**Params**\n- digest: The hash to be signed\n\n```\n>> to_sign = keccak_256(bytearray.fromhex('ec098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a764000080018080'))\n>> to_sign.hexdigest()\n'daf5a779ae972f972197303d7b574746c7ef83eadac0f2791ad23db92e4c8e53'\n>> addr.sign_digest(to_sign.digest())\n5f3d10a56c633f476ffffe3595353e480611dba01124fd3d5334d0faacf14b5028ee8c85a63ae513a58871cba502f8077f79581460e76dbd272fff9a9aad76bc\n```\n***\n\n## Wallet\n\nClass to check and manipulate account balance\n\n### Create a Wallet instance\n\n```\n>> from ethlite.Wallet import Wallet\n\n>> wallet = Wallet('https://kovan.infura.io/')\n```\n\nTo initialize the instance is necessary pass as parameter the http/s provider\n\n### Attach / import Account\n\nThe next step is import an account\n\n```\n>> wallet.import_account(0x4646464646464646464646464646464646464646464646464646464646464646)\n```\n\n### Check balance and Send a Value\n\n```\n>> balance = wallet.balance\n>> result = wallet.send(100000,to='0xa74b20233bf2cE1DfE9E66448316e61Bad78133E')\n```\n**The fist parameter is the amount to send in wei**\n\nThe valid **kwargs** for send() are:\n\n- **nonce**\n- **gasPrice**: If this value is omitted, the call use default_gasPrice -> 20 * 10 ** 9\n- **to**\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/emilianobilli/ethlite", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ethlite", "package_url": "https://pypi.org/project/ethlite/", "platform": "", "project_url": "https://pypi.org/project/ethlite/", "project_urls": { "Homepage": "https://github.com/emilianobilli/ethlite" }, "release_url": "https://pypi.org/project/ethlite/0.0.16/", "requires_dist": [ "pysha3", "requests", "six" ], "requires_python": ">=3.5", "summary": "A tiny web3/python alternative to interact with any ethereum compatible blockchain", "version": "0.0.16", "yanked": false, "yanked_reason": null }, "last_serial": 7084876, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a58090e4f26477a8c02ce4a2f3ad6f44", "sha256": "f4a2b6743961f44ab47312487e63f13d0a680c0e09cb381da0221e080614256d" }, "downloads": -1, "filename": "ethlite-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a58090e4f26477a8c02ce4a2f3ad6f44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 55260, "upload_time": "2019-10-05T00:02:28", "upload_time_iso_8601": "2019-10-05T00:02:28.472148Z", "url": "https://files.pythonhosted.org/packages/41/c4/a737b2ac8942b2bb929bff47f51b84ae8a1030a440dd11f2c593edd94922/ethlite-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f407db51e773ecad3bc44dab9def84a4", "sha256": "c4756c67b4bbeb73fa98a9a0fc70bbec6c961f67972b62ded667fab5b461f8ed" }, "downloads": -1, "filename": "ethlite-0.0.1.tar.gz", "has_sig": false, "md5_digest": "f407db51e773ecad3bc44dab9def84a4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 52331, "upload_time": "2019-10-05T00:02:31", "upload_time_iso_8601": "2019-10-05T00:02:31.058665Z", "url": "https://files.pythonhosted.org/packages/57/c8/26f5e24146c1c2712ac226aa8b210d53bb6305dd99544d3eda74adf33231/ethlite-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "17afc62467b697e32baf63ca9398d133", "sha256": "772ab054ded3ab449299c7bf954f9bc635dc9e77996016e1086ba8519c0fe04d" }, "downloads": -1, "filename": "ethlite-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "17afc62467b697e32baf63ca9398d133", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 59566, "upload_time": "2019-12-06T17:16:55", "upload_time_iso_8601": "2019-12-06T17:16:55.769509Z", "url": "https://files.pythonhosted.org/packages/d0/47/c697a19a8c2f6b8182baa823940d1858c638f3da9171dec72a49e6c5fb7f/ethlite-0.0.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e4fd1201855df3bc2b2ec9e435c27e7b", "sha256": "e4295235831cecbb5898586bfd9516aa688ef0d4cba68877b7232ea40fd452d8" }, "downloads": -1, "filename": "ethlite-0.0.10.tar.gz", "has_sig": false, "md5_digest": "e4fd1201855df3bc2b2ec9e435c27e7b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 56813, "upload_time": "2019-12-06T17:16:59", "upload_time_iso_8601": "2019-12-06T17:16:59.043708Z", "url": "https://files.pythonhosted.org/packages/2e/b7/29c3c1f78ed72e0e08614b9425627a25ee32c628e62bcbfd439fb5229f42/ethlite-0.0.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "34687327bfd884f04e474cd04f16d2cf", "sha256": "3ca44597ef94c3b65b7dd2052f00a322a33e859a403994c21c603c90331f0e51" }, "downloads": -1, "filename": "ethlite-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "34687327bfd884f04e474cd04f16d2cf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 59619, "upload_time": "2019-12-15T23:42:13", "upload_time_iso_8601": "2019-12-15T23:42:13.703876Z", "url": "https://files.pythonhosted.org/packages/17/98/095e42c0b2a8ea47ad520ca436d5a1bd16792c5c987147612d9542587b5b/ethlite-0.0.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "51a771b5add1c15c263998b4646dc413", "sha256": "4c0b025dc57d4d13d750a2ea365ff71621d3b8988a4eb599b07fb1cc03897aa9" }, "downloads": -1, "filename": "ethlite-0.0.11.tar.gz", "has_sig": false, "md5_digest": "51a771b5add1c15c263998b4646dc413", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 56871, "upload_time": "2019-12-15T23:42:15", "upload_time_iso_8601": "2019-12-15T23:42:15.561404Z", "url": "https://files.pythonhosted.org/packages/25/0e/d7f8a346020a35bc9863413c260a7fd022b547563833e3e9efbfdab8b7e1/ethlite-0.0.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "817bcdd0fd7ed3ed1e252b51854959fd", "sha256": "34864bec4aa489de270ee1b5d9dcdccc739c0f28b9e798c3528e7ef6db0d148b" }, "downloads": -1, "filename": "ethlite-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "817bcdd0fd7ed3ed1e252b51854959fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 59811, "upload_time": "2020-02-05T21:11:21", "upload_time_iso_8601": "2020-02-05T21:11:21.010516Z", "url": "https://files.pythonhosted.org/packages/c6/f2/fbd3874d2b0e74ddff2a299a6c5285971d3982e0879ac4499d83e16321f6/ethlite-0.0.12-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2ddae2f1b1f5505f568d2c5640511dec", "sha256": "8e0e34fdadf7016aad10821f02951a31a3e9aa8329e91df54171906c438036b3" }, "downloads": -1, "filename": "ethlite-0.0.12.tar.gz", "has_sig": false, "md5_digest": "2ddae2f1b1f5505f568d2c5640511dec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 57059, "upload_time": "2020-02-05T21:11:23", "upload_time_iso_8601": "2020-02-05T21:11:23.046415Z", "url": "https://files.pythonhosted.org/packages/1a/b4/e09994357ec202100d49baaf80f24629dccdd01f7ef9aa2d1a7c4dda06d5/ethlite-0.0.12.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "e303e1487349fc4a3c35da98c722dfdf", "sha256": "034266d3af909d095e67ba1f2d7355f66f2c9ac14bd264f284de7699e0f11bdb" }, "downloads": -1, "filename": "ethlite-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "e303e1487349fc4a3c35da98c722dfdf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 59799, "upload_time": "2020-02-10T17:24:17", "upload_time_iso_8601": "2020-02-10T17:24:17.946719Z", "url": "https://files.pythonhosted.org/packages/ed/bb/7d3b7ab01f9169fce7d48ce243196ae808299d619a89984ec63145792226/ethlite-0.0.13-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b34459486e213da8927baa7cb48182cc", "sha256": "553483bc1bdf0e2c6ff4aaccd3422a2b6ae29786219817b671db4665dd837baa" }, "downloads": -1, "filename": "ethlite-0.0.13.tar.gz", "has_sig": false, "md5_digest": "b34459486e213da8927baa7cb48182cc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 57040, "upload_time": "2020-02-10T17:24:19", "upload_time_iso_8601": "2020-02-10T17:24:19.622075Z", "url": "https://files.pythonhosted.org/packages/4c/14/ef9ed48bd7c1565139bc1c648945a03655b8d811c01b05913b84267a39f6/ethlite-0.0.13.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "3df70bd9723d9c36e60c35810a6d5c7d", "sha256": "d76356d26aede279f4fd59e80c7e7fa09a73c55bdc1a374f5373923b588d4a65" }, "downloads": -1, "filename": "ethlite-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "3df70bd9723d9c36e60c35810a6d5c7d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 61148, "upload_time": "2020-04-02T19:41:40", "upload_time_iso_8601": "2020-04-02T19:41:40.294682Z", "url": "https://files.pythonhosted.org/packages/a2/99/2580247b9279b54722bbcb5ed88739afa440fb9e1a21c6665d84a95b56a3/ethlite-0.0.14-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2d32d18ba35346b1b41b204610faa4ef", "sha256": "986649cf0bb115189bc3ab4c2b9cf96da870bcfedb49f2b152d7ede1bc6a4f07" }, "downloads": -1, "filename": "ethlite-0.0.14.tar.gz", "has_sig": false, "md5_digest": "2d32d18ba35346b1b41b204610faa4ef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 58342, "upload_time": "2020-04-02T19:41:42", "upload_time_iso_8601": "2020-04-02T19:41:42.178513Z", "url": "https://files.pythonhosted.org/packages/87/9b/6a15fd487b4309062f1c5f7637a2a1f37a3e9fee1776e2878c412705fda7/ethlite-0.0.14.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "5997fa8bc8fe88f1852f0d626ad59bb0", "sha256": "3f34584663a263688dc984e9c6bf463dc8e43eb52b5ce5dbbe73dd78c95b6f64" }, "downloads": -1, "filename": "ethlite-0.0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "5997fa8bc8fe88f1852f0d626ad59bb0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 61168, "upload_time": "2020-04-05T14:37:19", "upload_time_iso_8601": "2020-04-05T14:37:19.999405Z", "url": "https://files.pythonhosted.org/packages/91/df/bda75d76a2f6c54696ed6d7f258c63605504d868cc9de257f94cad616361/ethlite-0.0.15-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c58d87cff835355ad3803ea61f4ce236", "sha256": "d2675a5c8997ed8b97453eca701668fb38d53d3c748cb2eaea1c4ff3185eaeea" }, "downloads": -1, "filename": "ethlite-0.0.15.tar.gz", "has_sig": false, "md5_digest": "c58d87cff835355ad3803ea61f4ce236", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 58372, "upload_time": "2020-04-05T14:37:23", "upload_time_iso_8601": "2020-04-05T14:37:23.458803Z", "url": "https://files.pythonhosted.org/packages/78/eb/1a7be0ec6ecffcd1f5a3dfc185a16267d71b8605cdd34cf4b620255759e4/ethlite-0.0.15.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "4c560b6a5ae83bd61b7b21194f086bbb", "sha256": "5e86e2b6a51de51a70049b5fe815414d4881d66c1b77d7d2a17db6fed180d959" }, "downloads": -1, "filename": "ethlite-0.0.16-py3-none-any.whl", "has_sig": false, "md5_digest": "4c560b6a5ae83bd61b7b21194f086bbb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 61365, "upload_time": "2020-04-23T14:39:12", "upload_time_iso_8601": "2020-04-23T14:39:12.871672Z", "url": "https://files.pythonhosted.org/packages/9a/97/fecde1bb64988c3c29a50fe813f3a23c3ce6a2c8cd0e4aa8a5ac8428cbdf/ethlite-0.0.16-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "47ad9423b3533346391ebf048b0d9f90", "sha256": "8ad26b04cb9d75de25e1c26dad12deb12c1deac4c7d6f0d1e15ab60bb11719bb" }, "downloads": -1, "filename": "ethlite-0.0.16.tar.gz", "has_sig": false, "md5_digest": "47ad9423b3533346391ebf048b0d9f90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 58575, "upload_time": "2020-04-23T14:39:14", "upload_time_iso_8601": "2020-04-23T14:39:14.465119Z", "url": "https://files.pythonhosted.org/packages/7b/bf/9b73d8bd53ae475c4d618ecf97eddfc749115d760ea548f3b12e51b245e5/ethlite-0.0.16.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "d9f99332e554705643ea5fcea89348b5", "sha256": "855c0acb561b47de839720169402d3150c754be1296f198eb0fad71a5fea7b97" }, "downloads": -1, "filename": "ethlite-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d9f99332e554705643ea5fcea89348b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 55268, "upload_time": "2019-10-05T00:23:07", "upload_time_iso_8601": "2019-10-05T00:23:07.396891Z", "url": "https://files.pythonhosted.org/packages/e2/6c/7b2322ae216bb92accd6a29545503cbdcda47c9169f645dddace43e04479/ethlite-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "86ca06feb9e198b64fc1378e7b35afea", "sha256": "94110a72e45dda074ba5b3d102db315ffab258ce911fdde6f7898a18cf0491f9" }, "downloads": -1, "filename": "ethlite-0.0.2.tar.gz", "has_sig": false, "md5_digest": "86ca06feb9e198b64fc1378e7b35afea", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 52338, "upload_time": "2019-10-05T00:23:09", "upload_time_iso_8601": "2019-10-05T00:23:09.686874Z", "url": "https://files.pythonhosted.org/packages/40/44/09c84837b64228179129381cddbe48c8d7116ff0fcbf6272e4218db8f53d/ethlite-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "eedb920c98a51dee8a1a48f63da0aeaf", "sha256": "4850677399376827dc15591c0d9eddeb5a7f7e15cd3e1d6baa9957b72fc59566" }, "downloads": -1, "filename": "ethlite-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "eedb920c98a51dee8a1a48f63da0aeaf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 55591, "upload_time": "2019-10-10T19:40:40", "upload_time_iso_8601": "2019-10-10T19:40:40.099416Z", "url": "https://files.pythonhosted.org/packages/79/45/79d0505219e9336de580762e8b18caf198a22fc1a63d25be26f956fca613/ethlite-0.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bc711849023419308b267b2eaf2f850c", "sha256": "065a6299b099868909c6db85456d5c9e7316564971416afc96de037578eda642" }, "downloads": -1, "filename": "ethlite-0.0.3.tar.gz", "has_sig": false, "md5_digest": "bc711849023419308b267b2eaf2f850c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 52639, "upload_time": "2019-10-10T19:40:42", "upload_time_iso_8601": "2019-10-10T19:40:42.349379Z", "url": "https://files.pythonhosted.org/packages/71/26/2adb7d3743623799357bede364b9044bc293bd7265599f84728ecb34e011/ethlite-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "85a8210c47a00c44f7555cba86835cc0", "sha256": "f4a5c15d9b06ac5af92f7bc050e4cfadaec947f15ad4c20110ef2df126530597" }, "downloads": -1, "filename": "ethlite-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "85a8210c47a00c44f7555cba86835cc0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 55895, "upload_time": "2019-10-27T20:31:15", "upload_time_iso_8601": "2019-10-27T20:31:15.434746Z", "url": "https://files.pythonhosted.org/packages/c8/55/44c71d7e6dd5b7035b32493b17265424e758050ae7d304c759ebb84ec1b9/ethlite-0.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "962687441f50542d23cf27452663062d", "sha256": "d6db33e279f0df505d9c5a676888e7036a419b8e8af8d01b497bfcaf6c099d9d" }, "downloads": -1, "filename": "ethlite-0.0.4.tar.gz", "has_sig": false, "md5_digest": "962687441f50542d23cf27452663062d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 53043, "upload_time": "2019-10-27T20:31:17", "upload_time_iso_8601": "2019-10-27T20:31:17.171710Z", "url": "https://files.pythonhosted.org/packages/dc/00/c79e0b417defd057315b5a461280defa5aa69267560d5b79d38491677f66/ethlite-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "575795aae9684b221402ed8fdb29a184", "sha256": "91efaf9e8284a9441d6eed3059077863a1d76bc33e1f4d6224e40253ed52023d" }, "downloads": -1, "filename": "ethlite-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "575795aae9684b221402ed8fdb29a184", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 57208, "upload_time": "2019-11-05T12:38:22", "upload_time_iso_8601": "2019-11-05T12:38:22.353478Z", "url": "https://files.pythonhosted.org/packages/1a/bc/1f1b004467c2fb5a7d04b6626b5a6ea6aa5c3d9f0208e7afcaa4b1b1ee80/ethlite-0.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "79ef1101ffe3bf3b9a1e179330a95c30", "sha256": "149e38ba7fdc25e35853ff4627c547f82d09fdd42a03eaebb0c39401115b2e21" }, "downloads": -1, "filename": "ethlite-0.0.5.tar.gz", "has_sig": false, "md5_digest": "79ef1101ffe3bf3b9a1e179330a95c30", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 53974, "upload_time": "2019-11-05T12:38:24", "upload_time_iso_8601": "2019-11-05T12:38:24.418782Z", "url": "https://files.pythonhosted.org/packages/a9/95/74fdc608a91d55f72501c9c26dbe2dfea7f74a32dba96fff93ffa432d453/ethlite-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "6d48b7bc0e9dea52af3b8b2177bef8dd", "sha256": "dccf9769f1bc60cd821aa24443e8d413fb50a02bcc0f31bb2888e6fc5a7c1fc5" }, "downloads": -1, "filename": "ethlite-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "6d48b7bc0e9dea52af3b8b2177bef8dd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 57222, "upload_time": "2019-11-05T23:49:06", "upload_time_iso_8601": "2019-11-05T23:49:06.290699Z", "url": "https://files.pythonhosted.org/packages/41/6e/32966618ab5ffd556b58738f70178f88f999a77e18be2521fdc754364132/ethlite-0.0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "93ae7252c4dba971efdc2ad14a21060c", "sha256": "dd714080460ef13c64d53200d3ae3e0732a81c4913979b7c65df29bda80efcaf" }, "downloads": -1, "filename": "ethlite-0.0.6.tar.gz", "has_sig": false, "md5_digest": "93ae7252c4dba971efdc2ad14a21060c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 53978, "upload_time": "2019-11-05T23:49:09", "upload_time_iso_8601": "2019-11-05T23:49:09.886683Z", "url": "https://files.pythonhosted.org/packages/10/f5/04ade002218a9fd72e55fab00d966578860cd97c4c224f755b078d2ff7fd/ethlite-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "257f62413f8e15859ac6fbba11a47f0c", "sha256": "0eb7b706a6161b1d82faee1ae08e32072dfc6d7613f8512447c94f33aec26418" }, "downloads": -1, "filename": "ethlite-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "257f62413f8e15859ac6fbba11a47f0c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 57631, "upload_time": "2019-11-10T17:15:59", "upload_time_iso_8601": "2019-11-10T17:15:59.344737Z", "url": "https://files.pythonhosted.org/packages/0b/51/a8598d9d89ed5fbbf023a03b80948c1e4818563d15fd030b3794aebac827/ethlite-0.0.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f8cafdfe3cdb2e648e7f9d63668f3992", "sha256": "70685cf2c910982812bf651c125c8676a6efb84a6aba9d5d208f9b516209d048" }, "downloads": -1, "filename": "ethlite-0.0.7.tar.gz", "has_sig": false, "md5_digest": "f8cafdfe3cdb2e648e7f9d63668f3992", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 54098, "upload_time": "2019-11-10T17:16:01", "upload_time_iso_8601": "2019-11-10T17:16:01.142783Z", "url": "https://files.pythonhosted.org/packages/65/44/1a90c38de27714437f2bf9ca84d8052b61caa7afc3b1075c962863c3cbba/ethlite-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "7a664346ec08216799334594efd45401", "sha256": "1d1aa3c2dcca42d9e28856d5ac2a411020480d3312943b4c54d2c1f145c0a0cc" }, "downloads": -1, "filename": "ethlite-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "7a664346ec08216799334594efd45401", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 59512, "upload_time": "2019-11-27T17:49:29", "upload_time_iso_8601": "2019-11-27T17:49:29.105976Z", "url": "https://files.pythonhosted.org/packages/6a/2a/23eee1657331540917abe88e04f2d7eb9ce4e32014ca116cba9045a41196/ethlite-0.0.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ff2b0919dc9c9f2e2a4a459bc52269ae", "sha256": "86b8dfa0fc94a3c098e6a7ca532eff7707645afb21f7f7365eca19238474f874" }, "downloads": -1, "filename": "ethlite-0.0.8.tar.gz", "has_sig": false, "md5_digest": "ff2b0919dc9c9f2e2a4a459bc52269ae", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 55923, "upload_time": "2019-11-27T17:49:31", "upload_time_iso_8601": "2019-11-27T17:49:31.025652Z", "url": "https://files.pythonhosted.org/packages/d3/d3/d085da3f87fa3dbe8f81a6bd12ed4f5e1919fb59dbe82155201393b54f8c/ethlite-0.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "6f539d9bd6995e226546708d63e641a7", "sha256": "31ccc657fbbc1201faa9a18d8ecbfcb8114e8f227e38ff6dc25fe7211a11354c" }, "downloads": -1, "filename": "ethlite-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "6f539d9bd6995e226546708d63e641a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 59549, "upload_time": "2019-12-06T16:41:02", "upload_time_iso_8601": "2019-12-06T16:41:02.347550Z", "url": "https://files.pythonhosted.org/packages/12/43/18f3efb83958db87b292cf6b1359bd721eface99ebca4a9ada45f9b5e037/ethlite-0.0.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "210c1e0755410af5bd49880b6bbba90e", "sha256": "5d9a72ac425e8e7de367467668baa9ad57deb95a08a616f51dee0a9064dc40d1" }, "downloads": -1, "filename": "ethlite-0.0.9.tar.gz", "has_sig": false, "md5_digest": "210c1e0755410af5bd49880b6bbba90e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 56800, "upload_time": "2019-12-06T16:41:03", "upload_time_iso_8601": "2019-12-06T16:41:03.811354Z", "url": "https://files.pythonhosted.org/packages/fa/22/2e82b2389ded72ab7ea2a79e7961a01b029bba2824703a22b5ede3c19810/ethlite-0.0.9.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4c560b6a5ae83bd61b7b21194f086bbb", "sha256": "5e86e2b6a51de51a70049b5fe815414d4881d66c1b77d7d2a17db6fed180d959" }, "downloads": -1, "filename": "ethlite-0.0.16-py3-none-any.whl", "has_sig": false, "md5_digest": "4c560b6a5ae83bd61b7b21194f086bbb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 61365, "upload_time": "2020-04-23T14:39:12", "upload_time_iso_8601": "2020-04-23T14:39:12.871672Z", "url": "https://files.pythonhosted.org/packages/9a/97/fecde1bb64988c3c29a50fe813f3a23c3ce6a2c8cd0e4aa8a5ac8428cbdf/ethlite-0.0.16-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "47ad9423b3533346391ebf048b0d9f90", "sha256": "8ad26b04cb9d75de25e1c26dad12deb12c1deac4c7d6f0d1e15ab60bb11719bb" }, "downloads": -1, "filename": "ethlite-0.0.16.tar.gz", "has_sig": false, "md5_digest": "47ad9423b3533346391ebf048b0d9f90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 58575, "upload_time": "2020-04-23T14:39:14", "upload_time_iso_8601": "2020-04-23T14:39:14.465119Z", "url": "https://files.pythonhosted.org/packages/7b/bf/9b73d8bd53ae475c4d618ecf97eddfc749115d760ea548f3b12e51b245e5/ethlite-0.0.16.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }