{ "info": { "author": "Colin T.A. Gray", "author_email": "colinta@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Internet", "Topic :: Text Processing", "Topic :: Text Processing :: General" ], "description": "=======\nchomsky\n=======\n\n.. image:: https://travis-ci.org/colinta/chomsky.png\n :alt: Build Status\n\nI needed a language grammar parser for the plywood_ project, and modgrammar_\nlooked like it would be perfect, except I couldn't get the simplest of grammars\nto work. pyparsing_ is excellent, but doesn't give me objects back, only lists\nand strings - I need more than that. I would recommend pyparsing_ for *your*\nproject. Unless you really want objects, or if you are doing a language\n(chomsky_ has lots of built-in stuff for making programming language grammars).\n\nBesides, I like writing parsers, and I know how I want this one to work, so\nscrew it, I'll do it myself!\n\n------------\nINSTALLATION\n------------\n\n::\n\n $ pip install chomsky\n\n-----\nUSAGE\n-----\n\n~~~~~~~~\nMatchers\n~~~~~~~~\n\n``Matcher`` objects are the most basic building blocks. They are not smart,\nthey return only strings and lists, and they make no assumptions about what you\nmight be trying to build. For instance, the ``Chars`` Matcher does not assume\nthat you want to consume whitespace.\n\n``Matcher`` objects are great for building a small parsing language for\nconsistent data, where ``Grammar`` objects are not needed. But for building a\nlanguage parser, you will probably use the more heavy-duty Grammar building\nblocks.\n\nChar\n~~~~\n\nMatches a single letter from a string of accepted letters. There are lots of\nbuilt-in strings in the `string module`_.\n\n::\n\n test/matchers/test_letter_matcher.py\n\n matcher = Char('abcde')\n matcher('a') => 'a'\n matcher('bcd') => 'b'\n matcher('f') => raise ParseException\n # shorthand:\n matcher = A('abcde')\n\n import string\n matcher = A(string.ascii_letters + string.digits + '_')\n\nChars\n~~~~~\n\nMatches one or more letters from string of accepted letters.\n\nYou can also set ``min`` and ``max`` options. ``min`` will raise a\n``ParseException`` if the matched word is not long enough. Default is ``1``.\n``max`` will stop matching once ``max`` characters are matched.\n\n::\n\n test/matchers/test_word_matcher.py\n matcher = Chars('abcde')\n matcher('a') => 'a'\n matcher('bcd') => 'bcd'\n matcher('defg') => 'defg'\n matcher('fghi') => ParseException\n\n # max\n matcher = Chars('abcde', max=2)\n matcher('bcd') => 'bc'\n\n # min\n matcher = Chars('abcde', min=3)\n matcher('ab') => ParseException\n\nLiteral\n~~~~~~~\n\nMatches a literal string.\n\n::\n\n test/matchers/test_literal_matcher.py\n matcher = Literal('abcde')\n matcher('a') => 'a'\n matcher('bcd') => 'bcd'\n matcher('defg') => 'defg'\n matcher('fghi') => ParseException\n\nWhitespace\n~~~~~~~~~~\n\n::\n\n test/matchers/test_whitespace_matcher.py\n matcher = Whitespace() # default is \" \\t\"\n matcher(\" \") => \" \"\n matcher(\" \\t\\n \") => \" \\t\"\n matcher = Whitespace(\" \\t\\n\")\n matcher(\" \\t\\n \") => \" \\t\\n \"\n\nRegex\n~~~~~\n\nThese have two options: ``group`` and ``advance``.\n\n``group`` says which group or groups to return. Default is ``0`` (the entire\nmatch). A list or tuple of groups will return a list of results. ``advance``\nindicates what group to advance *past*. Default is ``0`` (the entire match).\nThis is a quick way to build a matching system that can parse consistently\nformatted data, for example.\n\n::\n\n test/matchers/test_regex_matcher.py\n matcher = Regex(\"([a-zA-Z_][0-9])\")\n matcher('a1') => 'a1'\n\n # group\n matcher = Regex(\"([a-zA-Z_][0-9])\", group=1)\n matcher('a1') => 'a'\n\n # to demonstrate `advance`, I will have to add two regex Matchers, which\n # returns a list\n matcher = Regex(\"([a-zA-Z_][0-9])\", group=1, advance=1) + Regex(\"([0-9])\", group=1)\n matcher('a1') => ['a', '1']\n\nSequence\n~~~~~~~~\n\nThere are two flavors of ``Sequence``. One you can declare yourself, called\n``Sequence``, the other is created automatically when you add or multiply\nMatcher objects. Don't worry about that one, it \"just works\" (we saw it above\nin the ``Regex`` example).\n\n::\n\n test/matchers/test_sequence_matcher.py\n matcher = Sequence(Literal('Hello '), Literal('World'), Char('!.'))\n matcher('Hello World!') => ['Hello ', 'World', '!']\n matcher('Hello World.') => ['Hello ', 'World', '.']\n matcher('Hello, World.') => ParseException\n\nThe automatic ``Sequence`` type is created whenever you use addition or\nmultiplication to repeat a series of ``Matcher``-s.\n\n**Addition**::\n\n test/matchers/test_matcher_addition.py\n matcher = Literal('Hello ') + Literal('World') + Char('!.')\n matcher('Hello World!') => ['Hello ', 'World', '!']\n matcher('Hello World.') => ['Hello ', 'World', '.']\n matcher('Hello, World.') => ParseException\n\n**Multiplication**::\n\n test/matcher/test_matcher_multiplication.py\n import string\n matcher = (Chars(string.ascii_letters) + Literal(' ')) * 3\n matcher('why hello there ') => [['why', ' '], ['hello', ' '], ['there', ' ']]\n matcher('not enough spaces') => ParseException\n\nNMatches\n~~~~~~~~\n\n``NMatches`` is not an intuitively named class, but its child classes are, and\nyou'll probably use them a lot.\n\n``ZeroOrMore``::\n\n test/matcher/test_zero_or_more_matcher.py\n matcher = ZeroOrMore(Literal('hi'))\n matcher('') => []\n matcher('hi') => ['hi']\n matcher('hihi') => ['hi', 'hi']\n\n``OneOrMore``::\n\n test/matcher/test_one_or_more_matcher.py\n matcher = OneOrMore(Literal('hi'))\n matcher('hi') => ['hi']\n matcher('hihi') => ['hi', 'hi']\n matcher('') => ParseException\n\n``Optional``::\n\n test/matcher/test_optional_matcher.py\n matcher = Literal('Hello') + Optional(Literal(',')) + Literal(' ') + Literal('World')\n matcher('Hello World') => ['Hello', [], ' ', 'World']\n matcher('Hello, World') => ['Hello', [','], ' ', 'World']\n matcher('Hello, Bozo') => ParseException\n\n``NMatches``::\n\n test/matcher/test_nmatcher.py\n matcher = NMatches(Literal('hi'), min=2, max=3)\n matcher('hi') => ParseException\n matcher('hihi') => ['hi', 'hi']\n matcher('hihihi') => ['hi', 'hi', 'hi']\n matcher('hihihihi') => ['hi', 'hi', 'hi'] # only 3 matches\n\nAny\n~~~\n\nGiven a list of Matchers, any of them can match (tested in order left-to-right).\nThe first to match is returned.\n\n::\n\n test/matcher/test_any_matcher.py\n matcher = Any(Literal('Joey'), Literal('Bob'), Literal('Bill'))\n matcher('Bob') => 'Bob'\n matcher('Jane') => ParseException\n\nLook-ahead and Behind\n~~~~~~~~~~~~~~~~~~~~~\n\nLooking-ahead is simple and low-cost. The ``NextIs`` matcher makes sure that\nthe ``Matcher`` *would* pass, but then rolls back the cursor and does not return\na Result. If the ``Matcher`` fails, an exception is raised.\n\nLooking behind is much more expensive, because the number of characters to look\nat is not known before hand. A \"best guess\" can be made by ``PrevIs`` by using\n```minimum_length``` and ```maximum_length``` methods that the ``Matcher``\nclasses all implement (the base class returns ``0`` and ``float('inf')``). A\n``Literal``, for example, has a definite length that must be present - no more,\nand no less characters. The other classes also provide this min/max length\ncalculation. But this provides only a modest performance increase.\n\nThe ``PrevIs`` matcher does not require that the previous token be an instance of\nthe specified matcher, only that the buffer previous to the current location\nmatch. The buffer is rolled back until a match is found, or until the beginning\nof the buffer is reached. Sound resource intensive? Consider ``PrevIsNot``!\nIt looks backwards, hoping that the buffer *never* matches, no matter how far\nback it goes.\n\n``NextIs``::\n\n test/matcher/test_nextis_matcher.py\n matcher = '-' + NextIs(Chars('123456789')) + Chars('1234567890')\n matcher('1') => [[], '1']\n matcher('-1') => [['-'], '1']\n matcher('-123') => [['-'], '123']\n matcher('-0') => ParseException\n\n``NextIsNot``::\n\n test/matcher/test_nextis_matcher.py\n matcher = '-' + NextIsNot('0') + Chars('1234567890')\n matcher('1') => [[], '1']\n matcher('-1') => [['-'], '1']\n matcher('-123') => [['-'], '123']\n matcher('-0') => ParseException\n\n``PrevIs``::\n\n test/matcher/test_nextis_matcher.py\n matcher = Chars('-.') + PrevIs('-') + Chars('1234567890')\n matcher('-1') => [['-'], '1']\n matcher('.123') => ParseException\n\n``PrevIsNot``::\n\n test/matcher/test_nextis_matcher.py\n matcher = Chars('abc') + PrevIsNot('c') + Chars('abc')\n matcher('ab') => ['a', 'b']\n matcher('abc') => ['ab', 'c']\n matcher('abcabc') => ['abcab', 'c']\n matcher('cc') => ParseException\n\n~~~~~~~~\nGrammars\n~~~~~~~~\n\n``Grammar`` objects are what you will want to work with if you are building a\nlanguage grammar. They are composed of ``Mathcer`` classes (and other\n``Grammar`` classes), but the objects they return are instances of the\n``Grammar``, not simple strings and lists.\n\nThe built-in ``Grammar``-s are meant to help you understand how they work, and to\nuse in your own language.\n\nNumbers\n~~~~~~~\n\n``Integer``::\n\n test/matcher/test_nextis_matcher.py\n matcher = '-' + NextIsNot('0') + Chars('1234567890')\n matcher('1') => [[], '1']\n matcher('-1') => [['-'], '1']\n matcher('-123') => [['-'], '123']\n matcher('-0') => ParseException\n\nTodo\n~~~~\n\n::\n\n QuotedString, Number, Integer, Float, Hexadecimal, Octal, Binary\n LineComment, BlockComment, Block, IndentedBlock\n\n----\nTEST\n----\n\n::\n\n $ pip install pytest\n $ py.test\n\n-------\nLICENSE\n-------\n\nCopyright (c) 2012, Colin T.A. Gray\nAll rights reserved.\n\n:author: Colin T.A. Gray\n:copyright: 2012 Colin T.A. Gray \n:license: simplified BSD, see LICENSE_ for more details.\n\n.. _LICENSE: https://github.com/colinta/chomsky/blob/master/LICENSE\n.. _modgrammar: http://pypi.python.org/pypi/modgrammar\n.. _pyparsing: http://pyparsing.wikispaces.com/\n.. _plywood: http://github.com/colinta/plywood\n.. _string module: http://docs.python.org/library/string.html#string-constants", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/colinta/chomsky", "keywords": "chomsky language grammar parser", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "chomsky", "package_url": "https://pypi.org/project/chomsky/", "platform": "any", "project_url": "https://pypi.org/project/chomsky/", "project_urls": { "Homepage": "https://github.com/colinta/chomsky" }, "release_url": "https://pypi.org/project/chomsky/2.0.0/", "requires_dist": null, "requires_python": ">3.0.0", "summary": "Another language grammar parser. Inspired by modgrammar and pyparsing", "version": "2.0.0" }, "last_serial": 5362039, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "03d2363128f76f14776c6aaedcee0b4d", "sha256": "b4267871e624cfdef98d10dc845f8e7f33ff587aeb40bc8e7e1529783714985a" }, "downloads": -1, "filename": "chomsky-1.0.0.tar.gz", "has_sig": false, "md5_digest": "03d2363128f76f14776c6aaedcee0b4d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16739, "upload_time": "2013-01-14T19:49:12", "url": "https://files.pythonhosted.org/packages/86/c6/2336e5982373b95f7a6c6af26a544269cfa01579044ed9504802b6c94112/chomsky-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "3716a4308f9369d3a86bfcfa7a7641ce", "sha256": "668b4b85497878189df44423750292a9dc01fcb382b623ae4b444d2253c542ba" }, "downloads": -1, "filename": "chomsky-1.0.1.tar.gz", "has_sig": false, "md5_digest": "3716a4308f9369d3a86bfcfa7a7641ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16749, "upload_time": "2013-01-14T19:51:49", "url": "https://files.pythonhosted.org/packages/73/27/5f700d57ed85fddc3fc7bb25e3196bd22190db35eace73a8344d29ee5060/chomsky-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "bd3b30648f14d8054a5b865ccf8c157a", "sha256": "af287ee5dc00986deda878f5adbf74230aeda5e09b5394a70006f1ac51c8294b" }, "downloads": -1, "filename": "chomsky-1.0.2.tar.gz", "has_sig": false, "md5_digest": "bd3b30648f14d8054a5b865ccf8c157a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16865, "upload_time": "2013-04-25T14:44:25", "url": "https://files.pythonhosted.org/packages/00/fb/918ada40dddc8d5585fcc8ef60287afcab53cff9a86a85f8315ab6b2b2fc/chomsky-1.0.2.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "882772f281b30b22d8bc040bb685f279", "sha256": "4e7fc4b53e331ea88aff3c7b6e016f83da330f2cad52bf062a7d36664c41930c" }, "downloads": -1, "filename": "chomsky-2.0.0.tar.gz", "has_sig": false, "md5_digest": "882772f281b30b22d8bc040bb685f279", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.0.0", "size": 20101, "upload_time": "2019-06-05T10:47:02", "url": "https://files.pythonhosted.org/packages/cf/3c/1bd5b2644f3428266ac7735ce722723af5bc38619e167212e65fa2d04d02/chomsky-2.0.0.tar.gz" } ], "v0.0.0": [ { "comment_text": "", "digests": { "md5": "605f32a654c54c5764e34e8cbb9db62d", "sha256": "ab31b6347afd43d870bef651615000732e2e759eb93b5f0d110d4b2b8fc40105" }, "downloads": -1, "filename": "chomsky-v0.0.0.tar.gz", "has_sig": false, "md5_digest": "605f32a654c54c5764e34e8cbb9db62d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6951, "upload_time": "2012-06-21T21:50:41", "url": "https://files.pythonhosted.org/packages/d5/cc/b0a522f456b74526eea81a591e45df9fab786f43adf5634eee7cfadcfa97/chomsky-v0.0.0.tar.gz" } ], "v0.0.1": [ { "comment_text": "", "digests": { "md5": "6d9a2ca71abacb3b000e8fbe09d7db9c", "sha256": "0cdb9cfeb2ea39c7de969970a8c4e57e9c86a06c9803a648009f8f6bfd9a6b03" }, "downloads": -1, "filename": "chomsky-v0.0.1.tar.gz", "has_sig": false, "md5_digest": "6d9a2ca71abacb3b000e8fbe09d7db9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6950, "upload_time": "2012-06-21T22:00:12", "url": "https://files.pythonhosted.org/packages/7c/ae/c6363a6de8444f13c6bbc1a657978db646523a0d0c031befb66aa164db77/chomsky-v0.0.1.tar.gz" } ], "v0.0.10": [ { "comment_text": "", "digests": { "md5": "9e7cd706bbda068de2bfe7228065f266", "sha256": "8c655ec92440bec246d710472c4ff84585e243ec41c872467ac5fba166eba4eb" }, "downloads": -1, "filename": "chomsky-v0.0.10.tar.gz", "has_sig": false, "md5_digest": "9e7cd706bbda068de2bfe7228065f266", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14977, "upload_time": "2012-12-29T00:52:15", "url": "https://files.pythonhosted.org/packages/37/81/a5fba07e5d9aff990e87277a7e9c6e04e2b4a5f716fbcb67ac0eb28e7a76/chomsky-v0.0.10.tar.gz" } ], "v0.0.11": [ { "comment_text": "", "digests": { "md5": "dde242a882b3ef51dda94e0039aecfc3", "sha256": "828b2f61eded4e140b68a65e616c394a0faaddc0af8a94e6392258717dcfcfdb" }, "downloads": -1, "filename": "chomsky-v0.0.11.tar.gz", "has_sig": false, "md5_digest": "dde242a882b3ef51dda94e0039aecfc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15193, "upload_time": "2012-12-29T00:52:05", "url": "https://files.pythonhosted.org/packages/c1/a2/efec54513a9a1b391e7f8e800f2b459b7ac12c5ad3f0f98209aa844d961c/chomsky-v0.0.11.tar.gz" } ], "v0.0.12": [ { "comment_text": "", "digests": { "md5": "b121bf1fc38753f1f98c3c3069e2e94b", "sha256": "34bbe4ea16b9215e28c016524b7d50236bfdd4219b763e8cbb885f183b636708" }, "downloads": -1, "filename": "chomsky-v0.0.12.tar.gz", "has_sig": false, "md5_digest": "b121bf1fc38753f1f98c3c3069e2e94b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15246, "upload_time": "2012-12-29T01:36:02", "url": "https://files.pythonhosted.org/packages/e7/83/c5058d6ccda7c13f285f0cd4a14fe4bd97c006c5cd1c93df253729180c70/chomsky-v0.0.12.tar.gz" } ], "v0.0.13": [ { "comment_text": "", "digests": { "md5": "3b4dba07debbb6bcf2ee878af153221b", "sha256": "25da6208c22832b9e4b6f1347e491819cdea85a9f3f85a81e6660d5efb4f42fe" }, "downloads": -1, "filename": "chomsky-v0.0.13.tar.gz", "has_sig": false, "md5_digest": "3b4dba07debbb6bcf2ee878af153221b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15793, "upload_time": "2013-01-05T12:27:26", "url": "https://files.pythonhosted.org/packages/96/81/3bb326a6f10030a8b969bdba0dac201a0decb60299798955b19c563e6e42/chomsky-v0.0.13.tar.gz" } ], "v0.0.14": [ { "comment_text": "", "digests": { "md5": "4d5986cb2ac4daeee624a601bae0a8b6", "sha256": "dd495ccd259930077fd1c39b0e80247ef36656eecbf628e89d80ffdc94133e18" }, "downloads": -1, "filename": "chomsky-v0.0.14.tar.gz", "has_sig": false, "md5_digest": "4d5986cb2ac4daeee624a601bae0a8b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15640, "upload_time": "2013-01-05T12:37:03", "url": "https://files.pythonhosted.org/packages/81/bf/2f8df3a3bc1a335ad738103b983d76a2c9a1ea0b2b49924fc378dd88399c/chomsky-v0.0.14.tar.gz" } ], "v0.0.16": [ { "comment_text": "", "digests": { "md5": "79eeef14e6c33309ac08067eb79c514a", "sha256": "df2046b8bdf56014daa0d447bc269f0c3975d6d0ca9f8b5fc8931bbd1d3152be" }, "downloads": -1, "filename": "chomsky-v0.0.16.tar.gz", "has_sig": false, "md5_digest": "79eeef14e6c33309ac08067eb79c514a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15829, "upload_time": "2013-01-05T14:08:04", "url": "https://files.pythonhosted.org/packages/06/62/305150dd6da70898a8cebfac46eba7b76da7b763db442e7cc95df344f52f/chomsky-v0.0.16.tar.gz" } ], "v0.0.17": [ { "comment_text": "", "digests": { "md5": "512402251820ef18903a4f1239732157", "sha256": "bb6b7608426007babf14e4157d1dd25b9f2c9f825131d534edde38679e3608c9" }, "downloads": -1, "filename": "chomsky-v0.0.17.tar.gz", "has_sig": false, "md5_digest": "512402251820ef18903a4f1239732157", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16149, "upload_time": "2013-01-06T01:42:17", "url": "https://files.pythonhosted.org/packages/28/a6/e4d152f77a6eadc11010c9826a946500be4369d088fdf5beeeb821d21624/chomsky-v0.0.17.tar.gz" } ], "v0.0.18": [ { "comment_text": "", "digests": { "md5": "45fd4a27d95fd602e75c8222dfa35115", "sha256": "bf0144c0549049a5d768d16bc4dfe597fdef5797481cde52883eba9f94c6b529" }, "downloads": -1, "filename": "chomsky-v0.0.18.tar.gz", "has_sig": false, "md5_digest": "45fd4a27d95fd602e75c8222dfa35115", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16596, "upload_time": "2013-01-06T20:27:02", "url": "https://files.pythonhosted.org/packages/e3/4e/c87f3c8c7773ba352eedc3b3b85a7549e472c509b878a33432a7efe774d2/chomsky-v0.0.18.tar.gz" } ], "v0.0.19": [ { "comment_text": "", "digests": { "md5": "a1ee05b9e7c72f1577071b4d6017715a", "sha256": "b89ef38980a0d427171061f59e7f713acf6acddd2231154f34d5c651e62a4bea" }, "downloads": -1, "filename": "chomsky-v0.0.19.tar.gz", "has_sig": false, "md5_digest": "a1ee05b9e7c72f1577071b4d6017715a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16606, "upload_time": "2013-01-07T02:08:26", "url": "https://files.pythonhosted.org/packages/78/10/7a6e701b7ab74535e3214c793b3ab6087b577f4d3c68a69682c2ab9b7b65/chomsky-v0.0.19.tar.gz" } ], "v0.0.2": [ { "comment_text": "", "digests": { "md5": "b83cf80cbc6f71495d121da75d23729c", "sha256": "ed419b8c73e2b0e55ab272d37abbe9190864768b11bcd7e02550f309d667f7d4" }, "downloads": -1, "filename": "chomsky-v0.0.2.tar.gz", "has_sig": false, "md5_digest": "b83cf80cbc6f71495d121da75d23729c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7570, "upload_time": "2012-07-02T22:05:36", "url": "https://files.pythonhosted.org/packages/b2/43/81787667fe922dca65dbf10c302e478277a80f338d455a35ed39288bf9c0/chomsky-v0.0.2.tar.gz" } ], "v0.0.20": [ { "comment_text": "", "digests": { "md5": "173b3cba363dac6cee2a9e63d6879bc2", "sha256": "3f156b6af75ae64e662e9321942e0948a11084344d6ba523fa70ab50ee95515c" }, "downloads": -1, "filename": "chomsky-v0.0.20.tar.gz", "has_sig": false, "md5_digest": "173b3cba363dac6cee2a9e63d6879bc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16665, "upload_time": "2013-01-07T05:16:34", "url": "https://files.pythonhosted.org/packages/c4/0b/fafbcf3a94c8a401a6e27a759a05f7f202c74f50f2f71a96a871c66bc86a/chomsky-v0.0.20.tar.gz" } ], "v0.0.21": [ { "comment_text": "", "digests": { "md5": "40331ff92e807b456f7bd9b5ae88ff94", "sha256": "abe856dcba3c660a815731266dfa1cc8579b7619826cbe05673116ddcd06b16c" }, "downloads": -1, "filename": "chomsky-v0.0.21.tar.gz", "has_sig": false, "md5_digest": "40331ff92e807b456f7bd9b5ae88ff94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16719, "upload_time": "2013-01-07T22:21:57", "url": "https://files.pythonhosted.org/packages/22/b2/1de8a15129d6d14820a89fe04d9a07e2c5caf305f72efec8a4761dfe7dea/chomsky-v0.0.21.tar.gz" } ], "v0.0.22": [ { "comment_text": "", "digests": { "md5": "b5725d74e0fa1963547a0921979a02b1", "sha256": "89216558464ea883a6aace8468e2ebd6813c3c8976ab8744d566475ddbbfa5e7" }, "downloads": -1, "filename": "chomsky-v0.0.22.tar.gz", "has_sig": false, "md5_digest": "b5725d74e0fa1963547a0921979a02b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16747, "upload_time": "2013-01-14T13:11:06", "url": "https://files.pythonhosted.org/packages/7a/88/e3fe7ba40254293e3208b682766bc34b5d38b771d6cb0a9381d6faa27205/chomsky-v0.0.22.tar.gz" } ], "v0.0.3": [ { "comment_text": "", "digests": { "md5": "38a115975024c5b18a8a056529093347", "sha256": "ecf5a7d21595bcdb8b6817524849eaec81d4840b46886a517560eaef80c45d92" }, "downloads": -1, "filename": "chomsky-v0.0.3.tar.gz", "has_sig": false, "md5_digest": "38a115975024c5b18a8a056529093347", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9554, "upload_time": "2012-07-03T22:47:10", "url": "https://files.pythonhosted.org/packages/3a/94/5acdcac481cedcacadc258d3363a64f698ffdb74e88ed7c9fb19ddc0f92e/chomsky-v0.0.3.tar.gz" } ], "v0.0.4": [ { "comment_text": "", "digests": { "md5": "6f8d4910e5ee1f330c51ff0e1e27fec7", "sha256": "090278bcfdb46ffd70556a4fb92c577289ea1560a563b4cb9b874ea8b3a6170e" }, "downloads": -1, "filename": "chomsky-v0.0.4.tar.gz", "has_sig": false, "md5_digest": "6f8d4910e5ee1f330c51ff0e1e27fec7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9391, "upload_time": "2012-07-03T22:48:14", "url": "https://files.pythonhosted.org/packages/1b/d1/c308c2ce86c16228f20396ecac787622a2d5f89c734653605f61de9fbe15/chomsky-v0.0.4.tar.gz" } ], "v0.0.5": [ { "comment_text": "", "digests": { "md5": "e7f41aa295ebbe0b2072038ee1ad7d4b", "sha256": "a1d0ac7ed304a730e136509a7f0d8545de14fcc37b787f20b1999f99b2891893" }, "downloads": -1, "filename": "chomsky-v0.0.5.tar.gz", "has_sig": false, "md5_digest": "e7f41aa295ebbe0b2072038ee1ad7d4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9535, "upload_time": "2012-07-04T01:11:34", "url": "https://files.pythonhosted.org/packages/d6/d3/dc412de06b2d5836375ca474870b37e5df0982913303a1f2842efcf079f8/chomsky-v0.0.5.tar.gz" } ], "v0.0.6": [ { "comment_text": "", "digests": { "md5": "09f6f40297a13675f14ebb6c7fca3edd", "sha256": "915163a2c7cf1a7f7d59367582c7f864a74d046db2ad231d6b9bd91c2e88d872" }, "downloads": -1, "filename": "chomsky-v0.0.6.tar.gz", "has_sig": false, "md5_digest": "09f6f40297a13675f14ebb6c7fca3edd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13441, "upload_time": "2012-07-31T23:40:45", "url": "https://files.pythonhosted.org/packages/b0/2f/ef5f176c4701ac15e216b8d31ba5f2fe2e3eba0fa1839c45edc8d76d2f8e/chomsky-v0.0.6.tar.gz" } ], "v0.0.7": [ { "comment_text": "", "digests": { "md5": "7c185901935817d2a5b41dbe1ea60a73", "sha256": "95a5642ee3e2707ecee27c42d9dfddcb80e6ecfd9059932cbe92368bcba7d78b" }, "downloads": -1, "filename": "chomsky-v0.0.7.tar.gz", "has_sig": false, "md5_digest": "7c185901935817d2a5b41dbe1ea60a73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14503, "upload_time": "2012-08-17T15:38:48", "url": "https://files.pythonhosted.org/packages/e8/fe/027fb62a7fa89d568f647430e1553ece9c2932f878273ae62af194685b5d/chomsky-v0.0.7.tar.gz" } ], "v0.0.8": [ { "comment_text": "", "digests": { "md5": "5e3406aa4b18f692bcdd040cd72b2d1b", "sha256": "7db17c363d52d8c19bd494d56ade7196582415ef22e3d58a94c5b2c962576c0a" }, "downloads": -1, "filename": "chomsky-v0.0.8.tar.gz", "has_sig": false, "md5_digest": "5e3406aa4b18f692bcdd040cd72b2d1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14528, "upload_time": "2012-08-17T17:05:03", "url": "https://files.pythonhosted.org/packages/a6/d6/b1bb62a23abd2acf8b3ad59a5d92ac0803453d304a31489d5ec2218095f2/chomsky-v0.0.8.tar.gz" } ], "v0.0.9": [ { "comment_text": "", "digests": { "md5": "fa72c2dc27255d5e9ca36a42363efe62", "sha256": "0a1b8857b6f0bf7bfecfdda95f6d84b5a14287ef8249ffd4fb48c42b34b04696" }, "downloads": -1, "filename": "chomsky-v0.0.9.tar.gz", "has_sig": false, "md5_digest": "fa72c2dc27255d5e9ca36a42363efe62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14611, "upload_time": "2012-12-29T00:52:23", "url": "https://files.pythonhosted.org/packages/8c/30/bfe0876ca2fa114d90dd36817de14408f8aaee7c0eedf28aa15cc4f8ba3c/chomsky-v0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "882772f281b30b22d8bc040bb685f279", "sha256": "4e7fc4b53e331ea88aff3c7b6e016f83da330f2cad52bf062a7d36664c41930c" }, "downloads": -1, "filename": "chomsky-2.0.0.tar.gz", "has_sig": false, "md5_digest": "882772f281b30b22d8bc040bb685f279", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.0.0", "size": 20101, "upload_time": "2019-06-05T10:47:02", "url": "https://files.pythonhosted.org/packages/cf/3c/1bd5b2644f3428266ac7735ce722723af5bc38619e167212e65fa2d04d02/chomsky-2.0.0.tar.gz" } ] }