{ "info": { "author": "Joel B. Mohler", "author_email": "joel@kiwistrawberry.us", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Database :: Front-Ends" ], "description": "Introduction\n------------\n\nThe QtAlchemy library is a collection of Qt Model-View classes and helper\nfunctions to aid in rapid development of desktop database applications. It\naims to provide a strong API for exposing foreign key relationships in elegant\nand immediate ways to the user of applications. Context menus, searches and\ncombo-boxes and tabbed interfaces are all utilized. The use of SQLAlchemy\nmakes it possible that these features are supported on a variety of database\nbackends with virtually no code changes.\n\nThe Command class gives a way to construct menus and toolbars from decorated\npython functions. The power of this becomes more evident when bound to a view\nwhere the command function can then receive the identifier of the selected item\nof the view. This provides a flexible way to link commands to any sqlalchemy\nquery generated views.\n\nDocumentation is available at http://qtalchemy.org .\n\nQtAlchemy is currently being developed with Python 2.7.x, SQLAlchemy 0.8.x and\nPySide 1.2.x. Testing has been done on Python 3.3.2 and 2.7.5. SQLAlchemy\ntested versions include 0.8.2 and 0.9-pre. Testing includes linux and Windows\ntargets.\n\nAs of QtAlchemy version 0.8.x, QtAlchemy uses PySide. See licensing comments\nat the bottom of this file. To use PyQt4 instead of PySide, you must install\nfrom the source in the bitbucket repository rather than PyPI since you need to\nconvert the source before running the install script. Install in the following\nway::\n\n python qtbindings.py --platform=PyQt4\n python setup.py build\n sudo python setup.py install\n\nExample\n-------\n\nIn the interests of being concise, the example given here does not reference a\ndatabase.\n\nThe UserAttr property class provides yet another type defined python property.\nThe purpose of reinventing this was to ensure that we could interact with our\nmodels sufficiently and provide a uniform experience for SQLAlchemy column\nproperties and UserAttr properties.\n\n >>> from qtalchemy import UserAttr\n >>> import datetime\n >>> class Person(object):\n ... name=UserAttr(str,\"Name\")\n ... birth_date=UserAttr(datetime.date,\"Birth Date\")\n ... age=UserAttr(int,\"Age (days)\",readonly=True)\n ...\n ... @age.on_get\n ... def age_getter(self):\n ... return (datetime.date.today()-self.birth_date).days\n\nWith this declaration, we can declare a person and compute their age:\n\n >>> me = Person()\n >>> me.name = \"Joel\"\n >>> me.birth_date = datetime.date(1979,1,9)\n >>> me.age #depends on today! -- #doctest: +SKIP\n 11746\n >>> me.age-(datetime.date.today()-datetime.date(2011,1,9)).days # on birthday 1<<5\n 11688\n\nWe can create a dialog showing the name & birth-date. The main magic happens\nin the addBoundForm call which obtains labels from the UserAttr classes and\nplaces the correct edit widgets on screen.\n\n >>> from PySide import QtCore, QtGui\n >>> from qtalchemy import MapperMixin, LayoutLayout, ButtonBoxButton, LayoutWidget\n >>> \n >>> class PersonEdit(QtGui.QDialog,MapperMixin):\n ... def __init__(self,parent,person):\n ... QtGui.QDialog.__init__(self,parent)\n ... MapperMixin.__init__(self)\n ... \n ... self.person = person\n ... \n ... vbox = QtGui.QVBoxLayout(self)\n ... mm = self.mapClass(Person)\n ... mm.addBoundForm(vbox,[\"name\",\"birth_date\"])\n ... mm.connect_instance(self.person)\n ... \n ... buttons = LayoutWidget(vbox,QtGui.QDialogButtonBox())\n ... self.close_button = ButtonBoxButton(buttons,QtGui.QDialogButtonBox.Ok)\n ... buttons.accepted.connect(self.btnClose)\n ... \n ... def btnClose(self):\n ... self.submit() # changes descend to model on focus-change; ensure receiving the current focus\n ... self.close()\n\nAnd, now, we only need some app code to actually kick this off\n\n >>> app = QtGui.QApplication([])\n >>> sam = Person()\n >>> sam.name = \"Samuel\"\n >>> d = PersonEdit(None,sam)\n >>> d.exec_() # gui interaction -- #doctest: +SKIP\n 0\n >>> sam.age # assumes selection of yesterday in the gui -- #doctest: +SKIP\n 1\n\nDevelopment\n-----------\n\nQtAlchemy is still in heavy core development as schedule allows. Major new \nemphases include:\n\n* abstracting query building for lists allowing user sorting and additional \n columns\n* html generation for use with the QtWebKit bridge\n* qml view for queries\n\nChangelog\n---------\n\n0.8.3:\n\n* Python 3 support! No 2to3 or other gotchas.\n* SQLAlchemy 0.9x compatibility fixes\n\n0.8.2:\n\n* sqlalchemy 0.8x compatibility fixes\n* more PySide fixes\n\n0.8.1:\n\n* mainly bugfixes for PySide support\n\n0.8.0:\n\n* Change to PySide as default imports\n* Relax license from GPL to LGPL\n* Improve yoke change handling\n* Create new PopupKeyListing for foreign key entry\n\n0.7.1:\n\n* QueryDataView gained basic ability to requery on column header clicks for\n sorting\n* a few doc fixes\n* new helper function family for using Geraldo in qtalchemy.ext.reporttools\n\n0.7.0:\n\n* improved exception error handling and reporting for GUI applications with-out\n console\n* new yoke supporting a combo box \n* improve yoke documentation\n* add complete examples to front of documentation\n* various model/list improvements including column width defaulting\n\n0.6.12:\n\n* BoundCommandMenu has slots to be dispatched from html binding entity commands to \n html viewing forms\n* structured load and save extending the framework in BoundDialog\n* new TreeView exposing the QTreeView\n* tree model support in PBTableModel\n* improved PySide portability and fixed various crash-bugs related to that\n\n0.6.11:\n\n* context sensitive help and status tips for fields\n* new preCommand/refresh signals with CommandEvent structure allowing aborting by the ambient screen\n* improvements in the generic data import wizard\n* table view improvements (bug fixes, corrected model updates to be more precise)\n* use pywin32 ShellExecute instead of os.system for better windows support\n\n0.6.10:\n\n* renamed to qtalchemy\n* exposed Qt's association of icons with commands appearing in menus and toolbars\n* moved qtalchemy.PBTable to qtalchemy.widgets.TableView\n* new qtalchemy.ext module for common dialogs (a data import wizard for now)\n\n0.6.9:\n\n* wrote a broad outline of documentation\n* added boolean, time, and formatted text input yokes\n* rewrote DialogGeo as WindowGeometry saving and restoring window and splitter \n geometry for arbitrary windows\n* brand new command structure replacing DomainEntity\n\n0.6.8:\n\n* color and font control in the python business object layer\n* improved packaging support for windows\n* QGridLayout support in WidgetAttributeMapper\n* extended UserAttr value storage to include attribute paths (e.g. self.sub.sub1.value)\n* new QtAlchemy.xplatform module for cross platform helpers\n* rewrote WidgetAttributeMapper using InputYoke methodology\n* rename PBEventMappedBase to ModelObject\n* additions and corrections to examples\n* event model corrections (more needed)\n\n0.6:\n\n* new QtAlchemy.widgets sub-module for QLineEdit derived classes (others in the future)\n* new QtAlchemy.dialogs sub-module for auth dialog classes\n* continued tweaks for PySide and nosetests \n\n0.5.1\n\n* first usable (??) release\n\nLicense\n-------\n\nQtAlchemy is licensed under the LGPL now that it defaults to shipping with\nPySide imports. I find this to be a rather unique licensing situation that we\nnow have with PyQt4 and PySide. I can write my code for PySide and LGPL it and\nit is totally legitimate. However, it also seems entirely legitimate for a\nuser of my library to switch the imports from PySide to PyQt4 ... but then\nyou will need to consult a lawyer about the license for that amalgamation since\ndepending on PyQt4 requires the library to be GPL.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/jbmohler/qtalchemy/", "keywords": null, "license": "LGPLv2+", "maintainer": null, "maintainer_email": null, "name": "qtalchemy", "package_url": "https://pypi.org/project/qtalchemy/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/qtalchemy/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/jbmohler/qtalchemy/" }, "release_url": "https://pypi.org/project/qtalchemy/0.8.3/", "requires_dist": null, "requires_python": null, "summary": "QtAlchemy is a framework for developing GUI database applications using SQLAlchemy and PyQt/PySide.", "version": "0.8.3" }, "last_serial": 991862, "releases": { "0.6.10": [ { "comment_text": "", "digests": { "md5": "8091f7eb892342c4ae3e7335e2965d7f", "sha256": "e6083dddf15c53419e941de1a4ac2f19e760cc5c154e3b7782d999d14d2e9b44" }, "downloads": -1, "filename": "qtalchemy-0.6.10-py2.6.egg", "has_sig": false, "md5_digest": "8091f7eb892342c4ae3e7335e2965d7f", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 136784, "upload_time": "2011-06-24T16:51:29", "url": "https://files.pythonhosted.org/packages/8f/e4/57b859fe6812d6ab24b3c2347ae2a27628abe51498fdf3c7ef3f125eaaab/qtalchemy-0.6.10-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "6be6205a021c3f86ef047c3bfc76cb5d", "sha256": "c3a9c3c1e85583a3a3e3415530b26b848325f9804174a862c726da4125968976" }, "downloads": -1, "filename": "qtalchemy-0.6.10.tar.gz", "has_sig": false, "md5_digest": "6be6205a021c3f86ef047c3bfc76cb5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63395, "upload_time": "2011-06-24T16:51:27", "url": "https://files.pythonhosted.org/packages/c2/70/7ab8b0b7bea284719ab2c6293a8570dd0b386637114ed9bcbdee20e08bf7/qtalchemy-0.6.10.tar.gz" } ], "0.6.11": [ { "comment_text": "", "digests": { "md5": "5f02d183eadb6ff46e44789ffbb63b73", "sha256": "b73baa0b2ccad7d11f0a742b8a8b2628b7688b9e63034b44b85e6467a3dc1819" }, "downloads": -1, "filename": "qtalchemy-0.6.11-py2.6.egg", "has_sig": false, "md5_digest": "5f02d183eadb6ff46e44789ffbb63b73", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 150870, "upload_time": "2011-08-02T15:04:43", "url": "https://files.pythonhosted.org/packages/fb/14/d6b9cd811e743ac134572b79e494e7ef7b8769782151790214647c5c194b/qtalchemy-0.6.11-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "6cbfd1c47dda093812350ad1be2d12bd", "sha256": "95e67642eff2b8a9bf0f0c730a1c4427475e82c72e3ae5b397d64b2c91959195" }, "downloads": -1, "filename": "qtalchemy-0.6.11.tar.gz", "has_sig": false, "md5_digest": "6cbfd1c47dda093812350ad1be2d12bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68460, "upload_time": "2011-08-02T15:04:40", "url": "https://files.pythonhosted.org/packages/65/b3/b8f7c2a33687fb4843c41d4b8036d22425378f46015ffd486b6dbda21344/qtalchemy-0.6.11.tar.gz" } ], "0.6.12": [ { "comment_text": "", "digests": { "md5": "2cb494a114e8763115c493b29c75eef4", "sha256": "5b2e4c2b63344f51fc2bc5c3a750e897f49589837bf4949ddb3ea1a13b1669f8" }, "downloads": -1, "filename": "qtalchemy-0.6.12-py2.6.egg", "has_sig": false, "md5_digest": "2cb494a114e8763115c493b29c75eef4", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 187744, "upload_time": "2011-10-08T13:33:51", "url": "https://files.pythonhosted.org/packages/08/73/89440ae47b9362f1b83af625793d08ca2363cb4ce6aaa7b2b2ff6ee2e5d1/qtalchemy-0.6.12-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "c53e2280cfb0833936e7729c5a8c134f", "sha256": "84664e0078a9bd1262af94dff3db25d124e1858813210d4812381c0249575d11" }, "downloads": -1, "filename": "qtalchemy-0.6.12.tar.gz", "has_sig": false, "md5_digest": "c53e2280cfb0833936e7729c5a8c134f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82329, "upload_time": "2011-10-08T13:33:48", "url": "https://files.pythonhosted.org/packages/d0/0f/2f5a345b8545594613a81083eb7c0dc68193c55149155bda4a2b067cca9f/qtalchemy-0.6.12.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "5fb6496caf64f0c80164db790a6772b6", "sha256": "8bbfa805c0d369da265c71ad8870c3a77fce9caddbf1023efe9bd7f086cd4022" }, "downloads": -1, "filename": "qtalchemy-0.7.0-py2.7.egg", "has_sig": false, "md5_digest": "5fb6496caf64f0c80164db790a6772b6", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 193376, "upload_time": "2011-12-06T18:07:16", "url": "https://files.pythonhosted.org/packages/4e/83/a9f430374d382eb66e889a9d9ee061bb39c37404477c2ae84598e35a3a57/qtalchemy-0.7.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "bb66c28f0b9b0eeceb62fa1a5b86de62", "sha256": "a52cc90fac1eea9134c21ec591af549858c3a531cb56fc36309c08ca06fa046a" }, "downloads": -1, "filename": "qtalchemy-0.7.0.tar.gz", "has_sig": false, "md5_digest": "bb66c28f0b9b0eeceb62fa1a5b86de62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84776, "upload_time": "2011-12-06T18:07:13", "url": "https://files.pythonhosted.org/packages/3c/96/cac93f581198012f96213e6dcdf96821407bc44e0c8bfc7c17663c8dc11d/qtalchemy-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "a5fa4cac069a170691b9c287fa5017e0", "sha256": "90554ff703feab63082ff4cfffd37f3b6d704fc0ffd95286b5d3987e363355c6" }, "downloads": -1, "filename": "qtalchemy-0.7.1-py2.7.egg", "has_sig": false, "md5_digest": "a5fa4cac069a170691b9c287fa5017e0", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 199873, "upload_time": "2012-01-13T10:00:25", "url": "https://files.pythonhosted.org/packages/db/34/fdb87ad4856b78e005815127513a67f0c878460cf3e5b0db9e500dc1b1a9/qtalchemy-0.7.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "4a724ce4cd949f26340e52575c6d51a3", "sha256": "9c845f62b57957e341a96c27e069f64fec86e08b56cd9c395719a1e330a7b233" }, "downloads": -1, "filename": "qtalchemy-0.7.1.tar.gz", "has_sig": false, "md5_digest": "4a724ce4cd949f26340e52575c6d51a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87000, "upload_time": "2012-01-13T10:00:22", "url": "https://files.pythonhosted.org/packages/f8/84/2859508395fbec1ac4ae32dcd405a9ce7493c545fae8623348659bc938d0/qtalchemy-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "a1712fc79bcef9d5522b93abaf3617bc", "sha256": "197060ddb264dcd6e6081472b758e35aecd8a1fc740a3b68a45e1c739f67bf53" }, "downloads": -1, "filename": "qtalchemy-0.8.0-py2.7.egg", "has_sig": false, "md5_digest": "a1712fc79bcef9d5522b93abaf3617bc", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 204045, "upload_time": "2012-06-23T16:15:50", "url": "https://files.pythonhosted.org/packages/52/43/32a5ed36dd5b64bbf6f3c094d4fbd870dd0776c3a5a0b406214d831a9dd2/qtalchemy-0.8.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "c74e5f41dbe919b49557d4ad0815cb38", "sha256": "c9010ad966d923088a9581602ef154c13ae0b56fba81d370c215a9eeef38e850" }, "downloads": -1, "filename": "qtalchemy-0.8.0.tar.gz", "has_sig": false, "md5_digest": "c74e5f41dbe919b49557d4ad0815cb38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90115, "upload_time": "2012-06-23T16:15:48", "url": "https://files.pythonhosted.org/packages/09/84/b77503a41c39e694024053c7513ca032f1b5b9470801c08957714d948707/qtalchemy-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "8a4d90c008dd3cf2d110e867fb5411ed", "sha256": "014ca1a025dd0901b62f14dec6fa9efe709b47a4a1191553ca5b858fcbd3fde0" }, "downloads": -1, "filename": "qtalchemy-0.8.1-py2.7.egg", "has_sig": false, "md5_digest": "8a4d90c008dd3cf2d110e867fb5411ed", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 204211, "upload_time": "2012-12-04T17:10:16", "url": "https://files.pythonhosted.org/packages/bc/1c/780a86c32e949cfd0550ee16d5c0bd05ce1e3fede9a542b579d77a8beb17/qtalchemy-0.8.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "8af61bee58976b9c41a8860482db0e18", "sha256": "ad24ae241242d36d2c7429f6f1d27089f6b356d88091402ef7f708e19af11e45" }, "downloads": -1, "filename": "qtalchemy-0.8.1.tar.gz", "has_sig": false, "md5_digest": "8af61bee58976b9c41a8860482db0e18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90387, "upload_time": "2012-12-04T17:10:06", "url": "https://files.pythonhosted.org/packages/85/52/54346f61283f543ed7e971d849d1d3448f7a0ebb23b9c235e41bd70945ff/qtalchemy-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "79a0ee4c8746ef6e2e4ea10f10ca125c", "sha256": "1e89cef0714f827718e11c73ce86e598ba875c1ecaeb71d122abeadc20d6ef14" }, "downloads": -1, "filename": "qtalchemy-0.8.2-py2.7.egg", "has_sig": false, "md5_digest": "79a0ee4c8746ef6e2e4ea10f10ca125c", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 205493, "upload_time": "2013-08-22T21:00:17", "url": "https://files.pythonhosted.org/packages/91/73/f79f8795557f5f08c4b62eb5b7067a05d1987b42633811ce3a0d144be666/qtalchemy-0.8.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "98e98da90642a64b7a410d3a33cde15b", "sha256": "147952ae2554aa6a77af6cd4e84ef3f0207b475a841cf53031d785268919b947" }, "downloads": -1, "filename": "qtalchemy-0.8.2.tar.gz", "has_sig": false, "md5_digest": "98e98da90642a64b7a410d3a33cde15b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90847, "upload_time": "2013-08-22T21:00:12", "url": "https://files.pythonhosted.org/packages/0f/48/c0dfae2baab82aef3f9433ec5f3ef04a435325fb7062457710795f19ad86/qtalchemy-0.8.2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "c92cdb5b33c6fb3ccdc9e7f5256117e0", "sha256": "62aa8f85a270c9cbf94461ea81e7fe784545239a9b478753a2434982281f2e4f" }, "downloads": -1, "filename": "qtalchemy-0.8.3-py2.7.egg", "has_sig": false, "md5_digest": "c92cdb5b33c6fb3ccdc9e7f5256117e0", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 195078, "upload_time": "2014-02-06T00:43:34", "url": "https://files.pythonhosted.org/packages/59/70/dedd5339de603fdb51011eec2d734fd2cb6695394895df2f3c67b2e2019b/qtalchemy-0.8.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "9bfda86889166e6dc22a943baca922a7", "sha256": "2a3408a362292a42253c5134b8ac88fe9c46124b695f44ed488aa12b57c38b60" }, "downloads": -1, "filename": "qtalchemy-0.8.3-py3.3.egg", "has_sig": false, "md5_digest": "9bfda86889166e6dc22a943baca922a7", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 215387, "upload_time": "2014-02-06T00:42:15", "url": "https://files.pythonhosted.org/packages/a2/e7/5a8967782aa1d2cacd04c26f85f826cc0bf92778a249139b74af2010b534/qtalchemy-0.8.3-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "bdeec9bb65f549a28986a8141dc7d52c", "sha256": "8706f1bdf1af1155eb812ee326c09329e28dfe1677efecb6fbcd6983c24e154c" }, "downloads": -1, "filename": "qtalchemy-0.8.3.tar.gz", "has_sig": false, "md5_digest": "bdeec9bb65f549a28986a8141dc7d52c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91997, "upload_time": "2014-02-06T00:42:07", "url": "https://files.pythonhosted.org/packages/71/94/391b8a39cdca24e8299c57dfb36c3c583e0cb8c423b819064c81075f240b/qtalchemy-0.8.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c92cdb5b33c6fb3ccdc9e7f5256117e0", "sha256": "62aa8f85a270c9cbf94461ea81e7fe784545239a9b478753a2434982281f2e4f" }, "downloads": -1, "filename": "qtalchemy-0.8.3-py2.7.egg", "has_sig": false, "md5_digest": "c92cdb5b33c6fb3ccdc9e7f5256117e0", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 195078, "upload_time": "2014-02-06T00:43:34", "url": "https://files.pythonhosted.org/packages/59/70/dedd5339de603fdb51011eec2d734fd2cb6695394895df2f3c67b2e2019b/qtalchemy-0.8.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "9bfda86889166e6dc22a943baca922a7", "sha256": "2a3408a362292a42253c5134b8ac88fe9c46124b695f44ed488aa12b57c38b60" }, "downloads": -1, "filename": "qtalchemy-0.8.3-py3.3.egg", "has_sig": false, "md5_digest": "9bfda86889166e6dc22a943baca922a7", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 215387, "upload_time": "2014-02-06T00:42:15", "url": "https://files.pythonhosted.org/packages/a2/e7/5a8967782aa1d2cacd04c26f85f826cc0bf92778a249139b74af2010b534/qtalchemy-0.8.3-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "bdeec9bb65f549a28986a8141dc7d52c", "sha256": "8706f1bdf1af1155eb812ee326c09329e28dfe1677efecb6fbcd6983c24e154c" }, "downloads": -1, "filename": "qtalchemy-0.8.3.tar.gz", "has_sig": false, "md5_digest": "bdeec9bb65f549a28986a8141dc7d52c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91997, "upload_time": "2014-02-06T00:42:07", "url": "https://files.pythonhosted.org/packages/71/94/391b8a39cdca24e8299c57dfb36c3c583e0cb8c423b819064c81075f240b/qtalchemy-0.8.3.tar.gz" } ] }