{ "info": { "author": "tintinweb", "author_email": "tintinweb@oststrom.com", "bugtrack_url": null, "classifiers": [], "description": "# python-solidity-parser\nAn experimental Solidity parser for Python built on top of a robust ANTLR4 grammar.\n\n**\u24d8** This is a **python3** port of the [javascript antlr parser](https://github.com/federicobond/solidity-parser-antlr) maintained by [@federicobond](https://github.com/federicobond/). Interfaces are intentionally following the javascript implementation and are therefore not pep8 compliant.\n\n\n\n## Install\n\n```\n#> pip3 install solidity_parser\n#> python3 -m solidity_parser # print parse tree or sourceUnit outline\n```\n\n## HowTo\n\n```python\n\nimport sys\nimport pprint\n\nfrom solidity_parser import parser\n\nsourceUnit = parser.parse_file(sys.argv[1], loc=False) # loc=True -> add location information to ast nodes\npprint.pprint(sourceUnit) \n# see output below\n\n```\n\noutput:\n````\n{'type': 'SourceUnit',\n 'children': [{'type': 'PragmaDirective',\n 'name': 'solidity',\n 'value': '^0.4.22'},\n {'type': 'ContractDefinition'},\n 'baseContracts': [],\n 'kind': 'contract',\n 'name': 'SimpleAuction',\n 'subNodes': [{'initialValue': None,\n 'type': 'StateVariableDeclaration',\n 'variables': [{'expression': None,\n 'isDeclaredConst': False,\n 'isIndexed': False,\n 'isStateVar': True,\n 'name': 'beneficiary',\n 'type': 'VariableDeclaration',\n 'typeName': {'name': 'address',\n 'type': 'ElementaryTypeName'},\n 'visibility': 'public'}]},\n...\n````\n\n### Nodes\n\nParse-tree nodes can be accessed both like dictionaries or via object attributes. Nodes always carry a `type` field to hint the type of AST node. The start node is always of type `sourceUnit`.\n\n## Accessing AST items in an Object Oriented fashion\n\n```python\n# ... continuing from previous snippet\n\n# subparse into objects for nicer interfaces:\n# create a nested object structure from AST\nsourceUnitObject = parser.objectify(sourceUnit)\n\n# access imports, contracts, functions, ... (see outline example in __main__.py)\nsourceUnitObject.imports # []\nsourceUnitObject.pragmas # []\nsourceUnitObject.contracts.keys() # get all contract names\nsourceUnitObject.contracts[\"contractName\"].functions.keys() # get all functions in contract: \"contractName\"\nsourceUnitObject.contracts[\"contractName\"].functions[\"myFunction\"].visibility # get \"myFunction\"s visibility (or stateMutability)\n```\n\n\n## Generate the parser\n\nUpdate the grammar in `./solidity-antlr4/Solidity.g4` and run the antlr generator script to create the parser classes in `solidity_parser/solidity_antlr4`.\n```\n#> bash script/antlr4.sh\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/consensys/python-solidity-parser/tarball/v0.1.1", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/consensys/python-solidity-parser/", "keywords": "solidity,parser,antlr", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "solidity-parser", "package_url": "https://pypi.org/project/solidity-parser/", "platform": "", "project_url": "https://pypi.org/project/solidity-parser/", "project_urls": { "Download": "https://github.com/consensys/python-solidity-parser/tarball/v0.1.1", "Homepage": "https://github.com/consensys/python-solidity-parser/" }, "release_url": "https://pypi.org/project/solidity-parser/0.1.1/", "requires_dist": [ "antlr4-python3-runtime (==4.9.3)" ], "requires_python": "", "summary": "A Solidity parser for Python built on top of a robust ANTLR4 grammar", "version": "0.1.1", "yanked": false, "yanked_reason": null }, "last_serial": 12152968, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "e3cc4b3f068eba09585b2ecd03062168", "sha256": "23e4852fc36898ed6b59d526e59de91316b1df7f22b680b42d453fbf668cc218" }, "downloads": -1, "filename": "solidity_parser-0.0.1-py3.7.egg", "has_sig": false, "md5_digest": "e3cc4b3f068eba09585b2ecd03062168", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 18709, "upload_time": "2019-03-05T22:00:28", "upload_time_iso_8601": "2019-03-05T22:00:28.015890Z", "url": "https://files.pythonhosted.org/packages/d0/2a/950ce2f5fe45fdc821e76be0e3c0eb9b419f94be91f261378b384c935e06/solidity_parser-0.0.1-py3.7.egg", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3f3b54c9740d2699c05be09418a3ed86", "sha256": "f24ac3380562d9bb4f2266a8a607ff8d48bd8c234193cab16ede1be24681402e" }, "downloads": -1, "filename": "solidity_parser-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3f3b54c9740d2699c05be09418a3ed86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67233, "upload_time": "2019-03-05T22:00:23", "upload_time_iso_8601": "2019-03-05T22:00:23.816711Z", "url": "https://files.pythonhosted.org/packages/19/73/0725ef1e23f354e2742d54a8eddc54eb3f7bfa0503022ac681a04b61e09b/solidity_parser-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c7f64a030f6bbec81a73b97e341f903a", "sha256": "996463678c7442321f6a4ee50c60d9c12b8fcc31af0d2aaf50050775d00f91e0" }, "downloads": -1, "filename": "solidity-parser-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c7f64a030f6bbec81a73b97e341f903a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55935, "upload_time": "2019-03-05T22:00:26", "upload_time_iso_8601": "2019-03-05T22:00:26.448472Z", "url": "https://files.pythonhosted.org/packages/0c/45/257f2bcd6d7852ca25c501bbc0f55aff7b537373a0492c0e34e4308e876d/solidity-parser-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "33acfb39f09e350fb9edad1e20232009", "sha256": "b5789d72c1bbd1b8c817289f3e957a995a6a5378bc66d5b384162f2e998587bb" }, "downloads": -1, "filename": "solidity_parser-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "33acfb39f09e350fb9edad1e20232009", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 69128, "upload_time": "2019-03-06T14:04:43", "upload_time_iso_8601": "2019-03-06T14:04:43.046135Z", "url": "https://files.pythonhosted.org/packages/28/34/17ae5290a9c2ca19f167ae65b958b6e21708d0b7de0f59c674a595baad03/solidity_parser-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b2724a2c3c73756002601b970d4ae4c3", "sha256": "5da1406c9eec479f83d45aa9428d77e759c4dee3bba9b3c1985b576aa9ecc0c2" }, "downloads": -1, "filename": "solidity-parser-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b2724a2c3c73756002601b970d4ae4c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57999, "upload_time": "2019-03-06T14:04:44", "upload_time_iso_8601": "2019-03-06T14:04:44.739196Z", "url": "https://files.pythonhosted.org/packages/43/0f/2f1f665a1844f4f4992f0afb68373e8cd3f614f5d5717aa025ece9b9a383/solidity-parser-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "e30660e40bd9edabf526b8133c3f5281", "sha256": "5c37468c9eda333c867ee2caf6533542e45f6d914b84f529fb02c59ee24d2187" }, "downloads": -1, "filename": "solidity_parser-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e30660e40bd9edabf526b8133c3f5281", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 69136, "upload_time": "2019-03-08T13:16:30", "upload_time_iso_8601": "2019-03-08T13:16:30.617350Z", "url": "https://files.pythonhosted.org/packages/4b/4c/a56274196ba2ef3ca3615713fed3c35de3858e03cd095a184210743cf23c/solidity_parser-0.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ee40b7a39ce7c437026f01e7cbf1b0f7", "sha256": "f11acff10f110ee122383a840e06103f2ed33ef3fc8360b797905fd4cc53ac10" }, "downloads": -1, "filename": "solidity-parser-0.0.3.tar.gz", "has_sig": false, "md5_digest": "ee40b7a39ce7c437026f01e7cbf1b0f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58018, "upload_time": "2019-03-08T13:16:32", "upload_time_iso_8601": "2019-03-08T13:16:32.375830Z", "url": "https://files.pythonhosted.org/packages/8a/c0/6a37ba03bdd2fbad0497f219b220d06eb55a222f02b59a952fadb33354a1/solidity-parser-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "9cd73dd8e2003ee7f1032ef9954c8c72", "sha256": "e8790156f8764baec7fe555f08fe8b18101eb1074d9ed241885fb80574f388ef" }, "downloads": -1, "filename": "solidity_parser-0.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "9cd73dd8e2003ee7f1032ef9954c8c72", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 69211, "upload_time": "2019-05-23T09:45:10", "upload_time_iso_8601": "2019-05-23T09:45:10.910972Z", "url": "https://files.pythonhosted.org/packages/e9/26/6b4531973bb10385cf6be0dde8980806bfac369bd941ad72bc87cb480a3b/solidity_parser-0.0.4-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b8e86b1ad118b46276ba63e183b570be", "sha256": "cf42e400d8747ca22e67cb84985b96fe8c7fbeaccf9718f794626ac9321b673b" }, "downloads": -1, "filename": "solidity-parser-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b8e86b1ad118b46276ba63e183b570be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58239, "upload_time": "2019-05-23T09:45:12", "upload_time_iso_8601": "2019-05-23T09:45:12.945254Z", "url": "https://files.pythonhosted.org/packages/1d/bf/886b2250dc68d481a21cc817c48cd6f7eb46e39915606b3b6a89d6bcc123/solidity-parser-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "e36fd7ee9b0efc6652f4e12e59fe7f11", "sha256": "a11390310fa2a8828d736406201002ac47d32e9d94d13d23f50cd8a6290f6f77" }, "downloads": -1, "filename": "solidity_parser-0.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "e36fd7ee9b0efc6652f4e12e59fe7f11", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 69405, "upload_time": "2019-05-29T18:50:57", "upload_time_iso_8601": "2019-05-29T18:50:57.504526Z", "url": "https://files.pythonhosted.org/packages/4c/50/59978fbd70dea164a1eb3fa9eac214ded1d04964e7cf3792159f48184f6c/solidity_parser-0.0.5-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5a3a918f3789344e6511772956e647c7", "sha256": "0fb3c3590ae2d184002af0471c8d43b633c4132b6d4b2e4547f86d00129190c8" }, "downloads": -1, "filename": "solidity_parser-0.0.5-py3.7.egg", "has_sig": false, "md5_digest": "5a3a918f3789344e6511772956e647c7", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 151504, "upload_time": "2019-05-29T18:51:02", "upload_time_iso_8601": "2019-05-29T18:51:02.606659Z", "url": "https://files.pythonhosted.org/packages/b9/8c/be2b5134d2e7c6d79427307bd812bfdb6e17ffb5f0c4ad3bdbce6546cb38/solidity_parser-0.0.5-py3.7.egg", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "90a01de6212b047aa4a7a2fcd80e490e", "sha256": "6cd66fc2d4124e86805f8068107ce026a33aad45c416d115625f317ef969fd24" }, "downloads": -1, "filename": "solidity-parser-0.0.5.tar.gz", "has_sig": false, "md5_digest": "90a01de6212b047aa4a7a2fcd80e490e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58429, "upload_time": "2019-05-29T18:51:00", "upload_time_iso_8601": "2019-05-29T18:51:00.238038Z", "url": "https://files.pythonhosted.org/packages/08/7f/3ffbd60d75be48c24f3ec1b0d6c2ce8388f01d0af31663a47460f7ea2e11/solidity-parser-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "6996c095146fdabc3db6bcf946619953", "sha256": "e4eb8fa499c13bed8c7e9044c2827bb0db45293dba545c950bfbb11f40468fab" }, "downloads": -1, "filename": "solidity_parser-0.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "6996c095146fdabc3db6bcf946619953", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 69411, "upload_time": "2019-09-10T22:23:05", "upload_time_iso_8601": "2019-09-10T22:23:05.413460Z", "url": "https://files.pythonhosted.org/packages/0d/95/18943bae8fc318517459acfd2e4df84e7375044fcb7bc0b0b0bcbc6ac2ff/solidity_parser-0.0.6-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "862963f12a7a30c8ce5880fd0f4c5ea8", "sha256": "d0f601e1cf87e963e82dd9d5b40612fd2c5c209f4e41a903b0fc8941e7838ed2" }, "downloads": -1, "filename": "solidity-parser-0.0.6.tar.gz", "has_sig": false, "md5_digest": "862963f12a7a30c8ce5880fd0f4c5ea8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58434, "upload_time": "2019-09-10T22:23:07", "upload_time_iso_8601": "2019-09-10T22:23:07.473424Z", "url": "https://files.pythonhosted.org/packages/db/dd/02df1589017d07dd2549f3ed61428005a0cfbb1043f158a31437c82ebd8c/solidity-parser-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "2538709dff778f47d060406195e2fa4e", "sha256": "c0dfd3f70101820377d92463fdaf9162e2aa1d37c65847130df01f122f0b308a" }, "downloads": -1, "filename": "solidity_parser-0.0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "2538709dff778f47d060406195e2fa4e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 69412, "upload_time": "2019-10-28T21:10:13", "upload_time_iso_8601": "2019-10-28T21:10:13.684052Z", "url": "https://files.pythonhosted.org/packages/93/fc/ea77b208966fc434a1ca02a7e00f7609cceb86e875628b8806fa4a2f5716/solidity_parser-0.0.7-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7f56d08ae08e1e61e8415c428f79fcf7", "sha256": "af8de97b8f2d17c1afe356c854b7cd3bbee4b5eb9efe20854ba4f3ec5fd10493" }, "downloads": -1, "filename": "solidity-parser-0.0.7.tar.gz", "has_sig": false, "md5_digest": "7f56d08ae08e1e61e8415c428f79fcf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58434, "upload_time": "2019-10-28T21:10:15", "upload_time_iso_8601": "2019-10-28T21:10:15.722749Z", "url": "https://files.pythonhosted.org/packages/b4/02/dc014780aa9804687b7fd864d846a71083354f5f970a61d3dabb6a46ffd6/solidity-parser-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "254ee4df03fef01efde371e1f283f828", "sha256": "6c00a584d2c8e15779c8e898155340b173e47dc1b202dfc2185ff418ac4bcdf8" }, "downloads": -1, "filename": "solidity_parser-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "254ee4df03fef01efde371e1f283f828", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67359, "upload_time": "2021-11-29T10:51:56", "upload_time_iso_8601": "2021-11-29T10:51:56.897710Z", "url": "https://files.pythonhosted.org/packages/de/ef/c35a41a86e9437b0845ea713916399a23c5b914a90b8d8109c8eee0c66ba/solidity_parser-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "254ee4df03fef01efde371e1f283f828", "sha256": "6c00a584d2c8e15779c8e898155340b173e47dc1b202dfc2185ff418ac4bcdf8" }, "downloads": -1, "filename": "solidity_parser-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "254ee4df03fef01efde371e1f283f828", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67359, "upload_time": "2021-11-29T10:51:56", "upload_time_iso_8601": "2021-11-29T10:51:56.897710Z", "url": "https://files.pythonhosted.org/packages/de/ef/c35a41a86e9437b0845ea713916399a23c5b914a90b8d8109c8eee0c66ba/solidity_parser-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }