{ "info": { "author": "David Lai", "author_email": "david@wiredrive.com", "bugtrack_url": null, "classifiers": [], "description": "WTF - Web Test Framework [![Build Status](https://travis-ci.org/wiredrive/wtframework.png?branch=master)](https://travis-ci.org/wiredrive/wtframework)\n======\nhttps://github.com/wiredrive/wtframework\n\nWeb Test Framework's (referred to as WTF for short) goal is to build on top of Selenium \nWebdriver tools and and libraries to provide a structured test framework for testing a \nWeb Applications in a maintainable manner. The goal is to provide the project structures \nand tools to help QA/SDET professionals quickly setup and develop acceptance level web \ntests which are configurable, robust, and easy to use. The ultimate goal is to build a \ncommon framework that is highly configurable, maintainable, and easy to use.\n\n\nInstallation\n=======\n\nRequirements\n*\tPython 2.7 - http://www.python.org/download/\n*\tPyPi (pip) - http://www.pip-installer.org/en/latest/\n\nInstallation via PYPI\n\n\tpip install wtframework\n\n\nSetting up your project\n=======================\n\nRun the following command to initialize an empty project structure for a WTF test.\n\t\n\twtf_init.py YourProjectName --withexamples\n\nWindows Note: .py files may not be executable, you may have to prefix these commands \nwith the python command. \n\n\tpython wtf_init.py YourProject --withexamples\n\t\nThis will create an the folders and packages of your project. You'll see something like:\n\n\t/YourProjectName\n\t\t/assets - place non-code files used in your tests here.\n\t\t/configs - location of config files.\n\t\t/data - data files (like CSV files) goes here.\n\t\t/reference-screenshots - if enabled, reference screenshots are placed here.\n\t\t/reports - test result XML files will go here when you run tests.\n\t\t/screenshots - screenshots taken on test failures will go here.\n\t\t/tests - top level package for your test code.\n\t\t\t/flows - high level reuseable multipage flows.\n\t\t\t/models - data models go here. (like DataBase ORM code)\n\t\t\t/pages - Your page objects go here.\n\t\t\t/support - reuseable support utility functions go here.\n\t\t\t/testdata - custom code for working with test data.\n\t\t\t/tests - Your high level tests will go here.\n\t\n\t\nNow the directory structure and your python path is setup to run tests in WTF framework.\n\n\nRunning your tests\n==================\n\nRun your tests.\n\n\t./runtests.py [-c ConfigFile]\n\nThis will execute the unit tests in the `tests/tests` folder. The test results will be\nwritten to `reports/`, any screenshots taken during errors will be stored in the\n`screenshots/` folder.\n\n\nConfiguring Eclipse/PyDev Environment\n-------------------------------------\n1.\tDownload/Install Eclipse. http://www.eclipse.org/\n2.\tInstall the PyDev plugin. http://pydev.org/\n3.\tGoto Eclipse -> Preferences (Or on windows, this Window -> Preferences )\n4.\tGoto PyDev -> Interpretor Python then open the Libraries tab.\n5.\tAdd you python site-packages (where pip installs packages to)\n\tAt this point your PyDev enviornment should be able to recognize your \n\tinstalled packages.\n6.\tIn Eclipse, goto \"File\" and create a new PyDev project.\n7.\tFill out the required fields and use your generated project structure as\n\tyour Project folder. This should create the PyDev project files necessary to\n\tallow you to work on this project as a PyDev project.\n8. Open the project settings, then under \"PyDev - PYTHONPATH\" settings, add \n your project base directory as a source folder. Then save.\n\nAt this point, you should be able to right click, select \"Run As\" and execute your test \ncases as PyUnit test case.\n\n\nInstalling the WTF PageObject Utility Chrome Extension\n------------------------------------------------------\n1. Download or clone the source. The extension source code is included under \n `/browser-plugins` directory.\n2. Open Chrome.\n3. Open the Chrome's Preferences menu, and select \"Extensions\"\n4. Enable the \"Developer mode\" checkbox.\n5. Click on the \"Load unpack extension...\" button.\n6. Then select the \"chrome\" folder under the 'wtframework/browser-plugins/' directory.\n7. At this point the plugin should be installed. You can test out the plugin by going \n to another webpage, clicking on the `WTF` extension button in your chrome toolbar, \n this should open the WTF PageObject Utility window.\n\n\n\nWTF Framework Features\n======================\n\n\nConfigurable Tests\n------------------\nBeing able to run tests across different environments and settings is a powerful tool.\nWTF has a powerful tool for working with configurations called `WTF_CONFIG_READER`. By \ndefault, it'll look at the default.yaml file in the /configs directory. But you may \nspecify using other config files by setting the `WTF_ENV` variable. This is useful to \nhave different config files for your different test environments. Then in your CI \nsystem, you can just specify which config file to use.\n\nin your `configs/default.yaml` or other config file...\n\n\tbaseurl: yourtestserver.com\n\nIn your tests, you can pull the values you have stored in your config file using the \n`WTF_CONFIG_READER` like this:\n\n\tbase_url = WTF_CONFIG_READER.get(\"baseurl\")\n\twebdriver.get( base_url + \"/somelocation\" )\n\nYou can have serveral different copies of config file, like `configs/qa.yaml`, \n`configs/staging.yaml`, `configs/production.yaml`, etc... for your different \ndeployment/testing environments.\n\nWhen you set the the `WTF_ENV` system variable, you can choose which config set \nto use, or pass it into the command.\n\n\t$> echo \"run tests against QA\"\n\t$> WTF_ENV=qa ./runtests.py\n\t$> echo \"run tests against Staging\"\n\t$> WTF_ENV=stage ./runtests.py\n\nAlternatively, \n\n\t$> echo \"run tests against QA\"\n\t$> ./runtests.py --config=qa\n\t$> echo \"run tests against Staging\"\n\t$> ./runtests.py --config=staging\n\nThis allows you to make your test environment agnostic, runnable across multiple \nconfigurations with just a switch of an environment variable. This is good for storing \nenvironment settings and locations, account information (like DB login), connection \nstrings, etc... \n\nYou can also specify your selenium settings to which webdriver to use. Under `selenium` \nsettings, you can configure whether you want a local or remote/grid, and which browser \nto use. So you can also run your tests against different configurations easily by \nsimply passing a different config file each time.\n\n\t# Settings for Selenium WebDriver used for browser testing.\n\tselenium:\n\t # Set type to LOCAL for running locally, and to REMOTE, to run on a remote \n\t # webdriver. Default is LOCAL\n\t type: LOCAL\n\t #type: REMOTE\n\n\t # Set to true, to reuse the same browser. Set to false, to use a fresh browser \n\t # instance each time. If set to a number, this would determine whether the browser \n\t # session should be discarded after a certain time peroid. \n\t # Default is 'true'\n\t reusebrowser: true\n\n\t # Terminate Selenium after all tests have run. Disabling this can be helpful\n\t # during debugging. In operation you normally want to keep this to clean up \n\t # after tests.\n\t shutdown_hook: true\n\n\t # Take screenshot of browser on error.\n\t take_screenshot: true\n\t # Take reference screenshot upon encountering a new page.\n\t take_reference_screenshot: true\n\n\t # remote_url is required if type=REMOTE. Set this to point at the Remote Webdriver \n\t # connection string.\n\t #remote_url: http://url.to.seleniumgrid:4444/wd/hub\n\n\t # Browser can be the following options.\n\t # ANDROID, CHROME, FIREFOX, HTMLUNIT, HTMLUNITWITHJS, \n\t # INTERNETEXPLORER, IPAD, IPHONE, OPERA, SAFARI\n\t browser: FIREFOX\n\t...\n\t\n\t\nThen when you want to get an instance of webdriver, use the `WTF_WEBDRIVER_MANAGER` to \nget an instance of webdriver. This allows your tests to be agnostic of which webdriver \nit's instantiating.\n\n\t# Get an instance of webdriver.\n\tdriver = WTF_WEBDRIVER_MANAGER.new_driver()\n\t\n\nWTFBaseTest\n-----------\nWTF framework adds some extensions to Python's unittest that are helpful for more end \nto end tests functional tests. In order to leverage this functionality, your tests should \nextend the `WTFBaseTest` base class. \n\nWTFBaseTest comes with a ScreenCaptureTestWatcher. You may also implement your own \ntest watcher by extending `TestWatcher` class, and overriding it's methods. This is \nuseful for creating your own base test with your own actions such as recording results \nto Test Case Management upon test completion. If you like to do without the added \nfunctionality of WTFBaseTest, you can use `WatchedTestCase` and extend it.\n\n\nData Driven Testing\n-------------------\nWTF framework provides a easy way of doing Data-Driven-Tests using CSV files. Data \nfiles are stored in the `data/` folder, and can be easily accessed using the utility \nclass `WTF_DATA_MANAGER.get_data_file(\"nameOfCsvFile\")`. You can iterate a single test \nover those CSV row values by using the `@ddt` and `@csvdata` decorators.\n\nYou can have a csv file with first row the column headers like, `data/animals.csv'\n\n\tAnimal,Type,Size\n\tDog,Mammal,3.0\n\tCat,Mammal,1.5\n\tLizzard,Reptile,2.0\n\nThen in `your_data_driven_test.py`, you can reference these values as follows:\n\n\t# Use @ddt decorator at the class level.\n\t@ddt\n\tclass TestCsvDataDrivenTest(TestCase):\n \n \t# Then use the @csvdata decorator to flag a test method data driven.\n \t@csvdata(\"testdata.csv\")\n\t def test_csv_datadriven(self, parameter_dic):\n\t \t#Then in your test, you can use the parameter passed into your test\n\t \t# as a dictionary with key corresponding to your CSV headers.\n\t \tanimal = parameter_dic['Animal']\n\t \ttype = parameter_dic['Type']\n\t \tsize = parameter_dict['Size']\n\t \t...\n\n\n\nPageObjects & Chrome Extension\n------------------------------\nPageObjects is a common strategy for Selenium Webdriver programmers to create self \ncontained PageObjects to encapsulate the low level UI details from their high level \ntests. This allows changes in pages to be maintained in their separate page objects \nso tests that use the page, need not worry about the details.\n\nWTF provides handy chrome plugin to help you create page objects. See Chrome plugin \ninstallation instructions above. The chrome plugin will help you quickly generate the \nboiler-plate code, some simple validate methods, and help with the tedious task of \nmapping the WebElements on this page.\n\n![Image](https://raw.github.com/wiredrive/wtframework/gh-pages/imgs/WTF_panel_parts.png)\n\n\nTo Create a page object, do the following:\n\n1. Go to your target page. Then click the WTF toolbar button, then select \"Scan Page\"\n2. A popup window will open. You'll be presented with a form that'll include fields for \n naming your PageObject, setting the page verification method, and a button to map \n your page elements. \n3. Fill in an appropriate name for your page object.\n4. Adjust the page verification characteristics. You may want to change it from a string \n compare to a regular expression and replace variable parameters with wildcards.\n5. Map the elements you want to include. To map an element, first click on the button \n labled `Map New Element`. You'll be taken back to your page window, dismiss the \n pop-up dialog, then click on the element you wish to map. After clicking on the \n element, you'll notice a new entry will be created in your PageObject Utility window.\n Fill in the fields and adjust the object identification properties. If the \n identification properties in the fields do not match an element on the page, the fields\n will turn red. Fix these before moving on.\n6. A code preview will be displayed at the bottom part of this window. Review what's \n there before downloading.\n7. Click on the \"Download\" link that's right above the Preview area. This will allow you \n to download this file. Save this file to your `YourProject/tests/pages` directory.\n8. Edit this file in a code editor and add whatever high level method calls you want to \n expose. Then you'll have a fully functioning page object. For example, if you have a \n login form, you might want to create a method called `login(username, password)`, and \n abstract away the act of logging to the high level tests. Then leave the details of \n filling in and submitting the form inside the page object method body.\n\n\nYou can now use this page object you created like this:\n\n\tfrom wtframework.wtf.web.pages import PageFactory\n\tfrom pages.homepage import HomePage\n\t...\n\thomepage = PageFactory.create_page(HomePage)\n\thomepage.login(username, password) # you will need to implement this part.\n\nAlternatively, you can use the PageUtils to wait for the page to load. This will allow \nyou to specify a timeout period (in seconds) to wait for this page to finish loading.\n\n\tfrom wtframework.wtf.web.pages import PageUtils\n\t...\n\tslow_loading_page = PageUtils.wait_until_page_loaded(YourPageClass, timeout=60)\n\nNote: This will use the PageObject's `_validate_page()` to check if the page is \nmatching the expected page. It's good to use a web element on the page in addition to URL \nor title validation, that way the page validation does not succeed until page content \nappears on the screen.\n\nOnce you have created a PageOjbect, you'll want to go in and edit the file and make any \nchanges to the mappings and page verification routines. As a good practice, it's good \nto write methods to expose your transactional logic as a higher level method call \nto avoid cluttering your high level tests and test flows with low level UI logic.\n\nSee: http://engineeringquality.blogspot.com/2012/12/python-quick-and-dirty-pageobject.html\n\n\nGetting Help\n====\n* WTFramework Wiki - https://github.com/wiredrive/wtframework/wiki\n* Documentation - https://wtframework.readthedocs.org/en/latest/\n* Google Groups - https://groups.google.com/forum/#!forum/wtframework\n\n\nMisc\n====\n\nLicense\n-------\nThis framework is free and open source. Licensed under GPLv3. See 'LICENSE.TXT' for \nlicense details.\n\nHow to Contribute\n-----------------\nYou can fork this repository. To get the unit tests not marked as skipped running, \nyou'll need to edit or supply your own config file with values for the selenium settings.\n\nDevelopment on this project is currently done using NVIE branching model.\nPlease __do not__ submit pull requests directly to __master__ \n(submit pulls against /develop) \nhttp://nvie.com/posts/a-successful-git-branching-model/\n* /master [![Build Status](https://travis-ci.org/wiredrive/wtframework.png?branch=master)](https://travis-ci.org/wiredrive/wtframework) - contains latest release / stable code. \n* /develop [![Build Status](https://travis-ci.org/wiredrive/wtframework.png?branch=develop)](https://travis-ci.org/wiredrive/wtframework) - contains work in progress and features queued up for the next release.\n* /feature/name-of-feature - feature branch for work in progress on a long project.\n* /release/x.x.x - upcoming release currently under bug fixing/testing.\n* /hotfix/x.x.x - upcoming hotfix release currently under bug fixing/testing.\n\n\n\nCI Scripts are running on Travis, \nhttps://travis-ci.org/wiredrive/wtframework\n\nTo submit code changes, please submit pull requests against the development branch. \n\nSee here for other ways you can help.\n[https://github.com/wiredrive/wtframework/wiki/How-you-can-help.]\n\nCredits\n------------\nDavid Lai ", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/wiredrive/wtframework", "keywords": null, "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "wtframework", "package_url": "https://pypi.org/project/wtframework/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/wtframework/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/wiredrive/wtframework" }, "release_url": "https://pypi.org/project/wtframework/0.4.11/", "requires_dist": null, "requires_python": null, "summary": "WTF - Web Test Framework", "version": "0.4.11" }, "last_serial": 1179898, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ed6a34fa334e7a3dcb92a4e75e9493b1", "sha256": "0f916688911e5c16be6b51def4c29cb2fedf3093843c6968cb89794be7339cae" }, "downloads": -1, "filename": "wtframework-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ed6a34fa334e7a3dcb92a4e75e9493b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27991, "upload_time": "2013-02-06T02:30:39", "url": "https://files.pythonhosted.org/packages/25/b8/6a5dc7536b08854413b2a58ce9284d2fcff30dcd5f12565020380e619991/wtframework-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "d52f9773aaf6635a8f89399f92da2d9a", "sha256": "0344e15e27df61ec71bc6fdd78fc0b8a137be4857e2b88e39fcfa0251341a6aa" }, "downloads": -1, "filename": "wtframework-0.0.10.tar.gz", "has_sig": false, "md5_digest": "d52f9773aaf6635a8f89399f92da2d9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35227, "upload_time": "2013-02-08T09:30:49", "url": "https://files.pythonhosted.org/packages/25/af/249119f5f0466de56695b3439028ba6ae2582e1d10cffcb638c278d334ed/wtframework-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "d5d32b1c06b940a0e23946453c96f665", "sha256": "c3c2abdea10ce82f882dc12819b31192d818a838234e126c29053c8777babd1f" }, "downloads": -1, "filename": "wtframework-0.0.11.tar.gz", "has_sig": false, "md5_digest": "d5d32b1c06b940a0e23946453c96f665", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39140, "upload_time": "2013-02-12T21:34:19", "url": "https://files.pythonhosted.org/packages/2c/2e/663e9c757a55a6a269b4e24d23d438b90fb39a0cbda4a0300dedba8649d9/wtframework-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "cf500e131d659ad0b298dff51e534724", "sha256": "003d5a3dbc53d889134339016c37ab073fd6d3fa41aa2496d31e191b82d42194" }, "downloads": -1, "filename": "wtframework-0.0.12.tar.gz", "has_sig": false, "md5_digest": "cf500e131d659ad0b298dff51e534724", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39099, "upload_time": "2013-02-12T23:58:12", "url": "https://files.pythonhosted.org/packages/01/d5/02d04f894d1d98918f80005f76b2c2bb93ea7f5d7b04703865c7027fffe1/wtframework-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "d91a2a599efb729e648e1f4e1787e04a", "sha256": "3e489d63dac5490e6ba5b79e12703b0a018ca4fca02a7c27aad3c4efbe6d5eec" }, "downloads": -1, "filename": "wtframework-0.0.13.tar.gz", "has_sig": false, "md5_digest": "d91a2a599efb729e648e1f4e1787e04a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39101, "upload_time": "2013-02-13T00:44:22", "url": "https://files.pythonhosted.org/packages/f7/9d/3896bf6e9b6046bcfd146311eb77c3f2f8d229b4128e30deec8315c3f34e/wtframework-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "c456ebaaef9b8f355ae63642d0cb4bf5", "sha256": "b55d92c75b4705d8ba46eddc1b58b2a2208398df1472b127cec6b73aec373aa0" }, "downloads": -1, "filename": "wtframework-0.0.14.tar.gz", "has_sig": false, "md5_digest": "c456ebaaef9b8f355ae63642d0cb4bf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39111, "upload_time": "2013-02-13T01:03:07", "url": "https://files.pythonhosted.org/packages/8e/24/65a2e264519172db827926ea73f7b66f76ef75859840ff0afdbcb5680f1a/wtframework-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "6a754479d4d832a7c610a3d7aeeed4ab", "sha256": "b58609597744e7d0912bede61b3a2dfec415d5b78d140d74267c655c166137d5" }, "downloads": -1, "filename": "wtframework-0.0.15.tar.gz", "has_sig": false, "md5_digest": "6a754479d4d832a7c610a3d7aeeed4ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39116, "upload_time": "2013-02-13T01:16:13", "url": "https://files.pythonhosted.org/packages/67/51/de18c742e34481c5793bde1aad3f2c9e938d06d24b20c2cb4c7b6ff166d0/wtframework-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "2900bb9d3adc323b71cc26e1c60826c4", "sha256": "c5d75bca161bc43bb79bbf9d07c7fab3bc33ebeae2fcc6abc84af4142270275c" }, "downloads": -1, "filename": "wtframework-0.0.16.tar.gz", "has_sig": false, "md5_digest": "2900bb9d3adc323b71cc26e1c60826c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39116, "upload_time": "2013-02-13T01:20:28", "url": "https://files.pythonhosted.org/packages/61/47/1b2810919558d66f87227ba615a7f42efc500bdd13c7ca489d59de9a914a/wtframework-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "94bf4604d3981c4525115bd4dc0305f0", "sha256": "ef882f86256a1f33c92d59295ed41aa966d52480fd9b848583cbb3bd32522f98" }, "downloads": -1, "filename": "wtframework-0.0.17.tar.gz", "has_sig": false, "md5_digest": "94bf4604d3981c4525115bd4dc0305f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39156, "upload_time": "2013-02-13T01:30:26", "url": "https://files.pythonhosted.org/packages/3f/24/ac0de3147e13cc91db053fc32c378dab85fd0b1d80beb187b87a62babd14/wtframework-0.0.17.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "01ae6abe48f500ea023d34a2a70ecf9a", "sha256": "ad7bc2e0111838d1e6613211746e8f2d16a7767b12ad88722446fe3a5e80c13a" }, "downloads": -1, "filename": "wtframework-0.0.2.tar.gz", "has_sig": false, "md5_digest": "01ae6abe48f500ea023d34a2a70ecf9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27986, "upload_time": "2013-02-06T02:33:49", "url": "https://files.pythonhosted.org/packages/b3/db/de5af444026712915eb0045b9f15a424fe76432afa0c4cb4375d5aa44797/wtframework-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "bf4a577b010a264874311e6419387710", "sha256": "7dad41a609334abb6e6e2ef4f37982ef5e0a1efa0a9044ebb14d278f492800ab" }, "downloads": -1, "filename": "wtframework-0.0.3.tar.gz", "has_sig": false, "md5_digest": "bf4a577b010a264874311e6419387710", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31524, "upload_time": "2013-02-06T17:00:42", "url": "https://files.pythonhosted.org/packages/b7/a9/bd5e94b258bf6acc218bb9372b9d88f438890b85a8ece122e159197268a0/wtframework-0.0.3.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "5c6726a43bc61dda961eecb74967b3dc", "sha256": "e4b449e3a9932e47fd4e375782af3f0b288a3bf0803ae6a57f41853684096251" }, "downloads": -1, "filename": "wtframework-0.0.6.tar.gz", "has_sig": false, "md5_digest": "5c6726a43bc61dda961eecb74967b3dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31795, "upload_time": "2013-02-06T18:43:29", "url": "https://files.pythonhosted.org/packages/8a/f0/5e18fa1d66cdf378062acd4f2041bf6c356f9c2bfd983d5b8d44ec20ca49/wtframework-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "931e7205f4dbdc52b04978beed38bd32", "sha256": "d8a380265b312422a6c5b91694172062917d408a8d3e38060b67b7f13acfc8d7" }, "downloads": -1, "filename": "wtframework-0.0.7.tar.gz", "has_sig": false, "md5_digest": "931e7205f4dbdc52b04978beed38bd32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31855, "upload_time": "2013-02-06T23:41:16", "url": "https://files.pythonhosted.org/packages/2a/eb/039764a9199a50e62ab2bdeb5a46c166f7aac25bfbf07c6a21b59eb05fb6/wtframework-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "d90e396a5e3e9302c8fc982da0c8b275", "sha256": "5d153178b50d8bec1bca3498d2e84e4734a868a333fd4f955543823043a5420b" }, "downloads": -1, "filename": "wtframework-0.0.8.tar.gz", "has_sig": false, "md5_digest": "d90e396a5e3e9302c8fc982da0c8b275", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34139, "upload_time": "2013-02-07T07:09:54", "url": "https://files.pythonhosted.org/packages/7c/d5/b3075524a4be52567e162e0478b873e82c0f38f6f1dbb11ed1df75d68834/wtframework-0.0.8.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "541e0ef182cc7b501bdf14b42a3a9f84", "sha256": "6765971781ba36299584a731f2f3a6a87752391cae87e12f4183c5b5c0778881" }, "downloads": -1, "filename": "wtframework-0.1.0.tar.gz", "has_sig": false, "md5_digest": "541e0ef182cc7b501bdf14b42a3a9f84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41381, "upload_time": "2013-02-28T06:06:44", "url": "https://files.pythonhosted.org/packages/a0/5d/c6d154bff58e4bee1f8bbfa0d81eef478c2604d3f69767ac60c2d2d11483/wtframework-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "05f7538412a86ed99f4ba88366020678", "sha256": "347b789c0169756426dde594ab631b391844b084147a1a705df6322fca6db2c0" }, "downloads": -1, "filename": "wtframework-0.2.0.tar.gz", "has_sig": false, "md5_digest": "05f7538412a86ed99f4ba88366020678", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43178, "upload_time": "2013-03-14T17:59:42", "url": "https://files.pythonhosted.org/packages/5d/f2/d193976b887936802aa126233908737d7dae15411898ece4d6898374c786/wtframework-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "54a7d062cf6da1b2901aadde9c716907", "sha256": "2c7a1aeeaf3b63fc2c366f06c16c9ba1707d17b416feff1ec8f4711536b4873c" }, "downloads": -1, "filename": "wtframework-0.2.1.tar.gz", "has_sig": false, "md5_digest": "54a7d062cf6da1b2901aadde9c716907", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43389, "upload_time": "2013-03-15T17:30:38", "url": "https://files.pythonhosted.org/packages/50/f1/335f3c2c2331ca1956dcd5f42ac9d15f3807c6d690626331df982138e002/wtframework-0.2.1.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "e8ac9bbdf849b83082ba09e4d846fc6f", "sha256": "c5ddf73a6b424834a0c3cb79b521763207966a05a2a030ea30fd6e2347e4d694" }, "downloads": -1, "filename": "wtframework-0.2.11.tar.gz", "has_sig": false, "md5_digest": "e8ac9bbdf849b83082ba09e4d846fc6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46983, "upload_time": "2013-05-24T17:58:26", "url": "https://files.pythonhosted.org/packages/00/d2/42388c766c24983fa0a95473d35b548e8d793cb085b9f38fd53e5127dc11/wtframework-0.2.11.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "8f9d54970699412ee166d2753dfc8ec5", "sha256": "b6ba22b17be956709c320c74418dc58d8f331b5158bdf40fe6c49044d0a6804e" }, "downloads": -1, "filename": "wtframework-0.2.12.tar.gz", "has_sig": false, "md5_digest": "8f9d54970699412ee166d2753dfc8ec5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47055, "upload_time": "2013-05-24T21:41:45", "url": "https://files.pythonhosted.org/packages/5b/bf/801e867860249489a72d554d241560b5e09d5243aa6954b2b418d74f6f21/wtframework-0.2.12.tar.gz" } ], "0.2.13": [ { "comment_text": "", "digests": { "md5": "15d0d4001a20797ea5672fffd11532bc", "sha256": "0ec1ba1a5c381d5ef1d3474d135ad3a674f310577b7c35f316a776e21d3e1505" }, "downloads": -1, "filename": "wtframework-0.2.13.tar.gz", "has_sig": false, "md5_digest": "15d0d4001a20797ea5672fffd11532bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47481, "upload_time": "2013-06-06T01:29:03", "url": "https://files.pythonhosted.org/packages/08/24/f6173b6e12b307d268ea7984114e05b8a7c1383d715a8b624d1e058b4e93/wtframework-0.2.13.tar.gz" } ], "0.2.15": [ { "comment_text": "", "digests": { "md5": "914ceac1672cfba66548fcfdd9c15523", "sha256": "3168c1fc9b8e7f38ae301b08567c2320aea68746f3f131f4f109ab00cabe2e01" }, "downloads": -1, "filename": "wtframework-0.2.15.tar.gz", "has_sig": false, "md5_digest": "914ceac1672cfba66548fcfdd9c15523", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47771, "upload_time": "2013-06-26T21:50:38", "url": "https://files.pythonhosted.org/packages/de/4e/ca13d194c6d1d40408430c1cd574ed7ea3605c5d9df1f628b869fc81bbaf/wtframework-0.2.15.tar.gz" } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "ce8c0d9b05031e778e88d1e1ae4f57b0", "sha256": "4497cbc00072bdf3912e897895a03c01a9dd18e40800a11a69962080e1760d34" }, "downloads": -1, "filename": "wtframework-0.2.16.tar.gz", "has_sig": false, "md5_digest": "ce8c0d9b05031e778e88d1e1ae4f57b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48532, "upload_time": "2013-06-27T20:51:53", "url": "https://files.pythonhosted.org/packages/f4/0a/dd1a5d609a0ead0a438f9e41833c9c364830982de233a7cca9f3e84577bb/wtframework-0.2.16.tar.gz" } ], "0.2.18": [ { "comment_text": "", "digests": { "md5": "ac32aae5fa50f6f171751159c8616a1e", "sha256": "8d97af13e1ec08c7f887c95e310ab55b5c776cee1fa9d1e5ad2e247de4be8dd0" }, "downloads": -1, "filename": "wtframework-0.2.18.tar.gz", "has_sig": false, "md5_digest": "ac32aae5fa50f6f171751159c8616a1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48539, "upload_time": "2013-06-27T23:00:08", "url": "https://files.pythonhosted.org/packages/f0/97/376c48e42befe37bbce6b4bc0519847333380a8534b8a7bae8d028237e5b/wtframework-0.2.18.tar.gz" } ], "0.2.19": [ { "comment_text": "", "digests": { "md5": "23127494770eca50c91fd229c0d0f2a5", "sha256": "bfe873fd1dc809302ea4fe0da55f1aa2ad8dc22f8d8f3bad6c97dfdaa10f0eae" }, "downloads": -1, "filename": "wtframework-0.2.19.tar.gz", "has_sig": false, "md5_digest": "23127494770eca50c91fd229c0d0f2a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48658, "upload_time": "2013-06-28T00:42:56", "url": "https://files.pythonhosted.org/packages/2c/97/ab919b2cc1fd555130a1e6b34538ebc7c00d25fb939ca9fe06a7dbbd4a52/wtframework-0.2.19.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "49b42df28408a5d10c9e82dab9dcfbeb", "sha256": "f8e6b55d670c1dabfc78ddae531c9cd1a511b67958a1ba6c7ceacf008150473c" }, "downloads": -1, "filename": "wtframework-0.2.2.tar.gz", "has_sig": false, "md5_digest": "49b42df28408a5d10c9e82dab9dcfbeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43506, "upload_time": "2013-03-19T00:22:04", "url": "https://files.pythonhosted.org/packages/68/6d/5dfb237b30667f7b039cb23edd4996da0853374c02a7843ce5e961c4a427/wtframework-0.2.2.tar.gz" } ], "0.2.21": [ { "comment_text": "", "digests": { "md5": "8f24ba50393fa267263cdf7ad1af30e1", "sha256": "f119fc9214b6bff088b2ebfa62b4284a70be593d771f8dc0594e53cc0ef3bff4" }, "downloads": -1, "filename": "wtframework-0.2.21.tar.gz", "has_sig": false, "md5_digest": "8f24ba50393fa267263cdf7ad1af30e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48690, "upload_time": "2013-06-28T00:58:09", "url": "https://files.pythonhosted.org/packages/01/22/f91e1ada6492eb62f8ed7c87987b9264e99de65b9c49ba6554aeadb0ac4d/wtframework-0.2.21.tar.gz" } ], "0.2.22": [ { "comment_text": "", "digests": { "md5": "f19a0f05c9e944171f5d4e7b42d4dac2", "sha256": "8f3049d60e4ea41bcfa6c4f413809a3fd3b6020cbf113e8b61e792aa12ada1a7" }, "downloads": -1, "filename": "wtframework-0.2.22.tar.gz", "has_sig": false, "md5_digest": "f19a0f05c9e944171f5d4e7b42d4dac2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49521, "upload_time": "2013-06-28T19:21:28", "url": "https://files.pythonhosted.org/packages/57/5d/db3958f389dd5fb0beb5cd989f9214396557db45515352d169bd6259c41c/wtframework-0.2.22.tar.gz" } ], "0.2.23": [ { "comment_text": "", "digests": { "md5": "6a965384b756695921ce7d66587dcea8", "sha256": "8610bc98090da78600d8a9b678399cd4a90b25cf228b65ac207e50e2ca28775b" }, "downloads": -1, "filename": "wtframework-0.2.23.tar.gz", "has_sig": false, "md5_digest": "6a965384b756695921ce7d66587dcea8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49523, "upload_time": "2013-06-28T19:48:36", "url": "https://files.pythonhosted.org/packages/f0/72/13457c18e11ecbfce35e442cbfa2d96f6d16bf90a858df49e5d27429a6ba/wtframework-0.2.23.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "f843abee44eb9858e093e304c68dcb36", "sha256": "64f016fcc6bef24a7bb163c24bec6cb295c9828217a1cfaa0d5be6a5b1d02105" }, "downloads": -1, "filename": "wtframework-0.2.3.tar.gz", "has_sig": false, "md5_digest": "f843abee44eb9858e093e304c68dcb36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44992, "upload_time": "2013-03-23T05:20:14", "url": "https://files.pythonhosted.org/packages/0a/5b/e88cb9e9874a50f88b213f956e8108871482bf40b0f87d832a2c2be81842/wtframework-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "074877042e0a8dd9c139929a130d623b", "sha256": "f2c0de2891a3be2300cb85617ab6f66bfdd4dd63b666b3c96f721a79be01bfc7" }, "downloads": -1, "filename": "wtframework-0.2.4.tar.gz", "has_sig": false, "md5_digest": "074877042e0a8dd9c139929a130d623b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45007, "upload_time": "2013-03-25T18:20:36", "url": "https://files.pythonhosted.org/packages/8f/0b/955a1fff8e2e0ea28ae58dac3d3ae3440ff9f6a2d5494148ccec9befcd37/wtframework-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "8fec2472a352843fd3d1466278275745", "sha256": "666480898e1ab2d2aabb708a63d01fd31a8caa46d677154aac223c3cad56a91c" }, "downloads": -1, "filename": "wtframework-0.2.5.tar.gz", "has_sig": false, "md5_digest": "8fec2472a352843fd3d1466278275745", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45164, "upload_time": "2013-03-26T22:10:08", "url": "https://files.pythonhosted.org/packages/d4/62/0b4a129e757f0c55fa4fadf5c0bc01641a4d847fd64268ed97246bfdaa64/wtframework-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "f079fe8519ecc1b60c12ae57190f0672", "sha256": "eb96e934652bd9932332161bc86df4ca7304a4417f0b5a47767e2d4c52f580e9" }, "downloads": -1, "filename": "wtframework-0.2.6.tar.gz", "has_sig": false, "md5_digest": "f079fe8519ecc1b60c12ae57190f0672", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45884, "upload_time": "2013-03-29T18:13:07", "url": "https://files.pythonhosted.org/packages/af/dd/470bcd63f75655eeb4c1ae31f4b1a45a26933310fa087dbcc91a98822dfc/wtframework-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "7afafadf8ad54dbc9d1a727f78f0dd91", "sha256": "cee38ba9d8e812679631a8b9946e75867f111eec490db11d5c0e6d09ee2b7241" }, "downloads": -1, "filename": "wtframework-0.2.7.tar.gz", "has_sig": false, "md5_digest": "7afafadf8ad54dbc9d1a727f78f0dd91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46119, "upload_time": "2013-04-02T22:32:25", "url": "https://files.pythonhosted.org/packages/df/c9/da924b7fd6de5f76627cbeaae7a31c19b566d3e3424cd6c795dc234c5781/wtframework-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "d7ee3a1a8da2739f039cf91c9a074083", "sha256": "b10093d8a0314e9b339af2caece63924a993abd9617b780349e0372e8c85321a" }, "downloads": -1, "filename": "wtframework-0.2.8.tar.gz", "has_sig": false, "md5_digest": "d7ee3a1a8da2739f039cf91c9a074083", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46355, "upload_time": "2013-04-08T23:18:21", "url": "https://files.pythonhosted.org/packages/bc/48/f3984c8e6a90f07b9ee0b4a07a7ead4878be52b8f569df47c7d338c27030/wtframework-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "c6151a33974f9f27557ed7fd392f655a", "sha256": "f8dc1321dd0b6bdb7c7d8f22a4d7bcd972b771b687b25cee5b07750161d4bdc8" }, "downloads": -1, "filename": "wtframework-0.2.9.tar.gz", "has_sig": false, "md5_digest": "c6151a33974f9f27557ed7fd392f655a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46566, "upload_time": "2013-04-23T01:09:43", "url": "https://files.pythonhosted.org/packages/e4/b3/ad60d74a4bf202ccc1315744213350590e76f1e6be6b03e477be0df8de8f/wtframework-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ad3d39bb4742c9cdbea72d6195c8f7ec", "sha256": "4d958ee7330fa3a69eb3a917e0f1b7cf70b9b5ad0724f5514119576b951dfea6" }, "downloads": -1, "filename": "wtframework-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ad3d39bb4742c9cdbea72d6195c8f7ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50218, "upload_time": "2013-07-16T22:17:23", "url": "https://files.pythonhosted.org/packages/9e/56/dd33422823eaa2633c596b62ffb9896932f03f958573864a91e3e75bed24/wtframework-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "bcd7a5e842aeb5ea4fd3a6c6b754543f", "sha256": "cd5195bd0a32beb715edd953a3c4bf38f1ec4b5ebc59cf7cbdab8c5318a11371" }, "downloads": -1, "filename": "wtframework-0.3.1.tar.gz", "has_sig": false, "md5_digest": "bcd7a5e842aeb5ea4fd3a6c6b754543f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50737, "upload_time": "2013-08-05T21:38:37", "url": "https://files.pythonhosted.org/packages/e8/ef/7cbd3ccf276cc3a7fc2ccd17ef1203ce1743ba3b342a46316150a06b69b4/wtframework-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "840678a96443cccf9fb0e8e1c33e9d42", "sha256": "e3b7baf88b85f50b29706f58f6de47d299ac1f75916a6eb0ee6c7271443eb99f" }, "downloads": -1, "filename": "wtframework-0.3.10.tar.gz", "has_sig": false, "md5_digest": "840678a96443cccf9fb0e8e1c33e9d42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57849, "upload_time": "2013-11-21T01:52:36", "url": "https://files.pythonhosted.org/packages/c7/15/82fb9c8ebc43751b20171d73c0e8453ac560f5c10b48814f37eddb266f46/wtframework-0.3.10.tar.gz" } ], "0.3.11": [ { "comment_text": "", "digests": { "md5": "226512db66d63703b45f179dd89a877b", "sha256": "69cd0f634bdd4054a41fa5f353d2d46ebc53258bb0fa1a85040accd497d72819" }, "downloads": -1, "filename": "wtframework-0.3.11.tar.gz", "has_sig": false, "md5_digest": "226512db66d63703b45f179dd89a877b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57873, "upload_time": "2013-12-02T18:13:26", "url": "https://files.pythonhosted.org/packages/60/93/ad98b5ba39a7184d70bcbfc688710602296469946f2967874bdac8ddb9ba/wtframework-0.3.11.tar.gz" } ], "0.3.12": [ { "comment_text": "", "digests": { "md5": "6de42b6f6b7310924f891e9ed9324a2c", "sha256": "49362c2c74e83fa587dac320b3c040955e0a4fc535e81e010d00ecb4da2ec301" }, "downloads": -1, "filename": "wtframework-0.3.12.tar.gz", "has_sig": false, "md5_digest": "6de42b6f6b7310924f891e9ed9324a2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58202, "upload_time": "2013-12-30T21:42:43", "url": "https://files.pythonhosted.org/packages/21/63/a0af9d8405241024dd04c8316331d90f7b5bd2aaf1df61f14c48dd605280/wtframework-0.3.12.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "4726a1e5724d9245bb0579234a955422", "sha256": "c6493ff849dc3f382a72ec3af6a628bebb3a29adce0076cdd9527080cd1a8d0f" }, "downloads": -1, "filename": "wtframework-0.3.2.tar.gz", "has_sig": false, "md5_digest": "4726a1e5724d9245bb0579234a955422", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51020, "upload_time": "2013-08-22T07:32:35", "url": "https://files.pythonhosted.org/packages/d2/69/de376b466ae7cad0403961559b762a1c0927805f55f74a0d7b5d260bd27c/wtframework-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "cd8ecdda2bb60fdae6e5e5d540113226", "sha256": "14b10e28af98a6703e05429205797f8febec40ece0d5437cfbfce988611097dd" }, "downloads": -1, "filename": "wtframework-0.3.3.tar.gz", "has_sig": false, "md5_digest": "cd8ecdda2bb60fdae6e5e5d540113226", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53627, "upload_time": "2013-08-24T07:43:09", "url": "https://files.pythonhosted.org/packages/25/17/a3f0cba7230f79123d6975a84522186450f8d868a578e7f262908bce73aa/wtframework-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "d6a384645b5ead38452a16cf2bf00ffc", "sha256": "a0aaa872405e9443d11669f5f02ba5d8b57a15654e5092d17a21a0dc521fbb6d" }, "downloads": -1, "filename": "wtframework-0.3.4.tar.gz", "has_sig": false, "md5_digest": "d6a384645b5ead38452a16cf2bf00ffc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53699, "upload_time": "2013-09-03T23:26:04", "url": "https://files.pythonhosted.org/packages/ee/e2/a5f3e89f95d0aa43048284c2aadbcb614432510a8c8d7b3896691fd04be4/wtframework-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "fe1fa45c42ad41d9577c3bd4f2d5a608", "sha256": "00e5481811650957494ceb5b42a9bf8201073810836dbd0c4bcf89a521850941" }, "downloads": -1, "filename": "wtframework-0.3.5.tar.gz", "has_sig": false, "md5_digest": "fe1fa45c42ad41d9577c3bd4f2d5a608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55949, "upload_time": "2013-09-09T22:42:14", "url": "https://files.pythonhosted.org/packages/b1/d8/aeba3f8b34086096fcc0715e996881f7a6fa83bcc09829d1b30b1409cc63/wtframework-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "d68a03e68bec0633376b683cd5371956", "sha256": "a11df5a9c82bd696bdb99b853da906d1069d809868bbd7a6b0f389abe2657151" }, "downloads": -1, "filename": "wtframework-0.3.6.tar.gz", "has_sig": false, "md5_digest": "d68a03e68bec0633376b683cd5371956", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56148, "upload_time": "2013-09-11T23:53:57", "url": "https://files.pythonhosted.org/packages/2b/7c/090098575a2bd78b46c06cc83ecc72a6e453f392b9ddd4ad6a25c49a2d5d/wtframework-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "5b4250d3f4742a1d0d06c6122854ee1a", "sha256": "3420b945db9ff65bcb85954995742a92f2c72e050968b239e3e1e03b24ed57c2" }, "downloads": -1, "filename": "wtframework-0.3.7.tar.gz", "has_sig": false, "md5_digest": "5b4250d3f4742a1d0d06c6122854ee1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56320, "upload_time": "2013-10-08T01:59:13", "url": "https://files.pythonhosted.org/packages/70/c4/d8601f3066fe367ba63b659c5422bd92076afe052a2d910990767a4a16df/wtframework-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "cca8d7fd25c76eae2ae8bd8a4a23adb5", "sha256": "02c84cdfb2990da98342fc8345b1ce5196144e116ba121c1a938f6c67ce597a0" }, "downloads": -1, "filename": "wtframework-0.3.8.tar.gz", "has_sig": false, "md5_digest": "cca8d7fd25c76eae2ae8bd8a4a23adb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56854, "upload_time": "2013-10-30T20:39:50", "url": "https://files.pythonhosted.org/packages/42/5a/fa758c7b86f98b8c2ef6ab066bc4b56e4720882af12eb78342030caa35d5/wtframework-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "381847e5ab3b929e213e7608c78428ea", "sha256": "9abf447ae4ec01ecd0615c90caec3c4a30f114bd820da8436449c2e6f9b94dac" }, "downloads": -1, "filename": "wtframework-0.3.9.tar.gz", "has_sig": false, "md5_digest": "381847e5ab3b929e213e7608c78428ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56584, "upload_time": "2013-11-19T22:05:33", "url": "https://files.pythonhosted.org/packages/43/bc/31904cb4e7d2cfd3fe0e33f31a1330cb47972d5e5ef53150c4fb65e375c8/wtframework-0.3.9.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "68033b29599d8f920a8ac2f2dccf9291", "sha256": "4b0184ab7d03df268324339101b0111d9f1016f0fd7dbaf0184b7f694e6ebfae" }, "downloads": -1, "filename": "wtframework-0.4.0.tar.gz", "has_sig": false, "md5_digest": "68033b29599d8f920a8ac2f2dccf9291", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58527, "upload_time": "2014-01-23T23:28:29", "url": "https://files.pythonhosted.org/packages/1a/77/c6de3bba34a477cdc3277d892785ce4ef695a5bbfedcee8fe41da19049b1/wtframework-0.4.0.tar.gz" } ], "0.4.10": [ { "comment_text": "", "digests": { "md5": "9687603dbe3f1473ff2d6b34cbe01e69", "sha256": "ad70789145e13d29a9818c5ec02c4148a9b506b6a2f113f8989f67e6ffb928d2" }, "downloads": -1, "filename": "wtframework-0.4.10.tar.gz", "has_sig": false, "md5_digest": "9687603dbe3f1473ff2d6b34cbe01e69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64588, "upload_time": "2014-03-28T00:11:31", "url": "https://files.pythonhosted.org/packages/93/60/5cc4b838f9e3d72ebc01fcc42547e6051667477597aefa9b780ea54306b5/wtframework-0.4.10.tar.gz" } ], "0.4.11": [ { "comment_text": "", "digests": { "md5": "14840cdb20a49693a2b6a888bc435d45", "sha256": "e303550214174518d3024cccd79af0659570ce37c1625176e32925d9b812bcfb" }, "downloads": -1, "filename": "wtframework-0.4.11.tar.gz", "has_sig": false, "md5_digest": "14840cdb20a49693a2b6a888bc435d45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64535, "upload_time": "2014-08-04T21:26:58", "url": "https://files.pythonhosted.org/packages/c4/99/c149357c336ff5d41668d2f7266e931782a4bfc2070fb9fb1f058ce54c29/wtframework-0.4.11.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "546646aad43c5da2e61a9ef9706dfa62", "sha256": "f4fa427d21b148bd5b789259c5e51668d73a3a38d15d2220f5a1b6340883a404" }, "downloads": -1, "filename": "wtframework-0.4.2.tar.gz", "has_sig": false, "md5_digest": "546646aad43c5da2e61a9ef9706dfa62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59495, "upload_time": "2014-02-11T01:17:11", "url": "https://files.pythonhosted.org/packages/28/5b/1cc3c7152b202af0efdfc252e44020f22d5802af208e6759368ff5b0f3d6/wtframework-0.4.2.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "9299cd0d8ed70b5c4711fbc66884785c", "sha256": "e18cd9e2c3ab43fdb1d3a547edd7e0ccf1479d8a92ec65e71dffba633e59f07c" }, "downloads": -1, "filename": "wtframework-0.4.4.tar.gz", "has_sig": false, "md5_digest": "9299cd0d8ed70b5c4711fbc66884785c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59718, "upload_time": "2014-02-26T21:49:56", "url": "https://files.pythonhosted.org/packages/d4/d9/931ffe596791b5b7c3a8bd615b5837267ad62269673e4ee80e1bc50eb2d4/wtframework-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "3cd44fafe044bfa2a13b3b0df09a752e", "sha256": "2da86f948b02c730296413f2e3cc4249b750a973cbe1742f5df8e5328d9640d4" }, "downloads": -1, "filename": "wtframework-0.4.5.tar.gz", "has_sig": false, "md5_digest": "3cd44fafe044bfa2a13b3b0df09a752e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59970, "upload_time": "2014-03-03T17:40:47", "url": "https://files.pythonhosted.org/packages/18/11/df790ae9e54fef64d3eca1175e285c3fd40f152e4170653d4531b2667ffe/wtframework-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "14dffaa58da8a4a44829fa1e125b87ff", "sha256": "6caf18475f5075ba0cbc5aba13a0c867961fab5e920185888ddfe18f522d002b" }, "downloads": -1, "filename": "wtframework-0.4.6.tar.gz", "has_sig": false, "md5_digest": "14dffaa58da8a4a44829fa1e125b87ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59940, "upload_time": "2014-03-03T18:21:30", "url": "https://files.pythonhosted.org/packages/ff/26/4053a4f1f63110b8b34547de0f5320e949cb9030fb32fb2baf95b8c986d3/wtframework-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "e33f045bb93e425f8013357ffb834f74", "sha256": "d2a73f3267c392062ee4670720831bcf32403aca915dee63182496c966dd3adb" }, "downloads": -1, "filename": "wtframework-0.4.7.tar.gz", "has_sig": false, "md5_digest": "e33f045bb93e425f8013357ffb834f74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61926, "upload_time": "2014-03-14T16:07:26", "url": "https://files.pythonhosted.org/packages/17/73/2645f15a3af26a180afd7e8d6406070a6639f9ad305d01e3bc39661c90fd/wtframework-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "f9d52c77cce95c189790d3272464fa46", "sha256": "ebe14e42e91579c082389fcd8a1b0eada3c65e2040887bab3d8898f0f07c021b" }, "downloads": -1, "filename": "wtframework-0.4.8.tar.gz", "has_sig": false, "md5_digest": "f9d52c77cce95c189790d3272464fa46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63125, "upload_time": "2014-03-19T23:23:28", "url": "https://files.pythonhosted.org/packages/c3/74/0a8420223517ec82af9047ad1307f7ce1f1c9c984b7afc3051bb3b877a7d/wtframework-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "3d6d93857379ee4c28662ce2d83cf37c", "sha256": "859fd897136766e2137830f633d94da60271b66b8b35d10696b43248f7550ce9" }, "downloads": -1, "filename": "wtframework-0.4.9.tar.gz", "has_sig": false, "md5_digest": "3d6d93857379ee4c28662ce2d83cf37c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63110, "upload_time": "2014-03-20T00:01:18", "url": "https://files.pythonhosted.org/packages/f5/76/c9e957d7b42b1090cccc115e19801d2c24b955d56753da51e0b906815b9e/wtframework-0.4.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "14840cdb20a49693a2b6a888bc435d45", "sha256": "e303550214174518d3024cccd79af0659570ce37c1625176e32925d9b812bcfb" }, "downloads": -1, "filename": "wtframework-0.4.11.tar.gz", "has_sig": false, "md5_digest": "14840cdb20a49693a2b6a888bc435d45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64535, "upload_time": "2014-08-04T21:26:58", "url": "https://files.pythonhosted.org/packages/c4/99/c149357c336ff5d41668d2f7266e931782a4bfc2070fb9fb1f058ce54c29/wtframework-0.4.11.tar.gz" } ] }