{ "info": { "author": "Ruslan Spivak", "author_email": "ruslan.spivak@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: Unix", "Programming Language :: Python", "Topic :: Software Development :: Compilers" ], "description": "::\n\n _____ _ _____ __ __ _____ _______\n / ____| | |_ _| \\/ |_ _|__ __|\n | (___ | | | | | \\ / | | | | |\n \\___ \\| | | | | |\\/| | | | | |\n ____) | |____ _| |_| | | |_| |_ | |\n |_____/|______|_____|_| |_|_____| |_|\n\n\nWelcome to SlimIt\n==================================\n\n`SlimIt` is a JavaScript minifier written in Python.\nIt compiles JavaScript into more compact code so that it downloads\nand runs faster.\n\n`SlimIt` also provides a library that includes a JavaScript parser,\nlexer, pretty printer and a tree visitor.\n\n`http://slimit.readthedocs.org/ `_\n\nInstallation\n------------\n\n::\n\n $ [sudo] pip install slimit\n\nOr the bleeding edge version from the git master branch:\n\n::\n\n $ [sudo] pip install git+https://github.com/rspivak/slimit.git#egg=slimit\n\n\nThere is also an official DEB package available at\n`http://packages.debian.org/sid/slimit `_\n\n\nLet's minify some code\n----------------------\n\nFrom the command line:\n\n::\n\n $ slimit -h\n Usage: slimit [options] [input file]\n\n If no input file is provided STDIN is used by default.\n Minified JavaScript code is printed to STDOUT.\n\n Options:\n -h, --help show this help message and exit\n -m, --mangle mangle names\n -t, --mangle-toplevel\n mangle top level scope (defaults to False)\n\n $ cat test.js\n var foo = function( obj ) {\n for ( var name in obj ) {\n return false;\n }\n return true;\n };\n $\n $ slimit --mangle < test.js\n var foo=function(a){for(var b in a)return false;return true;};\n\nOr using library API:\n\n>>> from slimit import minify\n>>> text = \"\"\"\n... var foo = function( obj ) {\n... for ( var name in obj ) {\n... return false;\n... }\n... return true;\n... };\n... \"\"\"\n>>> print minify(text, mangle=True, mangle_toplevel=True)\nvar a=function(a){for(var b in a)return false;return true;};\n\n\nIterate over, modify a JavaScript AST and pretty print it\n---------------------------------------------------------\n\n>>> from slimit.parser import Parser\n>>> from slimit.visitors import nodevisitor\n>>> from slimit import ast\n>>>\n>>> parser = Parser()\n>>> tree = parser.parse('for(var i=0; i<10; i++) {var x=5+i;}')\n>>> for node in nodevisitor.visit(tree):\n... if isinstance(node, ast.Identifier) and node.value == 'i':\n... node.value = 'hello'\n...\n>>> print tree.to_ecma() # print awesome javascript :)\nfor (var hello = 0; hello < 10; hello++) {\n var x = 5 + hello;\n}\n>>>\n\nWriting custom node visitor\n---------------------------\n\n>>> from slimit.parser import Parser\n>>> from slimit.visitors.nodevisitor import ASTVisitor\n>>>\n>>> text = \"\"\"\n... var x = {\n... \"key1\": \"value1\",\n... \"key2\": \"value2\"\n... };\n... \"\"\"\n>>>\n>>> class MyVisitor(ASTVisitor):\n... def visit_Object(self, node):\n... \"\"\"Visit object literal.\"\"\"\n... for prop in node:\n... left, right = prop.left, prop.right\n... print 'Property key=%s, value=%s' % (left.value, right.value)\n... # visit all children in turn\n... self.visit(prop)\n...\n>>>\n>>> parser = Parser()\n>>> tree = parser.parse(text)\n>>> visitor = MyVisitor()\n>>> visitor.visit(tree)\nProperty key=\"key1\", value=\"value1\"\nProperty key=\"key2\", value=\"value2\"\n\nUsing lexer in your project\n---------------------------\n\n>>> from slimit.lexer import Lexer\n>>> lexer = Lexer()\n>>> lexer.input('a = 1;')\n>>> for token in lexer:\n... print token\n...\nLexToken(ID,'a',1,0)\nLexToken(EQ,'=',1,2)\nLexToken(NUMBER,'1',1,4)\nLexToken(SEMI,';',1,5)\n\nYou can get one token at a time using ``token`` method:\n\n>>> lexer.input('a = 1;')\n>>> while True:\n... token = lexer.token()\n... if not token:\n... break\n... print token\n...\nLexToken(ID,'a',1,0)\nLexToken(EQ,'=',1,2)\nLexToken(NUMBER,'1',1,4)\nLexToken(SEMI,';',1,5)\n\n`LexToken` instance has different attributes:\n\n>>> lexer.input('a = 1;')\n>>> token = lexer.token()\n>>> token.type, token.value, token.lineno, token.lexpos\n('ID', 'a', 1, 0)\n\nBenchmarks\n----------\n\n**SAM** - JQuery size after minification in bytes (the smaller number the better)\n\n+-------------------------------+------------+------------+------------+\n| Original jQuery 1.6.1 (bytes) | SlimIt SAM | rJSmin SAM | jsmin SAM |\n+===============================+============+============+============+\n| 234,995 | 94,290 | 134,215 | 134,819 |\n+-------------------------------+------------+------------+------------+\n\nRoadmap\n-------\n- when doing name mangling handle cases with 'eval' and 'with'\n- foo[\"bar\"] ==> foo.bar\n- consecutive declarations: var a = 10; var b = 20; ==> var a=10,b=20;\n- reduce simple constant expressions if the result takes less space:\n 1 +2 * 3 ==> 7\n- IF statement optimizations\n\n 1. if (foo) bar(); else baz(); ==> foo?bar():baz();\n 2. if (!foo) bar(); else baz(); ==> foo?baz():bar();\n 3. if (foo) bar(); ==> foo&&bar();\n 4. if (!foo) bar(); ==> foo||bar();\n 5. if (foo) return bar(); else return baz(); ==> return foo?bar():baz();\n 6. if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}\n\n- remove unreachable code that follows a return, throw, break or\n continue statement, except function/variable declarations\n- parsing speed improvements\n\nAcknowledgments\n---------------\n- The lexer and parser are built with `PLY `_\n- Several test cases and regexes from `jslex `_\n- Some visitor ideas - `pycparser `_\n- Many grammar rules are taken from `rkelly `_\n- Name mangling and different optimization ideas - `UglifyJS `_\n- ASI implementation was inspired by `pyjsparser `_\n\nLicense\n-------\nThe MIT License (MIT)\n\nChange History\n==============\n0.8.1 (2013-03-26)\n------------------\n- Bug fix: https://github.com/rspivak/slimit/pull/45\n Fix syntax error in the output of for statement with some form of expressions\n\n0.8.0 (2013-03-23)\n------------------\n- Python 3.x support\n- Bug fix: https://github.com/rspivak/slimit/issues/42\n slimit removes parentheses from ternary expression, causes syntax error in jQuery\n- Bug fix: https://github.com/rspivak/slimit/issues/37\n simple identifier in FOR init\n- Bug fix: https://github.com/rspivak/slimit/issues/36\n using $ for mangled function names conflicts with jQuery\n\n0.7.4 (2012-06-5)\n------------------\n- Bug fix: https://github.com/rspivak/slimit/issues/34\n 'class' is reserved keyword now\n\n0.7.3 (2012-05-21)\n------------------\n- Bug fix (unary op in FOR init): https://github.com/rspivak/slimit/pull/33\n\n0.7.2 (2012-05-17)\n------------------\n- Added support for get/set properties:\n https://github.com/rspivak/slimit/issues/32\n\n0.7.1 (2012-05-10)\n------------------\n- Function call support in FOR init section:\n https://github.com/rspivak/slimit/pull/31\n\n0.7 (2012-04-16)\n----------------\n- Multiline string support: https://github.com/rspivak/slimit/issues/24\n\n0.6.2 (2012-04-07)\n------------------\n- Bug fix: https://github.com/rspivak/slimit/issues/29\n- Bug fix: https://github.com/rspivak/slimit/issues/28\n\n0.6.1 (2012-03-15)\n------------------\n- Added command-line option *-t/--mangle-toplevel* to turn on\n global scope name mangling. As of this version it's off by\n default: https://github.com/rspivak/slimit/issues/27\n- Removed dependency on a 'distribute' package\n- Bug fix: https://github.com/rspivak/slimit/issues/26\n- Bug fix: https://github.com/rspivak/slimit/issues/25\n\n0.6 (2012-02-04)\n----------------\n- Added optimization: foo[\"bar\"] ==> foo.bar\n- Added base class for custom AST node visitors\n- Documentation updates\n- Bug fix: https://github.com/rspivak/slimit/issues/22\n- Bug fix: https://github.com/rspivak/slimit/issues/21\n\n0.5.5 (2011-10-05)\n------------------\n- Bugfix: https://github.com/rspivak/slimit/issues/7\n\n0.5.4 (2011-10-01)\n------------------\n- Bugfix: https://github.com/rspivak/slimit/issues/6\n Division with \"this\" fails\n\n0.5.3 (2011-06-29)\n------------------\n- Bugfix: https://github.com/rspivak/slimit/issues/5\n\n0.5.2 (2011-06-14)\n------------------\n- Bugfix: https://github.com/rspivak/slimit/issues/4\n- Bugfix: https://github.com/rspivak/slimit/issues/3\n\n0.5.1 (2011-06-06)\n------------------\n- Bugfix: https://github.com/rspivak/slimit/issues/2\n\n0.5 (2011-06-06)\n----------------\n- Added name mangling\n\n0.4 (2011-05-12)\n----------------\n- Minify more by removing block braces { }\n- More tests\n\n0.3.2 (2011-05-09)\n------------------\n- More hacks to use pre-generated lex and yacc tables when called from\n the command line\n\n0.3.1 (2011-05-09)\n------------------\n- Use pre-generated lex and yacc tables when called from the command line\n\n0.3 (2011-05-09)\n----------------\n- Added minifier\n\n0.2 (2011-05-07)\n----------------\n- Added a JavaScript parser\n- Added pretty printer\n- Added node visitor\n\n0.1 (2011-05-02)\n----------------\n- Initial public version. It contains only a JavaScript lexer", "description_content_type": null, "docs_url": "https://pythonhosted.org/slimit/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://slimit.readthedocs.org", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "slimit", "package_url": "https://pypi.org/project/slimit/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/slimit/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://slimit.readthedocs.org" }, "release_url": "https://pypi.org/project/slimit/0.8.1/", "requires_dist": null, "requires_python": null, "summary": "SlimIt - JavaScript minifier", "version": "0.8.1" }, "last_serial": 799703, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "9884aa147a399447c125be27912ccd14", "sha256": "ace97dc13e6eae559da08df1750b1bb0f26e6ec7971b5d982e77871caf8e088e" }, "downloads": -1, "filename": "slimit-0.1.tar.gz", "has_sig": false, "md5_digest": "9884aa147a399447c125be27912ccd14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12271, "upload_time": "2011-05-02T22:18:57", "url": "https://files.pythonhosted.org/packages/12/d3/29a9eb758874d800ce2073f9a1ce4b62acaab047ef575ebb5cf03e3ff013/slimit-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2b1103da211377f9a41c9183e46c39f5", "sha256": "f74a6085c5b1fe4cc6dd04f7c8d6b9833cbe6177ae347aa22c3464d876134a68" }, "downloads": -1, "filename": "slimit-0.2.tar.gz", "has_sig": false, "md5_digest": "2b1103da211377f9a41c9183e46c39f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24147, "upload_time": "2011-05-08T02:35:10", "url": "https://files.pythonhosted.org/packages/cb/62/1a1604d83032459a50041155e780cd52f762ac003eec7dd5797adcca0e67/slimit-0.2.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "09df40db88a8771bdcbaf53546032fe8", "sha256": "85617382828db5f14d3ad9b2418501e4d3c7b9fb6a52eca6a599b2ec43d5ae5e" }, "downloads": -1, "filename": "slimit-0.3.2.tar.gz", "has_sig": false, "md5_digest": "09df40db88a8771bdcbaf53546032fe8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49650, "upload_time": "2011-05-09T10:01:20", "url": "https://files.pythonhosted.org/packages/06/76/5883de8f3bdc53346056b4862aad1dc1efb716742c60c24816bc476f3b84/slimit-0.3.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "a13c1e89d2ecb1597b02e26fd2031f53", "sha256": "117ed1384d65f7b768f0204114d2b4518b231c6fdcfdf6289a6becc7b5de4c21" }, "downloads": -1, "filename": "slimit-0.4.tar.gz", "has_sig": false, "md5_digest": "a13c1e89d2ecb1597b02e26fd2031f53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51201, "upload_time": "2011-05-13T05:03:41", "url": "https://files.pythonhosted.org/packages/83/ba/bbf7d2160e8cb4ec5469b71de754f15603013cf9dfaa85f72b29ebeb4b93/slimit-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "1e034da8579c34651f4f79a6a817ee86", "sha256": "8573e06e445c7450e2f38c67dde46b39f883ef048690c884c4e538640d91f599" }, "downloads": -1, "filename": "slimit-0.5.zip", "has_sig": false, "md5_digest": "1e034da8579c34651f4f79a6a817ee86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74637, "upload_time": "2011-06-06T06:41:35", "url": "https://files.pythonhosted.org/packages/cb/d6/041b905c32cb2d1e18d9570b0dc8141eee7c2405d80719b6c41092b8d4cf/slimit-0.5.zip" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "6f584f219e82c288cdfc4004eac7e3ac", "sha256": "59bfa383fa76ccd8395ab307228813f5485ed0a6ac890d4068a8488efce7eb47" }, "downloads": -1, "filename": "slimit-0.5.1.zip", "has_sig": false, "md5_digest": "6f584f219e82c288cdfc4004eac7e3ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74849, "upload_time": "2011-06-06T14:31:47", "url": "https://files.pythonhosted.org/packages/c0/1a/89bc68e9ad296317faf9463a190b3660b367e18de9c063644c182c638410/slimit-0.5.1.zip" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "7550cec7eed5b4d62fb773aac6a10e34", "sha256": "b4979b1e2e0902c34562a9505daf9bafd95051bdbdc0d5a451c0e93d03eb400f" }, "downloads": -1, "filename": "slimit-0.5.2.zip", "has_sig": false, "md5_digest": "7550cec7eed5b4d62fb773aac6a10e34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76515, "upload_time": "2011-06-15T03:20:21", "url": "https://files.pythonhosted.org/packages/eb/7f/82c8bce7662d73c01a521f7066ea63249cc5de2cab45c45a2a4366d81a15/slimit-0.5.2.zip" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "4babe9563839501917e22913479a220f", "sha256": "f532187ac01d1d1f5fc20a28ae4fc9363bcffc94a9483209d9504a6526820ac0" }, "downloads": -1, "filename": "slimit-0.5.3.zip", "has_sig": false, "md5_digest": "4babe9563839501917e22913479a220f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78603, "upload_time": "2011-06-29T06:22:10", "url": "https://files.pythonhosted.org/packages/fa/53/7d46655959578d4278f9e6557aafa2c5021f94d0e42f12a4f83e82dddb35/slimit-0.5.3.zip" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "d83550ad50967989a45048039f3d796b", "sha256": "c8b4125530c1b5d654033ff6e6bb8211a88039470953e96d859328f6141b9016" }, "downloads": -1, "filename": "slimit-0.5.4.zip", "has_sig": false, "md5_digest": "d83550ad50967989a45048039f3d796b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79258, "upload_time": "2011-10-01T06:23:36", "url": "https://files.pythonhosted.org/packages/84/e2/3ac78c8d13b4c3503c8b7921eb91597b0d590874367e3b917b9ea771728c/slimit-0.5.4.zip" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "0f77cb80d9b06f364afb9e4ffb8d6ff7", "sha256": "81201ff334fc285f9b27180b1d8ab8c6e6fcfac1bfc5ef487bf7b75734fdedb2" }, "downloads": -1, "filename": "slimit-0.5.5.zip", "has_sig": false, "md5_digest": "0f77cb80d9b06f364afb9e4ffb8d6ff7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79833, "upload_time": "2011-10-06T03:46:09", "url": "https://files.pythonhosted.org/packages/a3/af/932b8d65ddb1138f37089e75483fd4ff6738148866514db3eb4dac5f0fc1/slimit-0.5.5.zip" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "118fd71391977001fd0e543ad1229044", "sha256": "9ea6ba063704c61f2d057b253439cd863d6f0af9bbb485194c8b7c3dcfa19dd0" }, "downloads": -1, "filename": "slimit-0.6.zip", "has_sig": false, "md5_digest": "118fd71391977001fd0e543ad1229044", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82856, "upload_time": "2012-02-05T04:47:20", "url": "https://files.pythonhosted.org/packages/36/c1/42f58349710a623e24d11dbfd87fde1d51d2f822e4cc1cacb918b460c5cf/slimit-0.6.zip" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "e7c0229f26ddc8e7201492d927647c58", "sha256": "7983054176bba1aa7633e8931df3dd9cb59ab85b9c0574fc41f5fa0f6da3cca8" }, "downloads": -1, "filename": "slimit-0.6.1.zip", "has_sig": false, "md5_digest": "e7c0229f26ddc8e7201492d927647c58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 83923, "upload_time": "2012-03-16T04:30:20", "url": "https://files.pythonhosted.org/packages/21/d6/ef8b078367d0805c039f035e9f53def233b80f13007ee0af56312bfd298f/slimit-0.6.1.zip" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "a160e1d1908eea05681d994dcdf8b6fe", "sha256": "e5bc309206c83fb03966e209a3ae1d80110c01124f8d7e1c2409ba1b7321923f" }, "downloads": -1, "filename": "slimit-0.6.2.zip", "has_sig": false, "md5_digest": "a160e1d1908eea05681d994dcdf8b6fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84413, "upload_time": "2012-04-07T07:53:43", "url": "https://files.pythonhosted.org/packages/eb/b2/949b8a82f2389c76cc165e29667259ca1525f4bb4d5b4e13571ac741418a/slimit-0.6.2.zip" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "b394b534b154051f6056d33609367de8", "sha256": "80855895f71a742fae71a403f76fcef1c56a2e46df786ab90439a612da435f98" }, "downloads": -1, "filename": "slimit-0.7.zip", "has_sig": false, "md5_digest": "b394b534b154051f6056d33609367de8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84631, "upload_time": "2012-04-17T03:54:10", "url": "https://files.pythonhosted.org/packages/c3/73/5a3b835de5a5d0adfdedc8d812c02b3fb815efe535f185c7bb3c37ac26d0/slimit-0.7.zip" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "ddf3608f6b7782539e08c2d60adeca1b", "sha256": "6e9a0d078fc3181ef2794feae300b50a1207b4e0a4bdc2754fd65e8866e66c59" }, "downloads": -1, "filename": "slimit-0.7.1.tar.gz", "has_sig": false, "md5_digest": "ddf3608f6b7782539e08c2d60adeca1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63659, "upload_time": "2012-05-10T08:39:22", "url": "https://files.pythonhosted.org/packages/1c/e3/5bdda5e98880fd3a48c42e8b175a6191ec2297946547ccc2c1e604d1b8de/slimit-0.7.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "c792712cb2ba13497ea4a0ea01f4a5ba", "sha256": "353b9c29bb6e5d188cee5699fc392a6cd0cc9acacbfc09b7b62808599a36be6d" }, "downloads": -1, "filename": "slimit-0.7.1.zip", "has_sig": false, "md5_digest": "c792712cb2ba13497ea4a0ea01f4a5ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85017, "upload_time": "2012-05-10T08:39:20", "url": "https://files.pythonhosted.org/packages/00/a4/09391826702c2869142be2699f1fc5586fdd860ef6cff4926f23405d057f/slimit-0.7.1.zip" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "0a37ba68740068cc52f54950659200bc", "sha256": "8c7404ad03f1124ade0d428485ba5845a7f56a21f6b09160c2c22730b2ccbaa8" }, "downloads": -1, "filename": "slimit-0.7.2.zip", "has_sig": false, "md5_digest": "0a37ba68740068cc52f54950659200bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86605, "upload_time": "2012-05-17T07:27:55", "url": "https://files.pythonhosted.org/packages/4d/ef/4285bea54c57bfa9c192ff3058c79d6dff848d2e2293e2f7d62db84af508/slimit-0.7.2.zip" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "de0a5f1655f4d82ef758d33c94b0b649", "sha256": "71b1453570d7f06cc838ae47a8a38e62c1be54f7a3e0c2a3861e559c490a4f18" }, "downloads": -1, "filename": "slimit-0.7.3.zip", "has_sig": false, "md5_digest": "de0a5f1655f4d82ef758d33c94b0b649", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86921, "upload_time": "2012-05-21T06:08:58", "url": "https://files.pythonhosted.org/packages/9b/17/84dc10c158155f590ccd24260147bce687fcf0e44ed2de89b3557234a09c/slimit-0.7.3.zip" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "35b50859883a1d8dfd61a77c125f517d", "sha256": "3916ff8b58545ee601d6fdc083dfd467f3709ea0f8e77ced35e1655e767496d7" }, "downloads": -1, "filename": "slimit-0.7.4.zip", "has_sig": false, "md5_digest": "35b50859883a1d8dfd61a77c125f517d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87154, "upload_time": "2012-06-06T02:25:03", "url": "https://files.pythonhosted.org/packages/3e/61/bedd3345541716aad1549b0609cf97addf1cd2a8d6fcc05549c6276998e2/slimit-0.7.4.zip" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "148454c96518cf184ce903804e9334bf", "sha256": "84aebef383ae1d9756a78d1edace5fb0590a8bf0a086aa2ea5e04095ce1b327c" }, "downloads": -1, "filename": "slimit-0.8.0.zip", "has_sig": false, "md5_digest": "148454c96518cf184ce903804e9334bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87949, "upload_time": "2013-03-23T04:22:29", "url": "https://files.pythonhosted.org/packages/11/83/ba71ff82f6945e114ecd9e196920c242c32b3d26779bc60312f802cff35a/slimit-0.8.0.zip" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "5f5f86e98940a1e71a6a30d501e0d733", "sha256": "f433dcef899f166b207b67d91d3f7344659cb33b8259818f084167244e17720b" }, "downloads": -1, "filename": "slimit-0.8.1.zip", "has_sig": false, "md5_digest": "5f5f86e98940a1e71a6a30d501e0d733", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88217, "upload_time": "2013-03-26T13:11:15", "url": "https://files.pythonhosted.org/packages/61/cf/0d6598b1ceb463a46b75a716fbb23d2d5ccc5738aba8ddceeec3fa59997f/slimit-0.8.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5f5f86e98940a1e71a6a30d501e0d733", "sha256": "f433dcef899f166b207b67d91d3f7344659cb33b8259818f084167244e17720b" }, "downloads": -1, "filename": "slimit-0.8.1.zip", "has_sig": false, "md5_digest": "5f5f86e98940a1e71a6a30d501e0d733", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88217, "upload_time": "2013-03-26T13:11:15", "url": "https://files.pythonhosted.org/packages/61/cf/0d6598b1ceb463a46b75a716fbb23d2d5ccc5738aba8ddceeec3fa59997f/slimit-0.8.1.zip" } ] }