{ "info": { "author": "Kyloon Chuah", "author_email": "kyloon@veriteos.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# Web3.py\n\n[![Join the chat at https://gitter.im/ethereum/web3.py](https://badges.gitter.im/ethereum/web3.py.svg)](https://gitter.im/ethereum/web3.py?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n[![Build Status](https://circleci.com/gh/ethereum/web3.py.svg?style=shield)](https://circleci.com/gh/ethereum/web3.py.svg?style=shield)\n\n\nA Python implementation of [web3.js](https://github.com/ethereum/web3.js)\n\n* Python 3.5+ support\n\nRead more in the [documentation on ReadTheDocs](http://web3py.readthedocs.io/). [View the change log on Github](docs/releases.rst).\n\n## Quickstart\n\n```python\nimport json\nimport web3\n\nfrom web3 import Web3, HTTPProvider, TestRPCProvider\nfrom solc import compile_source\nfrom web3.contract import ConciseContract\n\n# Solidity source code\ncontract_source_code = '''\npragma solidity ^0.4.0;\n\ncontract Greeter {\n string public greeting;\n\n function Greeter() {\n greeting = 'Hello';\n }\n\n function setGreeting(string _greeting) public {\n greeting = _greeting;\n }\n\n function greet() constant returns (string) {\n return greeting;\n }\n}\n'''\n\ncompiled_sol = compile_source(contract_source_code) # Compiled source code\ncontract_interface = compiled_sol[':Greeter']\n\n# web3.py instance\nw3 = Web3(TestRPCProvider())\n\n# Instantiate and deploy contract\ncontract = w3.eth.contract(abi=contract_interface['abi'], bytecode=contract_interface['bin'])\n\n# Get transaction hash from deployed contract\ntx_hash = contract.deploy(transaction={'from': w3.eth.accounts[0], 'gas': 410000})\n\n# Get tx receipt to get contract address\ntx_receipt = w3.eth.getTransactionReceipt(tx_hash)\ncontract_address = tx_receipt['contractAddress']\n\n# Contract instance in concise mode\nabi = contract_interface['abi']\ncontract_instance = w3.eth.contract(address=contract_address, abi=abi,ContractFactoryClass=ConciseContract)\n\n# Getters + Setters for web3.eth.contract object\nprint('Contract value: {}'.format(contract_instance.greet()))\ncontract_instance.setGreeting('Nihao', transact={'from': w3.eth.accounts[0]})\nprint('Setting value to: Nihao')\nprint('Contract value: {}'.format(contract_instance.greet()))\n```\n\n## Developer Setup\n\n```sh\ngit clone git@github.com:ethereum/web3.py.git\ncd web3.py\n```\n\nPlease see OS-specific instructions for:\n\n- [Linux](docs/README-linux.md#Developer-Setup)\n- [Mac](docs/README-osx.md#Developer-Setup)\n- [Windows](docs/README-windows.md#Developer-Setup)\n- [FreeBSD](docs/README-freebsd.md#Developer-Setup)\n\nThen run these install commands:\n\n```sh\nvirtualenv venv\n. venv/bin/activate\npip install -e .[dev]\n```\n\nFor different environments, you can set up multiple `virtualenv`. For example, if you want to create a `venvdocs`, then you do the following:\n\n```sh\nvirtualenv venvdocs\n. venvdocs/bin/activate\npip install -e .[docs]\npip install -e .\n```\n\n## Using Docker\n\nIf you would like to develop and test inside a Docker environment, use the *sandbox* container provided in the **docker-compose.yml** file.\n\nTo start up the test environment, run:\n\n```\ndocker-compose up -d\n```\n\nThis will build a Docker container set up with an environment to run the Python test code. \n\n**Note: This container does not have `go-ethereum` installed, so you cannot run the go-ethereum test suite.**\n\nTo run the Python tests from your local machine:\n\n```\ndocker-compose exec sandbox bash -c 'pytest -n 4 -f -k \"not goethereum\"'\n```\n\nYou can run arbitrary commands inside the Docker container by using the `bash -c` prefix.\n\n```\ndocker-compose exec sandbox bash -c ''\n```\n\nOr, if you would like to just open a session to the container, run:\n\n```\ndocker-compose exec sandbox bash\n```\n\n### Testing Setup\n\nDuring development, you might like to have tests run on every file save.\n\nShow flake8 errors on file change:\n\n```sh\n# Test flake8\nwhen-changed -v -s -r -1 web3/ tests/ ens/ -c \"clear; flake8 web3 tests ens && echo 'flake8 success' || echo 'error'\"\n```\n\nYou can use `pytest-watch`, running one for every Python environment:\n\n```sh\npip install pytest-watch\n\ncd venv\nptw --onfail \"notify-send -t 5000 'Test failure \u26a0\u26a0\u26a0\u26a0\u26a0' 'python 3 test on web3.py failed'\" ../tests ../web3\n```\n\nOr, you can run multi-process tests in one command, but without color:\n\n```sh\n# in the project root:\npytest --numprocesses=4 --looponfail --maxfail=1\n# the same thing, succinctly:\npytest -n 4 -f --maxfail=1\n```\n\n#### How to Execute the Tests?\n\n1. [Setup your development environment](https://github.com/ethereum/web3.py/#developer-setup).\n\n2. Execute `tox` for the tests\n\nThere are multiple [components](https://github.com/ethereum/web3.py/blob/master/.travis.yml#L53) of the tests. You can run test to against specific component. For example:\n\n```sh\n# Run Tests for the Core component (for Python 3.5):\ntox -e py35-core\n\n# Run Tests for the Core component (for Python 3.6):\ntox -e py36-core\n```\n\nIf for some reason it is not working, add `--recreate` params.\n\n`tox` is good for testing against the full set of build targets. But if you want to run the tests individually, `py.test` is better for development workflow. For example, to run only the tests in one file:\n\n```sh\npy.test tests/core/gas-strategies/test_time_based_gas_price_strategy.py\n```\n\n### Release setup\n\nFor Debian-like systems:\n```\napt install pandoc\n```\n\nTo release a new version:\n\n```sh\nmake release bump=$$VERSION_PART_TO_BUMP$$\n```\n\n#### How to bumpversion\n\nThe version format for this repo is `{major}.{minor}.{patch}` for stable, and\n`{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).\n\nTo issue the next version in line, specify which part to bump,\nlike `make release bump=minor` or `make release bump=devnum`.\n\nIf you are in a beta version, `make release bump=stage` will switch to a stable.\n\nTo issue an unstable version when the current version is stable, specify the\nnew version explicitly, like `make release bump=\"--new-version 4.0.0-alpha.1 devnum\"`\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/veriteos/web3.py", "keywords": "ethereum", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "veriteos-web3", "package_url": "https://pypi.org/project/veriteos-web3/", "platform": "", "project_url": "https://pypi.org/project/veriteos-web3/", "project_urls": { "Homepage": "https://github.com/veriteos/web3.py" }, "release_url": "https://pypi.org/project/veriteos-web3/4.7.1.post7/", "requires_dist": [ "veriteos-eth-abi (<2.0.0,>=1.2.0)", "eth-account (<0.4.0,>=0.2.1)", "eth-utils (<2.0.0,>=1.0.1)", "hexbytes (<1.0.0,>=0.1.0)", "lru-dict (<2.0.0,>=1.1.6)", "eth-hash[pycryptodome] (<1.0.0,>=0.2.0)", "requests (<3.0.0,>=2.16.0)", "websockets (<7.0.0,>=6.0.0)", "cytoolz (<1.0.0,>=0.9.0); implementation_name == \"cpython\"", "toolz (<1.0.0,>=0.9.0); implementation_name == \"pypy\"", "pypiwin32 (>=223); platform_system == \"Windows\"", "eth-tester[py-evm] (==0.1.0-beta.32); extra == 'dev'", "py-geth (<3.0.0,>=2.0.1); extra == 'dev'", "flake8 (==3.4.1); extra == 'dev'", "isort (<5,>=4.2.15); extra == 'dev'", "mock; extra == 'dev'", "sphinx-better-theme (>=0.1.4); extra == 'dev'", "click (>=5.1); extra == 'dev'", "configparser (==3.5.0); extra == 'dev'", "contextlib2 (>=0.5.4); extra == 'dev'", "ethtoken; extra == 'dev'", "py-geth (>=1.4.0); extra == 'dev'", "py-solc (>=0.4.0); extra == 'dev'", "pytest (>=2.7.2); extra == 'dev'", "sphinx; extra == 'dev'", "sphinx-rtd-theme (>=0.1.9); extra == 'dev'", "toposort (>=1.4); extra == 'dev'", "urllib3; extra == 'dev'", "web3 (>=2.1.0); extra == 'dev'", "wheel; extra == 'dev'", "bumpversion; extra == 'dev'", "flaky (>=3.3.0); extra == 'dev'", "hypothesis (>=3.31.2); extra == 'dev'", "pytest (<4,>=3.5.0); extra == 'dev'", "pytest-mock (==1.*); extra == 'dev'", "pytest-pythonpath (>=0.3); extra == 'dev'", "pytest-watch (==4.*); extra == 'dev'", "pytest-xdist (==1.*); extra == 'dev'", "setuptools (>=36.2.0); extra == 'dev'", "tox (>=1.8.0); extra == 'dev'", "tqdm; extra == 'dev'", "when-changed; extra == 'dev'", "mock; extra == 'docs'", "sphinx-better-theme (>=0.1.4); extra == 'docs'", "click (>=5.1); extra == 'docs'", "configparser (==3.5.0); extra == 'docs'", "contextlib2 (>=0.5.4); extra == 'docs'", "ethtoken; extra == 'docs'", "py-geth (>=1.4.0); extra == 'docs'", "py-solc (>=0.4.0); extra == 'docs'", "pytest (>=2.7.2); extra == 'docs'", "sphinx; extra == 'docs'", "sphinx-rtd-theme (>=0.1.9); extra == 'docs'", "toposort (>=1.4); extra == 'docs'", "urllib3; extra == 'docs'", "web3 (>=2.1.0); extra == 'docs'", "wheel; extra == 'docs'", "flake8 (==3.4.1); extra == 'linter'", "isort (<5,>=4.2.15); extra == 'linter'", "eth-tester[py-evm] (==0.1.0-beta.32); extra == 'tester'", "py-geth (<3.0.0,>=2.0.1); extra == 'tester'", "eth-testrpc (<2.0.0,>=1.3.3); extra == 'testrpc'" ], "requires_python": ">=3.5, <4", "summary": "Veriteos Web3.py", "version": "4.7.1.post7" }, "last_serial": 4306448, "releases": { "4.7.1": [ { "comment_text": "", "digests": { "md5": "f4c33ab2fac16ed8a7090486bdd44297", "sha256": "0d4fb8fe694d1082192ca2827d72944e70f7be495c6578f23e4b6c720f9182c9" }, "downloads": -1, "filename": "veriteos_web3-4.7.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f4c33ab2fac16ed8a7090486bdd44297", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.5, <4", "size": 122358, "upload_time": "2018-09-14T07:16:40", "url": "https://files.pythonhosted.org/packages/b4/71/b1321628f62a5fa065a7abf20896da04d497fb57fc2b71d8d469bdb06a7c/veriteos_web3-4.7.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23694e6deedc6139c019dbc223f8939d", "sha256": "027a07194fbda0669ce9d3572607d984adf59eab41d63b39f1cdba540bf70281" }, "downloads": -1, "filename": "veriteos-web3-4.7.1.tar.gz", "has_sig": false, "md5_digest": "23694e6deedc6139c019dbc223f8939d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 303973, "upload_time": "2018-09-14T07:16:42", "url": "https://files.pythonhosted.org/packages/c4/78/b0f2384b71a6f56fef2fbe7b7081c46ab88d52f2dac7cccd97d29739d4b4/veriteos-web3-4.7.1.tar.gz" } ], "4.7.1.post3": [ { "comment_text": "", "digests": { "md5": "6b4674503c08678702c1dbd03fd21a97", "sha256": "116e977d42c2769c85e73487cf9f56149e6d5519cb7ccc93de0ee4ea533ba56f" }, "downloads": -1, "filename": "veriteos_web3-4.7.1.post3-py3-none-any.whl", "has_sig": false, "md5_digest": "6b4674503c08678702c1dbd03fd21a97", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <4", "size": 122416, "upload_time": "2018-09-14T07:58:26", "url": "https://files.pythonhosted.org/packages/e9/f2/07ff17faafecf1b66ac12d54f041407da1dea0249a3f15ed34e5d7d15649/veriteos_web3-4.7.1.post3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "768fa4a65b83db8a74abfb61db7f99ab", "sha256": "aea55b5c24540043fd9276e78e825ab9e5563ac05583128b216d55d52a39b9bb" }, "downloads": -1, "filename": "veriteos-web3-4.7.1.post3.tar.gz", "has_sig": false, "md5_digest": "768fa4a65b83db8a74abfb61db7f99ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 304301, "upload_time": "2018-09-14T07:58:28", "url": "https://files.pythonhosted.org/packages/5a/44/789bdbc07607a0940566d6db2e35604c6682dce392b60a8bed5e464fec7e/veriteos-web3-4.7.1.post3.tar.gz" } ], "4.7.1.post4": [ { "comment_text": "", "digests": { "md5": "a847bc8703de8e650016c0cd5e16b72e", "sha256": "8f8f0950d41f1c250882cc0bfdf10587c8075ae985beef1544255e16fc50ad30" }, "downloads": -1, "filename": "veriteos_web3-4.7.1.post4-py3-none-any.whl", "has_sig": false, "md5_digest": "a847bc8703de8e650016c0cd5e16b72e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <4", "size": 122421, "upload_time": "2018-09-14T08:06:46", "url": "https://files.pythonhosted.org/packages/35/da/96532da642affef2f88ffaa268d236e59c6a3e8a55d82974419420821970/veriteos_web3-4.7.1.post4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82cdb65c1ee6051fba666d822816838b", "sha256": "142de67b41455def6486b1b836cdbc78235206bec01922954aec72d32e9df02c" }, "downloads": -1, "filename": "veriteos-web3-4.7.1.post4.tar.gz", "has_sig": false, "md5_digest": "82cdb65c1ee6051fba666d822816838b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 304296, "upload_time": "2018-09-14T08:06:48", "url": "https://files.pythonhosted.org/packages/12/26/9a041599ab7e1468318f9719a7861f2aba52144f40ee50170c553373d701/veriteos-web3-4.7.1.post4.tar.gz" } ], "4.7.1.post5": [ { "comment_text": "", "digests": { "md5": "7685e37c87c1f04f1164ec7167bce308", "sha256": "6279d7512dc307e6c20969149955841c316ff099d93dcb8b2d38db3599023795" }, "downloads": -1, "filename": "veriteos_web3-4.7.1.post5-py3-none-any.whl", "has_sig": false, "md5_digest": "7685e37c87c1f04f1164ec7167bce308", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <4", "size": 122422, "upload_time": "2018-09-15T06:05:22", "url": "https://files.pythonhosted.org/packages/1d/88/52e0319431defff1309074264a348ca1b49aab6faca10497a23e96614a5f/veriteos_web3-4.7.1.post5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21cd06d768b6fab8c4fb6cdb8709c6b0", "sha256": "5934609fbd583f1f18387220f3cc663b2fe99e126aef28e02b1ca90ead00fcab" }, "downloads": -1, "filename": "veriteos-web3-4.7.1.post5.tar.gz", "has_sig": false, "md5_digest": "21cd06d768b6fab8c4fb6cdb8709c6b0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 304356, "upload_time": "2018-09-15T06:05:24", "url": "https://files.pythonhosted.org/packages/f5/7b/ff3059116869bc7c0bec022e5eab0ce481a6cf737e5b87d79b5b17b4c9f7/veriteos-web3-4.7.1.post5.tar.gz" } ], "4.7.1.post6": [ { "comment_text": "", "digests": { "md5": "5be158961a02b6ea66c14bb55cd88dd8", "sha256": "ca6e00277024136a1bc6276e4941c694b11dfe4f3822c5c602d86c173db75bd7" }, "downloads": -1, "filename": "veriteos_web3-4.7.1.post6-py3-none-any.whl", "has_sig": false, "md5_digest": "5be158961a02b6ea66c14bb55cd88dd8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <4", "size": 122422, "upload_time": "2018-09-15T06:45:30", "url": "https://files.pythonhosted.org/packages/74/3e/d8b4b8b9b710d1fded5c401d6a75f0020ddac9d24d229eba96b0074c8f0e/veriteos_web3-4.7.1.post6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b8ee47dff6c078fee171d24242f5f97", "sha256": "1ccb54ba0ae59cf971603881f8dbc892665bc0ec73e44906f5dcbc0cb70fded9" }, "downloads": -1, "filename": "veriteos-web3-4.7.1.post6.tar.gz", "has_sig": false, "md5_digest": "9b8ee47dff6c078fee171d24242f5f97", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 304371, "upload_time": "2018-09-15T06:45:32", "url": "https://files.pythonhosted.org/packages/ea/dc/fa251ae34f140eb9b705667c017e83630481f1fe35ad3120059810f04def/veriteos-web3-4.7.1.post6.tar.gz" } ], "4.7.1.post7": [ { "comment_text": "", "digests": { "md5": "c1a4122b70d430b543106ab4d5d35ae2", "sha256": "e5fda9f04596c686e1d328cb074399b40b24e1a0b999db6b98bdb45e7a7d9897" }, "downloads": -1, "filename": "veriteos_web3-4.7.1.post7-py3-none-any.whl", "has_sig": false, "md5_digest": "c1a4122b70d430b543106ab4d5d35ae2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <4", "size": 122431, "upload_time": "2018-09-24T21:58:54", "url": "https://files.pythonhosted.org/packages/6f/0b/04e91e8da53d84b2cbd3c2b84beda70b909ee7ec0537fc801483ea5df53a/veriteos_web3-4.7.1.post7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fb8a9f8a736c45fbe1c580bf4ca57d4", "sha256": "23e04a8625b65c5023f4aae42848f469b58094218937745d0bb92d1f03541694" }, "downloads": -1, "filename": "veriteos-web3-4.7.1.post7.tar.gz", "has_sig": false, "md5_digest": "5fb8a9f8a736c45fbe1c580bf4ca57d4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 304383, "upload_time": "2018-09-24T21:58:56", "url": "https://files.pythonhosted.org/packages/e4/eb/858f2942f8969523cb5cd955fc2ab5387e793beb49dc25b01746a0bd3ef4/veriteos-web3-4.7.1.post7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c1a4122b70d430b543106ab4d5d35ae2", "sha256": "e5fda9f04596c686e1d328cb074399b40b24e1a0b999db6b98bdb45e7a7d9897" }, "downloads": -1, "filename": "veriteos_web3-4.7.1.post7-py3-none-any.whl", "has_sig": false, "md5_digest": "c1a4122b70d430b543106ab4d5d35ae2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <4", "size": 122431, "upload_time": "2018-09-24T21:58:54", "url": "https://files.pythonhosted.org/packages/6f/0b/04e91e8da53d84b2cbd3c2b84beda70b909ee7ec0537fc801483ea5df53a/veriteos_web3-4.7.1.post7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fb8a9f8a736c45fbe1c580bf4ca57d4", "sha256": "23e04a8625b65c5023f4aae42848f469b58094218937745d0bb92d1f03541694" }, "downloads": -1, "filename": "veriteos-web3-4.7.1.post7.tar.gz", "has_sig": false, "md5_digest": "5fb8a9f8a736c45fbe1c580bf4ca57d4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 304383, "upload_time": "2018-09-24T21:58:56", "url": "https://files.pythonhosted.org/packages/e4/eb/858f2942f8969523cb5cd955fc2ab5387e793beb49dc25b01746a0bd3ef4/veriteos-web3-4.7.1.post7.tar.gz" } ] }