{ "info": { "author": "The Ethereum Foundation", "author_email": "snakecharmers@ethereum.org", "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.6", "Programming Language :: Python :: 3.7" ], "description": "# HexBytes\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[![Build Status](https://circleci.com/gh/ethereum/hexbytes.svg?style=shield)](https://circleci.com/gh/ethereum/hexbytes)\n[![PyPI version](https://badge.fury.io/py/hexbytes.svg)](https://badge.fury.io/py/hexbytes)\n[![Python versions](https://img.shields.io/pypi/pyversions/hexbytes.svg)](https://pypi.python.org/pypi/hexbytes)\n[![Docs build](https://readthedocs.org/projects/hexbytes/badge/?version=latest)](http://hexbytes.readthedocs.io/en/latest/?badge=latest)\n\n\nPython `bytes` subclass that decodes hex, with a readable console output\n\nRead more in the [documentation on ReadTheDocs](http://hexbytes.readthedocs.io/). [View the change log](http://hexbytes.readthedocs.io/en/latest/releases.html).\n\n## Quickstart\n\n```sh\npip install hexbytes\n```\n\n```py\n# convert from bytes to a prettier representation at the console\n>>> HexBytes(b\"\\x03\\x08wf\\xbfh\\xe7\\x86q\\xd1\\xeaCj\\xe0\\x87\\xdat\\xa1'a\\xda\\xc0 \\x01\\x1a\\x9e\\xdd\\xc4\\x90\\x0b\\xf1;\")\nHexBytes('0x03087766bf68e78671d1ea436ae087da74a12761dac020011a9eddc4900bf13b')\n\n# HexBytes accepts the hex string representation as well, ignoring case and 0x prefixes\n>>> hb = HexBytes('03087766BF68E78671D1EA436AE087DA74A12761DAC020011A9EDDC4900BF13B')\nHexBytes('0x03087766bf68e78671d1ea436ae087da74a12761dac020011a9eddc4900bf13b')\n\n# get the first byte:\n>>> hb[0]\n3\n\n# show how many bytes are in the value\n>>> len(hb)\n32\n\n# cast back to the basic `bytes` type\n>>> bytes(hb)\nb\"\\x03\\x08wf\\xbfh\\xe7\\x86q\\xd1\\xeaCj\\xe0\\x87\\xdat\\xa1'a\\xda\\xc0 \\x01\\x1a\\x9e\\xdd\\xc4\\x90\\x0b\\xf1;\"\n```\n\n## Developer Setup\n\nIf you would like to hack on hexbytes, please check out the [Snake Charmers\nTactical Manual](https://github.com/ethereum/snake-charmers-tactical-manual)\nfor information on how we do:\n\n- Testing\n- Pull Requests\n- Code Style\n- Documentation\n\n### Development Environment Setup\n\nYou can set up your dev environment with:\n\n```sh\ngit clone git@github.com:carver/hexbytes.git\ncd hexbytes\nvirtualenv -p python3 venv\n. venv/bin/activate\npip install -e .[dev]\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 hexbytes/ tests/ -c \"clear; flake8 hexbytes tests && echo 'flake8 success' || echo 'error'\"\n```\n\nRun 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\nRun in one thread, with color and desktop notifications:\n\n```sh\ncd venv\nptw --onfail \"notify-send -t 5000 'Test failure \u26a0\u26a0\u26a0\u26a0\u26a0' 'python 3 test on hexbytes failed'\" ../tests ../hexbytes\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`. This is typically done from the\nmaster branch, except when releasing a beta (in which case the beta is released from master,\nand the previous stable branch is released from said branch). To include changes made with each\nrelease, update \"docs/releases.rst\" with the changes, and apply commit directly to master \nbefore release.\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": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ethereum/hexbytes", "keywords": "ethereum", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "hexbytes", "package_url": "https://pypi.org/project/hexbytes/", "platform": "", "project_url": "https://pypi.org/project/hexbytes/", "project_urls": { "Homepage": "https://github.com/ethereum/hexbytes" }, "release_url": "https://pypi.org/project/hexbytes/0.2.0/", "requires_dist": [ "eth-utils (<2,>=1.0.1)", "bumpversion (<1,>=0.5.3) ; extra == 'dev'", "pytest-watch (<5,>=4.1.0) ; extra == 'dev'", "wheel ; extra == 'dev'", "twine ; extra == 'dev'", "ipython ; extra == 'dev'", "pytest (>=3.6.0) ; extra == 'dev'", "pytest-xdist ; extra == 'dev'", "tox (<3,>=2.9.1) ; extra == 'dev'", "hypothesis (<4,>=3.44.24) ; extra == 'dev'", "eth-hash[pycryptodome] ; extra == 'dev'", "flake8 (==3.4.1) ; extra == 'dev'", "isort (<5,>=4.2.15) ; extra == 'dev'", "mypy (==0.701) ; extra == 'dev'", "pydocstyle (<4,>=3.0.0) ; extra == 'dev'", "Sphinx (<2,>=1.6.5) ; extra == 'dev'", "sphinx-rtd-theme (>=0.1.9) ; extra == 'dev'", "Sphinx (<2,>=1.6.5) ; extra == 'doc'", "sphinx-rtd-theme (>=0.1.9) ; extra == 'doc'", "flake8 (==3.4.1) ; extra == 'lint'", "isort (<5,>=4.2.15) ; extra == 'lint'", "mypy (==0.701) ; extra == 'lint'", "pydocstyle (<4,>=3.0.0) ; extra == 'lint'", "pytest (>=3.6.0) ; extra == 'test'", "pytest-xdist ; extra == 'test'", "tox (<3,>=2.9.1) ; extra == 'test'", "hypothesis (<4,>=3.44.24) ; extra == 'test'", "eth-hash[pycryptodome] ; extra == 'test'" ], "requires_python": ">=3.6, <4", "summary": "hexbytes: Python `bytes` subclass that decodes hex, with a readable console output", "version": "0.2.0" }, "last_serial": 5354272, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "b1b1498ee5a36fa684c440aae30177cd", "sha256": "27cc227ae95fc20d44325ac0329a0293d656a05230da079650705030c7d7a819" }, "downloads": -1, "filename": "hexbytes-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b1b1498ee5a36fa684c440aae30177cd", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6808, "upload_time": "2018-03-01T21:41:05", "url": "https://files.pythonhosted.org/packages/18/bd/21697d93ee2153c8c12253262b740f571e94341d4cee411504032fff3f56/hexbytes-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50d2542e7c0a62a9b6cd03318781ed92", "sha256": "67e5608cb4a14d0a4ced058e595bb1f70c207ef2b5219fdc82af10e54bcf38de" }, "downloads": -1, "filename": "hexbytes-0.1.0.tar.gz", "has_sig": false, "md5_digest": "50d2542e7c0a62a9b6cd03318781ed92", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3807, "upload_time": "2018-03-01T21:41:03", "url": "https://files.pythonhosted.org/packages/81/15/fcd3a5ad583673ce52f0aac8e1246b91e7c88acbeae47863c30bfb264436/hexbytes-0.1.0.tar.gz" } ], "0.1.0a1": [ { "comment_text": "", "digests": { "md5": "a6c1830cc6353a8048ed11e2045f3acd", "sha256": "45c732b3141611326b1246809c56ba5e7e6e74177d69e2f15f489ed7d12a93df" }, "downloads": -1, "filename": "hexbytes-0.1.0a1-py3-none-any.whl", "has_sig": false, "md5_digest": "a6c1830cc6353a8048ed11e2045f3acd", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 4948, "upload_time": "2018-01-25T00:59:08", "url": "https://files.pythonhosted.org/packages/bb/4f/59cb3c9dbcb27916f57455cbcb64707122cbcffc6aec30183bf6c89eaa29/hexbytes-0.1.0a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b5c73d364c9a329253d88a67873c621b", "sha256": "da1fe061960fb6ab9b2a353c4ac4ff49082926e9d832a4ca7297a7cabbfd8fbb" }, "downloads": -1, "filename": "hexbytes-0.1.0a1.tar.gz", "has_sig": false, "md5_digest": "b5c73d364c9a329253d88a67873c621b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3055, "upload_time": "2018-01-25T00:59:07", "url": "https://files.pythonhosted.org/packages/ca/98/afed8d5958e1b1111f19a2910d0d47edc05952d3aa629d777abcb47015fb/hexbytes-0.1.0a1.tar.gz" } ], "0.1.0a2": [ { "comment_text": "", "digests": { "md5": "30c4a3a3cce45c674cc1a7f3b7bd89f8", "sha256": "95ef9679ca95b8965168617a2594158b71fa1a1fcae5f646ff3597e36280daaf" }, "downloads": -1, "filename": "hexbytes-0.1.0a2-py3-none-any.whl", "has_sig": false, "md5_digest": "30c4a3a3cce45c674cc1a7f3b7bd89f8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6522, "upload_time": "2018-01-30T19:09:52", "url": "https://files.pythonhosted.org/packages/33/3d/50a92b3ae206ddf18b5457393acb8164bb669cafd3bc68a921e44cad591c/hexbytes-0.1.0a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5153fe3e44eb89846534f09c2bc2b994", "sha256": "52d16aed1f765d399a1d1bf44e3db1af70723851038ed8c471279a553c6c7f6f" }, "downloads": -1, "filename": "hexbytes-0.1.0a2.tar.gz", "has_sig": false, "md5_digest": "5153fe3e44eb89846534f09c2bc2b994", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4050, "upload_time": "2018-01-30T19:09:50", "url": "https://files.pythonhosted.org/packages/eb/84/2c04a629c21963e525a9aeb5bcf06ea86fac48795458e5fc1d6254870986/hexbytes-0.1.0a2.tar.gz" } ], "0.1.0b0": [ { "comment_text": "", "digests": { "md5": "6e0c91b42231fc640c2c025e9d833e8f", "sha256": "dea11e487b72dbba5218d9aa19cb38fb7784a1c83d38113ccf6cebd063e18c69" }, "downloads": -1, "filename": "hexbytes-0.1.0b0-py3-none-any.whl", "has_sig": false, "md5_digest": "6e0c91b42231fc640c2c025e9d833e8f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6524, "upload_time": "2018-01-30T22:55:03", "url": "https://files.pythonhosted.org/packages/a4/21/d51d371a90703c28861250664189984dbf58010c99b55b2755b317b6da1b/hexbytes-0.1.0b0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a06acb14d255240c0d44fe6bfde3c63", "sha256": "08f6ace1710bc262c2bf97755b677d200b3cff51676bf225c7b8f0de7db91fbe" }, "downloads": -1, "filename": "hexbytes-0.1.0b0.tar.gz", "has_sig": false, "md5_digest": "7a06acb14d255240c0d44fe6bfde3c63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4045, "upload_time": "2018-01-30T22:55:02", "url": "https://files.pythonhosted.org/packages/8d/55/5bfb25df1b2eae1d9cc6d0932895274260bdeea6b1ac7b5e23c71120bbcb/hexbytes-0.1.0b0.tar.gz" } ], "0.1.0b1": [ { "comment_text": "", "digests": { "md5": "452ba90ed7af30f771cea33dcbde1ced", "sha256": "5948f6fd58cfb1159742013262cba11743883535689614aaaff95f23fd172d45" }, "downloads": -1, "filename": "hexbytes-0.1.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "452ba90ed7af30f771cea33dcbde1ced", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6835, "upload_time": "2018-02-22T05:21:39", "url": "https://files.pythonhosted.org/packages/e8/93/2d52a5eb301066b0d21942fd415b802b0a66803548c3093e56243f7730c7/hexbytes-0.1.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84e16f3c74db86e7d44d09848fa946e5", "sha256": "e7c4e9bc35a5d31b20cd6d758934b1cea0d91ce892595166fb859e266e7556e5" }, "downloads": -1, "filename": "hexbytes-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "84e16f3c74db86e7d44d09848fa946e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3812, "upload_time": "2018-02-22T05:21:37", "url": "https://files.pythonhosted.org/packages/0a/28/d8809364ed236bccfae5c37dda8f2f56e0b4eabdc7c1f1cfb066f6645079/hexbytes-0.1.0b1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fa91508a211f361bcf1def8c7bca7fbf", "sha256": "438ba9a28dfcda2c2276954b4310f9af1604fb198bfe5ac44c6518feaf6d376a" }, "downloads": -1, "filename": "hexbytes-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fa91508a211f361bcf1def8c7bca7fbf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <4", "size": 5282, "upload_time": "2019-06-03T20:20:58", "url": "https://files.pythonhosted.org/packages/4e/99/7e0c9a2f74f2a0b4512bd4491334537f4a3418a4daec6ae90ed5cd8d6b89/hexbytes-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "364095c5f1c786d9565c7d3c0978d523", "sha256": "9e8b3e3dc4a7de23c0cf1bb3c3edfcc1f0df4b78927bad63816c27a027b8b7d1" }, "downloads": -1, "filename": "hexbytes-0.2.0.tar.gz", "has_sig": false, "md5_digest": "364095c5f1c786d9565c7d3c0978d523", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <4", "size": 4587, "upload_time": "2019-06-03T20:20:59", "url": "https://files.pythonhosted.org/packages/6c/96/c76cd573e7c3e38af32aa3e4ee9d9103efe33847b72f0507ac6d7a824307/hexbytes-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fa91508a211f361bcf1def8c7bca7fbf", "sha256": "438ba9a28dfcda2c2276954b4310f9af1604fb198bfe5ac44c6518feaf6d376a" }, "downloads": -1, "filename": "hexbytes-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fa91508a211f361bcf1def8c7bca7fbf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, <4", "size": 5282, "upload_time": "2019-06-03T20:20:58", "url": "https://files.pythonhosted.org/packages/4e/99/7e0c9a2f74f2a0b4512bd4491334537f4a3418a4daec6ae90ed5cd8d6b89/hexbytes-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "364095c5f1c786d9565c7d3c0978d523", "sha256": "9e8b3e3dc4a7de23c0cf1bb3c3edfcc1f0df4b78927bad63816c27a027b8b7d1" }, "downloads": -1, "filename": "hexbytes-0.2.0.tar.gz", "has_sig": false, "md5_digest": "364095c5f1c786d9565c7d3c0978d523", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, <4", "size": 4587, "upload_time": "2019-06-03T20:20:59", "url": "https://files.pythonhosted.org/packages/6c/96/c76cd573e7c3e38af32aa3e4ee9d9103efe33847b72f0507ac6d7a824307/hexbytes-0.2.0.tar.gz" } ] }