{ "info": { "author": "Michael Sparks (sparkslabs)", "author_email": "sparks.m@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "Pyxie -- A Little Python to C++ Compiler\n----------------------------------------\n\nWhat job does / will this do?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe aim of this project is to allow adults and children to write code in\na familiar high level language that can then be compiled to run on an\narbitrary embedded system - that is devices with very low power CPUs and\nvery little memory. (ie devices too small to host a python\ninterpreter/runtime)\n\nIt's pre-alpha at the moment. However, as of Sept 2016, it's beginning\nto be usable for compiling very simple python programs that can run\ndirectly on an arduino, starting with those that can control servos.\nThis means small python powered robots :)\n\nIt will be useful in supporting things like the The Scout Association's\n\"Digital Maker\" badge. That's a fair way off though.\n\nShow me something you CAN compile\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCurrently it can compile very very simple types of python program that\nlooks like this into an equivalent (simple) C++ program.\n\nExample program:\n\n::\n\n age = 10\n new_age = 10 +1\n new_age_too = age + 1\n new_age_three = age + new_age_too\n foo = \"Hello\"\n bar = \"World\"\n foobar = foo + bar\n\n print(10-1-2,7)\n print(1+2*3*4-5/7,25)\n print(age, new_age, new_age_too)\n print(foo, bar, foobar)\n\n countdown = 2147483647\n print(\"COUNTING DOWN\")\n while countdown:\n countdown = countdown - 1\n\n print(\"BLASTOFF\")\n\nExample results:\n\n::\n\n #include \n #include \n\n using namespace std;\n\n int main(int argc, char *argv[])\n {\n int age;\n string bar;\n int countdown;\n string foo;\n string foobar;\n int new_age;\n int new_age_three;\n int new_age_too;\n\n age = 10;\n new_age = (10+1);\n new_age_too = (age+1);\n new_age_three = (age+new_age_too);\n foo = \"Hello\";\n bar = \"World\";\n foobar = (foo+bar);\n cout << ((10-1)-2) << \" \" << 7 << endl;\n cout << ((1+((2*3)*4))-(5/7)) << \" \" << 25 << endl;\n cout << age << \" \" << new_age << \" \" << new_age_too << endl;\n cout << foo << \" \" << bar << \" \" << foobar << endl;\n countdown = 2147483647;\n cout << \"COUNTING DOWN\" << endl;\n while(countdown) {\n countdown = (countdown-1);\n };\n cout << \"BLASTOFF\" << endl;\n return 0;\n }\n\nWhat does it do?\n~~~~~~~~~~~~~~~~\n\nCurrently:\n\n- Recognise simple sequential python programs with simple statements\n- Can handle basic conditionals and while loops\n- Custom includes, and function calls to C/C++ functions (within\n limits)\n- Parse those to an AST\n- Can represent equivalent C programs using a concrete C representation\n (CST)\n- Can translate the AST to the CST and then generate C++ code from the\n CST\n\nPython structural things it supports:\n\n- While loop statements\n- Comparisons\n- If/elif/elif/else statements\n- For loops - specific for X in range(Y)\n- Function calls into libraries that we link with\n\nThis is close to allowing actually useful programs now.\n\nIt's a starting point, not the end point. For that, take a look at the\nlanguage spec.\n\nPyxie is intended to be a simple Python to C++ compiler, with a target\nof compiling python code such that it can run on a microcontroller -\nlike Arduino, MSP430 or ARM mbed type devices.\n\nThe name is a play on words. Specifically, Python to C++ - can be py2cc\nor pycc. If you try pronouncing \"pycc\" it can be \"pic\", \"py cc\" or\npyc-c\". The final one leads to Pixie.\n\nThis is unlikely to ever be a completely general python to C++ compiler\n- if you're after than look at Shed Skin, or things like Cython, Pyrex,\nand PyPy. (in terms of diminishing similarity) The difference this\nproject has from those is that this project assumes a very small target\ndevice. Something along the lines of an Atmega 8A, Atmega 328 or more\ncapable.\n\nIn the past I've written a test driven compiler suite, so I'll be\nfollowing the same approach here. It did consider actually making Pyxie\nuse that as a frontend, but for the moment, I'd like python\ncompatibility.\n\nWhy not micropython? Micropython is **ace** . If your device is large\nenough to support the micropython runtime, use it! The aim of this is on\nthe really small microcontrollers- the ones too small to even support\nmicropython - like an MSP430, or an Atmega 8A or similarly tiny MCU.\n\nIn the past I've written a test driven compiler suite, so I'll be\nfollowing the same approach here. It did consider actually making Pyxie\nuse that as a frontend, but for the moment, I'd like python\ncompatibility.\n\nStatus Overview\n---------------\n\nFor the impatient: this probably does **NOT** do what you want, **yet**.\n\nHigh level view of support:\n\n- Supports variables, sequence, and assignment\n- while loops controlled by expressions, possibly involving variables\n- while loops can contain break/continue which allows \"if\" style\n functionality\n- Also have basic conditional operators like \"==\", \"!=\", etc.\n- Ability to pull in C++ includes on standard paths\n\nThis means we can almost start writing useful programs, but in\nparticular can start creating simplistic benchmarks for measuring run\nspeed. It IS getting there however, and feedback, usecases, devices very\nwelcome.\n\nInfluences\n----------\n\nMany moons ago, I made a generic language parser which I called SWP\n(semantic whitespace parser), or Gloop.\n\n- https://github.com/sparkslabs/minisnips/tree/master/SWP\n- http://www.slideshare.net/kamaelian/swp-a-generic-language-parser\n\nIt was an experiment to see if you could write a parser that had no\nkeywords, or similar, in a completely test driven fashion. ie a bit like\na parser for a Lisp like language that would look like python or ruby.\nIt turns out that you can and there's lots of interesting things that\narise if you do. (Best seen in the slideshare link)\n\nWhich version of Python?\n------------------------\n\nIt's not a complete subset of any particular python, but it's based\naround the intersection points in python 2 and 3. It will be, by\ndefinition, a non-dynamic subset - at least at first.\n\n- For detail as to what's planned for the language, take a look at the\n language spec.\n- For an overview as to the guiding principles, please take a look at\n project status\n- For detail as to what's actually implemented, take a look at language\n status\n\nThese are all a WIP, but becoming more solid.\n\nWhy write this?\n---------------\n\nPersonally, having built something simpler in the past, I know I'd find\nit useful. (I use python rather than C++ often because I can write more\nquicker with the former). Also, I work with kids in my spare time, and\nit opens up options there.\n\nI've written something like this for work last year, but that was much\nmore limited and restricted in both aspiration and implementation. This\nrewrite is something I've done on my own time, with my own tools, from\nscratch, which allows me to share this with others.\n\nMajor changes:\n\n- This aims to be a more rounded implementation\n- This performs transforms from an AST (abstract syntax tree) to a CCR\n (concrete code representation), rather than munging code directly\n from a concrete parse tree.\n\nThat potentially allows other things, like creation of visual\nrepresentations of programs from code as well.\n\nIs this part of any larger project?\n-----------------------------------\n\nNo. It could be used by others, but it's got a definite goal - to allow\nthe use of a \"little\" python to program devices which are too small to\nhost a python runtime.\n\nIf anything, it's a continuation of the personal itch around SWP\n(mentioned above) from about 10 years ago. Unlike that though, it's\nmuch, much better structured.\n\nOne thing that may happen though is the ability to take python classes\nand derive iotoy device implementations/interfaces directly. (since\niotoy was inspired heavily by python introspection) That's quite some\ntime off.\n\nRelease History\n---------------\n\nRelease History:\n\n- 0.1.25 - 2018-02-03 - Major changes to internal representation and\n some new examples\n- 0.1.24 - 2016-11-10 - Fix assignment in else/elif, update to support\n Ubuntu 16.04LTS, initial steps on function/def statement support\n- 0.1.23 - 2016-10-11 - Major arduino profile improvements,\n print-as-function not statement\n- 0.0.22 - 2016-09-25 - Enable ability to use a variety of Arduino\n boards by using an Makefile.in file\n- 0.0.21 - 2016-09-17 - Adds ability to control Arduino servo objects.\n Quite a lot of internal changes to support that\n- 0.0.20 - 2016-08-12 - Mainly internal changes. Adds WIPNOTES, updates\n arduino examples\n- 0.0.19 - 2016-01-31 - Continued work on arduino profile and initial\n Python3 support\n- 0.0.18 - 2016-01-10 - Grammar changes to support object attributes\n and methods, start of servo support in arduino profile.\n- 0.0.17 - 2015-08-12 - Add pass statement, enable \"for\" on arduino,\n update documentation, refactor pyxie harness\n- 0.0.16 - 2015-08-02 - Adds initial Arduino LEONARDO support, improved\n function call, release build scripts\n- 0.0.15 - 2015-07-18 - clib converted to py clib for adding to build\n directory\n- 0.0.14 - 2015-07-18 - For loops implemented. Added clib code, C++\n generator implementation, FOR loop style test harness, parsing and\n basic analysis of of FOR loops using a range interator\n- 0.0.13 - 2015-06-21 - if/elif/else,conditionals/boolean/parenthesised\n expressions.\n- 0.0.12 - 2015-06-16 - While loops, break/continue, Website,\n comparison operators, simple benchmark test\n- 0.0.11 - 2015-06-06 - Function calls; inclusion of custom C++\n headers; empty statements; language spec updates\n- 0.0.10 - 2015-06-03 - Analysis phase to make type inference work\n better. Lots of related changes. Implementation of expression\n statements.\n- 0.0.9 - 2015-05-23 - Grammar changed to be left, not right recursive.\n (Fixes precedence in un-bracketed expressions) Added standalone\n compilation mode - outputs binaries from python code.\n- 0.0.8 - 2015-05-13 - Internally switch over to using node objects for\n structure - resulting in better parsing of expressions with variables\n and better type inference.\n- 0.0.7 - 2015-04-29 - Structural, testing improvements, infix\n operators expressions (+ - \\* / ) for integers, precdence fixes\n- 0.0.6 - 2015-04-26 - Character Literals, \"plus\" expressions,\n build/test improvements\n- 0.0.5 - 2015-04-23 - Core lexical analysis now matches language spec,\n including blocks\n- 0.0.4 - 2015-04-22 - Mixed literals in print statements\n- 0.0.3 - 2015-04-21 - Ability to print & work with a small number of\n variables\n- 0.0.2 - 2015-03-30 - supports basic assignment\n- 0.0.1 - Unreleased - rolled into 0.0.2 - Initial structure\n\nLanguage Status\n---------------\n\n::\n\n program : statements\n statements : statement\n | statement statements\n\n statement_block : INDENT statements DEDENT\n\n statement : assignment_statement\n | general_expression\n | EOL\n | while_statement\n | break_statement\n | continue_statement\n | pass_statement\n | if_statement\n | for_statement\n\n assignment_statement : IDENTIFIER ASSIGN general_expression # ASSIGN is currently limited to \"=\"\n\n while_statement : WHILE general_expression COLON EOL statement_block\n\n break_statement : BREAK\n\n pass_statement : PASS\n\n continue_statement : CONTINUE\n\n if_statement : IF general_expression COLON EOL statement_block\n | IF general_expression COLON EOL statement_block extended_if_clauses\n\n extended_if_clauses : else_clause\n | elif_clause\n\n else_clause : ELSE COLON EOL statement_block\n\n elif_clause : ELIF general_expression COLON EOL statement_block\n | ELIF general_expression COLON EOL statement_block extended_if_clauses\n\n # NOTE: print_statement has been removed and replaced by python 3 style function\n\n for_statement : FOR IDENTIFIER IN general_expression COLON EOL statement_block\n\n expr_list : general_expression\n | general_expression COMMA expr_list\n\n general_expression : boolean_expression\n\n boolean_expression : boolean_and_expression\n | boolean_expression OR boolean_and_expression\n\n boolean_and_expression : boolean_not_expression\n | boolean_and_expression AND boolean_not_expression\n\n boolean_not_expression : relational_expression\n | NOT boolean_not_expression\n\n relational_expression : expression\n | relational_expression COMPARISON_OPERATOR expression\n\n expression : arith_expression\n | expression '+' arith_expression\n | expression '-' arith_expression\n | expression '**' arith_expression\n\n arith_expression : negatable_expression_atom\n | arith_expression '*' negatable_expression_atom\n | arith_expression '/' negatable_expression_atom\n\n\n negatable_expression_atom : \"-\" negatable_expression_atom\n | expression_molecule\n\n expression_molecule : expression_atom\n | bracketed_expression\n\n expression_atom : value_literal\n | expression_atom '(' expr_list ')' # Function call\n | expression_atom '(' ')' # Function call, with no arguments\n\n bracketed_expression : PARENL general_expression PARENR\n\n value_literal : number\n | STRING\n | CHARACTER\n | BOOLEAN\n | identifiable\n\n identifiable : IDENTIFIER\n | expression_molecule dotexpression\n\n dotexpression : DOT IDENTIFIER\n\n number : NUMBER\n | FLOAT\n | HEX\n | OCTAL\n | BINARY\n | LONG (suffice is L)\n | UNSIGNEDLONG (suffice is l)\n | '-' number\n\nCurrent Lexing rules used by the grammar:\n\n::\n\n NUMBER : \\d+\n FLOAT : \\d+.\\d+ # different from normal python, which allows .1 and 1.\n HEX : 0x([abcdef]|\\d)+\n OCTAL : 0o\\d+\n BINARY : 0b\\d+\n STRING - \"([^\"]|\\.)*\" or '([^']|\\.)*' # single/double quote strings, with escaped values\n CHARACTER : c'.' / c\".\" # Simplification - can be an escaped character\n BOOLEAN : True|False\n IDENTIFIER : [a-zA-Z_][a-zA-Z0-9_]*\n\nLimitations\n-----------\n\nMost expressions currently rely on the C++ counterparts. As a result not\nall combinations which are valid are directly supported yet. Notable\nones:\n\n- Combinations of strings with other strings (outlawing /\\*, etc)\n- Combinations of strings with numbers\n\nprint statement?\n----------------\n\nPython 2 has a print statement. Python 3 doesn't. In early days of\nPyxie, Pyxie supported a python 2 statement to make life easier before\nfunction calls were implemented, with a note to say that \"print\" as a\nstatement would disappear.\n\nAs of 0.1.23, the print\\_statement has been removed. As well as being\nsimplifying the syntax, it also means that Arudino statements like\nSerial.print now become legal statements.\n\nMichael Sparks, February 2018", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.sparkslabs.com/pyxie/", "keywords": "", "license": "Apache Software License", "maintainer": "", "maintainer_email": "", "name": "pyxie", "package_url": "https://pypi.org/project/pyxie/", "platform": "", "project_url": "https://pypi.org/project/pyxie/", "project_urls": { "Homepage": "http://www.sparkslabs.com/pyxie/" }, "release_url": "https://pypi.org/project/pyxie/0.1.25/", "requires_dist": null, "requires_python": "", "summary": "Little Python to C++ Compiler", "version": "0.1.25" }, "last_serial": 3548987, "releases": { "0.0.1": [], "0.0.10": [ { "comment_text": "", "digests": { "md5": "c44f51786a9526bd9dc718748fe90763", "sha256": "3516b48fa5e8d273c593e76a44e1c5918672d3693d17c3841fcd3a47f7991f29" }, "downloads": -1, "filename": "pyxie-0.0.10.tar.gz", "has_sig": false, "md5_digest": "c44f51786a9526bd9dc718748fe90763", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31597, "upload_time": "2015-06-03T20:21:36", "url": "https://files.pythonhosted.org/packages/e9/e3/772e8ff05c7839c62e2e9eeb3f4989b5531e9b5dcb01b0bac56eafff3503/pyxie-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "208f8d3ba5aa506cd64837e018f8d22a", "sha256": "403429e9842365e29b4139960eb5d55d347f3ec99075a60c1b3b22072ca81aa5" }, "downloads": -1, "filename": "pyxie-0.0.11.tar.gz", "has_sig": false, "md5_digest": "208f8d3ba5aa506cd64837e018f8d22a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32868, "upload_time": "2015-06-06T21:26:39", "url": "https://files.pythonhosted.org/packages/6b/a4/75648a4e76ff0307199effd9e2910e609544f84f8d9a5d74962123cb64a6/pyxie-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "e3697c81d16be802ee79453e93cc4dbd", "sha256": "0945f4010fb7dfc57463ac1f3be367e2491bece636aa4a0954d4efc2b29af0ea" }, "downloads": -1, "filename": "pyxie-0.0.12.tar.gz", "has_sig": false, "md5_digest": "e3697c81d16be802ee79453e93cc4dbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37958, "upload_time": "2015-06-16T23:45:15", "url": "https://files.pythonhosted.org/packages/87/0e/04324b966e62b31c2a819f11eb10ead05c81929b49558af500718d558648/pyxie-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "ec3a4ed25277d74a7a9c7fc09e4d0536", "sha256": "a6f5b2dfe14620f6f19c3a8c664f3b94ccd96c68888c5841bde5660fef7ed6d7" }, "downloads": -1, "filename": "pyxie-0.0.13.tar.gz", "has_sig": false, "md5_digest": "ec3a4ed25277d74a7a9c7fc09e4d0536", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41497, "upload_time": "2015-06-21T21:54:58", "url": "https://files.pythonhosted.org/packages/cc/3e/0d12e7f4aeb3e41d260c8c933f78eeb1fcd2486da44505aa0206c0dc103a/pyxie-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "99c315192de06566064fe1673b5f45a7", "sha256": "3138bf6202a41fa2158c0d8943214ed59a9e399382a4e792ad570f111d647b91" }, "downloads": -1, "filename": "pyxie-0.0.14.tar.gz", "has_sig": false, "md5_digest": "99c315192de06566064fe1673b5f45a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46107, "upload_time": "2015-07-18T18:52:45", "url": "https://files.pythonhosted.org/packages/0b/81/384b3dad50bc2575135d42601ccdd7c3f5719fdb2421dbbd8d78b72ee510/pyxie-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "a6d210e65948b7b41c588de6f01aa416", "sha256": "6cab19d4b1308fc5613d26e434ef29e2d46ab1bdd97cf7acac644f9630de01f7" }, "downloads": -1, "filename": "pyxie-0.0.15.tar.gz", "has_sig": false, "md5_digest": "a6d210e65948b7b41c588de6f01aa416", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47004, "upload_time": "2015-07-18T22:23:20", "url": "https://files.pythonhosted.org/packages/c3/9e/9fa0fa46d0bd092ef31e703cc7719d83411d7b15b112e8fa429f412ce4cb/pyxie-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "ebe4a7c5f6657923c74a223d50994db5", "sha256": "07e27dd72392cbefe2c8292db91b3c947ebe773bbb31150fa9c1c5badc1f03f7" }, "downloads": -1, "filename": "pyxie-0.0.16.tar.gz", "has_sig": false, "md5_digest": "ebe4a7c5f6657923c74a223d50994db5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73497, "upload_time": "2015-08-02T21:24:31", "url": "https://files.pythonhosted.org/packages/d3/6f/26dbba70ae8b515a2918347c30edcf5b85495b1d4f43dd4b0974c4ab33e2/pyxie-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "3a219995f0ca5b8b1e74dba631cba271", "sha256": "59dcbe5ad716c001c550ceff5703f5ab73e1a2e4a71150c2b2a55ede5daa17fb" }, "downloads": -1, "filename": "pyxie-0.0.17.tar.gz", "has_sig": false, "md5_digest": "3a219995f0ca5b8b1e74dba631cba271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74004, "upload_time": "2015-08-12T22:15:28", "url": "https://files.pythonhosted.org/packages/97/14/78db7caa20a094e8ac1cd4b50f83001983787e813973b58f378f281946c8/pyxie-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "21d4fca54a3cf590a4ca09b5e6f66426", "sha256": "8f12cc6f57c862b99f2a7f63ee0eabd78cc5b4253839cb27a307fcb0c36fd744" }, "downloads": -1, "filename": "pyxie-0.0.18.tar.gz", "has_sig": false, "md5_digest": "21d4fca54a3cf590a4ca09b5e6f66426", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86874, "upload_time": "2016-01-10T22:22:40", "url": "https://files.pythonhosted.org/packages/0c/1d/fa4ade8a4654e442af1d89470cde3f033134cb8cd8dfaa36c25ed9ef5fc7/pyxie-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "02da29f1cf98d65504a845fd53914476", "sha256": "2ec0e634782a7bf8eebc4e91e835e1a63e4447849789a450af1752e3c902c652" }, "downloads": -1, "filename": "pyxie-0.0.19.tar.gz", "has_sig": false, "md5_digest": "02da29f1cf98d65504a845fd53914476", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91749, "upload_time": "2016-01-31T17:36:42", "url": "https://files.pythonhosted.org/packages/2e/9e/722bfd41a38791f605c147dbe1b6d934d4319e8d41d82a53a98f905996aa/pyxie-0.0.19.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "81448779249d8c0aa264f21191e9c20e", "sha256": "6694f6486100c2055ee4f1d86eee2ebd19607165213d08ac9bbbfda3a3ae1ff9" }, "downloads": -1, "filename": "pyxie-0.0.2.tar.gz", "has_sig": false, "md5_digest": "81448779249d8c0aa264f21191e9c20e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8782, "upload_time": "2015-03-30T02:05:44", "url": "https://files.pythonhosted.org/packages/a2/48/7f76fd691b15c0dbff321a695af39e5f90e08d1d2712dc12080dfa694bec/pyxie-0.0.2.tar.gz" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "8f51122244cbbbd313308021edeeabbd", "sha256": "b32ef479b60c16b9e70bf3a91a810c185ee98d2bd83c49b96c5ad626bf9c9c62" }, "downloads": -1, "filename": "pyxie-0.0.20.tar.gz", "has_sig": false, "md5_digest": "8f51122244cbbbd313308021edeeabbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 105859, "upload_time": "2016-08-12T14:14:13", "url": "https://files.pythonhosted.org/packages/39/53/9c11fca400cbe59fa48c0d0a2ec8eb4aae05373fcc920899ce4744caef6c/pyxie-0.0.20.tar.gz" } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "6e8e4e40a4251dc80b9f53182b36fd31", "sha256": "438e17d26bcf1c4ec6544af614540a344edddb45b06d3b0c4d442f01b8b052b4" }, "downloads": -1, "filename": "pyxie-0.0.21.tar.gz", "has_sig": false, "md5_digest": "6e8e4e40a4251dc80b9f53182b36fd31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 108067, "upload_time": "2016-09-17T16:37:23", "url": "https://files.pythonhosted.org/packages/6b/f4/6dd118d631c2d809a378355af451ceab8faf838aa96b1de5efbb4da6847f/pyxie-0.0.21.tar.gz" } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "b2ff07953b607d31362a7ee955db553b", "sha256": "7ab69db16fd1e7959466cc6e6a6318cd77dcf06f46a187e0146bc6e22b5b7de6" }, "downloads": -1, "filename": "pyxie-0.0.22.tar.gz", "has_sig": false, "md5_digest": "b2ff07953b607d31362a7ee955db553b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 109244, "upload_time": "2016-09-25T22:15:08", "url": "https://files.pythonhosted.org/packages/2d/b0/0cbc3286a6f31389158e62205573e34bcc5e726dec853cbe90add490466a/pyxie-0.0.22.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "6668359eb740f48a944134e21fdafda0", "sha256": "7151035ce3b613bac3211f32ea5314d76b8df1d82ae06449b8da6b2a1995e666" }, "downloads": -1, "filename": "pyxie-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6668359eb740f48a944134e21fdafda0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23522, "upload_time": "2015-04-21T21:55:55", "url": "https://files.pythonhosted.org/packages/b0/b7/c2291e664e381f556d81db772f6f70c96ad3f7f05e1566e9a124144a8fdd/pyxie-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "b9e9665e67808c58619f0a5a14a7c261", "sha256": "507c77b04454b2fe99e30a6c958885b054f058730152bd129cf7daab3d2a607b" }, "downloads": -1, "filename": "pyxie-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b9e9665e67808c58619f0a5a14a7c261", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24930, "upload_time": "2015-04-22T18:36:44", "url": "https://files.pythonhosted.org/packages/18/e0/09e34d57c3bcfab1e28832ffad96a9acec7f4dd7358aef9e9d732f42dc47/pyxie-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "8f2ae2dcdc9bd04e5e9bb6cbdc47254b", "sha256": "58ff96de1ecd16a61cb1fed5294ad4f030c8d7d86bc606b681e7acfa4f5e0397" }, "downloads": -1, "filename": "pyxie-0.0.5.tar.gz", "has_sig": false, "md5_digest": "8f2ae2dcdc9bd04e5e9bb6cbdc47254b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38625, "upload_time": "2015-04-23T19:25:51", "url": "https://files.pythonhosted.org/packages/68/b3/0787682292ad838a04fb9c412d323fceffe3a0412e14a882f05a391a2130/pyxie-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "695bdc2c9eabd77c9a7bd8b2354e73cc", "sha256": "5e402a176b536cd8ba495ca73013e5e9b54e047cfba66578d2c6e3f198950bd5" }, "downloads": -1, "filename": "pyxie-0.0.6.tar.gz", "has_sig": false, "md5_digest": "695bdc2c9eabd77c9a7bd8b2354e73cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28834, "upload_time": "2015-04-26T23:19:55", "url": "https://files.pythonhosted.org/packages/e7/e2/011f8de4bff8cd98eaaec366ee003723ead30233d5545b30115bf8f2e019/pyxie-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "9be1bbd1f662b27ba47435a7f25eae99", "sha256": "c93e724a81b85246ba3f03556cb83c7ad36dd7f3f84651c05946ed44828c0cbc" }, "downloads": -1, "filename": "pyxie-0.0.7.tar.gz", "has_sig": false, "md5_digest": "9be1bbd1f662b27ba47435a7f25eae99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33566, "upload_time": "2015-04-29T19:55:17", "url": "https://files.pythonhosted.org/packages/82/9b/a22b33bfd3e688d860e39e8cd5b6d4f2a76fa31319dd1b06fb50a4f13f7f/pyxie-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "8be7bdfba6e62895da8082279d1ebb56", "sha256": "63957cdd7f2b2b02e0a388b9cd47d2aec92ba4e6f2e10e2043a6fa65e34e6f8b" }, "downloads": -1, "filename": "pyxie-0.0.8.tar.gz", "has_sig": false, "md5_digest": "8be7bdfba6e62895da8082279d1ebb56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62089, "upload_time": "2015-05-13T01:14:27", "url": "https://files.pythonhosted.org/packages/5c/78/2a971a366b9e99b34c8cde4ab6788182f5e70c2cab6ed11c26e98b789258/pyxie-0.0.8.tar.gz" } ], "0.0.8-1": [ { "comment_text": "", "digests": { "md5": "a240795a63144e0df78d3d965e170aa6", "sha256": "b673842855d60f67209738ca6574dd1b8a4d360f5f3e1607db9029bd88b471ad" }, "downloads": -1, "filename": "pyxie-0.0.8-1.tar.gz", "has_sig": false, "md5_digest": "a240795a63144e0df78d3d965e170aa6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62161, "upload_time": "2015-05-13T01:15:25", "url": "https://files.pythonhosted.org/packages/c9/9a/9044e002443bb08c13311255eeefdbadea51a2b25f9012d854b083af6455/pyxie-0.0.8-1.tar.gz" } ], "0.0.8-2": [ { "comment_text": "", "digests": { "md5": "35099bab7d2540a2a2556a09660ad3bb", "sha256": "dd3b425475d14adb01cd23071b228b8fc1af8bd85a1637189db1f73a5fb47509" }, "downloads": -1, "filename": "pyxie-0.0.8-2.tar.gz", "has_sig": false, "md5_digest": "35099bab7d2540a2a2556a09660ad3bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62149, "upload_time": "2015-05-13T01:16:07", "url": "https://files.pythonhosted.org/packages/5e/ea/4ae7bb057e0e0bf636e02c6d77d5b20787405db417bb31766750bfc1b0c4/pyxie-0.0.8-2.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "e10d38123eb3c21915c4d7f37a921bab", "sha256": "1e13c9c489f9be575786a235bd747e5da34666865bb8ec102eaeb58efe0c4ab6" }, "downloads": -1, "filename": "pyxie-0.0.9.tar.gz", "has_sig": false, "md5_digest": "e10d38123eb3c21915c4d7f37a921bab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24636, "upload_time": "2015-05-23T09:59:50", "url": "https://files.pythonhosted.org/packages/fa/ce/0bb1313dcec944c90639cad035502fb71021fe468d4e158705276fd290b2/pyxie-0.0.9.tar.gz" } ], "0.1.23": [ { "comment_text": "", "digests": { "md5": "3d0787d61aa4865f49fbce2628fcbb35", "sha256": "efaf2f685d626e7225773f4ac8088a711a662800e35c51253506378c53effa02" }, "downloads": -1, "filename": "pyxie-0.1.23.tar.gz", "has_sig": false, "md5_digest": "3d0787d61aa4865f49fbce2628fcbb35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 121983, "upload_time": "2016-10-11T20:51:09", "url": "https://files.pythonhosted.org/packages/a4/0f/cb43ae65839d64e4319270e5666ce5ab464793d48ed9aa5d3ba5fb9bd9f4/pyxie-0.1.23.tar.gz" } ], "0.1.24": [ { "comment_text": "", "digests": { "md5": "8739d0de9121ef65fec86264198d4928", "sha256": "aed910ac63f95ca0dc8079ea4fb85cc04b720d30385736e0876a995aae5bf87b" }, "downloads": -1, "filename": "pyxie-0.1.24.tar.gz", "has_sig": false, "md5_digest": "8739d0de9121ef65fec86264198d4928", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 130757, "upload_time": "2016-11-10T19:20:20", "url": "https://files.pythonhosted.org/packages/c7/20/9eb2c252de1450103c475c4b765aa9178419bfe515bad24aef2c458ed3d1/pyxie-0.1.24.tar.gz" } ], "0.1.25": [ { "comment_text": "", "digests": { "md5": "50e085ce22e335497a63b2797401aaea", "sha256": "9dd175774a95584e560f6a3d092d6c010eebf57e7e8ff1616ce1dfafda7e154a" }, "downloads": -1, "filename": "pyxie-0.1.25.tar.gz", "has_sig": false, "md5_digest": "50e085ce22e335497a63b2797401aaea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 253165, "upload_time": "2018-02-03T18:53:46", "url": "https://files.pythonhosted.org/packages/b4/b6/146d1fe999ce0acb282c7d11e34e657392ac14e5aa856a5ee645528844f0/pyxie-0.1.25.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "50e085ce22e335497a63b2797401aaea", "sha256": "9dd175774a95584e560f6a3d092d6c010eebf57e7e8ff1616ce1dfafda7e154a" }, "downloads": -1, "filename": "pyxie-0.1.25.tar.gz", "has_sig": false, "md5_digest": "50e085ce22e335497a63b2797401aaea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 253165, "upload_time": "2018-02-03T18:53:46", "url": "https://files.pythonhosted.org/packages/b4/b6/146d1fe999ce0acb282c7d11e34e657392ac14e5aa856a5ee645528844f0/pyxie-0.1.25.tar.gz" } ] }