{ "info": { "author": "Mateusz Bysiek", "author_email": "mateusz.bysiek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Education", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Compilers", "Topic :: Software Development :: Pre-processors", "Topic :: Utilities" ], "description": ".. role:: bash(code)\n :language: bash\n\n.. role:: python(code)\n :language: python\n\n\n=========\ntranspyle\n=========\n\nHuman-oriented and high-performing transpiler for Python.\n\n.. image:: https://img.shields.io/pypi/v/transpyle.svg\n :target: https://pypi.org/project/transpyle\n :alt: package version from PyPI\n\n.. image:: https://travis-ci.org/mbdevpl/transpyle.svg?branch=master\n :target: https://travis-ci.org/mbdevpl/transpyle\n :alt: build status from Travis CI\n\n.. image:: https://ci.appveyor.com/api/projects/status/github/mbdevpl/transpyle?branch=master&svg=true\n :target: https://ci.appveyor.com/project/mbdevpl/transpyle\n :alt: build status from AppVeyor\n\n.. image:: https://codecov.io/gh/mbdevpl/transpyle/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/mbdevpl/transpyle\n :alt: test coverage from Codecov\n\n.. image:: https://img.shields.io/github/license/mbdevpl/transpyle.svg\n :target: https://github.com/mbdevpl/transpyle/blob/master/NOTICE\n :alt: license\n\nThe main aim of transpyle is to let everyone who can code well enough in Python,\nbenefit from modern high-performing computer hardware without need to reimplement their application\nin one of traditional efficient languages such as C or Fortran.\n\n.. contents::\n :backlinks: none\n\n\nFramework design\n================\n\nFramework consists of mainly the following kinds of modules:\n\n* parser\n\n* abstract syntax tree (AST) generalizer\n\n* unparser\n\n* compiler\n\n* binder\n\nAt least some of the modules are expected to be implemented for each language\nsupported by the framework.\n\nThe modules are responsible for transforming the data between the following states:\n\n* language-specific code\n\n* language-specific AST\n\n* extended Python AST\n\n* compiled binary\n\n* Python interface for compiled binary\n\nAnd thus:\n\n* parser transforms language-specific code into language-specific AST\n\n* AST generalizer transforms language-specific AST into extended Python AST\n\n* unparser transforms extended Python AST into language-specific code\n\n* compiler transforms language-specific code into compiled binary\n\n* binder transforms compiled binary into Python interface for compiled binary\n\nThe intermediate meeting point which effectively allows code to actually be transpiled between\nlanguages, is the extended Python AST.\n\n\nFeatures\n========\n\nUsing Python AST as the intermediate representation, enables the AST to be directly manipulated,\nand certain performance-oriented transformations can be applied. Current transpiler implementation\naims at:\n\n* inlining selected calls\n* decorating selected loops with compiler-extension pragmas\n\nMore optimizations will be introduced in the future.\n\nSome (if not all) of the above optimizations may have very limited (if not no) performance impact\nin Python, however when C, C++ or Fortran code is generated, the performance gains can be\nmuch greater.\n\n\nCommand-line interface\n----------------------\n\nThe command-line interface (CLI) of transpyle allows one to translate source code files\nin supported languages.\n\n\n\nAPI highlights\n--------------\n\nThe API of transpyle allows using it to make your Python code faster.\n\nThe most notable part of the API is the ``transpile`` decorator, which in it's most basic form\nis not very different from Numba's ``jit`` decorator.\n\n.. code:: python\n\n import transpyle\n\n @transpyle.transpile('Fortran')\n def my_function(a: int, b: int) -> int:\n return a + b\n\n\nAdditionally, you can use each of the modules of the transpiler individually, therefore transpyle\ncan support any transformation sequence you are able to express:\n\n.. code:: python\n\n import pathlib\n import transpyle\n\n path = pathlib.Path('my_script.py')\n code_reader = transpyle.CodeReader()\n code = code_reader.read_file(path)\n\n from_language = transpyle.Language.find('Python 3.6')\n to_language = transpyle.Language.find('Fortran 95')\n translator = transpyle.AutoTranslator(from_language, to_language)\n fortran_code = translator.translate(code, path)\n print(fortran_code)\n\n\nAs transpyle is under heavy development, the API might change significantly between versions.\n\n\nLanguage support\n----------------\n\nTranspyle intends to support selected subsets of: C, C++, Cython, Fortran, OpenCL and Python.\n\nFor each language pair and direction of translation, the set of supported features may differ.\n\n\nC to Python AST\n~~~~~~~~~~~~~~~\n\nC-specific AST is created via pycparse, and some of elementary C syntax is transformed into\nPython AST.\n\n\nPython AST to C\n~~~~~~~~~~~~~~~\n\nNot implemented yet.\n\n\nC++ to Python AST\n~~~~~~~~~~~~~~~~~\n\nParsing declarations, but not definitions (i.e. function signature, not body). And only selected\nsubset of basic types and basic syntax is supported.\n\n\nPython AST to C++\n~~~~~~~~~~~~~~~~~\n\nOnly very basic syntax is supported currently.\n\n\nCython to Python AST\n~~~~~~~~~~~~~~~~~~~~\n\nNot implemented yet.\n\n\nPython AST to Cython\n~~~~~~~~~~~~~~~~~~~~\n\nNot implemented yet.\n\n\nFortran to Python AST\n~~~~~~~~~~~~~~~~~~~~~\n\nFortran-specific AST is created via Open Fortran Parser, then that AST is translated\ninto Python AST.\n\n\nPython AST to Fortran\n~~~~~~~~~~~~~~~~~~~~~\n\nCurrently, the Fortran unparser uses special attribute :python:`fortran_metadata` attached\nto selected Python AST nodes, and therefore unparsing raw Python AST created directly from ordinary\nPython file might not work as expected.\n\nThe above behaviour will change in the future.\n\n\nOpenCL to Python AST\n~~~~~~~~~~~~~~~~~~~~\n\nNot implemented yet.\n\n\nPython AST to OpenCL\n~~~~~~~~~~~~~~~~~~~~\n\nNot implemented yet.\n\n\nPython to Python AST\n~~~~~~~~~~~~~~~~~~~~\n\nPython 3.6 with whole-line comments outside expressions is fully supported.\nPresence of end-of-line comments or comments in expressions might result in errors.\n\n\nPython AST to Python\n~~~~~~~~~~~~~~~~~~~~\n\nPython 3.6 with whole-line comments outside expressions is fully supported.\nPresence of end-of-line comments or comments in expressions might result in errors.\n\n\nRequirements\n============\n\nPython 3.5 or later.\n\nPython libraries as specified in `requirements.txt `_.\n\nBuilding and running tests additionally requires packages listed in ``_.\n\nSupport for transpilation from/to specific language requires additional Python packages\nspecified in `extras_requirements.json `_, which can be installed using the pip extras\ninstallation formula :bash:`pip3 install transpyle[extras]` where those :bash:`extras`\ncan be one or more of the following:\n\n* All supported languages: :bash:`all`\n\n* C: :bash:`c`\n\n* C++: :bash:`cpp`\n\n* Cython: :bash:`cython`\n\n* Fortran: :bash:`fortran`\n\n* OpenCL: :bash:`opencl`\n\nTherefore to enable support for all languages, execute :bash:`pip3 install transpyle[all]`.\nAlternatively, to enable support for C++ and Fortran only, execute\n:bash:`pip3 install transpyle[cpp,fortran]`.\n\nAdditionally, full support for some languages requires the following software to be installed:\n\n* C++:\n\n * a modern C++ compiler -- fully tested with GNU's ``g++`` versions 7 and 8\n and partially tested with LLVM's ``clang++`` version 7\n\n * SWIG (Simplified Wrapper and Interface Generator) -- tested with version 3\n\n* Fortran:\n\n * a modern Fortran compiler -- fully tested with GNU's ``gfortran`` versions 7 and 8\n and partially tested with PGI's ``pgfortran`` version 2018\n\nThe core functionality of transpyle is platform-independent. However, as support of some languages\ndepends on presence of additional software, some functionality might be limited/unavailable\non selected platforms.\n\nTranspyle is fully tested on Linux, and partially tested on OS X and Windows.\n\n\nInstallation\n============\n\npip\n---\n\n.. code:: bash\n\n pip3 install transpyle[all]\n\n\nDocker image\n------------\n\nThere is a docker image prepared so that you can easily try the transpiler.\n\nFirst, download and run the docker container (migth require sudo):\n\n.. code:: bash\n\n docker pull \"mbdevpl/transpyle\"\n docker run -h transmachine -it \"mbdevpl/transpyle\"\n\n\nBy default, this will download latest more or less stable development build,\nif you wish to use a specific release, use :bash:`\"mbdevpl/transpyle:version\"` instead.\n\nThen, in the container:\n\n.. code:: bash\n\n python3 -m jupyter notebook --ip=\"$(hostname -i)\" --port=8080\n\nOpen the shown link in your host's web browser, navigate to ``_,\nand start transpiling!\n\n\nRelated publications\n====================\n\nBelow is the list of papers describing various aspects of transpyle and/or principles behind it.\nFurther research is ongoing, so the list might be extended in the future.\n\n* M. Bysiek, A. Drozd and S. Matsuoka,\n *Migrating Legacy Fortran to Python While Retaining Fortran-Level Performance\n Through Transpilation and Type Hints*,\n PyHPC 2016: 6th Workshop on Python for High-Performance and Scientific Computing @ SC16,\n Salt Lake City, Utah, United States of America, 2016, pp. 9-18\n\n Abstract:\n\n We propose a method of accelerating Python code by just-in-time compilation leveraging type\n hints mechanism introduced in Python 3.5. In our approach performance-critical kernels are\n expected to be written as if Python was a strictly typed language, however without the need\n to extend Python syntax. This approach can be applied to any Python application, however we\n focus on a special case when legacy Fortran applications are automatically translated into\n Python for easier maintenance. We developed a framework implementing two-way transpilation\n and achieved performance equivalent to that of Python manually translated to Fortran, and\n better than using other currently available JIT alternatives (up to 5x times faster than\n Numba in some experiments).\n\n https://doi.org/10.1109/PyHPC.2016.006\n\n* M. Bysiek, M. Wahib, A. Drozd and S. Matsuoka,\n *Towards Portable High Performance in Python: Transpilation, High-Level IR,\n Code Transformations and Compiler Directives (Unreferred Workshop Manuscript)*,\n 2018-HPC-165: \u7814\u7a76\u5831\u544a\u30cf\u30a4\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0,\n Kumamoto, Kumamoto, Japan, 2018, pp. 1-7\n\n Abstract:\n\n We present a method for accelerating the execution of Python programs. We rely on\n just-in-time automatic code translation and compilation with Python itself being used as a\n high-level intermediate representation. We also employ performance-oriented code\n transformations and compiler directives to achieve high performance portability while\n enabling end users to keep their codebase in pure Python. To evaluate our method, we\n implement an open-source transpilation framework with an easy-to-use interface that\n achieves performance better than state-of-the-art methods for accelerating Python.\n\n http://id.nii.ac.jp/1001/00190591/\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://github.com/mbdevpl/transpyle", "keywords": "compiler,just-in-time,source-to-source,transpilation,transpiler", "license": "Apache License 2.0", "maintainer": "Mateusz Bysiek", "maintainer_email": "mateusz.bysiek@gmail.com", "name": "transpyle", "package_url": "https://pypi.org/project/transpyle/", "platform": "", "project_url": "https://pypi.org/project/transpyle/", "project_urls": { "Homepage": "https://github.com/mbdevpl/transpyle" }, "release_url": "https://pypi.org/project/transpyle/0.8.0/", "requires_dist": [ "argunparse", "astunparse", "colorama", "colorlog", "encrypted-config", "horast (~=0.4.0)", "pandas", "setuptools (>=41.0)", "static-typing (~=0.2.7)", "typed-ast (~=1.4)", "typed-astunparse (==2.*,>=2.1.4)", "version-query (==1.*,>=1.0.5)", "cython ; extra == 'all'", "numpy ; extra == 'all'", "open-fortran-parser (~=0.6.0) ; extra == 'all'", "pcpp ; extra == 'all'", "pycparser ; extra == 'all'", "pyopencl ; extra == 'all'", "cython ; extra == 'c'", "pcpp ; extra == 'c'", "pycparser ; extra == 'c'", "cython ; extra == 'cython'", "numpy ; extra == 'fortran'", "open-fortran-parser (~=0.6.0) ; extra == 'fortran'", "pyopencl ; extra == 'opencl'" ], "requires_python": ">=3.5", "summary": "performance-oriented transpiler for Python", "version": "0.8.0" }, "last_serial": 5746393, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "5bb1e6615f641668940dec5cd0c62461", "sha256": "49e968df76d8d3ce11b56b9d78613e7caf387a6e06bd5850a95087cbf20b99d7" }, "downloads": -1, "filename": "transpyle-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5bb1e6615f641668940dec5cd0c62461", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 37970, "upload_time": "2017-12-17T13:24:43", "url": "https://files.pythonhosted.org/packages/6c/f3/878c3c798f302c4944501674bda9d6f02a7057570ce3473845e5b6774d85/transpyle-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e407afd792873fb0b13406053bec0147", "sha256": "6402896b10f785dc1e5652e3b894fd758cf952d9c45da404fd7ec366c450d8db" }, "downloads": -1, "filename": "transpyle-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e407afd792873fb0b13406053bec0147", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 36479, "upload_time": "2017-12-17T13:24:44", "url": "https://files.pythonhosted.org/packages/c6/55/9b81c297f319160aef130290b6ab48ff8737c5dda0a46cc46651505bf283/transpyle-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4dd626ae23171e870a2731cd1e57fac0", "sha256": "b532609823685b1dec710d42c588db43f3df0abf8d05d87ed9e44977285de698" }, "downloads": -1, "filename": "transpyle-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4dd626ae23171e870a2731cd1e57fac0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 56781, "upload_time": "2018-01-19T09:13:49", "url": "https://files.pythonhosted.org/packages/11/c1/1aaed90a8a02557a081282a90762980cbc3d3dfe8b07db96d543c74400d6/transpyle-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd39c5f21ef5d532ac0cbe37fde8caae", "sha256": "f309a41c97a6ee493247a3a5b5018686c8fd285903fe3e1c073279bb958e616a" }, "downloads": -1, "filename": "transpyle-0.3.0.tar.gz", "has_sig": false, "md5_digest": "dd39c5f21ef5d532ac0cbe37fde8caae", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 61871, "upload_time": "2018-01-19T09:13:51", "url": "https://files.pythonhosted.org/packages/01/28/76dc07ccf6d3baee460f369304f65a3889adfe2fef42bc09477f1cf5760c/transpyle-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "01572f730675cd68f76ce9c511d48259", "sha256": "d64f42dbc7a5a4fda6bf797a0ce13cc4ec952ea67f72b8fa2dfa3485b9f0d74f" }, "downloads": -1, "filename": "transpyle-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "01572f730675cd68f76ce9c511d48259", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 56782, "upload_time": "2018-01-19T09:17:35", "url": "https://files.pythonhosted.org/packages/57/c1/5109fab86c34a07c3657ef84afae39c1a16393a57dafec367d7ab67ff3fa/transpyle-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "227d8edc3cd12e3d767399854d474b53", "sha256": "0c0c7237db4dcce1b27e44176310d55e7d2c1886a1be46cea448e2f673749564" }, "downloads": -1, "filename": "transpyle-0.3.1.tar.gz", "has_sig": false, "md5_digest": "227d8edc3cd12e3d767399854d474b53", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 61893, "upload_time": "2018-01-19T09:17:37", "url": "https://files.pythonhosted.org/packages/c6/96/b83351b853ec586d0c89b024a3454082e731782a673fcbc13a68ab9567b6/transpyle-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ac0ec4971710e1467bc40c32e1f05b8b", "sha256": "7b0f63ff85b8dee275a19dac65e42f8433c44f067ed3b786880f91fe49ac93a7" }, "downloads": -1, "filename": "transpyle-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ac0ec4971710e1467bc40c32e1f05b8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 63063, "upload_time": "2018-02-25T15:16:16", "url": "https://files.pythonhosted.org/packages/11/9c/f7779388e1e716ab0d0883ee48cd20703a0c553ccfbb0c98d73c310a1f64/transpyle-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28abc9e784e797e266b8ea972f85699b", "sha256": "47b7759b70892e65b262afe953f3f38620bd20473f137128b08d00da0a7e131a" }, "downloads": -1, "filename": "transpyle-0.4.0.tar.gz", "has_sig": false, "md5_digest": "28abc9e784e797e266b8ea972f85699b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 64990, "upload_time": "2018-02-25T15:16:18", "url": "https://files.pythonhosted.org/packages/2b/f7/8c332e72a2c553c769e2ca2479ed57643986b234558551af5465bd51daff/transpyle-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "1e0d9138b92a8989e191abd2df5e8d36", "sha256": "15d00a2953b4fbc441a4c4f79fac2936da8f87f9d6083c5c999cfe5a68911de7" }, "downloads": -1, "filename": "transpyle-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1e0d9138b92a8989e191abd2df5e8d36", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 66505, "upload_time": "2018-06-28T06:33:35", "url": "https://files.pythonhosted.org/packages/64/06/2cb1b59f5d2e91013b2b92cec5e4bd09677021db252a7ee1b9522d9f1ac3/transpyle-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67ea2fccf0e39222987c880123f58f32", "sha256": "24e364088ae1f3388078cbd88690212e06acdd12ab881f1668ec211e5dd5d132" }, "downloads": -1, "filename": "transpyle-0.5.0.tar.gz", "has_sig": false, "md5_digest": "67ea2fccf0e39222987c880123f58f32", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 74888, "upload_time": "2018-06-28T06:33:37", "url": "https://files.pythonhosted.org/packages/49/7a/5cc02f9b3f0df652fc3f86e2041bb2f280ba8eaefdd4222d327499afc5dd/transpyle-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "5ce5f43952761bacbaef45919ff84c58", "sha256": "34d5d43b35b5fbbdc2bdbca47166bff3b48e97d4f88e16553e60f0d9ee9a4cbf" }, "downloads": -1, "filename": "transpyle-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5ce5f43952761bacbaef45919ff84c58", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 70910, "upload_time": "2018-08-29T17:42:38", "url": "https://files.pythonhosted.org/packages/44/0e/a8b8360af97e9fe0deba3859454a8d7e404e448260491110c2b683db371f/transpyle-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09360fd24f286d9526497016668e5850", "sha256": "85482a8782e4f269ba0ee48d9a2d4f876c2b6e4c0100ee61f1b1c75ff234dc4e" }, "downloads": -1, "filename": "transpyle-0.5.1.tar.gz", "has_sig": false, "md5_digest": "09360fd24f286d9526497016668e5850", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 77520, "upload_time": "2018-08-29T17:42:39", "url": "https://files.pythonhosted.org/packages/61/68/f042371dcf788c605e0dff1a9bc266a972ba2cf3819fb94e245d3d31f8c1/transpyle-0.5.1.tar.gz" } ], "0.6.0.dev21": [ { "comment_text": "", "digests": { "md5": "52eb07a6026432e6f941962f97c8fbb1", "sha256": "0b9b6bbae3d242815f04736ff804bd39db3195f44f4c98d31514eb375328579d" }, "downloads": -1, "filename": "transpyle-0.6.0.dev21-py3-none-any.whl", "has_sig": false, "md5_digest": "52eb07a6026432e6f941962f97c8fbb1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 83380, "upload_time": "2019-03-14T13:50:19", "url": "https://files.pythonhosted.org/packages/b5/75/fe0e6b694fbf028b0096862e9c0056446c4c05b82a0637741b5022d65ed2/transpyle-0.6.0.dev21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73ec709aed3cee8d6aabe03145199beb", "sha256": "6792013324947b743d3697ea56041d6b36e12133f330045d0ccc40dba4264c95" }, "downloads": -1, "filename": "transpyle-0.6.0.dev21.tar.gz", "has_sig": false, "md5_digest": "73ec709aed3cee8d6aabe03145199beb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 85570, "upload_time": "2019-03-14T13:50:21", "url": "https://files.pythonhosted.org/packages/38/cb/684ca2a24c3a54b47c13938479f9328294a388493375029ef963dd636a2a/transpyle-0.6.0.dev21.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "acb9e177ff151f387d4f97183fa240e2", "sha256": "a419a08570df546a6ff83b70c60c65f95e81611d1854ac9aaa3613790d49cefa" }, "downloads": -1, "filename": "transpyle-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "acb9e177ff151f387d4f97183fa240e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 108260, "upload_time": "2019-05-14T15:18:52", "url": "https://files.pythonhosted.org/packages/b0/77/2dda9b518aa7f1e5a4d825dac9ffc042fd784b2462b052677c76da0b4546/transpyle-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cb7d788dd2f10e5cdfb5d7be4932274", "sha256": "657516ba9ad4ffe0df0057389575ae0d6d313695073ccc9de828efef8eff629d" }, "downloads": -1, "filename": "transpyle-0.7.1.tar.gz", "has_sig": false, "md5_digest": "3cb7d788dd2f10e5cdfb5d7be4932274", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 120849, "upload_time": "2019-05-14T15:18:54", "url": "https://files.pythonhosted.org/packages/ef/d0/5eae60ae80670207a2aaca471c41d6e9c43d4784c502c8858eea988956da/transpyle-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "09d1b366143a28b004e6b079ec2d968f", "sha256": "36f332b5c8ecbddf23fb78e0822f675db9bab11ea2abc12b405117953da4b270" }, "downloads": -1, "filename": "transpyle-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09d1b366143a28b004e6b079ec2d968f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 110643, "upload_time": "2019-08-28T22:41:51", "url": "https://files.pythonhosted.org/packages/a7/a3/dac511ec037acbf10c03a2f746d5e00c5b924e0d0e10dc1def353901405b/transpyle-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bb0d3c1083537618a0f86fe270630a3", "sha256": "96abc649d5bc69405e09c1769a7e4f22e4ffe3ac11a7401b1d653454f953626a" }, "downloads": -1, "filename": "transpyle-0.8.0.tar.gz", "has_sig": false, "md5_digest": "5bb0d3c1083537618a0f86fe270630a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 118545, "upload_time": "2019-08-28T22:41:54", "url": "https://files.pythonhosted.org/packages/f6/5e/76eff087b4fbf502aa42f924b51715691fa28c5633f9c8363141d79174df/transpyle-0.8.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "09d1b366143a28b004e6b079ec2d968f", "sha256": "36f332b5c8ecbddf23fb78e0822f675db9bab11ea2abc12b405117953da4b270" }, "downloads": -1, "filename": "transpyle-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09d1b366143a28b004e6b079ec2d968f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 110643, "upload_time": "2019-08-28T22:41:51", "url": "https://files.pythonhosted.org/packages/a7/a3/dac511ec037acbf10c03a2f746d5e00c5b924e0d0e10dc1def353901405b/transpyle-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bb0d3c1083537618a0f86fe270630a3", "sha256": "96abc649d5bc69405e09c1769a7e4f22e4ffe3ac11a7401b1d653454f953626a" }, "downloads": -1, "filename": "transpyle-0.8.0.tar.gz", "has_sig": false, "md5_digest": "5bb0d3c1083537618a0f86fe270630a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 118545, "upload_time": "2019-08-28T22:41:54", "url": "https://files.pythonhosted.org/packages/f6/5e/76eff087b4fbf502aa42f924b51715691fa28c5633f9c8363141d79174df/transpyle-0.8.0.tar.gz" } ] }