{ "info": { "author": "Steven Buss", "author_email": "steven.buss@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "py-multiaddr\n==========================\n\n.. image:: https://img.shields.io/pypi/v/multiaddr.svg\n :target: https://pypi.python.org/pypi/multiaddr\n\n.. image:: https://travis-ci.org/multiformats/py-multiaddr.svg?branch=master\n :target: https://travis-ci.org/multiformats/py-multiaddr\n\n.. image:: https://codecov.io/github/multiformats/py-multiaddr/coverage.svg?branch=master\n :target: https://codecov.io/github/multiformats/py-multiaddr?branch=master\n\n.. image:: https://readthedocs.org/projects/multiaddr/badge/?version=latest\n :target: https://readthedocs.org/projects/multiaddr/?badge=latest\n :alt: Documentation Status\n..\n\n multiaddr_ implementation in Python \ud83d\udc0d\n\n.. _multiaddr: https://github.com/multiformats/multiaddr\n\n..\n\n\n.. contents:: :local:\n\nUsage\n=====\n\nSimple\n------\n\n.. code-block:: python\n\n from multiaddr import Multiaddr\n\n # construct from a string\n m1 = Multiaddr(\"/ip4/127.0.0.1/udp/1234\")\n\n # construct from bytes\n m2 = Multiaddr(bytes_addr=m1.to_bytes())\n\n assert str(m1) == \"/ip4/127.0.0.1/udp/1234\"\n assert str(m1) == str(m2)\n assert m1.to_bytes() == m2.to_bytes()\n assert m1 == m2\n assert m2 == m1\n assert not (m1 != m2)\n assert not (m2 != m1)\n\n\nProtocols\n---------\n\n.. code-block:: python\n\n from multiaddr import Multiaddr\n\n m1 = Multiaddr(\"/ip4/127.0.0.1/udp/1234\")\n\n # get the multiaddr protocol description objects\n m1.protocols()\n # [Protocol(code=4, name='ip4', size=32), Protocol(code=17, name='udp', size=16)]\n\n\nEn/decapsulate\n--------------\n\n.. code-block:: python\n\n from multiaddr import Multiaddr\n\n m1 = Multiaddr(\"/ip4/127.0.0.1/udp/1234\")\n m1.encapsulate(Multiaddr(\"/sctp/5678\"))\n # \n m1.decapsulate(Multiaddr(\"/udp\"))\n # \n\n\nTunneling\n---------\n\nMultiaddr allows expressing tunnels very nicely.\n\n\n.. code-block:: python\n\n printer = Multiaddr(\"/ip4/192.168.0.13/tcp/80\")\n proxy = Multiaddr(\"/ip4/10.20.30.40/tcp/443\")\n printerOverProxy = proxy.encapsulate(printer)\n print(printerOverProxy)\n # /ip4/10.20.30.40/tcp/443/ip4/192.168.0.13/tcp/80\n\n proxyAgain = printerOverProxy.decapsulate(printer)\n print(proxyAgain)\n # /ip4/10.20.30.40/tcp/443\n\nMaintainers\n===========\n\nOriginal author: `@sbuss`_.\n\nContribute\n==========\n\nContributions welcome. Please check out `the issues`_.\n\nCheck out our `contributing document`_ for more information on how we work, and about contributing in general.\nPlease be aware that all interactions related to multiformats are subject to the IPFS `Code of Conduct`_.\n\nLicense\n=======\n\nDual-licensed:\n\n- `MIT`_ \u00a9 2014 Steven Buss\n- `Apache 2`_ \u00a9 2014 Steven Buss\n\n.. _the issues: https://github.com/multiformats/py-multiaddr/issues\n.. _contributing document: https://github.com/multiformats/multiformats/blob/master/contributing.md\n.. _Code of Conduct: https://github.com/ipfs/community/blob/master/code-of-conduct.md\n.. _standard-readme: https://github.com/RichardLitt/standard-readme\n.. _MIT: LICENSE-MIT\n.. _Apache 2: LICENSE-APACHE2\n.. _`@sbuss`: https://github.com/sbuss\n\n\nHistory\n=======\n\n0.0.7 (2019-5-8)\n----------------\n\n* include subpackage\n* refactor util and codec\n\n0.0.5 (2019-5-7)\n----------------\n\n* unhexilified bytes\n* new exceptions\n* miscellaneous improvements [via alexander255_ `#42`_]\n\n.. _alexander255: https://github.com/alexander255\n.. _`#42`: https://github.com/multiformats/py-multiaddr/pull/42\n\n0.0.2 (2016-5-4)\n----------------\n\n* Fix a bug in decapsulate that threw an IndexError instead of a copy of the\n Multiaddr when the original multiaddr does not contain the multiaddr to\n decapsulate. [via fredthomsen_ `#9`_]\n* Increase test coverage [via fredthomsen_ `#9`_]\n\n.. _fredthomsen: https://github.com/fredthomsen\n.. _`#9`: https://github.com/multiformats/py-multiaddr/pull/9\n\n0.0.1 (2016-1-22)\n------------------\n\n* First release on PyPI.\n\n\n", "description_content_type": "text/x-rst", "docs_url": "https://pythonhosted.org/multiaddr/", "download_url": "https://github.com/multiformats/py-multiaddr/tarball/0.0.8", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/multiformats/py-multiaddr", "keywords": "multiaddr", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "multiaddr", "package_url": "https://pypi.org/project/multiaddr/", "platform": "", "project_url": "https://pypi.org/project/multiaddr/", "project_urls": { "Download": "https://github.com/multiformats/py-multiaddr/tarball/0.0.8", "Homepage": "https://github.com/multiformats/py-multiaddr" }, "release_url": "https://pypi.org/project/multiaddr/0.0.8/", "requires_dist": [ "varint", "six", "base58", "netaddr" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "summary": "Python implementation of jbenet's multiaddr", "version": "0.0.8" }, "last_serial": 5306320, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "10e7f0f90a20d7fd796b765992053102", "sha256": "e251883dd4a18dc5dd3df135205190113554b6d82ff6a532c18cd274bccad2c2" }, "downloads": -1, "filename": "multiaddr-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "10e7f0f90a20d7fd796b765992053102", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10279, "upload_time": "2016-03-07T00:19:26", "url": "https://files.pythonhosted.org/packages/20/32/1575617c76d9b2102fe7bdfae2af58574e348453df965898ecb07c1c9f87/multiaddr-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "57a3b2597a66bb46c620b9f50f24f17a", "sha256": "5129b99a2a7829d3c66e9ff1e229e32b1255e41d0e4e30b6688bfae65a18ed3f" }, "downloads": -1, "filename": "multiaddr-0.0.1.tar.gz", "has_sig": false, "md5_digest": "57a3b2597a66bb46c620b9f50f24f17a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19573, "upload_time": "2016-03-07T00:19:30", "url": "https://files.pythonhosted.org/packages/9f/35/453f4959bc318ea42b7ce08446f56ae74360df1efe25f21b6886d74f3209/multiaddr-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "568229e5f0f311d56cf519601eaa7848", "sha256": "4ec5bc7332b63abf9bfbac41ffdeb767a5c37cf6aac56ee7d8682bbecc9a6de4" }, "downloads": -1, "filename": "multiaddr-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "568229e5f0f311d56cf519601eaa7848", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10377, "upload_time": "2016-05-04T17:53:48", "url": "https://files.pythonhosted.org/packages/f9/d4/d6c8fb4dc3f9fe34c7ec1b8fa0940fc28d3693af6543d85725b222119d86/multiaddr-0.0.2-py2.py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "35b41264ff854136f645c66918c77cec", "sha256": "8139825b94ecf0af059140487792ea02b2ebc69f12ba23880c65fa105fd297f3" }, "downloads": -1, "filename": "multiaddr-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "35b41264ff854136f645c66918c77cec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10876, "upload_time": "2018-12-20T22:04:56", "url": "https://files.pythonhosted.org/packages/41/c0/9b29d96391617d2e08aec3c7a8025adcf883405536224f46d1cd0cfbb7a2/multiaddr-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c93a75eff6f5e1ca278562d152f279b", "sha256": "ca074aa39d93292916ff737d687990380ea58bee898f3eb0ab7dfefeef6f0212" }, "downloads": -1, "filename": "multiaddr-0.0.3.tar.gz", "has_sig": false, "md5_digest": "8c93a75eff6f5e1ca278562d152f279b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21172, "upload_time": "2018-12-20T22:04:58", "url": "https://files.pythonhosted.org/packages/fb/03/652c5e2d61bc6a2db5c1d16437e81e524b1a60e2edb3e7f89ad753984a84/multiaddr-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "5b075eb61deaae7be926df01acd1b893", "sha256": "4a536f557fd0dcf746b633a458b26ef5943ff078b88a4ff64205d5f127c20981" }, "downloads": -1, "filename": "multiaddr-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b075eb61deaae7be926df01acd1b893", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10874, "upload_time": "2018-12-20T22:12:37", "url": "https://files.pythonhosted.org/packages/19/77/10005399e1317905fd21918c20cd48522803d406aecd60a4471d6d7ed415/multiaddr-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7935a69922892ddf823c18e88a13cbd", "sha256": "648e8953860f4e718f10c63c0045b8e7c34825c089c43b0110318193f7a21dcb" }, "downloads": -1, "filename": "multiaddr-0.0.4.tar.gz", "has_sig": false, "md5_digest": "c7935a69922892ddf823c18e88a13cbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21170, "upload_time": "2018-12-20T22:12:38", "url": "https://files.pythonhosted.org/packages/b6/7d/7c75e4f3f5479b99b0990683bd1cb8c75f69d69a14c29587615aec736dbb/multiaddr-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "91d9e505bcbdeed9ad734c81754252ab", "sha256": "acffe4d8001160547549c1898ee37417274a8e8becc2cf9837a1e4f8dbc70328" }, "downloads": -1, "filename": "multiaddr-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "91d9e505bcbdeed9ad734c81754252ab", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 13463, "upload_time": "2019-05-07T16:17:23", "url": "https://files.pythonhosted.org/packages/75/67/ffd1040d721cfcdd57fee4e1d794915fdfcca5e1b73ff62316179148c839/multiaddr-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "321291c79361e0964558e1b0289c0898", "sha256": "8a6811d6b238858880884774ff3902e4cc2517459ca9c7cafd0d45d0b25af308" }, "downloads": -1, "filename": "multiaddr-0.0.5.tar.gz", "has_sig": false, "md5_digest": "321291c79361e0964558e1b0289c0898", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 22264, "upload_time": "2019-05-07T16:17:24", "url": "https://files.pythonhosted.org/packages/f2/c1/b5b7ea1b470f4c12892851f7715e6b122955a3edc4da4537402bdd7cdbb6/multiaddr-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "9d11a84ac78bde4f88e5e2123c0672df", "sha256": "22ee997473e545b3ed4e56d46a60a5293aff63df36794e368be714d4839d2cab" }, "downloads": -1, "filename": "multiaddr-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9d11a84ac78bde4f88e5e2123c0672df", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 17590, "upload_time": "2019-05-08T14:46:24", "url": "https://files.pythonhosted.org/packages/52/15/361b5a45f827c105b843ca56e26af0845394d0981fad35f96ce0620e83f8/multiaddr-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "296ff325ad4fffe91ac4a789e4bf1981", "sha256": "fe28c403f1cb337968eff9a29abe652e02a0a42b75cf76d768c4aa0fcd050940" }, "downloads": -1, "filename": "multiaddr-0.0.6.tar.gz", "has_sig": false, "md5_digest": "296ff325ad4fffe91ac4a789e4bf1981", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 23810, "upload_time": "2019-05-08T14:46:25", "url": "https://files.pythonhosted.org/packages/eb/51/2cc4ea1a2f7b3f2d6bc6d131d9009c1ee1003b515ec3e9332e89213a83f7/multiaddr-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "bd1a272ee5bc135b230c1310880f1b8f", "sha256": "fe35ed4af5f17f6e174bf9d5801f1b82cf3ba450ec8696a331d8409f2e738132" }, "downloads": -1, "filename": "multiaddr-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bd1a272ee5bc135b230c1310880f1b8f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 15027, "upload_time": "2019-05-08T15:30:41", "url": "https://files.pythonhosted.org/packages/f3/f5/c7ae27f15cb8922b85b87829c06133a45c24a36c25a06970f09257962a17/multiaddr-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0a88eb47aaeabff9c724a0238180ce0", "sha256": "b58ea1f73b3b235b2c26f2af18b212865735f9ff4de4716d40c20f4619667743" }, "downloads": -1, "filename": "multiaddr-0.0.7.tar.gz", "has_sig": false, "md5_digest": "d0a88eb47aaeabff9c724a0238180ce0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 23819, "upload_time": "2019-05-08T15:30:42", "url": "https://files.pythonhosted.org/packages/6f/09/a156305c0b94cb831f53bb4dd167dd039b211ac6876d0bcfc9f7be661dc3/multiaddr-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "96c2da39273205f6336c5377a70d0ae2", "sha256": "cb7f4091a2d1fa361fe2fd237efcd963abf650efe3af1414c4e9360a34947573" }, "downloads": -1, "filename": "multiaddr-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96c2da39273205f6336c5377a70d0ae2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 15547, "upload_time": "2019-05-23T07:57:20", "url": "https://files.pythonhosted.org/packages/ae/6f/f0f4a43617a90bfa7ec2b15fde5ab0723035b7f8f0cdc08f0476454d1840/multiaddr-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2b7e926a19c1a368256913d3ab66eb4", "sha256": "2faec68b479945fe6b48dd2dc1f8bcccf939aa148836e3a1ab806d6c75db1238" }, "downloads": -1, "filename": "multiaddr-0.0.8.tar.gz", "has_sig": false, "md5_digest": "f2b7e926a19c1a368256913d3ab66eb4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 24816, "upload_time": "2019-05-23T07:57:23", "url": "https://files.pythonhosted.org/packages/f0/84/c9e74808cd3dfb594e13fab7606513607f9d94de1d1ad09879f9a49d2d7f/multiaddr-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "96c2da39273205f6336c5377a70d0ae2", "sha256": "cb7f4091a2d1fa361fe2fd237efcd963abf650efe3af1414c4e9360a34947573" }, "downloads": -1, "filename": "multiaddr-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96c2da39273205f6336c5377a70d0ae2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 15547, "upload_time": "2019-05-23T07:57:20", "url": "https://files.pythonhosted.org/packages/ae/6f/f0f4a43617a90bfa7ec2b15fde5ab0723035b7f8f0cdc08f0476454d1840/multiaddr-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2b7e926a19c1a368256913d3ab66eb4", "sha256": "2faec68b479945fe6b48dd2dc1f8bcccf939aa148836e3a1ab806d6c75db1238" }, "downloads": -1, "filename": "multiaddr-0.0.8.tar.gz", "has_sig": false, "md5_digest": "f2b7e926a19c1a368256913d3ab66eb4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 24816, "upload_time": "2019-05-23T07:57:23", "url": "https://files.pythonhosted.org/packages/f0/84/c9e74808cd3dfb594e13fab7606513607f9d94de1d1ad09879f9a49d2d7f/multiaddr-0.0.8.tar.gz" } ] }