{ "info": { "author": "Farsheed Ashouri", "author_email": "rodmena@me.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: Jython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "====================================\nAuth | Authorization for Humans\n====================================\n\nRESTful, Simple Authorization system with ZERO configuration.\n\n.. image:: https://badge.fury.io/py/auth.svg\n :target: https://badge.fury.io/py/auth\n\n.. image:: https://img.shields.io/pypi/dm/auth.svg\n :target: https://pypi.python.org/pypi/auth\n\n\n\n\n.. image:: https://api.travis-ci.org/ourway/auth.svg\n :target: https://travis-ci.org/ourway/auth\n\n.. image:: https://codecov.io/github/ourway/auth/coverage.svg?branch=master\n :target: https://codecov.io/github/ourway/auth?branch=master\n\n\n\n\n***************\nWhat is Auth?\n***************\nAuth is a module that makes authorization simple and also scalable and powerful. It also has a beautiful RESTful API for use in micro-service architectures and platforms. It is originally desinged to use in Appido, a scalable media market in Iran.\n\nIt supports Python2.6+ and if you have a mongodb backbone, you need ZERO configurations steps. Just type ``auth-server`` and press enter!\n\nI use Travis and Codecov to keep myself honest.\n\n*******************\nrequirements\n*******************\n\nYou need to access to **mongodb**. If you are using a remote mongodb, provide these environment variables:\n\n``MONGO_HOST`` and ``MONGO_PORT``\n\n\n*******************\nInstallation\n*******************\n\n.. code:: Bash\n\n pip install auth\n\n\n*******************\nShow me an example\n*******************\nok, lets image you have two users, **Jack** and **Sara**. Sara can cook and Jack can dance. Both can laugh.\n\nYou also need to choose a secret key for your application. Because you may want to use Auth in various tools and each must have a secret key for seperating their scope.\n\n.. code:: Python\n\n my_secret_key = \"pleaSeDoN0tKillMyC_at\"\n from auth import Authorization\n cas = Authorization(my_secret_key)\n\nNow, Lets add 3 groups, Cookers, Dancers and Laughers. Remember that groups are Roles. So when we create a group, indeed we create a role:\n\n.. code:: Python\n\n cas.add_group('cookers')\n cas.add_group('dancers')\n cas.add_group('laughers')\n\n\nOk, great. You have 3 groups and you need to authorize them to do special things.\n\n.. code:: Python\n\n cas.add_permission('cookers', 'cook')\n cas.add_permission('dancers', 'dance')\n cas.add_permission('laughers', 'laugh')\n\n\nGood. You let cookers to cook and dancers to dance etc...\nThe final part is to set memberships for Sara and Jack:\n\n.. code:: Python\n\n cas.add_membership('sara', 'cookers')\n cas.add_membership('sara', 'laughers')\n cas.add_membership('jack', 'dancers')\n cas.add_membership('jack', 'laughers')\n\n\n\nThat's all we need. Now lets ensure that jack can dance:\n\n.. code:: Python\n\n if cas.user_has_permission('jack', 'dance'):\n print('YES!!! Jack can dance.')\n\n\n\n**********************\nAuthirization Methods\n**********************\n\nuse pydoc to see all methods:\n\n.. code:: Bash\n\n pydoc auth.Authorization\n\n\n*******************\nRESTful API\n*******************\nLets run the server on port 4000:\n\n.. code:: Python\n\n from auth import api, serve\n serve('localhost', 4000, api)\n\nOr, from version 0.1.2+ you can use this command:\n\n.. code:: Bash\n\n auth-server\n\n\nSimple! Authorization server is ready to use.\n\n.. image:: https://raw.githubusercontent.com/ourway/auth/master/docs/API_Usage_Teminal.gif\n\n\nYou can use it via simple curl or using mighty Requests module. So in you remote application, you can do something like this:\n\n.. code:: Python\n\n import requests\n secret_key = \"pleaSeDoN0tKillMyC_at\"\n auth_api = \"http://127.0.0.1:4000/api\"\n\n\nLets create admin group:\n\n.. code:: Python\n\n requests.post(auth_api+'/role/'+secret_key+'/admin')\n\n\nAnd lets make Jack an admin:\n\n.. code:: Python\n\n requests.post(auth_api+'/permission/'+secret_key+'/jack/admin')\n\nAnd finally let's check if Sara still can cook:\n\n.. code:: Python\n\n requests.get(auth_api+'/has_permission/'+secret_key+'/sara/cook')\n\n\n\n********************\nRESTful API helpers\n********************\nauth comes with a helper class that makes your life easy.\n\n.. code:: Python\n\n from auth.client import Client\n service = Client('srv201', 'http://192.168.99.100:4000')\n print(service)\n service.get_roles()\n service.add_role(role='admin')\n\n\n*******************\nAPI Methods\n*******************\n\n\n.. code:: Bash\n\n pydoc auth.CAS.REST.service\n\n\n\n\n- ``/ping`` [GET]\n\n\n Ping API, useful for your monitoring tools\n\n\n- ``/api/membership/{KEY}/{user}/{role}`` [GET/POST/DELETE]\n\n Adding, removing and getting membership information.\n\n\n- ``/api/permission/{KEY}/{role}/{name}`` [GET/POST/DELETE]\n\n Adding, removing and getting permissions\n\n\n- ``/api/has_permission/{KEY}/{user}/{name}`` [GET]\n\n Getting user permission info\n\n\n- ``/api/role/{KEY}/{role}`` [GET/POST/DELETE]\n\n Adding, removing and getting roles\n\n\n- ``/api/which_roles_can/{KEY}/{name}`` [GET]\n\n For example: Which roles can send_mail?\n\n\n- ``/api/which_users_can/{KEY}/{name}`` [GET]\n\n For example: Which users can send_mail?\n\n\n- ``/api/user_permissions/{KEY}/{user}`` [GET]\n\n Get all permissions that a user has\n\n- ``/api/role_permissions/{KEY}/{role}`` [GET]\n\n Get all permissions that a role has\n\n\n- ``/api/user_roles/{KEY}/{user}`` [GET]\n\n Get roles that user assinged to\n\n- ``/api/roles/{KEY}`` [GET]\n\n Get all available roles\n\n\n*******************\nDeployment\n*******************\n\nDeploying Auth module in production environment is easy:\n\n\n.. code:: Bash\n\n gunicorn auth:api\n\n\n\n\n*******************\nDockerizing\n*******************\n\nIt's simple:\n\n.. code:: Bash\n\n docker build -t python/auth-server https://raw.githubusercontent.com/ourway/auth/master/Dockerfile\n docker run --name=auth -e MONGO_HOST='192.168.99.100' -p 4000:4000 -d --restart=always --link=mongodb-server python/auth-server\n\n\n\n*******************\nCopyright\n*******************\n\n- Farsheed Ashouri `@ `_\n\n\n*******************\nDocumentation\n*******************\nFeel free to dig into source code. If you think you can improve the documentation, please do so and send me a pull request.\n\n************************\nUnit Tests and Coverage\n************************\nI am trying to add tests as much as I can, but still there are areas that need improvement.\n\n\n**********\nTo DO\n**********\n- Add Authentication features\n- Improve Code Coverage", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/ourway/auth/", "keywords": "authorizarion role auth groups membership ensure ldap", "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "auth", "package_url": "https://pypi.org/project/auth/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/auth/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/ourway/auth/" }, "release_url": "https://pypi.org/project/auth/0.5.3/", "requires_dist": null, "requires_python": null, "summary": "Authorization for humans", "version": "0.5.3" }, "last_serial": 2131892, "releases": { "0.3.3": [ { "comment_text": "", "digests": { "md5": "fc7f3458a8e02750291e508402e51667", "sha256": "d72e547945ab4f63ad0c9670ecb788a4946ec6ec2e5cd8ba49388366aaa38027" }, "downloads": -1, "filename": "auth-0.3.3-py2-none-any.whl", "has_sig": false, "md5_digest": "fc7f3458a8e02750291e508402e51667", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12655, "upload_time": "2015-10-29T00:45:53", "url": "https://files.pythonhosted.org/packages/6f/e8/09893aeb3da30c44c6ad0307373672519d96b28b92fc0ba4722ce60de4bd/auth-0.3.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "57d1747a604cbaf29d32d096d8b5a400", "sha256": "976c7c72b73d0e1b0b9ded4f49d7ece5d226565ce488242ee4087672e1c57fd1" }, "downloads": -1, "filename": "auth-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "57d1747a604cbaf29d32d096d8b5a400", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12661, "upload_time": "2015-10-29T00:46:10", "url": "https://files.pythonhosted.org/packages/d7/8b/831953651df1faf7dd21c0f63265e4bfda164bc27c2146e6debc61043c59/auth-0.3.3-py3-none-any.whl" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "ebae45a57c0c42262b48ed2c59b1b341", "sha256": "fa3d65378e347bb509d201afb7ddc3d78639d71a4acea8efdd54c358ab8f209f" }, "downloads": -1, "filename": "auth-0.4.1-py2-none-any.whl", "has_sig": false, "md5_digest": "ebae45a57c0c42262b48ed2c59b1b341", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14130, "upload_time": "2015-11-15T01:51:30", "url": "https://files.pythonhosted.org/packages/3e/42/1334d3d00476b98f95d5113baa2d9132421f0d872a0c10a3fedf7db39493/auth-0.4.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79c7c42d4a4d3020406a62d7fcaf6f7c", "sha256": "cb8577608c0f0d9e84fd266d40bfadbfe4dcf68db80b0b9b7134ad58ab2f01b0" }, "downloads": -1, "filename": "auth-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "79c7c42d4a4d3020406a62d7fcaf6f7c", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14128, "upload_time": "2015-11-15T01:50:40", "url": "https://files.pythonhosted.org/packages/98/7d/f3e7e9e6056a0a1d1dce3e6bac1f976919ea5e3c2abd997198d9cd9430c8/auth-0.4.1-py3-none-any.whl" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "2e7860c8999a12f7e2125d7353d95240", "sha256": "2329d06a79347f291b2517a43140b3df2832b5fff4753b8ec3efbce721baf21f" }, "downloads": -1, "filename": "auth-0.4.2-py2-none-any.whl", "has_sig": false, "md5_digest": "2e7860c8999a12f7e2125d7353d95240", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14129, "upload_time": "2015-11-15T01:52:55", "url": "https://files.pythonhosted.org/packages/f0/bf/020d20a2f2c75e465f7f62f3204af025b9f8034021b3f95a0194b6cc56e7/auth-0.4.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "180993890f4672b260d3f3e5896bf206", "sha256": "1098a5f9732bfb895768ae15e5b0925883c73a591798ce14a2079ab5cda612a9" }, "downloads": -1, "filename": "auth-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "180993890f4672b260d3f3e5896bf206", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14133, "upload_time": "2015-11-15T01:52:43", "url": "https://files.pythonhosted.org/packages/af/bd/6113e9583ea9ae1f4f36bfe7a3003df54ff8f423f465be72611e7a0c6333/auth-0.4.2-py3-none-any.whl" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "ce7432dd726e522326825b157b423cc6", "sha256": "b91fe45fa98afae28f9bf078c9276c94a492db60ef1d0756c9b11cdaf1b00187" }, "downloads": -1, "filename": "auth-0.4.5-py2-none-any.whl", "has_sig": false, "md5_digest": "ce7432dd726e522326825b157b423cc6", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14075, "upload_time": "2015-11-15T01:57:17", "url": "https://files.pythonhosted.org/packages/73/fb/75feb655fbe18078dd053aebabdc87f987f19011a7cadf18661dfb31cdf3/auth-0.4.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b475b340e5652535a6661b831eb436de", "sha256": "124bca6126ae6ba00b13e0272a441692fa19e3428da7948b8cba6ff83d33bcff" }, "downloads": -1, "filename": "auth-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "b475b340e5652535a6661b831eb436de", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14078, "upload_time": "2015-11-15T01:57:30", "url": "https://files.pythonhosted.org/packages/1f/da/79430d0d253e026d620a83074c35188d14dbb9a2a2fb4ca8efb940a175ea/auth-0.4.5-py3-none-any.whl" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "9ff1762cab104d5204e325e9c6d73d7b", "sha256": "ccfa92dd75e519eec483069bc3ced91300272ef573d8fca1435baf016f7acc14" }, "downloads": -1, "filename": "auth-0.4.7-py2-none-any.whl", "has_sig": false, "md5_digest": "9ff1762cab104d5204e325e9c6d73d7b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14173, "upload_time": "2015-11-15T17:48:43", "url": "https://files.pythonhosted.org/packages/cd/57/04f2ff945588d66d2586500dce9eab9cb20c50c0beb3b11436883af97a0c/auth-0.4.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4940350bfa7684dd5ea760a53e6a37b1", "sha256": "6c65209427e21f5b95b13fdd8fb67285f9503293d706d49536df2afb35012a4f" }, "downloads": -1, "filename": "auth-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "4940350bfa7684dd5ea760a53e6a37b1", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14171, "upload_time": "2015-11-15T17:48:31", "url": "https://files.pythonhosted.org/packages/ef/d0/7529c98830e3fce4ca8f989ca48cdf055be1001640c8ca785d2b53d8378b/auth-0.4.7-py3-none-any.whl" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "c213a94ff6b99c6c604c26115ee5d23a", "sha256": "d553cc5e54fd6541b581ba41cb70fe2cacd7d4940f91fbd33727c7201f3f5423" }, "downloads": -1, "filename": "auth-0.4.8-py2-none-any.whl", "has_sig": false, "md5_digest": "c213a94ff6b99c6c604c26115ee5d23a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14170, "upload_time": "2015-11-15T18:13:23", "url": "https://files.pythonhosted.org/packages/ba/ce/23342a7c7051585a75abd8c47a5a2f8b13600608e4e768a30c141a5328ab/auth-0.4.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "130277360cd1b3777490ca48ff804f72", "sha256": "c955aa80ec16bac6316cd443d639eef955a96144c02016a74b776e516730da8e" }, "downloads": -1, "filename": "auth-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "130277360cd1b3777490ca48ff804f72", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14162, "upload_time": "2015-11-15T18:13:41", "url": "https://files.pythonhosted.org/packages/c2/5b/d1c6c68cd8fe6b00060cfbeb1e0080fcb8cd6ca5a697a930293c37946b14/auth-0.4.8-py3-none-any.whl" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "7c8bf0d91a5d55dc2287b92aa70c2617", "sha256": "ff4b5ddb3af4dfff6c4aac5b59101b7054fdd5d1839cb94b5e2cbf80d4228044" }, "downloads": -1, "filename": "auth-0.4.9.tar.gz", "has_sig": false, "md5_digest": "7c8bf0d91a5d55dc2287b92aa70c2617", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8883, "upload_time": "2016-05-16T09:11:38", "url": "https://files.pythonhosted.org/packages/0d/d8/bb5ff06905ea183c9d58328a6dc395bdf0492082d7d8a52699504c644547/auth-0.4.9.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "15f4ab535c55f56a9aceb646b9fe0acb", "sha256": "0571e81bcc6ebae72d2b22d26dd644283ee7a94ee7f52d06f85f3da170dad9ee" }, "downloads": -1, "filename": "auth-0.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "15f4ab535c55f56a9aceb646b9fe0acb", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13599, "upload_time": "2016-05-16T09:59:28", "url": "https://files.pythonhosted.org/packages/3d/ba/3e1fdf25c6b9e39adf2e591b88a4d8115f5c37cd6c987a078c1c4ae65081/auth-0.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4618f1fc34d3a82fa1d4611e9fffd4d6", "sha256": "d4b5f04ad3c99b9bc3c2e028b97ef36baed9d07517dfecf26a6edf104476f764" }, "downloads": -1, "filename": "auth-0.5.0.tar.gz", "has_sig": false, "md5_digest": "4618f1fc34d3a82fa1d4611e9fffd4d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8878, "upload_time": "2016-05-16T09:59:15", "url": "https://files.pythonhosted.org/packages/70/52/b3288d5bbbbc8046562082487381ba8843d0325ab0d04a27b2b3590f0db9/auth-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "a7412bb7779ef3d721c423cf7d49e2bc", "sha256": "64c0f7cfa6350356bdeaab7e3194dad4505b130e4aed50782daf3526444be711" }, "downloads": -1, "filename": "auth-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a7412bb7779ef3d721c423cf7d49e2bc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13604, "upload_time": "2016-05-16T10:02:18", "url": "https://files.pythonhosted.org/packages/fa/36/04c589e492794cd7a76991b5a8a208726b41e4e41c2e502505d1cdd3502b/auth-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "267f2765e92ba336caa46d1bffba815a", "sha256": "a4508e2b5fc2efca54883e6373fd8b8c1f36da06a3dc4f759f12b4355e4093d0" }, "downloads": -1, "filename": "auth-0.5.1.tar.gz", "has_sig": false, "md5_digest": "267f2765e92ba336caa46d1bffba815a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8890, "upload_time": "2016-05-16T10:02:01", "url": "https://files.pythonhosted.org/packages/b9/d4/32aef04a74749b7c4e59c8f3ff711ea97b59b2ffe7455e8e9c7abd586588/auth-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "5012343e99026877034fdc43615ef5fa", "sha256": "d3bc832d0be508d0632c0fa6e954d8e7d2dfb19b59896a397e92b2420486f1b7" }, "downloads": -1, "filename": "auth-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5012343e99026877034fdc43615ef5fa", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14013, "upload_time": "2016-05-24T21:52:02", "url": "https://files.pythonhosted.org/packages/7e/df/322e3bf1d0ed32d31df7ff23725f6d802d1085954a1c1893167940eabae2/auth-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3287602cbd1512cbd84fc723be8962b", "sha256": "bec22d15f36e1a90e84c4f70ed1f7fc2d72129e0800179fd48cfdeef19998819" }, "downloads": -1, "filename": "auth-0.5.2.tar.gz", "has_sig": false, "md5_digest": "a3287602cbd1512cbd84fc723be8962b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9268, "upload_time": "2016-05-24T21:51:46", "url": "https://files.pythonhosted.org/packages/11/5b/d5331e66bab2208eca80713edfbfb68048b6fbfb58a9a618f9cbc44c3614/auth-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "3d190312d0602015fd059b23b9f7aac3", "sha256": "da6af75ceb503964c5003c2f22a49ac8334e2f1b01941b6cfe6871024654c905" }, "downloads": -1, "filename": "auth-0.5.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3d190312d0602015fd059b23b9f7aac3", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14009, "upload_time": "2016-05-24T21:54:43", "url": "https://files.pythonhosted.org/packages/c6/ec/4c30e831f53a81930be7996a4384db3cab5bb2155906c8429d68aea29bb0/auth-0.5.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32e74611933f6a264c72b7e1bed2e99e", "sha256": "fbb863640f3070356b833914d9bf12a3d74012e5bb132bc84aa51e41052ace3f" }, "downloads": -1, "filename": "auth-0.5.3.tar.gz", "has_sig": false, "md5_digest": "32e74611933f6a264c72b7e1bed2e99e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9266, "upload_time": "2016-05-24T21:54:27", "url": "https://files.pythonhosted.org/packages/4a/fd/ecd7f79f549a734a7fa904e42251c7169d080f960961b823d76726936efb/auth-0.5.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3d190312d0602015fd059b23b9f7aac3", "sha256": "da6af75ceb503964c5003c2f22a49ac8334e2f1b01941b6cfe6871024654c905" }, "downloads": -1, "filename": "auth-0.5.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3d190312d0602015fd059b23b9f7aac3", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14009, "upload_time": "2016-05-24T21:54:43", "url": "https://files.pythonhosted.org/packages/c6/ec/4c30e831f53a81930be7996a4384db3cab5bb2155906c8429d68aea29bb0/auth-0.5.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32e74611933f6a264c72b7e1bed2e99e", "sha256": "fbb863640f3070356b833914d9bf12a3d74012e5bb132bc84aa51e41052ace3f" }, "downloads": -1, "filename": "auth-0.5.3.tar.gz", "has_sig": false, "md5_digest": "32e74611933f6a264c72b7e1bed2e99e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9266, "upload_time": "2016-05-24T21:54:27", "url": "https://files.pythonhosted.org/packages/4a/fd/ecd7f79f549a734a7fa904e42251c7169d080f960961b823d76726936efb/auth-0.5.3.tar.gz" } ] }