{ "info": { "author": "John Anderson", "author_email": "sontek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Introduction to *horus*\n~~~~~~~~~~~~~~~~~~~~~~~\n\n*horus* provides generic user registration for the Pyramid web framework,\nif your web app uses sqlalchemy.\n\nIt is a pluggable web application that provides user registration,\nlogin, logout and change password functionality. *horus* follows a policy of\nminimal interference, so your app can mostly keep its existing models.\n\n\nMinimal integration\n===================\n\n- Create a virtualenv and activate it. Install pyramid and create\n your pyramid project.\n\n- Edit your *setup.py* to add \"horus\" to the dependencies in the\n *install_requires* list.\n\n- Run ``python setup.py develop`` on your project to install all dependencies\n into your virtualenv.\n\n- Create your SQLAlchemy declarative initialization.\n\n- Create models inheriting from horus' abstract models. Find an example in the\n file `horus/tests/models.py\n `_.\n\n Alternatively, use the horus scaffold script::\n\n horus_scaffold development.ini > your_app/auth_models.py\n\n Then all you need to do is tell the class where to find your declarative\n base you and are good to go!\n\n- Include horus inside your ``main()`` function like this::\n\n # Tell horus which SQLAlchemy scoped session to use:\n from hem.interfaces import IDBSession\n registry = config.registry\n registry.registerUtility(my_sqlalchemy_scoped_session, IDBSession)\n\n config.include('horus')\n config.scan_horus(auth_models_package_or_module)\n\n With the above ``config.scan_horus()`` call, you need to edit your .ini\n configuration file and tell horus which model classes to use like this:\n\n horus.user_class = my_app.models:User\n horus.activation_class = my_app.models:Activation\n\n As an alternative to ``config.scan_horus()`` plus that configuration,\n you can register the classes explicitly if you so prefer. This must be\n done above ``config.include('horus')``::\n\n # Tell horus which models to use:\n from horus.interfaces import IUserClass, IActivationClass\n registry.registerUtility(User, IUserClass)\n registry.registerUtility(Activation, IActivationClass)\n\n config.include('horus')\n\n- Configure ``horus.login_redirect`` and ``horus.logout_redirect``\n (in your .ini configuration file) to set the redirection routes.\n\n- If you haven't done so yet, configure an HTTP session factory according to\n the Sessions chapter of the Pyramid documentation.\n\n- Create your database and tables. Maybe even an initial user.\n\n- Be sure to pass an ``authentication_policy`` argument in the\n ``config = Configurator(...)`` call. Refer to Pyramid docs for details.\n\n- By now the login form should appear at /login, but /register shouldn't.\n\n- Include the package pyramid_mailer for the validation e-mail and\n \"forgot password\" e-mail::\n\n config.include('pyramid_mailer')\n\n- The /register form should appear, though ugly. Now you have a choice\n regarding user activation by email:\n\n - You may just disable it by setting, in your .ini file::\n\n horus.require_activation = False\n\n - Otherwise, configure pyramid_mailer `according to its documentation\n `_\n and test the registration page.\n\n- If you are using pyramid_tm or the ZopeTransactionManager, your minimal\n integration is done. (The pages are ugly, but working. Keep reading...)\n\n\nNeed to session.commit()?\n=========================\n\n*horus* does not require pyramid_tm or the ZopeTransactionManager with your\nsession but if you do not use them you do have to take one extra step.\nWe don't commit transactions for you because that just wouldn't be nice!\n\nAll you have to do is subscribe to the extension events and\ncommit the session yourself. This also gives you the chance to\ndo some extra processing::\n\n from horus.events import (\n PasswordResetEvent, NewRegistrationEvent,\n RegistrationActivatedEvent, ProfileUpdatedEvent)\n\n def handle_request(event):\n request = event.request\n session = request.registry.getUtility(IDBSession)\n session.commit()\n\n self.config.add_subscriber(handle_request, PasswordResetEvent)\n self.config.add_subscriber(handle_request, NewRegistrationEvent)\n self.config.add_subscriber(handle_request, RegistrationActivatedEvent)\n self.config.add_subscriber(handle_request, ProfileUpdatedEvent)\n\n\nChanging the forms\n==================\n\nIf you would like to modify any of the forms, you just need\nto register the new deform class to be used.\n\nThe interfaces you have available to override from horus.interfaces are:\n\n- IHorusLoginForm\n- IHorusRegisterForm\n- IHorusForgotPasswordForm\n- IHorusResetPasswordForm\n- IHorusProfileForm\n\nThis is how you would do it (*MyForm* being a custom deform Form class)::\n\n config.registry.registerUtility(MyForm, IHorusLoginForm)\n\n\nChanging the templates\n======================\n\nIf you would like to substitute the templates you can use pyramid's\n`override_asset `_::\n\n config.override_asset(to_override='horus:templates/template.mako',\n override_with='your_package:templates/anothertemplate.mako')\n\nThe templates you have available to override are:\n\n- login.mako\n- register.mako\n- forgot_password.mako\n- reset_password.mako\n- profile.mako\n\nIf you would like to override the templates with Jinja2, or any other\ntemplating language, just override the view configuration::\n\n config.add_view('horus.views.AuthController', attr='login',\n route_name='login', renderer='yourapp:templates/login.jinja2')\n config.add_view('horus.views.ForgotPasswordController',\n attr='forgot_password', route_name='forgot_password',\n renderer='yourapp:templates/forgot_password.jinja2')\n config.add_view('horus.views.ForgotPasswordController',\n attr='reset_password', route_name='reset_password',\n renderer='yourapp:templates/reset_password.jinja2')\n config.add_view('horus.views.RegisterController', attr='register',\n route_name='register', renderer='yourapp:templates/register.jinja2')\n config.add_view('horus.views.ProfileController', attr='profile',\n route_name='profile', renderer='yourapp:templates/profile.jinja2')\n\n\nChanging strings\n================\n\nTake a look at `this class\n`_.\nThis is where we store all the strings in horus.\nIf you'd like to change one or two messages, simply subclass this, then do::\n\n from horus.interfaces import IUIStrings\n config.registry.registerUtility(MyStringsClass, IUIStrings)\n\n\nChanging the primary key column name\n====================================\n\nIf you wish to override the primary key attribute name, you can do so\nby creating a new mixin class::\n\n class NullPkMixin(Base):\n abstract = True\n _idAttribute = 'pk'\n\n @declared_attr\n def pk(self):\n return Base.pk\n\n @declared_attr\n def id(self):\n return None\n\n class User(NullPkMixin, UserMixin):\n pass\n\n\nhorus development\n=================\n\nSee https://github.com/eventray/horus\n\nIf you would like to help make any changes to horus, you can run its\nunit tests with py.test:\n\n py.test\n\nTo check test coverage::\n\n py.test --cov-report term-missing --cov horus\n\nThe tests can also be run in parallel::\n\n py.test -n4\n\nWe are using this build server: http://travis-ci.org/#!/eventray/horus", "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/eventray/horus", "keywords": "pyramid,authentication,user registration", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "horus", "package_url": "https://pypi.org/project/horus/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/horus/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/eventray/horus" }, "release_url": "https://pypi.org/project/horus/0.9.15/", "requires_dist": null, "requires_python": null, "summary": "Generic user registration for pyramid", "version": "0.9.15" }, "last_serial": 1031645, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "dae9cd5dbd7ed7d203b93a7b7d4edb5d", "sha256": "16dbf7438d21bbb0acec5b720948878258c54cae41cdbef3dca064308aba7fa7" }, "downloads": -1, "filename": "horus-0.2.tar.gz", "has_sig": false, "md5_digest": "dae9cd5dbd7ed7d203b93a7b7d4edb5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17616, "upload_time": "2012-06-25T08:56:40", "url": "https://files.pythonhosted.org/packages/0f/70/8e11801bfb238c8bfb5b76dd4ee04d7915c2de26266b58c760399b192ef8/horus-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "364b3061f1aaa3e4302360400c6a12df", "sha256": "495d1d240c31532cfb99e94255d175f3bf6f3d3b538171463ea008637e8ec572" }, "downloads": -1, "filename": "horus-0.3.tar.gz", "has_sig": false, "md5_digest": "364b3061f1aaa3e4302360400c6a12df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17664, "upload_time": "2012-06-25T14:07:07", "url": "https://files.pythonhosted.org/packages/c9/08/54b816cacbc234b42613a7d208479998ff85d7e2258b7f3a72ffc472cd0d/horus-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "7904be03228f73bc92b00312d3823097", "sha256": "ed3a9fe6a07cbde6f68667110b8da6fb0922752c83b488d8c17c54b65f1e0c9a" }, "downloads": -1, "filename": "horus-0.4.tar.gz", "has_sig": false, "md5_digest": "7904be03228f73bc92b00312d3823097", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17968, "upload_time": "2012-06-25T14:15:21", "url": "https://files.pythonhosted.org/packages/9e/5b/c85553e4fc02976ea0e3beccd531c613eebd3ebf329795e2b1ee9bd8967c/horus-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "eb9ffd5e344a7de6837c90efcac2f3b2", "sha256": "edb2a91a45c8dafed6f6767848692f13e86d7b9af72ac01415066e0063c4ea2b" }, "downloads": -1, "filename": "horus-0.5.tar.gz", "has_sig": false, "md5_digest": "eb9ffd5e344a7de6837c90efcac2f3b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17736, "upload_time": "2012-06-25T14:18:33", "url": "https://files.pythonhosted.org/packages/66/fd/cb75079233104f2ecdf1e7a187534c01f095a9fc7b683d1a9dde5fbc0b9e/horus-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "bb9f9af5f57583565c95453ab5190b69", "sha256": "ef4ee9c440958bb4ec0421dc899615d2fcc6adc9569d96452cf6ab7cd5f60674" }, "downloads": -1, "filename": "horus-0.6.tar.gz", "has_sig": false, "md5_digest": "bb9f9af5f57583565c95453ab5190b69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17735, "upload_time": "2012-06-25T14:19:07", "url": "https://files.pythonhosted.org/packages/f8/cb/6e781e57680ea6f2f425b1e26315ca41643a4df978e4b85725fd1f145b0a/horus-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "391f83e7dddbce4aa4c4382e9dd275bd", "sha256": "fe86572445fa02ae955aae6f4fbf439b6de9cbe41bd8b9406297b1a55588e5e5" }, "downloads": -1, "filename": "horus-0.7.tar.gz", "has_sig": false, "md5_digest": "391f83e7dddbce4aa4c4382e9dd275bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17736, "upload_time": "2012-06-25T14:19:32", "url": "https://files.pythonhosted.org/packages/54/e2/0e88d5a8ae32ddb0e60dcab546e13f54715f7362f0a0dabff25cafc4cc70/horus-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "34c678c2e690e3c581734869547919f8", "sha256": "ce17425d9ef9b12344d26f4d1f84bf716c1009816b221ad5e943d32db811410c" }, "downloads": -1, "filename": "horus-0.8.tar.gz", "has_sig": false, "md5_digest": "34c678c2e690e3c581734869547919f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17746, "upload_time": "2012-06-25T14:29:40", "url": "https://files.pythonhosted.org/packages/58/98/2b6f3b7d4de63d0a187cb20a226f010dd83b10ee755739eb61236308ca5c/horus-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "0da41ca3dc364cead3c9e1f18c2e0ea5", "sha256": "d15bfee24e1574a5661edbbcb3c6d3717405142cec5d3ace6e044847a6835c2f" }, "downloads": -1, "filename": "horus-0.8.1.tar.gz", "has_sig": false, "md5_digest": "0da41ca3dc364cead3c9e1f18c2e0ea5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17767, "upload_time": "2012-06-25T14:37:38", "url": "https://files.pythonhosted.org/packages/a7/9a/e7d446d052df1c48f081a93861e752bb014b681e16d441bdab16f4c27389/horus-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "c473de1ba96f4e8cd7c0b71f04c62e3e", "sha256": "116d901980e74e8e024286e268abf08fb64d4a41422c97ab799a3765ac768e87" }, "downloads": -1, "filename": "horus-0.8.2.tar.gz", "has_sig": false, "md5_digest": "c473de1ba96f4e8cd7c0b71f04c62e3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17772, "upload_time": "2012-06-25T14:37:55", "url": "https://files.pythonhosted.org/packages/9d/d2/ae096c4dbe910f9ed204a5d74c0050b351f327c40471087d10210a881d44/horus-0.8.2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "d4a458820b625e50e55f967c94c0fd54", "sha256": "6848a6d916e90f4282b9d7594f6028460fa227795def7d3ddcd503ac2eb15195" }, "downloads": -1, "filename": "horus-0.8.3.tar.gz", "has_sig": false, "md5_digest": "d4a458820b625e50e55f967c94c0fd54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17721, "upload_time": "2012-06-25T14:44:42", "url": "https://files.pythonhosted.org/packages/8d/a8/4e75c54635686f0018f73020eb55dd4585b9c5585997d8159631036deb44/horus-0.8.3.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "331c30ee182198181d05d8e875a808e3", "sha256": "137c12862fc3199eefcfc4735eb66f215c40277ae104539d610269f18c7fe9ff" }, "downloads": -1, "filename": "horus-0.8.4.tar.gz", "has_sig": false, "md5_digest": "331c30ee182198181d05d8e875a808e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17964, "upload_time": "2012-06-25T14:59:47", "url": "https://files.pythonhosted.org/packages/db/0a/28926b4859ffef023684963ef023bf93dff26b7cdf9c300edcf71afd3808/horus-0.8.4.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "d3ed916790254443b0b8f60a1c680a31", "sha256": "10c354056297ba0d0b4c17ebba3af8b82bd65d68f337887a935f586872dd3a74" }, "downloads": -1, "filename": "horus-0.9.tar.gz", "has_sig": false, "md5_digest": "d3ed916790254443b0b8f60a1c680a31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17959, "upload_time": "2012-06-25T15:51:36", "url": "https://files.pythonhosted.org/packages/81/09/e08b323a411356ab8d9b5fedc4fd95509c7994b28d9336f1afcaade84bd2/horus-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "602ab39816fdbcdb1d7c77bde5efff34", "sha256": "b2b4ea8362436468fbb12f76fdff7300b2f076e07c40a2eef7b2d731fd17efba" }, "downloads": -1, "filename": "horus-0.9.1.tar.gz", "has_sig": false, "md5_digest": "602ab39816fdbcdb1d7c77bde5efff34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17164, "upload_time": "2012-07-23T03:41:44", "url": "https://files.pythonhosted.org/packages/00/e8/08e6b5742da966c8412d02c7411909543f08caedc0f6e1684b24ffa55dc4/horus-0.9.1.tar.gz" } ], "0.9.10": [ { "comment_text": "", "digests": { "md5": "7c33d472fd2f3051e092f22543c711da", "sha256": "b0b81402fa19fae7815afce70609b7686a518c1790b510108504072999e64f0c" }, "downloads": -1, "filename": "horus-0.9.10.tar.gz", "has_sig": false, "md5_digest": "7c33d472fd2f3051e092f22543c711da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22643, "upload_time": "2012-11-27T19:23:33", "url": "https://files.pythonhosted.org/packages/8d/64/4bc21984f970ff9a5ca495131a42f86cb0bfd5f95a24a5d7c0be98acd357/horus-0.9.10.tar.gz" } ], "0.9.11": [ { "comment_text": "", "digests": { "md5": "f7838318ded2373a23439f92b18adf2c", "sha256": "9071cd893fab3f061736354278aa31054b9a9b30da11e0cee5a5b4c5220c1468" }, "downloads": -1, "filename": "horus-0.9.11.tar.gz", "has_sig": false, "md5_digest": "f7838318ded2373a23439f92b18adf2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22719, "upload_time": "2012-12-04T18:56:04", "url": "https://files.pythonhosted.org/packages/bd/25/c39bac7f55280250e802fb7b1f435158cad3db36a160d9659df11abb40b0/horus-0.9.11.tar.gz" } ], "0.9.12": [ { "comment_text": "", "digests": { "md5": "297a53f7330ddf7e2d88481a30c55178", "sha256": "9f4b7accf48ba096502eddf4e98864950e7bd2c461b5baedd5f491a796774b68" }, "downloads": -1, "filename": "horus-0.9.12.tar.gz", "has_sig": false, "md5_digest": "297a53f7330ddf7e2d88481a30c55178", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22815, "upload_time": "2012-12-13T17:46:15", "url": "https://files.pythonhosted.org/packages/c5/37/e1215bea67eebca05a6c1f6c46b3069741a94b917b2c01252fc1214c1846/horus-0.9.12.tar.gz" } ], "0.9.13": [ { "comment_text": "", "digests": { "md5": "e618a3e96e8ecf6f76f462421764d6f2", "sha256": "d9fa03d9ad864bf20536e3380e4463b3ab5f844ad7a3e0adacfec7549e3cbe47" }, "downloads": -1, "filename": "horus-0.9.13.tar.gz", "has_sig": false, "md5_digest": "e618a3e96e8ecf6f76f462421764d6f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 167519, "upload_time": "2012-12-16T18:39:40", "url": "https://files.pythonhosted.org/packages/29/c0/d6fa8353564a58435e49517bb329b56dbeff654c82ead0247524ff1f8390/horus-0.9.13.tar.gz" } ], "0.9.15": [ { "comment_text": "", "digests": { "md5": "edf5cd14f82ade0d1e76b339643178e4", "sha256": "1e6f54e0a928b8d0d2ebfc6906fe35d7263013df0ef510fac2db3709ef410d3b" }, "downloads": -1, "filename": "horus-0.9.15.tar.gz", "has_sig": false, "md5_digest": "edf5cd14f82ade0d1e76b339643178e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174155, "upload_time": "2014-03-16T21:04:38", "url": "https://files.pythonhosted.org/packages/cb/1e/5919cfd9604544f9b8a8bf1e90d034241cc13e513fb79004bd6b95b32c65/horus-0.9.15.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "aba3d56fc01bdcc744677b779dead2f0", "sha256": "6bbf88e96c41b343060773375ec29bf6fbfa06b49a57d07804c0695e09a38e94" }, "downloads": -1, "filename": "horus-0.9.2.tar.gz", "has_sig": false, "md5_digest": "aba3d56fc01bdcc744677b779dead2f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17694, "upload_time": "2012-07-29T19:57:22", "url": "https://files.pythonhosted.org/packages/13/18/d2f3c6198f2aec49cf63a5df9ba721e68ec932bfd868a60d89d6b8d54b35/horus-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "b39e08ec6244576544c35633c46dbcd0", "sha256": "99b945d21648e8d5637f4fab69a274fef6b693831d7243c853d7f3312e101aff" }, "downloads": -1, "filename": "horus-0.9.3.tar.gz", "has_sig": false, "md5_digest": "b39e08ec6244576544c35633c46dbcd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17651, "upload_time": "2012-07-29T23:12:47", "url": "https://files.pythonhosted.org/packages/0c/6f/7d5ef06e7194c93e68a1df5b28f1e914065e1b26bdf98b91581bb539b9ff/horus-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "8b91720c5adb95d065de764caaf8790e", "sha256": "333f655c85cde310701db29a9b575612856f9d4509f504c4ca3010dc3bf045ab" }, "downloads": -1, "filename": "horus-0.9.4.tar.gz", "has_sig": false, "md5_digest": "8b91720c5adb95d065de764caaf8790e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17668, "upload_time": "2012-07-29T23:15:32", "url": "https://files.pythonhosted.org/packages/88/af/b28717d77877010b03506aa3ba3a861900e065ed172a6688b1df4ce69a97/horus-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "a272c4c3fe05fc43e050805b106469d8", "sha256": "f2777fe2303f2dd17698db206189efccfb3ac34bb7bc91121f2ee2982e1a8548" }, "downloads": -1, "filename": "horus-0.9.5.tar.gz", "has_sig": false, "md5_digest": "a272c4c3fe05fc43e050805b106469d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17677, "upload_time": "2012-07-29T23:17:49", "url": "https://files.pythonhosted.org/packages/ce/be/32d9c0e539b4fedc3f87bb42e04eef4d7277209d6dad342ab13f82bc75c0/horus-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "3c4828484befd2d6a25aec5d5bf54707", "sha256": "dfc059fc1cef7c6a5aacc55fe3a38307be9d63eb2f1f0e9d04ce8e63192a7053" }, "downloads": -1, "filename": "horus-0.9.6.tar.gz", "has_sig": false, "md5_digest": "3c4828484befd2d6a25aec5d5bf54707", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17665, "upload_time": "2012-07-29T23:19:48", "url": "https://files.pythonhosted.org/packages/ca/cf/e4cb0007409d706c3660953f483abc376676be1dff6cbfd08b779773c304/horus-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "e3fd4775109d58f5f4c6ddb0d3c5e6d0", "sha256": "3e67b462d006b889c5eeafea54feec4bc86825a73a116ee8cf2e66ecf29e3e6a" }, "downloads": -1, "filename": "horus-0.9.7.tar.gz", "has_sig": false, "md5_digest": "e3fd4775109d58f5f4c6ddb0d3c5e6d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17772, "upload_time": "2012-07-29T23:24:01", "url": "https://files.pythonhosted.org/packages/95/0f/6a52a6f3a0ac142de55a29b03bbcea619c8395ff9843dfe6da0ea36919ba/horus-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "b71843a903528e7af41963a70c9f2958", "sha256": "9a3e2cc7f89d6fb30aba50a537e8ca70c654d1e1c64cdd405792f7552c7667a3" }, "downloads": -1, "filename": "horus-0.9.8.tar.gz", "has_sig": false, "md5_digest": "b71843a903528e7af41963a70c9f2958", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19119, "upload_time": "2012-07-29T23:26:39", "url": "https://files.pythonhosted.org/packages/5e/f6/8281d87cc323a5d363b3c4c835bd3cd680ed3b271cbaf3b68dbdcd27798e/horus-0.9.8.tar.gz" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "0eb4116b28698ab0fa5bd3374d08276c", "sha256": "0cf102769c1b19857b97377fa9e16119915452fdc56ee8a7eb492804d73d7731" }, "downloads": -1, "filename": "horus-0.9.9.tar.gz", "has_sig": false, "md5_digest": "0eb4116b28698ab0fa5bd3374d08276c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19230, "upload_time": "2012-08-29T02:11:05", "url": "https://files.pythonhosted.org/packages/6c/a4/1f88ddacd975d7b22d846dfac892282e05ad0b4b755f71a0cb80a328ad3d/horus-0.9.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "edf5cd14f82ade0d1e76b339643178e4", "sha256": "1e6f54e0a928b8d0d2ebfc6906fe35d7263013df0ef510fac2db3709ef410d3b" }, "downloads": -1, "filename": "horus-0.9.15.tar.gz", "has_sig": false, "md5_digest": "edf5cd14f82ade0d1e76b339643178e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174155, "upload_time": "2014-03-16T21:04:38", "url": "https://files.pythonhosted.org/packages/cb/1e/5919cfd9604544f9b8a8bf1e90d034241cc13e513fb79004bd6b95b32c65/horus-0.9.15.tar.gz" } ] }