{ "info": { "author": "joshbuddy", "author_email": "joshbuddy@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "\n# TypedBencode\n\nMake it easy to create round-trippable bencoding for objects.\n\n## Usage\n\n```python\nimport typed_bencode\nfrom typing import List\n\nmy_type = typed_bencode.for_dict(a=str, b=int, c=bytes, d=List[str])\nval = {\"a\": \"hello\", \"b\": 123, \"c\": b'asd', \"d\":[\"hey\", \"there\"]}\nencoded = my_type.encode(val)\nprint(encoded) # => b'd1:a5:hello1:bi123e1:c3:asd1:dl3:hey5:thereee'\nprint(my_type.decode(encoded) == val) # => True\n\n```\n\nYou can even compose types\n\n```python\nmy_other_type = typed_bencode.for_dict(a=my_type, b=int)\n\nencoded2 = my_other_type.encode({\"a\": {\"a\": \"helo\", \"b\": 123, \"c\": b'asd', \"d\": [\"asd\", \"asd\"]}, \"b\":123})\nprint(encoded2) # => b'd1:ad1:a4:helo1:bi123e1:c3:asd1:dl3:asd3:asdee1:bi123ee'\n\n```\n\n### Custom types\n\nYou can specify a custom type\n\n```python\nclass DateEncoder(typed_bencode.StringEncoder):\n def to_bytes(self, val):\n return super().to_bytes(val.isoformat())\n\nclass DateDecoder(typed_bencode.StringDecoder):\n def from_bytes(self, b):\n v, pos = super().from_bytes(b)\n return (datetime.datetime.fromisoformat(v), pos)\n\nclass DateType(typed_bencode.BaseType):\n def __init__(self):\n super().__init__()\n self.encoder = DateEncoder(self)\n self.decoder = DateDecoder(self)\n\nmy_type = DateType()\nval = datetime.datetime.now()\nencoded = my_type.encode(val) # => '26:2018-06-06T12:12:12.363636'\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/joshbuddy/typed_bencode", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "typed-bencode", "package_url": "https://pypi.org/project/typed-bencode/", "platform": "", "project_url": "https://pypi.org/project/typed-bencode/", "project_urls": { "Homepage": "https://github.com/joshbuddy/typed_bencode" }, "release_url": "https://pypi.org/project/typed-bencode/0.0.1/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "A bencoder that allows mixing string & bytes without the guesswork", "version": "0.0.1" }, "last_serial": 4480348, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "20edbc807629aa52bf6963458f1b4d00", "sha256": "5c50be9f07b9b20b6b01f426ab7582d5b82a8519a0b160e5bec5a989dc554f44" }, "downloads": -1, "filename": "typed_bencode-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "20edbc807629aa52bf6963458f1b4d00", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 3220, "upload_time": "2018-11-13T04:50:23", "url": "https://files.pythonhosted.org/packages/04/cd/104decde5668fcaa604fcf6691d3b3dc6f2ba62849bb9924c1e444904705/typed_bencode-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a2380bc5bea660c1f2b0ee4d8b1be7c", "sha256": "f0a4f0d05fa47cf0920cc1c8a1404a3cdad2eefae93d1caf8e5e8134ccd213a3" }, "downloads": -1, "filename": "typed_bencode-0.0.1.tar.gz", "has_sig": false, "md5_digest": "7a2380bc5bea660c1f2b0ee4d8b1be7c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4175, "upload_time": "2018-11-13T04:50:26", "url": "https://files.pythonhosted.org/packages/8e/e8/8ca9a6ec786248e848fe23cd86374eac1708d97164093ea7b15daceb1f39/typed_bencode-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "20edbc807629aa52bf6963458f1b4d00", "sha256": "5c50be9f07b9b20b6b01f426ab7582d5b82a8519a0b160e5bec5a989dc554f44" }, "downloads": -1, "filename": "typed_bencode-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "20edbc807629aa52bf6963458f1b4d00", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 3220, "upload_time": "2018-11-13T04:50:23", "url": "https://files.pythonhosted.org/packages/04/cd/104decde5668fcaa604fcf6691d3b3dc6f2ba62849bb9924c1e444904705/typed_bencode-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a2380bc5bea660c1f2b0ee4d8b1be7c", "sha256": "f0a4f0d05fa47cf0920cc1c8a1404a3cdad2eefae93d1caf8e5e8134ccd213a3" }, "downloads": -1, "filename": "typed_bencode-0.0.1.tar.gz", "has_sig": false, "md5_digest": "7a2380bc5bea660c1f2b0ee4d8b1be7c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4175, "upload_time": "2018-11-13T04:50:26", "url": "https://files.pythonhosted.org/packages/8e/e8/8ca9a6ec786248e848fe23cd86374eac1708d97164093ea7b15daceb1f39/typed_bencode-0.0.1.tar.gz" } ] }