{ "info": { "author": "Ryan Kelly", "author_email": "ryan@rfk.id.au", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Topic :: Software Development :: Libraries" ], "description": "extprot: compact, efficient, extensible binary serialization format\n\nThis is a python implementation of the 'extprot' serialization scheme, the\ndetails of which are described at:\n\n http://eigenclass.org/R2/writings/extprot-extensible-protocols-intro\n\nSimilar to Google's Protocol Buffers and Apache Thrift, extprot allows the\ndefinition of structured data \"messages\". Messages are essentially a set\nof typed key-value pairs that can be efficiently serialized to/from a\ncompact binary format, and are defined in a language-neutral \"protocol\" file.\nHere's a simple example of an extprot message:\n\n message person = {\n id: int;\n name: string;\n emails: [ string ]\n }\n\nHere the 'person' message contains three fields: 'id' is an integer, 'name'\nis a string, and 'emails' is a list of strings. Such protocol descriptions\nare compiled into a set of Python classes that can be manipulated using \nstandard syntax and idioms. If the above protocol is recorded in the file\n\"person.proto\", here's a simple example of how it might be used:\n\n >>> extprot.import_protocol(\"person.proto\",globals())\n >>> p1 = person(1,\"Guido\")\n >>> print p1.emails # fields use a sensible default if possible\n []\n >>> p1.emails.append(\"guido@python.org\")\n >>> p1.emails.append(7) # all fields are dynamically typechecked\n Traceback (mosts recent call last):\n ...\n ValueError: not a valid String: 7\n >>> print repr(p1.to_string())\n '\\x01\\x1f\\x03\\x00\\x02\\x03\\x05Guido\\x05\\x13\\x01\\x03\\x10guido@python.org'\n >>> print person.from_string(p1.to_string()).name\n 'Guido'\n >>>\n \nExtprot compares favourably to related serialization technologies:\n\n * powerful type system; strongly-typed tuples and lists, tagged disjoint\n unions, parametric polymorphism.\n * self-delimiting data; all serialized messages indicate their length,\n allowing easy streaming and skipping of messages.\n * self-describing data; the 'skeleton' of a message can be reconstructed\n without having the protocol definition.\n * compact binary format; comparable to protocol-buffers/thrift, but with\n some overhead due to self-delimiting nature.\n\nThese features combine to make extprot strongly extensible, often allowing\nmessages to maintain backward *and* forward compatibility across protocol \nextensions that include: adding fields to a message, adding elements to a\ntuple, adding cases to a disjoint union, and promoting a primitive type into\na tuple, list or union.\n\nThe function extprot.import_protocol() will dynamically load a protocol file\nand convert it into the corresponding python class structure. This is quite\nconvenient while developing a protocol since it avoids an extra compilation\nstep, but it does add some startup overhead and requires the pyparsing module.\n\nTo compile a protocol definition into python sourcecode for the corresponding\nclass definitions, use the function extprot.compile_protocol() or pipe the file\nthrough extprot/compiler.py like so:\n\n $ cat mydefs.proto | python extprot/compiler.py > mydefs.py", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/rfk/extprot/tree/master", "keywords": "serialization protocol", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "extprot", "package_url": "https://pypi.org/project/extprot/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/extprot/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/rfk/extprot/tree/master" }, "release_url": "https://pypi.org/project/extprot/0.2.4/", "requires_dist": null, "requires_python": null, "summary": "compact, efficient, extensible binary serialization format", "version": "0.2.4" }, "last_serial": 791823, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8ce7fd8fce96a4d7b838e45cb8a674f8", "sha256": "c354939e49daf8414b369cf7bc129aebe7387f76da338e018aa8de35f8b383b2" }, "downloads": -1, "filename": "extprot-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8ce7fd8fce96a4d7b838e45cb8a674f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17379, "upload_time": "2009-08-03T16:50:44", "url": "https://files.pythonhosted.org/packages/18/c2/2b76169f872c310e43dd52424c23d4e2dccdc232fefd0a228d75198fae1b/extprot-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f224b07d2242a17a1f2f6afe830ba676", "sha256": "4cf0c9a2fac348b92d3bc39b265d27022895022bdc598bbab075877d490dfcd7" }, "downloads": -1, "filename": "extprot-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f224b07d2242a17a1f2f6afe830ba676", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18603, "upload_time": "2009-08-05T10:52:53", "url": "https://files.pythonhosted.org/packages/38/7c/a33a9aa88042b65f1c619276d5c2cc90fb1bdbc186767fb485bbd55e3ffd/extprot-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "edeb71d123bdc29caf60efbb8d0d0c62", "sha256": "8f048f82f4e48a6ab1ab8020f0c870350ec1f2fd8dd447f13e4535d18ddfbac8" }, "downloads": -1, "filename": "extprot-0.2.0.tar.gz", "has_sig": false, "md5_digest": "edeb71d123bdc29caf60efbb8d0d0c62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20706, "upload_time": "2009-09-22T11:38:09", "url": "https://files.pythonhosted.org/packages/f6/37/28bb7771c21e71873ee58a04a8c181c5849aab0f5dd8be5f547611a0d8e7/extprot-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b9fe1f2156c9af0b35450cae045beb7d", "sha256": "19ede36506622440846c4e492bce98526791b0166624ab2345edc3ac4c9c1c3a" }, "downloads": -1, "filename": "extprot-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b9fe1f2156c9af0b35450cae045beb7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20822, "upload_time": "2009-09-24T05:54:45", "url": "https://files.pythonhosted.org/packages/ee/f6/3b0573f10b5661811731dd3f804c3ddd3480496e1c64201632b6f4d5dfd2/extprot-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "7b40bd47dd14c1b575f651cbe82c99a7", "sha256": "4558e05d80c951a0aef0d3199bbe07824137182873866169ef1d5600fd7871aa" }, "downloads": -1, "filename": "extprot-0.2.2.tar.gz", "has_sig": false, "md5_digest": "7b40bd47dd14c1b575f651cbe82c99a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23187, "upload_time": "2010-01-08T03:24:48", "url": "https://files.pythonhosted.org/packages/54/54/ea2d22cc5fe31856c38c0d9d912e70c3c8e2b659c89c7303dbd060528919/extprot-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "5720cc3271a12c64006b3676409e3660", "sha256": "d5ec774090b32b384ec2227e936068488281050ae0c64273aac5a9ed84bc1d3b" }, "downloads": -1, "filename": "extprot-0.2.3.tar.gz", "has_sig": false, "md5_digest": "5720cc3271a12c64006b3676409e3660", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23296, "upload_time": "2010-01-11T10:07:27", "url": "https://files.pythonhosted.org/packages/9d/5a/847099d17378a7838ba1e36cab3ed96372b2989abb04004dda4e33524a2b/extprot-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "00304550a8530e0d3027ebe37a6ec0dd", "sha256": "a69ac24441dc5b2e3e626017bb0fa228afe96d447e364bcac537be40ddb9e5d5" }, "downloads": -1, "filename": "extprot-0.2.4.tar.gz", "has_sig": false, "md5_digest": "00304550a8530e0d3027ebe37a6ec0dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23719, "upload_time": "2010-03-16T01:13:55", "url": "https://files.pythonhosted.org/packages/28/bf/3d3ead3ca0ac61c07cf73e395790ccc9a08df55b21bcd6257cc5c92a7fc6/extprot-0.2.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "00304550a8530e0d3027ebe37a6ec0dd", "sha256": "a69ac24441dc5b2e3e626017bb0fa228afe96d447e364bcac537be40ddb9e5d5" }, "downloads": -1, "filename": "extprot-0.2.4.tar.gz", "has_sig": false, "md5_digest": "00304550a8530e0d3027ebe37a6ec0dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23719, "upload_time": "2010-03-16T01:13:55", "url": "https://files.pythonhosted.org/packages/28/bf/3d3ead3ca0ac61c07cf73e395790ccc9a08df55b21bcd6257cc5c92a7fc6/extprot-0.2.4.tar.gz" } ] }