{ "info": { "author": "Steven Skoczen", "author_email": "steven.skoczen@wk.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Salad is a helpful mix of some great BDD packages like lettuce and splinter, seasoned with some common modules. Its goal is to make writing acceptance tests downright fun.\n\n[![Build Status](https://secure.travis-ci.org/wieden-kennedy/salad.png?branch=master)](http://travis-ci.org/wieden-kennedy/salad)\n\nInstalling\n==========\n\nWe like simple things.\n\n(Note: there's a pending pull request on lettuce. Until it's through, you'll have to install it manually.)\n```bash\npip install git+https://github.com/skoczen/lettuce.git#egg=lettuce\npip install salad\n```\n\nIf you want django integration,\n\n```bash\npip install django django-extensions\n```\n\n```python\nINSTALLED_APPS += (\"lettuce.django\",)\n```\n\n\nUsage\n=====\n\nSalad is mostly lettuce.\n------------------------\n\nSalad is mostly [lettuce](http://lettuce.it/). So, you should use their [great documentation](http://lettuce.it/contents.html) with gusto. If you're interacting with the browser, you're doing it through the awesome [splinter](http://splinter.cobrateam.info/), and their [docs](http://splinter.cobrateam.info/docs/) are great as well.\n\n\nSalad includes helpful steps and terrains.\n------------------------------------------\n\nThere's a detailed description below on all of the included modules, but if you just want to get up and running quickly, you can:\n\n*steps.py*\n\n```python\nfrom salad.steps.everything import *\n```\n\n*terrains.py*\n\n```python\nfrom salad.terrains.everything import *\n```\n\nAnd you're done.\n\n\nSalad 101\n=========\n\nWriting your first lettuce feature\n----------------------------------\n\n1. Create a \"features\" directory in your app.\n\n ```bash\n mkdir features\n ```\n\n1. Inside the features directory, create a `our-website-is-up.feature` file, with these contents:\n\n ```gherkin\n Feature: Ensuring that Lettuce works, and W+K's website loads\n In order to make sure that lettuce works\n As a developer\n I open the Wieden+Kennedy website using lettuce\n\n Scenario: Opening the W+K website works\n Given I visit the url \"http://www.wk.com/\"\n When I look around\n Then I should see \"Wieden+Kennedy\" somewhere in the page\n ```\n\n1. Inside the features directory, create a steps file, `our-website-is-up-steps.py`, that imports the salad terrains, like:\n\n ```python\n from salad.steps.everything import *\n ```\n\n1. Also 1. Inside the features directory, create a `terrain.py`, that imports the salad steps, like:\n\n ```python\n from salad.terrains.everything import *\n ```\n\n\nThat's it, you're ready to run the tests!\n\n\nRunning your first salad test\n-------------------------------\n\n\nIn the directory above features (your project root), run:\n\n```\nsalad\n```\n\nThat should be it - you should see:\n\n```\nFeature: Ensuring that Lettuce works, and W+K's website loads # features/our-website-is-up.feature:1\n In order to make sure that salad works # features/our-website-is-up.feature:2\n As a developer # features/our-website-is-up.feature:3\n I open the Wieden+Kennedy website using salad # features/our-website-is-up.feature:4\n\n Scenario: Opening the W+K website works # features/our-website-is-up.feature:6\n Given I visit the url \"http://www.wk.com/\" # features/our-website-is-up-steps.py:8\n When I look around # features/our-website-is-up-steps.py:80\n Then I should see \"Wieden+Kennedy\" somewhere in the page # features/our-website-is-up-steps.py:37\n\n1 feature (1 passed)\n1 scenario (1 passed)\n3 steps (3 passed)\n```\n\nEasy.\n\nSalad Built-ins:\n================\n\nThe steps and terrain source files are your best source of information, but here's a high-level look at salad's built-ins:\n\nSteps\n-----\n\n* `browser` - Broken into submodules. Importing `browser` gets them all.\n * `alerts` - Handle alerts and prompts.\n * `browers` - Switch between browsers.\n * `elements` - Verify that elements exist, have expected contents or attributes.\n * `finders` - No actual steps - just helper functions to find elements.\n * `forms` - Interact with form fields - type, focus, select, fill in, and the like.\n * `javascript` - Run javascript and verify results.\n * `mouse` - Click, mouse over, mouse out, drag and drop.\n * `navigation` - Visit a URL, back, forward, refresh.\n * `page` - Page title, URL, full html.\n* `common` - A few utility steps, like wait and look around.\n* `djangoify` - Django-focused steps, helping with url reversing and the like.\n* `everything` - browser, common, and django.\n\nTerrains\n--------\n\n* `common` - Nothing, at the moment.\n* `djangoify` - Setup/teardown a test database for django, including south migrations if south is installed.\n* `browser` - Sets up a browser at `world.browser`. Uses firefox.\n* `firefox` - Same up a firefox browser at `world.firefox`.\n* `chrome` - Same up a chrome browser at `world.chrome`.\n* `zope` - Same up a zope browser (no javascript) at `world.zope`.\n* `everything` - Includes everything above.\n\n\nStep syntax\n-----------\n\nThe built-in steps are designed to be flexible in syntax, and implement all of the actions supported by splinter. Generally, your best bet is to simply read the steps to see what's supported. However, for parts of `elements`, `forms`, and `mouse`, the code is a bit opaque, so here's a better explanation of how those parts work:\n\nGenerally, when you're interacting with forms, page elements, or the mouse, you can think of salad's steps as having a subject, and an action.\n\nSubjects\n--------\n\nFor any element in the page, you can use this phrasing to specify the subject\n\n```gherkin\n the named \"my_name\"'\n the with the id \"my_id\"\n the with the css selector \".my_css_selector>\"\n the with the value \"my value\"\n\n```\n\nIf you're just looking for a link, you can use:\n\n```gherkin\n the link to \"http://someurl.com\"\n the link to a url that contains \"someurl.com\"\n the link with(?: the)? text \"some text\"\n the link with text that contains \"some t\"\n```\n\n\n\nActions\n-------\n\nThe second part is actions. To verify presence and content, you can use these actions:\n\n```gherkin\nshould (not) see \nshould (not) see that the contains \"some text\"\nshould (not) see that the contains exactly \"some text\"\nshould (not) see that the has an attribute called \"attr_name\"\nshould (not) see that the has an attribute called \"attr_name\" with the value \"attr value\"\nshould (not) see \"some text\" anywhere in the page\n```\n\nTo interact with forms, you can use these:\n\n```gherkin\nfill in the with \"some text\"\n(slowly) type \"some text\" into the \nattach \"some/file.name\" onto the \nselect the option named \"option name\" from the \nselect the option with the value \"option_value\" from the \nfocus on the the \nblur from the \nsee that the value of the is (not) \"some text\"\n```\n\nTo use the mouse, you've got:\n\n```gherkin\nclick on the \nmouse over the \nmouse out the \ndouble click the \nright click the \ndrag the and drop it on the \n```\n\n\nTogether, it's quite a flexible system - you can say things like:\n\n```gherkin\nGiven I visit \"http://www.my-test-site.com\"\nWhen I select the option named \"Cheese\" from the radio button named \"shops\"\n And I click on first link with text that contains \"Go\"\nThen I should see an element with the css selector \".cheese_shop_banner\"\n And I should not see \"MeatCo\" anywhere in the page.\n```\n\nUsing an alternate browser\n--------------------------\n\nSalad ships with support for chrome, firefox, and zope's headless javascript-free browser. Firefox is the default, but using one of the other browsers is pretty straightforward. To switch what browser you're using, you simply:\n\n```gherkin\nGiven I am using chrome\n```\n\n\nTips and Tricks\n===============\n\nKeeping tests organized\n-----------------------\n\nAs you've noticed above, we use the convention of naming the steps file the same as the feature file, with `-steps` appended. It's worked well so far. For django apps, it's also been easiest to keep the features for each app within the app structure.\n\nWe're still early in using lettuce on larger projects, and as better advice comes out, we'll be happy to share it. If you have advice, type it up in a pull request, or open an issue!\n\nUsing Chrome\n------------\n\nIf you run into problems using Google Chrome in testing (and you have it installed), you probably need to download and install the chrome webdriver.\n\nIf you're using a mac, you can:\n\n```bash\nbrew install chromedriver\n```\n\nOtherwise, you can find for your operating system here: http://code.google.com/p/chromium/downloads/list\n\nDjango and South\n----------------\n\nSalad plays nicely with both django and south, but doesn't require them.\n\nInclude the django steps and terrains into your steps and terrains, and you're all set. `manage.py harvest` and all of the lettuce goodies should just work.\n\n*Gotcha alert:* If you're serving static media with `staticfiles`, you'll want to pass `-d` to harvest, to run in debug mode (and enable static media.)\n\n\nThe built-in steps are a helper, not a crutch\n----------------------------------------------\n\nCucumber and salad make BDD beautiful by allowing us to write tests in natural, human language. Please don't let salad's built-ins drive how your tests read. They're there for convienence, if the syntax they use fits your scenario's needs. One of the great gains of gherkin syntax is the ability to make a scenario that reads `then I should see that I'm logged in`. Don't lose that beauty!\n\n\nUpdates and Roadmap\n===================\n\nRoadmap\n-------\n\nWe use salad to test our projects, and it's a fairly new component. As such it'll continue to evolve and improve. There's not a specific development map - anything that makes it easier and faster to write BDD tests is on the table. Pull requests are welcome!\n\n\n*0.5 (Planned)*\n\n* `SALAD_SUBJECT_GLOSSARY` - allows project specific extensions to the subjects. For example, you could map `'the submit button'` to `'the element with the css selector \".submit_btn\"'`, and use it for clicks, mouseovers, etc without having to write a specific step for each permuation.\n\n\nRecent updates (full log in CHANGES)\n------------------------------------\n\n*0.4.14*\n\n* Switched to my fork of lettuce, which properly sets up a test database. Will switch back to trunk lettuce once it's merged in!\n* Fixed django imports\n\n\n*0.4.12* (and up to it)\n\n* Bugfix of db install for mysql, and other dbs. Generally works now!\n* Version bump\n\n\n*0.4.8*\n\n* Bugfix of django teardown.\n\n*0.4.7*\n\n* Travis-ci integration.\n\n*0.4.6*\n\n* Consistent grammar on link-finding.\n* Fixed Django + Postgresql support.\n* Lots more keys tested.\n\n*0.4.4*\n\n* South migrations are now based on SOUTH_TESTS_MIGRATE\n\n\n*0.4.3*\n\n* Steps for iFrame context switching added.\n\n*0.4.2*\n\n* Fixed up the cancel prompt code\n* Clarified attribute regex to properly match.\n* Moved js test to local files (no internet connection needed.)\n\n\n*0.4.1*\n\n* Bugfix in finding element code for single links.\n\n*0.4*\n\n\n* Massive upgrade to the included steps. There are now steps for almost everything you can do in splinter, with friendly, consistent syntax!\n* Features written for all of salad's steps. That's 100% test coverage, folks!\n* `browser` steps are now a module, organized by the area of interaction (forms, mouse, etc). `import steps.browser` will still behave as before.\n* Future-proofing: `I access the url` is now deprecated in favor of the friendlier `I visit the url`. \"visit\", \"access\" and \"open\" will all be valid actions for visiting a web page going forward.\n* Backwards-incompatable: `should see \"some text\"` has changed meaning.\n\n * If you mean *this text should appear somewhere in the HTML for this page*, use `should see \"some text\" somewhere in the page`.\n * If you mean *the element that I am about to describe should be in the page and be visible*, use `should see `\n * Note: Backwards-incompatable changes will not be the norm around here - at the moment, I'm fairly sure I know everywhere salad is being used, so I'd rather make the jump and get things right. Future backwards-incompatible changes will go through a deprecation schedule.\n\n\n\n\nCredits:\n========\n\nAll of the hard work was done by the brilliant folks who wrote [lettuce](http://lettuce.it) and [splinter](http://splinter.cobrateam.info/) and [cucumber](http://cukes.info/). Our goal with this package was to make it dead-simple to get everything up and running for a sweet BDD setup.\n\nAll copyrights and licenses for lettuce and splinter remain with their authors, and this package (which doesn't include their source) makes no claim to their code.\n\nCode credits for salad itself are in the AUTHORS file.", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/skoczen/lettuce/tarball/fork", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/wieden-kennedy/salad", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "salad", "package_url": "https://pypi.org/project/salad/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/salad/", "project_urls": { "Download": "https://github.com/skoczen/lettuce/tarball/fork", "Homepage": "https://github.com/wieden-kennedy/salad" }, "release_url": "https://pypi.org/project/salad/0.4.14/", "requires_dist": null, "requires_python": null, "summary": "A nice mix of great BDD ingredients", "version": "0.4.14" }, "last_serial": 1201588, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a10dfb9f2bcdc44808558c4b9da4d265", "sha256": "d1ff4b522a1dc7c25434fb917dd32e2e1d8280ed5c7d55b6b52e2489b7c72b5d" }, "downloads": -1, "filename": "salad-0.1.tar.gz", "has_sig": false, "md5_digest": "a10dfb9f2bcdc44808558c4b9da4d265", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5839, "upload_time": "2012-01-14T00:35:12", "url": "https://files.pythonhosted.org/packages/e9/01/16f026fd4f55f5c35b0f90d74f049325b47d3a38254c2d3a75f3f937b9b5/salad-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "ef6294d2b92c429cec7ce8b128c5f54d", "sha256": "64ded508a6867520721d0339fe460122b4d5cc40f9ebb41f99ed874603ae4447" }, "downloads": -1, "filename": "salad-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ef6294d2b92c429cec7ce8b128c5f54d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5843, "upload_time": "2012-01-14T00:52:27", "url": "https://files.pythonhosted.org/packages/2e/6e/f9bc8fad43212018134d44b6460224ecbd7bdcf490ed2cc945b820af1ede/salad-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "c9390bee142bac371215959af193762c", "sha256": "18670f16fc3e35ecff8242b616154572009660b9d966f561153935bf33dc8a2c" }, "downloads": -1, "filename": "salad-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c9390bee142bac371215959af193762c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5903, "upload_time": "2012-01-14T01:40:10", "url": "https://files.pythonhosted.org/packages/c1/bb/f5898c5decbc6e38ed4ced3c95fc75efc3790615563186bbb46721e7f0b0/salad-0.1.2.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "ef668d2a87b7e9947635ca3b92702e81", "sha256": "59b35feb913504ebd902625a09a55786ab592303d800c1cc402bf0e12dea02c1" }, "downloads": -1, "filename": "salad-0.2.tar.gz", "has_sig": false, "md5_digest": "ef668d2a87b7e9947635ca3b92702e81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6405, "upload_time": "2012-01-17T18:43:03", "url": "https://files.pythonhosted.org/packages/e8/f1/95c3c9e1f1072efaf3a311c5713777db690488afa33133b47df38d49290f/salad-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b5694ca32f2a4c510493e912b89f08e0", "sha256": "85e3e0560e4dd77b806f18ad8f46f35114222b1ab0775eb6554634f0b9265d93" }, "downloads": -1, "filename": "salad-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b5694ca32f2a4c510493e912b89f08e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6480, "upload_time": "2012-01-17T23:15:23", "url": "https://files.pythonhosted.org/packages/3c/ab/fe3b0d34bbb03f29b6ebd8bdf3b653fb771e4f379dbf6b241f4224109097/salad-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "11da392a5657ec165db67548326ba55b", "sha256": "7dda32c39aced9bb1e878b745ed5f5a9a5bf5555eec68c339315b270ab99ceec" }, "downloads": -1, "filename": "salad-0.2.2.tar.gz", "has_sig": false, "md5_digest": "11da392a5657ec165db67548326ba55b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6479, "upload_time": "2012-01-17T23:20:00", "url": "https://files.pythonhosted.org/packages/62/5e/21597882ecb0800a40469ad8aab272c741f6ca507c87f01dfa01b39b8554/salad-0.2.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "bf4913066d833758851cb7530de6caf3", "sha256": "94e7ab0e244b3937db97cc9ed05e0b52d444ef0a4a1f68145542db781f837076" }, "downloads": -1, "filename": "salad-0.3.tar.gz", "has_sig": false, "md5_digest": "bf4913066d833758851cb7530de6caf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8208, "upload_time": "2012-01-19T01:08:54", "url": "https://files.pythonhosted.org/packages/80/62/3a26d7085626ac60c91004bf8622ac4023a28b7eff2ab302a9d4001c310d/salad-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "07e5f15ba6e3f4c77f36c098aea1b4a5", "sha256": "85dde29913db01f55b582d96a626595bf95b51d26bf8b44e8d6136ebb20da3cf" }, "downloads": -1, "filename": "salad-0.4.tar.gz", "has_sig": false, "md5_digest": "07e5f15ba6e3f4c77f36c098aea1b4a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17755, "upload_time": "2012-01-26T19:07:38", "url": "https://files.pythonhosted.org/packages/ee/88/882624688d017b9daf81b18423762c2445d7bc83c365ed40d36079df7863/salad-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "9f630544f618eeabd88c4596a86624b6", "sha256": "8a2dcb2a168eaf7b4519fff8a6c622dc36f9d1989d2d8b6a5eb8d8d017cb4986" }, "downloads": -1, "filename": "salad-0.4.1.tar.gz", "has_sig": false, "md5_digest": "9f630544f618eeabd88c4596a86624b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17813, "upload_time": "2012-01-27T01:35:54", "url": "https://files.pythonhosted.org/packages/ef/85/486c3b588ba58428102e147208df0f570291aebef5fb86034413fd479bd1/salad-0.4.1.tar.gz" } ], "0.4.10": [ { "comment_text": "", "digests": { "md5": "b1e80c95a761c83d632c7978d91e6dc4", "sha256": "845a7494ea0b6fb93c9549cd963f18084498f8d2f5029ad7d991504d575b9e6c" }, "downloads": -1, "filename": "salad-0.4.10.tar.gz", "has_sig": false, "md5_digest": "b1e80c95a761c83d632c7978d91e6dc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19922, "upload_time": "2012-09-17T23:55:36", "url": "https://files.pythonhosted.org/packages/25/3b/2791d9d233bf2f76a4320816694648a14546a535dc00104aba0ced33c1ec/salad-0.4.10.tar.gz" } ], "0.4.11": [ { "comment_text": "", "digests": { "md5": "2d748e850e0aad587428100fa2c3f656", "sha256": "16f812a4f4ca2b684ff33380d8df52b0326bce3295b2173134ebf6845531ebb0" }, "downloads": -1, "filename": "salad-0.4.11.tar.gz", "has_sig": false, "md5_digest": "2d748e850e0aad587428100fa2c3f656", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19859, "upload_time": "2012-10-25T00:31:12", "url": "https://files.pythonhosted.org/packages/c2/c5/2f074f9e76fc21465598a99e8dde76b08302c0acdb9e5c2d0b35bf8d016d/salad-0.4.11.tar.gz" } ], "0.4.12": [ { "comment_text": "", "digests": { "md5": "da30db7da06a26e38c26d6200ee01d51", "sha256": "05632cf652baaa9678e771529c4cfc2d1d9cd8526249debb6b3657cc806516e6" }, "downloads": -1, "filename": "salad-0.4.12.tar.gz", "has_sig": false, "md5_digest": "da30db7da06a26e38c26d6200ee01d51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19886, "upload_time": "2012-10-25T22:10:20", "url": "https://files.pythonhosted.org/packages/64/f9/06f3a16ece5d16b329b84dfd972ff13ce2e53de73be8afdce75d87fee9a1/salad-0.4.12.tar.gz" } ], "0.4.13": [ { "comment_text": "", "digests": { "md5": "e91dcb7ee6acd06d5af0d74fbd767f85", "sha256": "a89636e5726d79c153c2fa47e205b23f0fd5ff3ad7485d04de59157025e712ea" }, "downloads": -1, "filename": "salad-0.4.13.tar.gz", "has_sig": false, "md5_digest": "e91dcb7ee6acd06d5af0d74fbd767f85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19639, "upload_time": "2012-11-08T23:07:46", "url": "https://files.pythonhosted.org/packages/51/4b/3cea0663cf68bacd4f64384103816af183a9dccfc917f5f475e9d15d6296/salad-0.4.13.tar.gz" } ], "0.4.14": [ { "comment_text": "", "digests": { "md5": "06293b97d5363e5a59b300a2895865d2", "sha256": "7d04db2d1fcd1d45ed7ce687d60e8dcbbcae4a273b7c5b8cb97764e1fbd39c83" }, "downloads": -1, "filename": "salad-0.4.14.tar.gz", "has_sig": false, "md5_digest": "06293b97d5363e5a59b300a2895865d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19776, "upload_time": "2012-11-16T05:24:50", "url": "https://files.pythonhosted.org/packages/54/1e/5964e741d81ab39540397103e246e17b9e6a77570e716b96859006266c9c/salad-0.4.14.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "aa8d72b4bdbf05e84b1e25fd6c4efd8a", "sha256": "1f125f45aa5073a8247c0248492ebba8445862e90242a9d4aa3a20638dde88bb" }, "downloads": -1, "filename": "salad-0.4.2.tar.gz", "has_sig": false, "md5_digest": "aa8d72b4bdbf05e84b1e25fd6c4efd8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17836, "upload_time": "2012-01-27T23:47:46", "url": "https://files.pythonhosted.org/packages/8e/2f/e1b43fc3f73cfa0d6e3edd189f830ba220612721d286c924a65bf3c833bf/salad-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "6423f88d49322ccb6727aa5472bb9844", "sha256": "a8c99bfe6a7be87d472b8fd4dcf4e0e1ec40935e8c35226a063e0e45d1418628" }, "downloads": -1, "filename": "salad-0.4.3.tar.gz", "has_sig": false, "md5_digest": "6423f88d49322ccb6727aa5472bb9844", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17999, "upload_time": "2012-01-30T23:16:29", "url": "https://files.pythonhosted.org/packages/35/66/2d24a1b0a9db402fad76ab421d80db9b699384a257cfd6f18c326c02e73c/salad-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "4f92013126a63311211bdd811e248200", "sha256": "422cf4b2f358cf6ef6833afcf6866efbd29cb2968c62c70af11b44e3c337d2eb" }, "downloads": -1, "filename": "salad-0.4.4.tar.gz", "has_sig": false, "md5_digest": "4f92013126a63311211bdd811e248200", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18246, "upload_time": "2012-04-12T19:40:45", "url": "https://files.pythonhosted.org/packages/e0/17/7ec57f93b67ad17d0c9ed8558a5244dea43667a6d3149566be0c769c058c/salad-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "0543e993d261b336eabecaac29e9ff6c", "sha256": "bed26d3f97fa5e7cf9a2791d845fbd022a56ce41442a08b9d01a79e67e035085" }, "downloads": -1, "filename": "salad-0.4.5.tar.gz", "has_sig": false, "md5_digest": "0543e993d261b336eabecaac29e9ff6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21041, "upload_time": "2012-05-23T03:04:17", "url": "https://files.pythonhosted.org/packages/97/a2/8ab491ee43b6fe92d2a04146912fc1f5df32da20214738f58647bf522802/salad-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "6d5a5f6064b49c8d53a6be7034c7544a", "sha256": "1bc8aee116ca3220958703bb127e1b5d9af379ed73b0ddbfba5c9c1a502bcf56" }, "downloads": -1, "filename": "salad-0.4.6.tar.gz", "has_sig": false, "md5_digest": "6d5a5f6064b49c8d53a6be7034c7544a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19501, "upload_time": "2012-09-13T20:32:08", "url": "https://files.pythonhosted.org/packages/d2/5e/a8465189cc7f22c0b6e8d538e5a2c584527792247e7d996f59a842259136/salad-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "e281b7eca4447865e9cebc305a9590b3", "sha256": "d8af0f2724c813c74ab282d05feb55314c06c88d6f90272c388dcf65e2650a9d" }, "downloads": -1, "filename": "salad-0.4.7.tar.gz", "has_sig": false, "md5_digest": "e281b7eca4447865e9cebc305a9590b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19572, "upload_time": "2012-09-14T23:53:47", "url": "https://files.pythonhosted.org/packages/eb/fc/d3f2716963daa586ee7d771ea0135aa439b29cb2e01602220657230237aa/salad-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "d8eb112f035e990e90e7445578972b01", "sha256": "8348e0fea397d2564b8e10c4e02649929cf1fa53cf094981825a90a731194ff3" }, "downloads": -1, "filename": "salad-0.4.8.tar.gz", "has_sig": false, "md5_digest": "d8eb112f035e990e90e7445578972b01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19602, "upload_time": "2012-09-17T18:41:24", "url": "https://files.pythonhosted.org/packages/b5/93/89a64d7ba39863c2e1cc96e0334cd709e687e073e9e3900a9ca437631ae7/salad-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "1822aa4c52822784f1563556f75ba996", "sha256": "4714385e6e893e3cf452ce6081fc980f3316f17dc2959767357e7ef7c4713df8" }, "downloads": -1, "filename": "salad-0.4.9.tar.gz", "has_sig": false, "md5_digest": "1822aa4c52822784f1563556f75ba996", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19844, "upload_time": "2012-09-17T23:48:28", "url": "https://files.pythonhosted.org/packages/91/54/eb88e1f58af408c9bd833db339a6be350c00aa83a639de139b71ec9b2d9f/salad-0.4.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "06293b97d5363e5a59b300a2895865d2", "sha256": "7d04db2d1fcd1d45ed7ce687d60e8dcbbcae4a273b7c5b8cb97764e1fbd39c83" }, "downloads": -1, "filename": "salad-0.4.14.tar.gz", "has_sig": false, "md5_digest": "06293b97d5363e5a59b300a2895865d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19776, "upload_time": "2012-11-16T05:24:50", "url": "https://files.pythonhosted.org/packages/54/1e/5964e741d81ab39540397103e246e17b9e6a77570e716b96859006266c9c/salad-0.4.14.tar.gz" } ] }