{ "info": { "author": "Sanketh Mopuru", "author_email": "sanketh.mopuru@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "BenDcode\r\n========\r\n\r\nA python module for decoding bencoded data\r\n\r\nBencoding\r\n---------\r\n\r\nBencoding is a meta data representation format fot the BitTorrent\r\nProtocol (BTP). The Augmented BNF syntax for Bencoding is given below\r\n\r\n::\r\n\r\n dictionary = \"d\" 1*(string anytype) \"e\"\r\n list = \"l\" 1*anytype \"e\"\r\n integer = \"i\" signumber \"e\"\r\n string = number \":\" \r\n anytype = dictionary / list / integer / string\r\n signumber = \"-\" number / number\r\n number = 1*DIGIT\r\n CHAR = %x00-FF\r\n DIGIT = \"0\" / \"1\" / \"2\" / \"3\" / \"4\" /\r\n \"5\" / \"6\" / \"7\" / \"8\" / \"9\"\r\n\r\n**Source:** `BTP\r\nRFC `__\r\n\r\nUsage\r\n-----\r\n\r\nDecoding bencoded data is simple.\r\n\r\n::\r\n\r\n >>> import bendcode\r\n >>> bendcode.decode('i123e')\r\n 123\r\n >>> bendcode.decode('4:John')\r\n 'John'\r\n >>> bendcode.decode('li234ei123ee')\r\n [234, 123]\r\n >>> bendcode.decode('d1:ai123e1:bi234ee')\r\n {'a': 123, 'b': 234}\r\n\r\nYou can decode invidual types too !\r\n\r\n::\r\n\r\n >>> import bendcode\r\n >>> bendcode.match_string('3:abc')\r\n ('abc', '')\r\n >>> bendcode.match_int('i-123e')\r\n (-123, '')\r\n >>> bendcode.match_list('li123ee')\r\n ([123], '')\r\n >>> bendcode.match_dict('d1:a1:bei123e')\r\n ({'a': 'b'}, 'i123e')\r\n\r\n**Note:** The match\\_\\* series of functions return a tuple\r\n``(first_possbile_match, remaining_unmatched_string)``\r\n\r\n**Bendcode** can encode too\r\n\r\n::\r\n\r\n >>> import bendcode\r\n >>> bendcode.encode(123)\r\n 'i123e'\r\n >>> bendcode.encode('John')\r\n '4:John'\r\n >>> bendcode.encode([123, 'bro'])\r\n 'li123e3:broe'\r\n >>> bendcode.encode({'hello': 123})\r\n 'd5:helloi123ee'\r\n >>> bendcode.encode(None)\r\n ''\r\n\r\nYou decide whether to raise an exception or not for any functions\r\nmentioned above by setting the ``fail_silently`` parameter to ``True``\r\nor ``False``\r\n\r\n::\r\n\r\n >>> import bendcode\r\n >>> bendcode.match_string('abc')\r\n (None, 'abc')\r\n >>> bendcode.match_string('abc', fail_silently=False)\r\n Traceback (most recent call last):\r\n File \"\", line 1, in \r\n File \"bendcode\\bendcode.py\", line 39, in match_string\r\n raise MalformedBencodeError('Failed to match string in ' + str(raw))\r\n bendcode.exceptions.MalformedBencodeError: Failed to match string in abc\r\n\r\nTests\r\n-----\r\n\r\nRun tests using the following code\r\n\r\n::\r\n\r\n >>> from bendcode import tests\r\n >>> tests.run_tests()\r\n ..................................\r\n ----------------------------------------\r\n Ran 34 tests in 0.015s\r\n\r\n OK\r\n\r\nIssues\r\n------\r\n\r\nIf you find any bug, feel free to create an issue\r\n`here `__.\r\n\r\nLicense\r\n-------\r\n\r\nBenDcode uses GNU v2 License. Read the terms of the license\r\n`here `__.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sanketh95/BenDcode", "keywords": "bencoding,bittorrent,decoding,encoding", "license": "GPLv2", "maintainer": "Sanketh Mopuru", "maintainer_email": "sanketh.mopuru@gmail.com", "name": "bendcode", "package_url": "https://pypi.org/project/bendcode/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/bendcode/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/sanketh95/BenDcode" }, "release_url": "https://pypi.org/project/bendcode/1.1.0/", "requires_dist": null, "requires_python": null, "summary": "Python module to decode Bencoded data", "version": "1.1.0" }, "last_serial": 1566302, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "3c274222006de517b5164c93eaa8e1ee", "sha256": "1ce8e6f4dfd29cdd1af66b4709969ee0481e0ff458f4861e492bfe3c6b8b19c7" }, "downloads": -1, "filename": "bendcode-1.0.0.zip", "has_sig": false, "md5_digest": "3c274222006de517b5164c93eaa8e1ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16048, "upload_time": "2015-05-28T10:53:55", "url": "https://files.pythonhosted.org/packages/a1/7b/8c6f9d7b4642a53bdc553e7184021b96f52822ba3aacb371ac4816677607/bendcode-1.0.0.zip" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "00bae35d1ea913e6c6345eb8518a13d2", "sha256": "989b54d7bf2883bcba956d8808aaffe49b976bf82ea48598ed14927b3cfe5fe7" }, "downloads": -1, "filename": "bendcode-1.1.0.zip", "has_sig": false, "md5_digest": "00bae35d1ea913e6c6345eb8518a13d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16081, "upload_time": "2015-05-28T13:27:45", "url": "https://files.pythonhosted.org/packages/08/80/1bb338770a52f2f3d621c319671edda99e27401052606654ae7c202df0ec/bendcode-1.1.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "00bae35d1ea913e6c6345eb8518a13d2", "sha256": "989b54d7bf2883bcba956d8808aaffe49b976bf82ea48598ed14927b3cfe5fe7" }, "downloads": -1, "filename": "bendcode-1.1.0.zip", "has_sig": false, "md5_digest": "00bae35d1ea913e6c6345eb8518a13d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16081, "upload_time": "2015-05-28T13:27:45", "url": "https://files.pythonhosted.org/packages/08/80/1bb338770a52f2f3d621c319671edda99e27401052606654ae7c202df0ec/bendcode-1.1.0.zip" } ] }