{ "info": { "author": "Dave Bryson", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.9" ], "description": "[![pypi](https://img.shields.io/pypi/v/abci.svg)](https://pypi.python.org/pypi/abci)\n[![build](https://travis-ci.org/davebryson/py-abci.svg?branch=master)](https://https://travis-ci.org/davebryson/py-abci)\n[![codecoverage](https://codecov.io/gh/davebryson/py-abci/branch/master/graph/badge.svg)](https://codecov.io/gh/davebryson/py-abci)\n\n# Py-ABCI\nBuild Tendermint blockchain applications in Python. It's fun. This library provides the core functionality needed to create Tendermint ABCI applications.\n\n## Supported Tendermint Version\n* Tendermint *0.34.11*\n* ABCI *0.17.0*\n\n## Installation\nRequires Python >= 3.9\n\n`pip install abci`\n\nYou'll need a binary version of the Tendermint engine. \nAvailable here: https://github.com/tendermint/tendermint/releases\n\n**Make sure the Tendermint version you download matches the current support version of this library**\n\n## Quick Start - demo\n\nA very simple demo application is included and available from the command line as `counter`. You can find the code here: https://github.com/davebryson/py-abci/blob/master/src/example/counter.py\n\nTo try it out:\n1. Make sure you have the Tendermint binary setup locally and in your path. To test it's working\nopen a terminal window and type:\n```text\n>> tendermint version\n```\nIt should output your version of Tendermint that should match the currently supported version \nof this library.\n\n2. Next, initialize Tendermint by running:\n```text\n>> tendermint init\n```\n\n3. Start the Tendermint node:\n```text\n>> tendermint node\n```\nThe node will start, but will be waiting for you application to start.\n\n4. Open another terminal, and start the `counter` application. The `counter` will be available\nfrom within the Python environment where you installed `abci`\n```text\n>> counter\n```\nYou'll see the application start, and in the Tendermint terminal, you'll see the output of \nblocks being produced\n\n5. Now, open a 3rd terminal window to send some transaction to the blockchain. To do this we'll\nuse the `curl` application to send transaction to the local blockchain over http. For example:\n```text\n>> curl http://localhost:26657/broadcast_tx_commit?tx=0x01\n>> curl http://localhost:26657/broadcast_tx_commit?tx=0x02\n```\nThe counter application expects you to send `transactions` as numbers encoded as hex in order: 1,2,3...\nIt will reject and out-of-order numbers. You can always see the latest accepted value by sending the\nrequest:\n```text\n>> curl http://localhost:26657/abci_query\n```\n\nTo shut down the application enter `CTRL-C`\n\n## Get Started\nTo start building your own application:\n1. Extend the `abci.application.BaseApplication` class\n2. Implement the Tendermint ABCI callbacks - see https://docs.tendermint.com/v0.34/spec/abci for details on how they work\n3. Start it:\n```python\nfrom abci.server import ABCIServer\n\napp = ABCIServer(app=MyApplication())\napp.run()\n```\nSee the ``counter.py`` application in the ``example`` directory https://github.com/davebryson/py-abci/blob/master/src/example/counter.py for a full example.\n\n\n## Developing on the code base\nIf you're working directly on the code base. Install a local editable version:\n\n`pip install --editable '.[test]'`\n\n## Updating Protobuf code\n\n**You should only re-generate the protobuf code if you're updating the associated protobuf files, \nand/or contributing to this code base. You do not need to rebuild protos to create apps.** \n\nA note on protobuf: The primary code directory is `abci`, but you'll notice additional \ndirectories: `gogoproto`, `tendermint`, and `protos`. \n\nThe `gogoproto` and `tendermint` directories are the protobuf generated code used by ``abci``. It adds proper Python modules and preserves all the import statements used by Tendermint for the various protobuf files spread \nacross their codebase. The ``protos`` directory is the source .proto files.\n\nTo (re)build the protobuf files:\n\n1. Install `protoc` so it's available in your PATH as a command\n2. Run `make update-proto`\n\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/davebryson/py-abci", "keywords": "blockchain,tendermint,abci", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "abci", "package_url": "https://pypi.org/project/abci/", "platform": "unix", "project_url": "https://pypi.org/project/abci/", "project_urls": { "Homepage": "https://github.com/davebryson/py-abci", "Source": "https://github.com/davebryson/py-abci" }, "release_url": "https://pypi.org/project/abci/0.8.3/", "requires_dist": [ "protobuf (>=3.6.1)", "colorlog (>=3.1.4)", "pytest ; extra == 'dev'", "pytest-cov ; extra == 'dev'", "twine ; extra == 'dev'", "black ; extra == 'dev'", "build ; extra == 'dev'" ], "requires_python": ">=3.9", "summary": "Python based ABCI Server for Tendermint", "version": "0.8.3", "yanked": false, "yanked_reason": null }, "last_serial": 10999791, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "d68eb6ffd6bab03ceedc7161816b5013", "sha256": "e39270f1eac025cc04c3f2c5e52dd13b9f97e9118d7e670649f9738d50ec7bef" }, "downloads": -1, "filename": "abci-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d68eb6ffd6bab03ceedc7161816b5013", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12378, "upload_time": "2017-10-25T14:11:10", "upload_time_iso_8601": "2017-10-25T14:11:10.356501Z", "url": "https://files.pythonhosted.org/packages/92/88/4e6637ebfeb90b5acc7946689e9f71702704f28d0bf9f845ae37ec9bb0ea/abci-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "fedbdfc66ecf307e3bc4d76e4f5c747a", "sha256": "5a021aa4d2be612b9aaf98decc885f75fe8f7881b634de721f4d2f422d5d2246" }, "downloads": -1, "filename": "abci-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fedbdfc66ecf307e3bc4d76e4f5c747a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12731, "upload_time": "2017-11-30T14:24:21", "upload_time_iso_8601": "2017-11-30T14:24:21.017587Z", "url": "https://files.pythonhosted.org/packages/0e/0f/59cad8f89261db84c81cd270fd0f7132f202b2d162376d2fbaefec6f92eb/abci-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b18c35508f5ddf3a8df2042927a9fab5", "sha256": "b81f14f64d1d089607b8b04961c35b9ccb18c36ea96f4ed69bfd3dcd1db7703e" }, "downloads": -1, "filename": "abci-0.4.0.tar.gz", "has_sig": false, "md5_digest": "b18c35508f5ddf3a8df2042927a9fab5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 19589, "upload_time": "2018-04-12T12:00:00", "upload_time_iso_8601": "2018-04-12T12:00:00.125313Z", "url": "https://files.pythonhosted.org/packages/70/8a/5a13ec84de0690ea2cb0af9880fe296af051c9fa5ee6c029b1efa44fb997/abci-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "35299ab75c8fdc588039fed923e38d63", "sha256": "1e786670fde585f9fb53584d78a9a68cd919784614a738bf6049ee571e9df758" }, "downloads": -1, "filename": "abci-0.4.1.tar.gz", "has_sig": false, "md5_digest": "35299ab75c8fdc588039fed923e38d63", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 19662, "upload_time": "2018-04-12T12:44:50", "upload_time_iso_8601": "2018-04-12T12:44:50.951613Z", "url": "https://files.pythonhosted.org/packages/8c/f8/fa56d826d417a78396bb51cdedbcf608c106f80cd60d1725605bd5d1ab26/abci-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "db8d06f2547d8a891ea5c30c1a41ad5d", "sha256": "0581f4f69574b1a06381d8bcc7afc1f82ffff212d1a2a3fe8f3bbb311ed881c9" }, "downloads": -1, "filename": "abci-0.4.2.tar.gz", "has_sig": false, "md5_digest": "db8d06f2547d8a891ea5c30c1a41ad5d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 19637, "upload_time": "2018-04-12T12:52:02", "upload_time_iso_8601": "2018-04-12T12:52:02.954038Z", "url": "https://files.pythonhosted.org/packages/96/5a/c1a81aedb3584d2f87138b59c846d4f48a6e1c19ba0254118dbecdc95147/abci-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "8a01bff333cf13cda9e9978b1dcc26b9", "sha256": "4a59eb35fb446eff279acc9a791298ae9ce9885a0c2df395ee930a6753e5684b" }, "downloads": -1, "filename": "abci-0.5.0-py3.6.egg", "has_sig": false, "md5_digest": "8a01bff333cf13cda9e9978b1dcc26b9", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.6", "size": 45597, "upload_time": "2018-07-03T13:02:43", "upload_time_iso_8601": "2018-07-03T13:02:43.055857Z", "url": "https://files.pythonhosted.org/packages/c2/84/91442d07800e4ca65a69b959f9938dbc62d52c9598988e0ec7d530a32b99/abci-0.5.0-py3.6.egg", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "aa166448b100f6ce37b9bcebef477298", "sha256": "bcc172dbc3441407133f9d79b4d86fe7cef2f9738a2ee0691f8df9aa5872ce2a" }, "downloads": -1, "filename": "abci-0.5.0.tar.gz", "has_sig": false, "md5_digest": "aa166448b100f6ce37b9bcebef477298", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 19282, "upload_time": "2018-05-21T00:28:48", "upload_time_iso_8601": "2018-05-21T00:28:48.822391Z", "url": "https://files.pythonhosted.org/packages/c1/35/972a8232db82b5526bff9373d51c8132e2b7f8526d510057eeaa12e2e077/abci-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "a85d2c44f297328594ffe8bfef926615", "sha256": "eb88f191f8d2a1dc1dfb0b231797c96972ad5ed75ba9c7fee836a8f182bc6aa6" }, "downloads": -1, "filename": "abci-0.5.1.tar.gz", "has_sig": false, "md5_digest": "a85d2c44f297328594ffe8bfef926615", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 19551, "upload_time": "2018-07-03T13:02:44", "upload_time_iso_8601": "2018-07-03T13:02:44.011466Z", "url": "https://files.pythonhosted.org/packages/f0/3c/64b9dea4ca0e74e215e215e920258649b6665ea1cc14b9cff7112c67fc06/abci-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "b5417ec023b9f2297878c891adecbad0", "sha256": "c2caff91c2241c75fdd1c1a383937acdf38f80b97c62473aa9623f0b4693dda0" }, "downloads": -1, "filename": "abci-0.6.0.tar.gz", "has_sig": false, "md5_digest": "b5417ec023b9f2297878c891adecbad0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 21418, "upload_time": "2018-11-08T17:16:12", "upload_time_iso_8601": "2018-11-08T17:16:12.967844Z", "url": "https://files.pythonhosted.org/packages/9f/9c/550149e92fcfced36b414af91bacf33d1ef3e236d97aea9e0cf33e39f2ff/abci-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "f9e43af51ee3bacfe6d4f74fa470c03e", "sha256": "9bfb6d3ebd1b678fe061a2528399b160cc5e5ee4741c5de6ee8f4c43c0b7a25b" }, "downloads": -1, "filename": "abci-0.6.1.tar.gz", "has_sig": false, "md5_digest": "f9e43af51ee3bacfe6d4f74fa470c03e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 21514, "upload_time": "2019-10-28T14:22:14", "upload_time_iso_8601": "2019-10-28T14:22:14.964910Z", "url": "https://files.pythonhosted.org/packages/13/40/0c035e13b7694a831679e4cb82206c1436c138ec02d09548867f60be5f6d/abci-0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "75cff35b83494c6e2287b6e856891e52", "sha256": "559e937e8b917eebcc0471b64bb4661ee5764dd4ced6d8c1ebc2268749170ac4" }, "downloads": -1, "filename": "abci-0.7.0.tar.gz", "has_sig": false, "md5_digest": "75cff35b83494c6e2287b6e856891e52", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 30535, "upload_time": "2021-06-24T13:56:01", "upload_time_iso_8601": "2021-06-24T13:56:01.846445Z", "url": "https://files.pythonhosted.org/packages/55/f3/c957f568d6b3b7e9d8a5afa979cf8a5134ccfd8ec9addc16908e33960279/abci-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "2e9e1b9d084833f29b8bf2096d568455", "sha256": "ad1facaabce9f4756bc5924f1ff4587ec179832ef6597fc288e08dc5168ffea6" }, "downloads": -1, "filename": "abci-0.7.1.tar.gz", "has_sig": false, "md5_digest": "2e9e1b9d084833f29b8bf2096d568455", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 30578, "upload_time": "2021-07-01T00:55:22", "upload_time_iso_8601": "2021-07-01T00:55:22.956935Z", "url": "https://files.pythonhosted.org/packages/1a/a2/b6ed352f63624fd8b9c049196e3f855c0bef3f5a05dbb3860b631d3b8971/abci-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "d5cf24a19ff8b89399b04891151df7e4", "sha256": "ed22cec1333e6935978d3abe94676c81b82133c90e90124b03cd509c90241e52" }, "downloads": -1, "filename": "abci-0.8.0.tar.gz", "has_sig": false, "md5_digest": "d5cf24a19ff8b89399b04891151df7e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 7668, "upload_time": "2021-07-03T01:11:22", "upload_time_iso_8601": "2021-07-03T01:11:22.205391Z", "url": "https://files.pythonhosted.org/packages/14/90/e663a55f8fbb86c6a7293c251b1cb8010fe444d8952079ed654af99ab643/abci-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "f3258b4e8f0c917147c71be2a5cf5bff", "sha256": "bda68adcc3ccce9be2cb761e0efabab17bf765b69c5a332e9bdb6ff8a950b192" }, "downloads": -1, "filename": "abci-0.8.1.tar.gz", "has_sig": false, "md5_digest": "f3258b4e8f0c917147c71be2a5cf5bff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 32042, "upload_time": "2021-07-03T01:29:36", "upload_time_iso_8601": "2021-07-03T01:29:36.543979Z", "url": "https://files.pythonhosted.org/packages/f1/83/1963ca337503e7c5b54d1b2cf8c83e60f59b66844e096c886ab0eac3b72d/abci-0.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "a001847c4d3b698c058c745e90e1242e", "sha256": "021737260f1bd50702de2bf55603ad9adebadec4ced6071b8262fca3bc56a32e" }, "downloads": -1, "filename": "abci-0.8.2.tar.gz", "has_sig": false, "md5_digest": "a001847c4d3b698c058c745e90e1242e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 32135, "upload_time": "2021-07-20T23:24:31", "upload_time_iso_8601": "2021-07-20T23:24:31.095214Z", "url": "https://files.pythonhosted.org/packages/6e/40/e2c650662f133a6e52adaf5fa6a0b71e08fdd0948d0e586929901a636406/abci-0.8.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "df19588f590a9705f35c0853aa5bc050", "sha256": "9f6b9d9a28ccb90bc158572fd05d7a196e09cbe774c72053a18a7b5f602e406f" }, "downloads": -1, "filename": "abci-0.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "df19588f590a9705f35c0853aa5bc050", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.9", "size": 39506, "upload_time": "2021-07-25T17:34:48", "upload_time_iso_8601": "2021-07-25T17:34:48.751695Z", "url": "https://files.pythonhosted.org/packages/5a/3c/4e055523734294f5b1bfec2b467238c62dd05c09858b716d7b3a625dd055/abci-0.8.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2ac78e1b5218885b34ca78b3042df6c7", "sha256": "2c85c7aa78b7a1785b72e6af789ca9f132088b2ba63d90e85af114d65b609fb3" }, "downloads": -1, "filename": "abci-0.8.3.tar.gz", "has_sig": false, "md5_digest": "2ac78e1b5218885b34ca78b3042df6c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 34868, "upload_time": "2021-07-25T17:34:50", "upload_time_iso_8601": "2021-07-25T17:34:50.563208Z", "url": "https://files.pythonhosted.org/packages/77/c3/a8fab381b7456ba8b9b12210c8a4fd01f26aaa7e40a24d075a3a4b010429/abci-0.8.3.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "df19588f590a9705f35c0853aa5bc050", "sha256": "9f6b9d9a28ccb90bc158572fd05d7a196e09cbe774c72053a18a7b5f602e406f" }, "downloads": -1, "filename": "abci-0.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "df19588f590a9705f35c0853aa5bc050", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.9", "size": 39506, "upload_time": "2021-07-25T17:34:48", "upload_time_iso_8601": "2021-07-25T17:34:48.751695Z", "url": "https://files.pythonhosted.org/packages/5a/3c/4e055523734294f5b1bfec2b467238c62dd05c09858b716d7b3a625dd055/abci-0.8.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2ac78e1b5218885b34ca78b3042df6c7", "sha256": "2c85c7aa78b7a1785b72e6af789ca9f132088b2ba63d90e85af114d65b609fb3" }, "downloads": -1, "filename": "abci-0.8.3.tar.gz", "has_sig": false, "md5_digest": "2ac78e1b5218885b34ca78b3042df6c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 34868, "upload_time": "2021-07-25T17:34:50", "upload_time_iso_8601": "2021-07-25T17:34:50.563208Z", "url": "https://files.pythonhosted.org/packages/77/c3/a8fab381b7456ba8b9b12210c8a4fd01f26aaa7e40a24d075a3a4b010429/abci-0.8.3.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }