{ "info": { "author": "Ilia Galkin", "author_email": "km@j4u.su", "bugtrack_url": null, "classifiers": [], "description": "StructDC\n========\n.. image:: https://img.shields.io/pypi/v/structdc.svg\n :target: https://pypi.org/project/structdc/\n :alt: PyPI\n\n\nData class mapper for C structures\n\n**Warning: alpha version, work in progress**\n\nInstall\n-------\n.. code:: python\n\n pip install structdc\n\nFeatures\n--------\n* Supports packed and aligned structures\n* Generates serialization and deserialization methods on data class creation\n\nExample usage\n-------------\n.. code:: python\n\n from io import BytesIO\n from dataclasses import dataclass\n from structdc import StructMixin, Uint32, Uint64\n\n\n @dataclass\n class AlignedStruct(StructMixin):\n a: Uint32\n b: Uint64\n\n\n input = BytesIO(b'\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\xee\\xee\\xee\\xee\\xee\\xee\\xee\\xee')\n decoded = AlignedStruct.from_bytestream(input)\n print(decoded)\n \"\"\"\n AlignedStruct(a=4294967295, b=17216961135462248174)\n \"\"\"\n\n\n @dataclass\n class PackedStruct(StructMixin, packed=True):\n a: Uint32\n b: Uint64\n\n input.seek(0)\n\n decoded = PackedStruct.from_bytestream(input)\n print(decoded)\n \"\"\"\n PackedStruct(a=4294967295, b=17216961131453612032)\n \"\"\"\n\n output = BytesIO(b'\\x00' * 16)\n source_aligned = AlignedStruct(255, 65535)\n source_aligned.to_bytestream(output)\n output.seek(0)\n print(output.getvalue())\n \"\"\"\n b'\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00'\n \"\"\"\n\n output = BytesIO(b'\\x00' * 12)\n source_packed = PackedStruct(255, 65535)\n source_packed.to_bytestream(output)\n output.seek(0)\n print(output.getvalue())\n \"\"\"\n b'\\xff\\x00\\x00\\x00\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00'\n \"\"\"\n\nComing soon\n-----------\n* Float numbers\n* Strings and bytestrings\n* Arrays\n* Nested structures\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/KnifeMaster007/structdc", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "structdc", "package_url": "https://pypi.org/project/structdc/", "platform": "", "project_url": "https://pypi.org/project/structdc/", "project_urls": { "Homepage": "https://github.com/KnifeMaster007/structdc" }, "release_url": "https://pypi.org/project/structdc/0.0.3/", "requires_dist": null, "requires_python": ">=3.7", "summary": "Data class mapper for C structures", "version": "0.0.3" }, "last_serial": 4985306, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "1a36371cd34974d98899fa27e0066cc9", "sha256": "4411083125284864fb3e0c333ee792e42e2944424ce233b9e6e896330f0659e6" }, "downloads": -1, "filename": "structdc-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1a36371cd34974d98899fa27e0066cc9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 2400, "upload_time": "2019-03-25T22:34:27", "url": "https://files.pythonhosted.org/packages/ac/1a/35166424c3660d27a082ea8fb9e221b801f84bf4a1c6cc1eb4bc614af39e/structdc-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b30849a5a30f9b490ee7fa45b6297858", "sha256": "fa944fa3958358c139e32b5586f15b2262258a183cff803aa498ff394a94d2fd" }, "downloads": -1, "filename": "structdc-0.0.1.tar.gz", "has_sig": false, "md5_digest": "b30849a5a30f9b490ee7fa45b6297858", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 930, "upload_time": "2019-03-25T22:34:29", "url": "https://files.pythonhosted.org/packages/dc/95/03272f0e6d786e6e9c579e36724919f418b0993270ec8a8be355ff267db8/structdc-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "ac9e9f8d336cd437a2cfc852f2b6f9cc", "sha256": "9653d2035a0e9e21affea0d9cf1b0d4a242dea7cd6e60f456977d6e20a81d268" }, "downloads": -1, "filename": "structdc-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ac9e9f8d336cd437a2cfc852f2b6f9cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 2400, "upload_time": "2019-03-26T00:08:07", "url": "https://files.pythonhosted.org/packages/bc/6d/c2797349389d422d2d145b2a45c494eaef07a87d18eaa3cf64c0b83646c3/structdc-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4807be18ac87e7b7564cf7b80491eec9", "sha256": "593aa3c001c58e89af0326477119cfe44ee1a8f1f551d3abf72d05fb5178d3e0" }, "downloads": -1, "filename": "structdc-0.0.2.tar.gz", "has_sig": false, "md5_digest": "4807be18ac87e7b7564cf7b80491eec9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 1569, "upload_time": "2019-03-26T00:08:08", "url": "https://files.pythonhosted.org/packages/21/df/4f99e883c201b260ef13e0a2a25694ab13076caea0a8dbb094f70427b967/structdc-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "d684f77bd897484f0de7f58a83043142", "sha256": "bf7b8b1e0325de745967c9f83d3026822be53c0055e4298d576a8f23d63ed2b2" }, "downloads": -1, "filename": "structdc-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d684f77bd897484f0de7f58a83043142", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 3034, "upload_time": "2019-03-26T00:22:45", "url": "https://files.pythonhosted.org/packages/6a/49/8536ead009960de08bfadb29601c5983e6bf9615dfddb4068dc71be435f7/structdc-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c57bbd3330907434030df6524f9a2e27", "sha256": "a0df16f12b802ec08ba2662788648798d7c0197b1783f0c1e6b46a631b5b6836" }, "downloads": -1, "filename": "structdc-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c57bbd3330907434030df6524f9a2e27", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 1940, "upload_time": "2019-03-26T00:22:47", "url": "https://files.pythonhosted.org/packages/36/37/f44f05b1268f13b553d402e2e36eaf38ea9db12c96bd91c976fafd90c68d/structdc-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d684f77bd897484f0de7f58a83043142", "sha256": "bf7b8b1e0325de745967c9f83d3026822be53c0055e4298d576a8f23d63ed2b2" }, "downloads": -1, "filename": "structdc-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d684f77bd897484f0de7f58a83043142", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 3034, "upload_time": "2019-03-26T00:22:45", "url": "https://files.pythonhosted.org/packages/6a/49/8536ead009960de08bfadb29601c5983e6bf9615dfddb4068dc71be435f7/structdc-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c57bbd3330907434030df6524f9a2e27", "sha256": "a0df16f12b802ec08ba2662788648798d7c0197b1783f0c1e6b46a631b5b6836" }, "downloads": -1, "filename": "structdc-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c57bbd3330907434030df6524f9a2e27", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 1940, "upload_time": "2019-03-26T00:22:47", "url": "https://files.pythonhosted.org/packages/36/37/f44f05b1268f13b553d402e2e36eaf38ea9db12c96bd91c976fafd90c68d/structdc-0.0.3.tar.gz" } ] }