{ "info": { "author": "Andrej Radovi\u0107", "author_email": "r.andrej@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Embedded Systems", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Pre-processors" ], "description": "\n######\ncsnake\n######\n\n.. image:: https://gitlab.com/andrejr/csnake/badges/master/pipeline.svg\n :alt: pipeline status\n :target: https://gitlab.com/andrejr/csnake/pipelines\n.. image:: https://gitlab.com/andrejr/csnake/badges/master/coverage.svg\n :alt: coverage report\n :target: https://andrejr.gitlab.io/csnake/coverage/index.html\n\nCsnake is a Python 3 package that helps you generate C code from Python.\n\nCsnake provides you with a consistent and opinionated API that helps you\nstructure your C-generating Python code.\nIt does so by providing classes and functions for generating every C language\nconstruct.\n\nProbably the most important feature is the ability to initialize a value to\n``struct`` and *array* initializers from Python dicts and lists (actually,\n``Map``\\s and ``Collection``\\s), nested to an arbitrary level.\n\nHere's a taste:\n\n.. code-block:: python\n\n from csnake import CodeWriter, Variable, FormattedLiteral\n import numpy as np\n\n var = Variable(\n \"test\",\n primitive=\"struct whatever\",\n value={\n \"field1\": [{'x': num, 'y': 10-num} for num in range(2)],\n \"field2\": {'test': range(3), 'field': np.arange(6).reshape(2,3)},\n \"field3\": FormattedLiteral([30, 31, 32], int_formatter=hex),\n \"field4\": 8,\n },\n )\n cw = CodeWriter()\n cw.add_variable_initialization(var)\n print(cw)\n\n\nThis yields:\n\n.. code-block:: c\n\n struct whatever test = {\n .field1 = {\n {\n .x = 0,\n .y = 10\n },{\n .x = 1,\n .y = 9\n }\n },\n .field2 = {\n .test = {0, 1, 2},\n .field = {\n {0, 1, 2},\n {3, 4, 5}\n }\n\n },\n .field3 = {0x1e, 0x1f, 0x20},\n .field4 = 8\n };\n\nAs shown, ``numpy`` arrays are supported as values (so are ``sympy`` arrays),\nand values can be formatted by arbitrary functions (here we're using ``hex`` to\noutput ints as hex literals for member `field3`).\n\nMotivation\n==========\n\nCsnake's varable generation was motivated by a common embedded development\ntask: inputting data into C code.\n\nCsnake should be of help when generating C code for representing data like\nbitmaps, fonts, statemachines, lookup tables - as arrays and structs.\nIt can also be used for loop unrolling, templating, ...\n\nCsnake can be easily incorporated into a build system (Make, CMake,\nScons,...), and also goes along great with\n`Ned Batcher's cog `_.\n\nDocumentation\n=============\n\nDocumentation (Sphinx) can be viewed on\n`GitLab pages for this package `_.\n\nExamples\n========\n\nCsnake is used on several of my yet-to-be-released open source embedded\nprojects. I'll be adding those (and other) examples along the way.\n\nCredits\n=======\n\nCsnake is a major re-implementation (and improvement) of\n`C-Snake `_\nby\n`Oliver `_\n(original idea) and Andrej (variable initialization idea and implementation,\nauthor of this package).\n\nIt's provided under the MIT license.\n\nChangelog\n=========\n\nThe changelog can be found within the documentation, \n`here `_.\n\n\n", "description_content_type": "text/x-rst; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/andrejr/csnake", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "csnake", "package_url": "https://pypi.org/project/csnake/", "platform": "", "project_url": "https://pypi.org/project/csnake/", "project_urls": { "Homepage": "https://gitlab.com/andrejr/csnake" }, "release_url": "https://pypi.org/project/csnake/0.3.0/", "requires_dist": [ "numpy ; extra == 'numpy_arrays_matrices_types_as_initializers'", "pillow ; extra == 'pillow_images_as_initializers'", "sympy ; extra == 'sympy_arrays_matrices_types_as_initializers'" ], "requires_python": ">=3.6.0", "summary": "C code generation helper package.", "version": "0.3.0" }, "last_serial": 5704218, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "9d68ddf4c6e33e43bf0e9b87fc8746e4", "sha256": "01f238e24c056bb86fd4d75e666d535ce66ba22e5be8541ab0be371c26f522c2" }, "downloads": -1, "filename": "csnake-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9d68ddf4c6e33e43bf0e9b87fc8746e4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 24960, "upload_time": "2018-10-08T10:53:37", "url": "https://files.pythonhosted.org/packages/71/75/1ee2e1d1c0d1e8d8fa85fe3c7aaf6902810a9d1c4d7281fbef0b6a3a1cf9/csnake-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f53d4ca2aff5fb45e13c6242aea9cd5", "sha256": "e668bfba1bea12d2327b7e3f215117365d12627644da2c251e319c12f0988063" }, "downloads": -1, "filename": "csnake-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0f53d4ca2aff5fb45e13c6242aea9cd5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 553160, "upload_time": "2018-10-08T10:53:40", "url": "https://files.pythonhosted.org/packages/2e/1d/04bdd8abf065c8b1c4ddda69e87dc0faf8c51e9d2c7d239e03be80e6a79e/csnake-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "df58c3f0aee027c2feb9cdb6aeb2a2d3", "sha256": "ac4ffcdadf6ebc9bbf47c37d277043adac6785f771d5ddd999b34c1869d752d5" }, "downloads": -1, "filename": "csnake-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "df58c3f0aee027c2feb9cdb6aeb2a2d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 24956, "upload_time": "2018-10-08T11:20:38", "url": "https://files.pythonhosted.org/packages/9f/83/5606b6a61c208c06c0cd29db332f899fc1c039fd8d5adbfd037860a530a6/csnake-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fcfc988043bdf9daabb6f4fbe32de8f3", "sha256": "1c3add7a1c4456fca12a8ed44e019494f9f2ffbcda0f9957b00fb0f1455d7fd1" }, "downloads": -1, "filename": "csnake-0.2.1.tar.gz", "has_sig": false, "md5_digest": "fcfc988043bdf9daabb6f4fbe32de8f3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 263399, "upload_time": "2018-10-08T11:20:39", "url": "https://files.pythonhosted.org/packages/96/ba/b09be5b39e60a3f2db1fcc0ba866732ec3a1f16f4b25e16b3bf34abc9850/csnake-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "b79d11943810555539f1e30dae1f895e", "sha256": "e798889976826edbb264395a54d29b799a7aeedf8f94fb86f6f4efa1ff6a27bc" }, "downloads": -1, "filename": "csnake-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b79d11943810555539f1e30dae1f895e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 25200, "upload_time": "2018-10-08T17:03:25", "url": "https://files.pythonhosted.org/packages/36/c1/7b371f58ecb0fefd36cfca15822f909c6bd24a86fe18b4fecc2e0d7279bf/csnake-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "513c862fb0818b89888b14fc7b637c46", "sha256": "86e74c9adb74e0b1fac8af483d4a27b0b8ba57609eaec1ab2e4c5db145bfda8e" }, "downloads": -1, "filename": "csnake-0.2.2.tar.gz", "has_sig": false, "md5_digest": "513c862fb0818b89888b14fc7b637c46", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 264785, "upload_time": "2018-10-08T17:03:27", "url": "https://files.pythonhosted.org/packages/75/61/7f4c5182e1c95904662fa67fafefd5a292d285a3f5086da0e68a4c141b40/csnake-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "c3937a36a7a745365e3758ac32ec19fd", "sha256": "18b16467ee28c236f765af8ac6290d9496826f8b09ea369f85ddf93e2e0ba33b" }, "downloads": -1, "filename": "csnake-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c3937a36a7a745365e3758ac32ec19fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 25115, "upload_time": "2018-10-08T19:13:59", "url": "https://files.pythonhosted.org/packages/f9/a6/7325f2f3c82d011d7c6186ec268c50ad524603a3853a0ee51fd00f745a03/csnake-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f3f2ff96b097c9808305be0556ed4d16", "sha256": "237f4fb1eb6b0f6cc66ffd634f3f740ca3259085a6e8367592ca95f2beffc3d5" }, "downloads": -1, "filename": "csnake-0.2.3.tar.gz", "has_sig": false, "md5_digest": "f3f2ff96b097c9808305be0556ed4d16", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 264820, "upload_time": "2018-10-08T19:14:00", "url": "https://files.pythonhosted.org/packages/b2/38/c0ee4c05740b377c90a202c9683bc8f9bec517a3c5ca103d5fd2a77249a1/csnake-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "6ba140bab2816d152d8d62ee57f9d449", "sha256": "e8bde276bd99fcb610db121ea42ddba07e74d34a113b43e14751a0d7be7399c4" }, "downloads": -1, "filename": "csnake-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "6ba140bab2816d152d8d62ee57f9d449", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 28953, "upload_time": "2018-10-29T11:55:11", "url": "https://files.pythonhosted.org/packages/c8/f8/63b750ea8cea743d13818ad495473ac1d66f541759017f1105c09d2160a3/csnake-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6cf8de635c435890b54bfb14f48510b", "sha256": "5b588ed11f91607aa33ecea8d41c32a0b6c18e40e7a2172ffe706846d3855331" }, "downloads": -1, "filename": "csnake-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d6cf8de635c435890b54bfb14f48510b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9710117, "upload_time": "2018-10-29T11:55:13", "url": "https://files.pythonhosted.org/packages/45/ae/25ceeb2968d7a1def2818d6e280fd82c989839593a63157d9b4014c16e57/csnake-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "14fa6e249f4901f2cc2bb69fb23ae28e", "sha256": "59527a304dc61b162e23b18ef49a10a8f422a6fcb7ea60e504aa6149263a99cd" }, "downloads": -1, "filename": "csnake-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "14fa6e249f4901f2cc2bb69fb23ae28e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 29060, "upload_time": "2019-08-16T20:36:43", "url": "https://files.pythonhosted.org/packages/92/77/a51985870a34c2b4f35a953949a4662ba68695bbcc7f724a383b4e4435f1/csnake-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4be1b477edba7c3a0d17604950aa3408", "sha256": "a7caaed52b4b93436304e3ad08b49807e05aa2a7c20750e8243615af73519c13" }, "downloads": -1, "filename": "csnake-0.2.5.tar.gz", "has_sig": false, "md5_digest": "4be1b477edba7c3a0d17604950aa3408", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9699412, "upload_time": "2019-08-16T20:36:45", "url": "https://files.pythonhosted.org/packages/26/f5/bb66793f521ecd1be21dc56f9c5a5a3640db91506a3ab37d700d2784fb16/csnake-0.2.5.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "f9503ce47916ce20bd0c40f0d8ce7bb3", "sha256": "f5ce56aa6090b9ad83c9639753ccde1680382c186fe439b3d5a563845144902d" }, "downloads": -1, "filename": "csnake-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f9503ce47916ce20bd0c40f0d8ce7bb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 29186, "upload_time": "2019-08-20T16:03:46", "url": "https://files.pythonhosted.org/packages/e7/c3/b1c94764f1ee790507a5a09f0bd7b2925ab805f7be774b0f08b9500d2150/csnake-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bdcacfbf69c7fc4110b5ce50a197168f", "sha256": "868faef9551ff3166b66a65d19596eba42cc1a23a54c616c8893a8c4fa9eecfa" }, "downloads": -1, "filename": "csnake-0.3.0.tar.gz", "has_sig": false, "md5_digest": "bdcacfbf69c7fc4110b5ce50a197168f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9704416, "upload_time": "2019-08-20T16:03:48", "url": "https://files.pythonhosted.org/packages/c7/6c/2e71814386d0c4ae469ca84f03a2a43705e2cf45ad72b6c4f87ff6a832b1/csnake-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f9503ce47916ce20bd0c40f0d8ce7bb3", "sha256": "f5ce56aa6090b9ad83c9639753ccde1680382c186fe439b3d5a563845144902d" }, "downloads": -1, "filename": "csnake-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f9503ce47916ce20bd0c40f0d8ce7bb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 29186, "upload_time": "2019-08-20T16:03:46", "url": "https://files.pythonhosted.org/packages/e7/c3/b1c94764f1ee790507a5a09f0bd7b2925ab805f7be774b0f08b9500d2150/csnake-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bdcacfbf69c7fc4110b5ce50a197168f", "sha256": "868faef9551ff3166b66a65d19596eba42cc1a23a54c616c8893a8c4fa9eecfa" }, "downloads": -1, "filename": "csnake-0.3.0.tar.gz", "has_sig": false, "md5_digest": "bdcacfbf69c7fc4110b5ce50a197168f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9704416, "upload_time": "2019-08-20T16:03:48", "url": "https://files.pythonhosted.org/packages/c7/6c/2e71814386d0c4ae469ca84f03a2a43705e2cf45ad72b6c4f87ff6a832b1/csnake-0.3.0.tar.gz" } ] }