{ "info": { "author": "Juancarlo A\u00f1ez", "author_email": "apalala@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Cython", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Compilers", "Topic :: Software Development :: Interpreters", "Topic :: Text Processing :: General" ], "description": ".. |dragon| unicode:: 0x7ADC .. unicode dragon\n.. |TatSu| replace:: |dragon| **TatSu**\n\n|license| |pyversions| |fury| |circleci| |travis| |docs|\n\n *At least for the people who send me mail about a new language that\n they're designing, the general advice is: do it to learn about how\n to write a compiler. Don't have any expectations that anyone will\n use it, unless you hook up with some sort of organization in a\n position to push it hard. It's a lottery, and some can buy a lot of\n the tickets. There are plenty of beautiful languages (more beautiful\n than C) that didn't catch on. But someone does win the lottery, and\n doing a language at least teaches you something.*\n\n `Dennis Ritchie`_ (1941-2011) Creator of the C_ programming\n language and of Unix_\n\n|TatSu|\n=======\n\n.. code-block:: python\n\n def WARNING():\n return 'v4.4.0 is the last version of |TatSu| supporting Python 2.7'\n\n\n|TatSu| (the successor to Grako_) is a tool that takes grammars in a\nvariation of `EBNF`_ as input, and outputs `memoizing`_ (`Packrat`_)\n`PEG`_ parsers in `Python`_.\n\n|TatSu| can compile a grammar stored in a string into a\n``tatsu.grammars.Grammar`` object that can be used to parse any given\ninput, much like the `re`_ module does with regular expressions, or it can generate a Python_ module that implements the parser.\n\n|TatSu| supports `left-recursive`_ rules in PEG_ grammars using the algorithm_ by *Laurent* and *Mens*. The generated AST_ has the expected left associativity.\n\n.. _algorithm: http://norswap.com/pubs/sle2016.pdf\n\nInstallation\n------------\n\n.. code-block:: bash\n\n $ pip install TatSu\n\n\nUsing the Tool\n--------------\n\n|TatSu| can be used as a library, much like `Python`_'s ``re``, by embedding grammars as strings and generating grammar models instead of generating Python_ code.\n\n- ``tatsu.compile(grammar, name=None, **kwargs)``\n\n Compiles the grammar and generates a *model* that can subsequently be used for parsing input with.\n\n- ``tatsu.parse(grammar, input, **kwargs)``\n\n Compiles the grammar and parses the given input producing an AST_ as result. The result is equivalent to calling::\n\n model = compile(grammar)\n ast = model.parse(input)\n\n Compiled grammars are cached for efficiency.\n\n- ``tatsu.to_python_sourcecode(grammar, name=None, filename=None, **kwargs)``\n\n Compiles the grammar to the `Python`_ sourcecode that implements the parser.\n\nThis is an example of how to use |TatSu| as a library:\n\n.. code-block:: python\n\n GRAMMAR = '''\n @@grammar::CALC\n\n\n start = expression $ ;\n\n\n expression\n =\n | expression '+' term\n | expression '-' term\n | term\n ;\n\n\n term\n =\n | term '*' factor\n | term '/' factor\n | factor\n ;\n\n\n factor\n =\n | '(' expression ')'\n | number\n ;\n\n\n number = /\\d+/ ;\n '''\n\n\n if __name__ == '__main__':\n import pprint\n import json\n from tatsu import parse\n from tatsu.util import asjson\n\n ast = parse(GRAMMAR, '3 + 5 * ( 10 - 20 )')\n print('# PPRINT')\n pprint.pprint(ast, indent=2, width=20)\n print()\n\n print('# JSON')\n print(json.dumps(asjson(ast), indent=2))\n print()\n..\n\n|TatSu| will use the first rule defined in the grammar as the *start* rule.\n\nThis is the output:\n\n.. code-block:: console\n\n # PPRINT\n [ '3',\n '+',\n [ '5',\n '*',\n [ '10',\n '-',\n '20']]]\n\n # JSON\n [\n \"3\",\n \"+\",\n [\n \"5\",\n \"*\",\n [\n \"10\",\n \"-\",\n \"20\"\n ]\n ]\n ]\n\nDocumentation\n-------------\n\nFor a detailed explanation of what |TatSu| is capable of, please see the\ndocumentation_.\n\n.. _documentation: http://tatsu.readthedocs.io/\n\n\nQuestions?\n----------\n\nPlease use the `[tatsu]`_ tag on `StackOverflow`_ for general Q&A, and limit Github issues to bugs, enhancement proposals, and feature requests.\n\n.. _[tatsu]: https://stackoverflow.com/tags/tatsu/info\n\n\nChanges\n-------\n\nSee the `CHANGELOG`_ for details.\n\n\nLicense\n-------\n\nYou may use |TatSu| under the terms of the `BSD`_-style license\ndescribed in the enclosed `LICENSE.txt`_ file. *If your project\nrequires different licensing* please `email`_.\n\n\n.. _ANTLR: http://www.antlr.org/\n.. _AST: http://en.wikipedia.org/wiki/Abstract_syntax_tree\n.. _Abstract Syntax Tree: http://en.wikipedia.org/wiki/Abstract_syntax_tree\n.. _Algol W: http://en.wikipedia.org/wiki/Algol_W\n.. _Algorithms + Data Structures = Programs: http://www.amazon.com/Algorithms-Structures-Prentice-Hall-Automatic-Computation/dp/0130224189/\n.. _BSD: http://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_.28.22Simplified_BSD_License.22_or_.22FreeBSD_License.22.29\n.. _Basel Shishani: https://bitbucket.org/basel-shishani\n.. _C: http://en.wikipedia.org/wiki/C_language\n.. _CHANGELOG: https://github.com/neogeny/TatSu/releases\n.. _CSAIL at MIT: http://www.csail.mit.edu/\n.. _Cyclomatic complexity: http://en.wikipedia.org/wiki/Cyclomatic_complexity\n.. _David R\u00f6thlisberger: https://bitbucket.org/drothlis/\n.. _Dennis Ritchie: http://en.wikipedia.org/wiki/Dennis_Ritchie\n.. _EBNF: http://en.wikipedia.org/wiki/Ebnf\n.. _English: http://en.wikipedia.org/wiki/English_grammar\n.. _Euler: http://en.wikipedia.org/wiki/Euler_programming_language\n.. _Grako: https://bitbucket.org/neogeny/grako/\n.. _Jack: http://en.wikipedia.org/wiki/Javacc\n.. _Japanese: http://en.wikipedia.org/wiki/Japanese_grammar\n.. _KLOC: http://en.wikipedia.org/wiki/KLOC\n.. _Kathryn Long: https://bitbucket.org/starkat\n.. _Keywords: https://en.wikipedia.org/wiki/Reserved_word\n.. _`left-recursive`: https://en.wikipedia.org/wiki/Left_recursion\n.. _LL(1): http://en.wikipedia.org/wiki/LL(1)\n.. _Marcus Brinkmann: http://blog.marcus-brinkmann.de/\n.. _MediaWiki: http://www.mediawiki.org/wiki/MediaWiki\n.. _Modula-2: http://en.wikipedia.org/wiki/Modula-2\n.. _Modula: http://en.wikipedia.org/wiki/Modula\n.. _Oberon-2: http://en.wikipedia.org/wiki/Oberon-2\n.. _Oberon: http://en.wikipedia.org/wiki/Oberon_(programming_language)\n.. _PEG and Packrat parsing mailing list: https://lists.csail.mit.edu/mailman/listinfo/peg\n.. _PEG.js: http://pegjs.majda.cz/\n.. _PEG: http://en.wikipedia.org/wiki/Parsing_expression_grammar\n.. _PL/0: http://en.wikipedia.org/wiki/PL/0\n.. _Packrat: http://bford.info/packrat/\n.. _Pascal: http://en.wikipedia.org/wiki/Pascal_programming_language\n.. _Paul Sargent: https://bitbucket.org/PaulS/\n.. _Perl: http://www.perl.org/\n.. _PyPy team: http://pypy.org/people.html\n.. _PyPy: http://pypy.org/\n.. _Python Weekly: http://www.pythonweekly.com/\n.. _Python: http://python.org\n.. _Reserved Words: https://en.wikipedia.org/wiki/Reserved_word\n.. _Robert Speer: https://bitbucket.org/r_speer\n.. _Ruby: http://www.ruby-lang.org/\n.. _Semantic Graph: http://en.wikipedia.org/wiki/Abstract_semantic_graph\n.. _StackOverflow: http://stackoverflow.com/tags/tatsu/info\n.. _Sublime Text: https://www.sublimetext.com\n.. _TatSu Forum: https://groups.google.com/forum/?fromgroups#!forum/tatsu\n.. _UCAB: http://www.ucab.edu.ve/\n.. _USB: http://www.usb.ve/\n.. _Unix: http://en.wikipedia.org/wiki/Unix\n.. _VIM: http://www.vim.org/\n.. _WTK: http://en.wikipedia.org/wiki/Well-known_text\n.. _Warth et al: http://www.vpri.org/pdf/tr2007002_packrat.pdf\n.. _Well-known text: http://en.wikipedia.org/wiki/Well-known_text\n.. _Wirth: http://en.wikipedia.org/wiki/Niklaus_Wirth\n.. _`LICENSE.txt`: LICENSE.txt\n.. _basel-shishani: https://bitbucket.org/basel-shishani\n.. _blog post: http://dietbuddha.blogspot.com/2012/12/52python-encapsulating-exceptions-with.html\n.. _colorama: https://pypi.python.org/pypi/colorama/\n.. _context managers: http://docs.python.org/2/library/contextlib.html\n.. _declensions: http://en.wikipedia.org/wiki/Declension\n.. _drothlis: https://bitbucket.org/drothlis\n.. _email: mailto:apalala@gmail.com\n.. _exceptions: http://www.jeffknupp.com/blog/2013/02/06/write-cleaner-python-use-exceptions/\n.. _franz\\_g: https://bitbucket.org/franz_g\n.. _gapag: https://bitbucket.org/gapag\n.. _gegenschall: https://bitbucket.org/gegenschall\n.. _gkimbar: https://bitbucket.org/gkimbar\n.. _introduced: http://dl.acm.org/citation.cfm?id=964001.964011\n.. _jimon: https://bitbucket.org/jimon\n.. _keyword: https://en.wikipedia.org/wiki/Reserved_word\n.. _keywords: https://en.wikipedia.org/wiki/Reserved_word\n.. _lambdafu: http://blog.marcus-brinkmann.de/\n.. _leewz: https://bitbucket.org/leewz\n.. _linkdd: https://bitbucket.org/linkdd\n.. _make a donation: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=P9PV7ZACB669J\n.. _memoizing: http://en.wikipedia.org/wiki/Memoization\n.. _nehz: https://bitbucket.org/nehz\n.. _neumond: https://bitbucket.org/neumond\n.. _parsewkt: https://github.com/cleder/parsewkt\n.. _pauls: https://bitbucket.org/pauls\n.. _pgebhard: https://bitbucket.org/pgebhard\n.. _pygraphviz: https://pypi.python.org/pypi/pygraphviz\n.. _r\\_speer: https://bitbucket.org/r_speer\n.. _raw string literal: https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals\n.. _re: https://docs.python.org/3.7/library/re.html\n.. _regex: https://pypi.python.org/pypi/regex\n.. _siemer: https://bitbucket.org/siemer\n.. _sjbrownBitbucket: https://bitbucket.org/sjbrownBitbucket\n.. _smc.mw: https://github.com/lambdafu/smc.mw\n.. _starkat: https://bitbucket.org/starkat\n.. _tonico\\_strasser: https://bitbucket.org/tonico_strasser\n.. _vinay.sajip: https://bitbucket.org/vinay.sajip\n.. _vmuriart: https://bitbucket.org/vmuriart\n\n.. |fury| image:: https://badge.fury.io/py/tatsu.svg\n :target: https://badge.fury.io/py/tatsu\n.. |license| image:: https://img.shields.io/badge/license-BSD-blue.svg\n :target: https://raw.githubusercontent.com/neogeny/tatsu/master/LICENSE.txt\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/tatsu.svg\n :target: https://pypi.python.org/pypi/tatsu\n.. |travis| image:: https://secure.travis-ci.org/neogeny/TatSu.svg\n :target: http://travis-ci.org/neogeny/TatSu\n.. |circleci| image:: https://circleci.com/gh/neogeny/TatSu.svg?style=shield\n :target: https://circleci.com/gh/neogeny/TatSu\n.. |landscape| image:: https://landscape.io/github/apalala/TatSu/master/landscape.png\n :target: https://landscape.io/github/apalala/TatSu/master\n.. |donate| image:: https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif\n :target: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2TW56SV6WNJV6\n.. |quantifiedcode| image:: https://www.quantifiedcode.com/api/v1/project/f60bbd94ae2d4bd5b2e04c241c9d47ff/badge.svg\n :target: https://www.quantifiedcode.com/app/project/f60bbd94ae2d4bd5b2e04c241c9d47ff\n :alt: Code issues\n.. |docs| image:: https://readthedocs.org/projects/tatsu/badge/?version=stable\n :target: http://tatsu.readthedocs.io/en/stable/\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/neogeny/tatsu", "keywords": "", "license": "BSD License", "maintainer": "Juancarlo A\u00f1ez", "maintainer_email": "apalala@gmail.com", "name": "TatSu", "package_url": "https://pypi.org/project/TatSu/", "platform": "", "project_url": "https://pypi.org/project/TatSu/", "project_urls": { "Homepage": "https://github.com/neogeny/tatsu" }, "release_url": "https://pypi.org/project/TatSu/4.4.0/", "requires_dist": [ "regex; extra == 'future-regex'" ], "requires_python": "", "summary": "TatSu takes a grammar in a variation of EBNF as input, and outputs a memoizing PEG/Packrat parser in Python.", "version": "4.4.0" }, "last_serial": 5178489, "releases": { "4.0.0": [ { "comment_text": "", "digests": { "md5": "82103b6e430c16a7a579b65981f946fa", "sha256": "fc4f1f7c2f3c4564bfc81b71df46563cae9cfd8654232d724a12285374ad5079" }, "downloads": -1, "filename": "tatsu-4.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "82103b6e430c16a7a579b65981f946fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 78692, "upload_time": "2017-05-06T21:21:17", "url": "https://files.pythonhosted.org/packages/4f/ad/c1f18f126c94ab83679c6cccf5c6622c9ed3cd7acc791a8c1953212c1cda/tatsu-4.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb01db94c9289bedc55d97813d44fbf3", "sha256": "09b948762321d9b6c74de4e7f71f69d872dcd1709396860b221b3be477ca25f2" }, "downloads": -1, "filename": "tatsu-4.0.0.zip", "has_sig": false, "md5_digest": "cb01db94c9289bedc55d97813d44fbf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 131803, "upload_time": "2017-05-06T21:21:21", "url": "https://files.pythonhosted.org/packages/d8/40/4c99979aba69cac76688a56ae6a61b2cf901afe42c06c136c1b6ad0564e5/tatsu-4.0.0.zip" } ], "4.1.0": [ { "comment_text": "", "digests": { "md5": "d2bdd6786b81e4e16505208896ec4b09", "sha256": "d9ece1f9fa37a5e7b6eb87cca8bf1134dc10d287f428407a367af6cbb6153d37" }, "downloads": -1, "filename": "TatSu-4.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d2bdd6786b81e4e16505208896ec4b09", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 81922, "upload_time": "2017-05-21T16:51:43", "url": "https://files.pythonhosted.org/packages/ba/db/3155d8cc06fbb940d5d36cc582f054cc50af0ba818b34c5323dd894898ef/TatSu-4.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c25c111e5185c2ecad505d2a89f15b5", "sha256": "4ddc3c6ac379ba8ddfc8b3b4f4d4b1ea6dee70f9c57f098e02a3a7ad8c4125c5" }, "downloads": -1, "filename": "TatSu-4.1.0.zip", "has_sig": false, "md5_digest": "5c25c111e5185c2ecad505d2a89f15b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125681, "upload_time": "2017-05-21T16:51:46", "url": "https://files.pythonhosted.org/packages/ee/d8/899c976dca6af37c894fd5836a5afa55153d2c4b8758d05b4e987cd21c4a/TatSu-4.1.0.zip" } ], "4.1.1": [ { "comment_text": "", "digests": { "md5": "8ea291f118ffa2e8387a981e1bec12c8", "sha256": "5618d67e367486461a68eb48ba66e67dcd3be80997e27c3989867cb3f0743ac1" }, "downloads": -1, "filename": "TatSu-4.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8ea291f118ffa2e8387a981e1bec12c8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 81931, "upload_time": "2017-05-22T01:40:58", "url": "https://files.pythonhosted.org/packages/20/11/2be36f5c73d7bbbe186c306b3d9e3e727807d3a7ae0a33405e4a08b92ce0/TatSu-4.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a951ff9c07ae098e8b5824cd6678bee9", "sha256": "68bca0769752fd405fec7d0edb8fb7109dbebdf4134b0d23a6a6ccc850171317" }, "downloads": -1, "filename": "TatSu-4.1.1.zip", "has_sig": false, "md5_digest": "a951ff9c07ae098e8b5824cd6678bee9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 122955, "upload_time": "2017-05-22T01:41:04", "url": "https://files.pythonhosted.org/packages/95/fc/127eecbf7379bd985a20d6418704b6e57c512947532069ab6e95d70e52de/TatSu-4.1.1.zip" } ], "4.2.0": [ { "comment_text": "", "digests": { "md5": "ae8e0e03d08c26af6fbff6367a82a748", "sha256": "3cbea78716fad078a6d3acfa4411333067c62a8c0075bbabaa1addde7e3a82a7" }, "downloads": -1, "filename": "TatSu-4.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae8e0e03d08c26af6fbff6367a82a748", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 82912, "upload_time": "2017-06-04T20:46:36", "url": "https://files.pythonhosted.org/packages/f5/0d/358c993302bc9b3ac328d671079bbe44f10a64b47080b2d4b204c03b2c5a/TatSu-4.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a242c8ee5af0bf7206a9131dd7bd594", "sha256": "0997176f49abe6fb53c57e5b8de17f8a1d2a91f3d3d24475681dff8c1aa4ca22" }, "downloads": -1, "filename": "TatSu-4.2.0.zip", "has_sig": false, "md5_digest": "4a242c8ee5af0bf7206a9131dd7bd594", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 123386, "upload_time": "2017-06-04T20:46:39", "url": "https://files.pythonhosted.org/packages/33/da/c805f8133f421c4642a607f99fdd533073b53e92d4e2faeb0dd26d1f8279/TatSu-4.2.0.zip" } ], "4.2.1": [ { "comment_text": "", "digests": { "md5": "eecd456334696d3f7c54f5721a715da2", "sha256": "f22058f435461c45ef559c6343fb4ed9ca8e58e2689d9693f5ba9f3290e402bc" }, "downloads": -1, "filename": "TatSu-4.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eecd456334696d3f7c54f5721a715da2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 83319, "upload_time": "2017-06-18T13:50:24", "url": "https://files.pythonhosted.org/packages/68/9a/c2ae377d713df41befee1e8160a576a571166ebb3b19047b9ecef9a288d1/TatSu-4.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "95ad8ae6f384251ca6d8ed57a95b7294", "sha256": "cd61221d0a2fa68f0b7d1fae8314f881993033a392433b7153574c94d5875329" }, "downloads": -1, "filename": "TatSu-4.2.1.zip", "has_sig": false, "md5_digest": "95ad8ae6f384251ca6d8ed57a95b7294", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 121223, "upload_time": "2017-06-18T13:50:27", "url": "https://files.pythonhosted.org/packages/a3/b7/62c108d95964f883c88b56ba2ac3b8c8d2ac908c5cec4cd1608ae1c3fb8b/TatSu-4.2.1.zip" } ], "4.2.2": [ { "comment_text": "", "digests": { "md5": "e478b06bc1675a8ad3411d18c8be12ce", "sha256": "761e0ae0bb4ed325f7608d9c9e3d26f44ed8de8ffb158173cd83bf6f01c7c28a" }, "downloads": -1, "filename": "TatSu-4.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e478b06bc1675a8ad3411d18c8be12ce", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 83652, "upload_time": "2017-07-01T19:51:31", "url": "https://files.pythonhosted.org/packages/a3/e7/e99ce8fba4733fc45902f21de787f0eae40b0629b2dbbdfa2573beea4bee/TatSu-4.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa06b0026291671f6a6d847468d5890a", "sha256": "1e612572af46680bbe9f7fa7f990e280ab68501d9f240bef5590b7a6bf4c80eb" }, "downloads": -1, "filename": "TatSu-4.2.2.zip", "has_sig": false, "md5_digest": "fa06b0026291671f6a6d847468d5890a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 121737, "upload_time": "2017-07-01T19:51:36", "url": "https://files.pythonhosted.org/packages/79/8e/342306531f934f933057859f6db87e005db66f75a1ea62b8ee9830e28bf2/TatSu-4.2.2.zip" } ], "4.2.3": [ { "comment_text": "", "digests": { "md5": "a4947343ccea3a87d9a7502ce9e10468", "sha256": "02e4c367d98b6bcdf024dcbf0576c66b039ca496615e460ce422b008da58e32a" }, "downloads": -1, "filename": "TatSu-4.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a4947343ccea3a87d9a7502ce9e10468", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 83844, "upload_time": "2017-07-10T21:38:44", "url": "https://files.pythonhosted.org/packages/17/23/9e72c1bf8db319c197e88048dc2bd04ccd672d948c6ca514e8cc855db60d/TatSu-4.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d248c7e1d1d0bd86cc4ca542d5d1a2a", "sha256": "ce61d03cf06db74116ac5800437f12c557fa91bdc19be358c69d4da8af72c691" }, "downloads": -1, "filename": "TatSu-4.2.3.zip", "has_sig": false, "md5_digest": "7d248c7e1d1d0bd86cc4ca542d5d1a2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 122142, "upload_time": "2017-07-10T21:38:47", "url": "https://files.pythonhosted.org/packages/59/fe/62d7660b6a9e8c0d6b8cbf6a77402fb15c3c6defcd97d96e476eea93d416/TatSu-4.2.3.zip" } ], "4.2.5": [ { "comment_text": "", "digests": { "md5": "a514fd7d507aac47ce40693f3de5baf3", "sha256": "f304b9a2889c2afadbf893db775f63975da699e409cbf45b264ea6a94ec2a7de" }, "downloads": -1, "filename": "TatSu-4.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a514fd7d507aac47ce40693f3de5baf3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 84299, "upload_time": "2017-11-26T22:16:35", "url": "https://files.pythonhosted.org/packages/16/88/b69cdb901e23f409d07ea87ae5504d8a04621a1963bf6b2128d98a995cfc/TatSu-4.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1aab55241824442979a97a62c0009d97", "sha256": "190f144e3500ece77c66ebcd634ede16e3eec37658fe866731aba0f65a6c5526" }, "downloads": -1, "filename": "TatSu-4.2.5.zip", "has_sig": false, "md5_digest": "1aab55241824442979a97a62c0009d97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125721, "upload_time": "2017-11-26T22:16:46", "url": "https://files.pythonhosted.org/packages/d4/b6/cc68e991a9fc7eeb03988c2997bf1f30744fdeca9d4f10b284478a29de7e/TatSu-4.2.5.zip" } ], "4.2.6": [ { "comment_text": "", "digests": { "md5": "e465cea73613f399e414ed84fce3d8d7", "sha256": "de4c681b65c8b8ab072393e8b423ca2773f9f93720d6386d99d7bd818cb0973f" }, "downloads": -1, "filename": "TatSu-4.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e465cea73613f399e414ed84fce3d8d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 79450, "upload_time": "2018-05-07T01:53:42", "url": "https://files.pythonhosted.org/packages/06/4f/f6b8ecbf4133fe8d71917fd828975d4a1a5107baae6d755c06e9a303b136/TatSu-4.2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d3a6abc65ae94ad0acbbceed091ec03", "sha256": "de2bb29e2bce0605f44de606bd40761509fa2c1f2cd94e7e1fbf124c535e725d" }, "downloads": -1, "filename": "TatSu-4.2.6.zip", "has_sig": false, "md5_digest": "2d3a6abc65ae94ad0acbbceed091ec03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 126032, "upload_time": "2018-05-07T01:53:51", "url": "https://files.pythonhosted.org/packages/34/9a/e96be4d8df6d4178b4728a6ed41a43428c84ee2cb3310b6843538fbe1acc/TatSu-4.2.6.zip" } ], "4.3.0": [ { "comment_text": "", "digests": { "md5": "cce2b64d50da8fb5a56053a367af6238", "sha256": "6abc825a16dc60def2951c3ac6369594a68c014e7f6e64c734bdb5b530e16fb4" }, "downloads": -1, "filename": "TatSu-4.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cce2b64d50da8fb5a56053a367af6238", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 81050, "upload_time": "2018-11-17T10:10:37", "url": "https://files.pythonhosted.org/packages/4a/2a/73ab41b283bdad217bbcd58751662d7edcb650c3dc810c8caa58f2fdcf49/TatSu-4.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "976949b71652a17d2c023418661f60d4", "sha256": "7cdfde0139cf0c17894891cb4a5351875c42367cbb9324dd22e19cc4b2bade7c" }, "downloads": -1, "filename": "TatSu-4.3.0.zip", "has_sig": false, "md5_digest": "976949b71652a17d2c023418661f60d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 130438, "upload_time": "2018-11-17T10:10:40", "url": "https://files.pythonhosted.org/packages/8e/88/ec6d0364c15e568bbb77e1272ce5712ce5d0ed2f6fe0f057fe2d55d13608/TatSu-4.3.0.zip" } ], "4.4.0": [ { "comment_text": "", "digests": { "md5": "032525e5c737e9febc9200a0a0c5043b", "sha256": "c9211eeee9a2d4c90f69879ec0b518b1aa0d9450249cb0dd181f5f5b18be0a92" }, "downloads": -1, "filename": "TatSu-4.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "032525e5c737e9febc9200a0a0c5043b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 85236, "upload_time": "2019-04-23T17:29:05", "url": "https://files.pythonhosted.org/packages/1b/36/00664e684e4bba5730db661847447bbcfe789008a154755013e5f457b648/TatSu-4.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b421ce6a717b65b4dde40372fa1937a4", "sha256": "80713413473a009f2081148d0f494884cabaf9d6866b71f2a68a92b6442f343d" }, "downloads": -1, "filename": "TatSu-4.4.0.zip", "has_sig": false, "md5_digest": "b421ce6a717b65b4dde40372fa1937a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137688, "upload_time": "2019-04-23T17:29:10", "url": "https://files.pythonhosted.org/packages/24/f0/b7b0b73a06e6b9a35ed1aff5a13e8de13fbe8d4cc58ec1f85c6b2939ff7e/TatSu-4.4.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "032525e5c737e9febc9200a0a0c5043b", "sha256": "c9211eeee9a2d4c90f69879ec0b518b1aa0d9450249cb0dd181f5f5b18be0a92" }, "downloads": -1, "filename": "TatSu-4.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "032525e5c737e9febc9200a0a0c5043b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 85236, "upload_time": "2019-04-23T17:29:05", "url": "https://files.pythonhosted.org/packages/1b/36/00664e684e4bba5730db661847447bbcfe789008a154755013e5f457b648/TatSu-4.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b421ce6a717b65b4dde40372fa1937a4", "sha256": "80713413473a009f2081148d0f494884cabaf9d6866b71f2a68a92b6442f343d" }, "downloads": -1, "filename": "TatSu-4.4.0.zip", "has_sig": false, "md5_digest": "b421ce6a717b65b4dde40372fa1937a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137688, "upload_time": "2019-04-23T17:29:10", "url": "https://files.pythonhosted.org/packages/24/f0/b7b0b73a06e6b9a35ed1aff5a13e8de13fbe8d4cc58ec1f85c6b2939ff7e/TatSu-4.4.0.zip" } ] }