{ "info": { "author": "UserVoice Inc.", "author_email": "dev@uservoice.com", "bugtrack_url": null, "classifiers": [], "description": ":no_entry: [DEPRECATED] This repository is no longer actively maintained. You may fork the project but we are no longer accepting pull requests or new issues. You may reach out to support@uservoice.com with questions.\n\nUserVoice Python module for API connections\n===========================================\n\nThis library allows you to easily:\n* Generate SSO token for creating SSO users / logging them into UserVoice (http://uservoice.com).\n* Do 3-legged and 2-legged UserVoice API calls safely without having to worry about the cryptographic details (unless you want).\n\nInstallation\n============\n\nInstall the uservoice Python module from PyPI:\n```sh\npip install uservoice\n```\nor get the source from (http://pypi.python.org/pypi/uservoice) and use the setup.py method:\n\n```sh\npython setup.py install\n```\nNow you should be good to go!\n\nExamples\n========\n\nPrerequisites:\n```python\n# Suppose your UserVoice site is at http://uservoice-subdomain.uservoice.com/\nUSERVOICE_SUBDOMAIN = 'uservoice-subdomain'\nSSO_KEY = '982c88f2df7257859e8e23423eg87ed' # Admin Console: Settings -> General -> User Authentication\n\n# Define an API client at: Admin Console -> Settings -> Channels -> API\nAPI_KEY = 'oQt2BaunWNuainc8BvZpAm'\nAPI_SECRET = '3yQMSoXBpAwuK3nYHR0wpY6opE341inL9a2HynGF2'\n```\n\nSSO-token generation using the uservoice python library\n-------------------------------------------------------\n\nSSO-token can be used to create sessions for SSO users. They are capable of synchronizing the user information from one system to another.\nGenerating the SSO token from SSO key and given uservoice subdomain can be done by calling UserVoice.generate\\_sso\\_token method like this:\n\n```python\nimport uservoice\n\nsso_token = uservoice.generate_sso_token(USERVOICE_SUBDOMAIN, SSO_KEY, {\n 'guid': 1000000,\n 'display_name': \"User Name\",\n 'email': 'mailaddress@example.com'\n}, 5*60) # the token will be valid for 5 minutes (5*60 seconds) by default\n\nprint \"https://\" + USERVOICE_SUBDOMAIN + \".uservoice.com/?sso=\" + sso_token\n```\n\n\nMaking API calls\n----------------\n\nYou need to create an instance of uservoice.Client. Get API_KEY and API_SECRET for an API client which you can create from \nAdmin Console. Go to Settings -> Channels -> API.\n\n```python\nimport uservoice\ntry:\n client = uservoice.Client(USERVOICE_SUBDOMAIN, API_KEY, API_SECRET)\n\n # Get users of a subdomain (requires trusted client, but no user)\n users = client.get_collection(\"/api/v1/users\")\n\n print \"Subdomain \\\"{subdomain}\\\" has {total} users\".format(subdomain=USERVOICE_SUBDOMAIN,\n total=len(users))\n for user in users:\n print 'User: \"{name}\", Profile URL: {url}'.format(**user)\n\n # Now, let's login as mailaddress@example.com, a regular user\n with client.login_as('mailaddress@example.com') as regular_access_token:\n # Example request #1: Get current user.\n user = regular_access_token.get(\"/api/v1/users/current\")['user']\n\n print 'User: \"{name}\", Profile URL: {url}'.format(**user)\n\n # Login as account owner\n owner_access_token = client.login_as_owner()\n\n # Example request #2: Create a new private forum limited to only example.com email domain.\n forum = owner_access_token.post(\"/api/v1/forums\", {\n 'forum': {\n 'name': 'Python Client Private Feedback',\n 'private': True,\n 'allow_by_email_domain': True,\n 'allowed_email_domains': [{'domain': 'example.com'}]\n }\n })['forum']\n\n print 'Forum \"{name}\" created! URL: {url}'.format(**forum)\nexcept uservoice.Unauthorized as e:\n # Thrown usually due to faulty tokens, untrusted client or if attempting\n # operations without Admin Privileges\n print e\nexcept uservoice.NotFound as e:\n # Thrown when attempting an operation to a resource that does not exist\n print e\n```\n\nVerifying a UserVoice user\n--------------------------\n\nIf you want to make calls on behalf of a user, but want to make sure he or she\nactually owns certain email address in UserVoice, you need to use 3-Legged API\ncalls. Just pass your user an authorize link to click, so that user may grant\nyour site permission to access his or her data in UserVoice.\n\n```python\nimport uservoice\nCALLBACK_URL = 'http://localhost:3000/' # your site\n\nclient = uservoice.Client(USERVOICE_SUBDOMAIN, API_KEY, API_SECRET, callback=CALLBACK_URL)\n\n# At this point you want to print/redirect to client.authorize_url in your application.\n# Here we just output them as this is a command-line example.\nprint \"1. Go to {url} and click \\\"Allow access\\\".\".format(url=client.authorize_url())\nprint \"2. Then type the oauth_verifier which is passed as a GET parameter to the callback URL:\"\n\n# In a web app we would get the oauth_verifier via a redirection to CALLBACK_URL.\n# In this command-line example we just read it from stdin:\naccess_token = client.login_with_verifier(raw_input())\n\n# All done. Now we can read the current user's email address:\nuser = access_token.get(\"/api/v1/users/current\")['user']\nprint \"User logged in, Name: {name}, email: {email}\".format(**user)\n\n# To reuse the access token at a later point, store the token and secret. For example:\n# 1. Find user (in Django)\nu = User.objects.get(email=user['email'])\n# 2. Associate token and secret with the user\nu.access_tokens.create(system='uservoice', token=access_token.token, secret=access_token.secret)\n\n# When you need the token again:\n# 1. Find token of the current user\ntoken = u.access_tokens.get(system='uservoice')\n# 2. Use the token and secret to log in\naccess_token = client.login_with_access_token(token.token, token.secret)\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/uservoice/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "uservoice", "package_url": "https://pypi.org/project/uservoice/", "platform": "", "project_url": "https://pypi.org/project/uservoice/", "project_urls": { "Homepage": "http://pypi.python.org/pypi/uservoice/" }, "release_url": "https://pypi.org/project/uservoice/0.0.25/", "requires_dist": null, "requires_python": "", "summary": "UserVoice Python library", "version": "0.0.25" }, "last_serial": 5782719, "releases": { "0.0.12": [ { "comment_text": "", "digests": { "md5": "50c0a8ec36e6f58d381b430341385de3", "sha256": "5c8982900891a97010c42fa5b03fca66d1e83df56c3f65ca15e32ad8d45ca9be" }, "downloads": -1, "filename": "uservoice-0.0.12.tar.gz", "has_sig": false, "md5_digest": "50c0a8ec36e6f58d381b430341385de3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10131, "upload_time": "2012-11-10T01:33:07", "url": "https://files.pythonhosted.org/packages/a8/98/251dc0d56488f1207befbb4a8a9abffe75d52d67daccda350dcc5f5a1aff/uservoice-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "5ae561a606c7db94b95f6a3af95120c3", "sha256": "095448e4329d27bf67ece8b398c6ce85d03cf1ddd048b6f3ee0694ebfc41a84f" }, "downloads": -1, "filename": "uservoice-0.0.13.tar.gz", "has_sig": false, "md5_digest": "5ae561a606c7db94b95f6a3af95120c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10128, "upload_time": "2012-11-14T01:26:39", "url": "https://files.pythonhosted.org/packages/d6/8a/1057c0e8881fcf3f36808989b43628ba70802dda7f8a489f7ef30434d2b6/uservoice-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "53379f9c2853f296a3693ba8d59d4113", "sha256": "5b8326178a68fe7709eec449b44739c52ab32260becaa85cfff9fc4e775f48b2" }, "downloads": -1, "filename": "uservoice-0.0.14.tar.gz", "has_sig": false, "md5_digest": "53379f9c2853f296a3693ba8d59d4113", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10220, "upload_time": "2012-12-13T22:07:53", "url": "https://files.pythonhosted.org/packages/f2/e5/885373512f9acc24bbd4282b5a33db3882593b378920c1d8249dc5fe73b8/uservoice-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "85664cea8bf2def19ca8bdf36ecc93d8", "sha256": "8280cbbc511282c9ea11e49a7a85b0de4670d42171805a37c34625aeb57e7252" }, "downloads": -1, "filename": "uservoice-0.0.15.tar.gz", "has_sig": false, "md5_digest": "85664cea8bf2def19ca8bdf36ecc93d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10215, "upload_time": "2012-12-13T22:28:42", "url": "https://files.pythonhosted.org/packages/a6/14/16df6b73b07043c19570e57ea4c64be1b3d68b50f40ab5fa437d493abe45/uservoice-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "cf283115b6009e58baa915176b7b049c", "sha256": "12526594850c8fe2ae65320a2951cdcdae174206641c95a81cdd0286616b49ff" }, "downloads": -1, "filename": "uservoice-0.0.16.tar.gz", "has_sig": false, "md5_digest": "cf283115b6009e58baa915176b7b049c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10228, "upload_time": "2013-01-15T20:30:49", "url": "https://files.pythonhosted.org/packages/ad/89/4c329691527c63df702c9d8ea99eb3076a36e271fdfb3f9bc2555fec0dab/uservoice-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "6c6757b2c1a6c30e5e14f75728424321", "sha256": "a0b4eec5b9f41b8a97e5b8f3c175bef23da641bf05ae8179c827361f6d7fdfd7" }, "downloads": -1, "filename": "uservoice-0.0.17.tar.gz", "has_sig": false, "md5_digest": "6c6757b2c1a6c30e5e14f75728424321", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10229, "upload_time": "2013-01-15T20:43:42", "url": "https://files.pythonhosted.org/packages/cc/de/c4596289cc502d010573ebd338c7bbe9bb2d0d46a7395c4ceaecf6a3758f/uservoice-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "b3027c5170ced121eda0528be1655ef7", "sha256": "558f879ca5db04fe674038391f72f98b5b31e3239fe8397bcd22cf2d8e538f17" }, "downloads": -1, "filename": "uservoice-0.0.18.tar.gz", "has_sig": false, "md5_digest": "b3027c5170ced121eda0528be1655ef7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10272, "upload_time": "2013-03-20T23:37:18", "url": "https://files.pythonhosted.org/packages/b6/50/3210dc6eb220fcd75e900bbb859e087045993b9ac39c7c61f5fe01aa3add/uservoice-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "e28f0142b3e72a485e7c745e15ef9002", "sha256": "e27e1d2a9215a2d1a3b36c0b69b101cc679ca276b167c7b1e2191e42b30e2f10" }, "downloads": -1, "filename": "uservoice-0.0.19.tar.gz", "has_sig": false, "md5_digest": "e28f0142b3e72a485e7c745e15ef9002", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10224, "upload_time": "2013-03-21T00:04:06", "url": "https://files.pythonhosted.org/packages/c9/47/4afae7cf8974b8d69d86b0dd589a8c867ae26bb0bb6082b5459fc73edc0c/uservoice-0.0.19.tar.gz" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "a53722ac92c34e4e01c262a9d3fd8349", "sha256": "f1218c9c61da91ad4dbbe7123c543584d4698b0fa1c85c56b6e4aa1d90cb35d7" }, "downloads": -1, "filename": "uservoice-0.0.20_1.tar.gz", "has_sig": false, "md5_digest": "a53722ac92c34e4e01c262a9d3fd8349", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10351, "upload_time": "2016-07-20T22:00:42", "url": "https://files.pythonhosted.org/packages/dd/a5/c7957c4a913db17973b9aa0ac5c72729c04acb326d730973ed7ecb4360c5/uservoice-0.0.20_1.tar.gz" }, { "comment_text": "", "digests": { "md5": "fae2469ea5181152bdded34963499425", "sha256": "48edb31fe7af79f01bfa3733ec5e865421a0127b45547a5792c7778811fc35df" }, "downloads": -1, "filename": "uservoice-0.0.20.zip", "has_sig": false, "md5_digest": "fae2469ea5181152bdded34963499425", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17621, "upload_time": "2016-07-20T22:12:46", "url": "https://files.pythonhosted.org/packages/35/56/0bd3a340867dd7d2be5e5693b1e3e3acd3d1c4744ed0a81cebbec82c1f4e/uservoice-0.0.20.zip" } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "7c5422106c8b9f9fbb700e5b90fa14df", "sha256": "8fd9df4cfa573bd45e24311044a7f555609ea0b398cf47c23cb8fb3627fbde1e" }, "downloads": -1, "filename": "uservoice-0.0.21.tar.gz", "has_sig": false, "md5_digest": "7c5422106c8b9f9fbb700e5b90fa14df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10349, "upload_time": "2016-07-19T22:29:03", "url": "https://files.pythonhosted.org/packages/5a/f1/83d19d41becc315f0aa77571f410ccf406b0e5d00823ebedb71bda2768a9/uservoice-0.0.21.tar.gz" } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "b40550bd57f1cb3443146635de25429c", "sha256": "2ca0bbf6abdb4cff8b72285885627d04515522be0af2563bcd5dd44ac025f95d" }, "downloads": -1, "filename": "uservoice-0.0.22.tar.gz", "has_sig": false, "md5_digest": "b40550bd57f1cb3443146635de25429c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10325, "upload_time": "2016-07-21T01:17:24", "url": "https://files.pythonhosted.org/packages/65/0b/982563b7fea4f8d4423a50e471eba718f219a12d52e472961ae41e38e05d/uservoice-0.0.22.tar.gz" } ], "0.0.23": [ { "comment_text": "", "digests": { "md5": "35277f116a73736bf6e5904e3b705c60", "sha256": "f76e07c8d6616f475dac919d9a2751cf25b56d7d11e43886de51af5c344f871a" }, "downloads": -1, "filename": "uservoice-0.0.23.tar.gz", "has_sig": false, "md5_digest": "35277f116a73736bf6e5904e3b705c60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10309, "upload_time": "2016-11-15T16:26:57", "url": "https://files.pythonhosted.org/packages/da/62/21eb64538320fda90c8dbc00aa55fe7e48334329763f4d46cd74a56f68c7/uservoice-0.0.23.tar.gz" } ], "0.0.24": [ { "comment_text": "", "digests": { "md5": "d99d907ec13cab238e073f826f9ea6dd", "sha256": "15beefbc861f71cf908dce5a825761a5ae5d1b3a375cd4a448515e98085f85cf" }, "downloads": -1, "filename": "uservoice-0.0.24.tar.gz", "has_sig": false, "md5_digest": "d99d907ec13cab238e073f826f9ea6dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8585, "upload_time": "2019-09-04T17:44:38", "url": "https://files.pythonhosted.org/packages/0f/06/cb65a545132d437c50e7925856fa333459fe2923964f317787b046b16fcd/uservoice-0.0.24.tar.gz" } ], "0.0.25": [ { "comment_text": "", "digests": { "md5": "2fe84140435ad3caa338b60dfa444590", "sha256": "06bf021806061accf9534403e9cfe380fc34c1826bd51f0ac7aaefe91588c121" }, "downloads": -1, "filename": "uservoice-0.0.25.tar.gz", "has_sig": false, "md5_digest": "2fe84140435ad3caa338b60dfa444590", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8575, "upload_time": "2019-09-04T17:49:51", "url": "https://files.pythonhosted.org/packages/89/61/0128683a15a534836d6f5b0171fb9ed43164d936ead2c0e564aa9d4e3db2/uservoice-0.0.25.tar.gz" } ], "v0.0.1": [ { "comment_text": "", "digests": { "md5": "77a26835cb8b01591a380f2b247fdc85", "sha256": "a1b23269f2389cad107d9bfa831fe823f08696705853a930c13fd983a029c203" }, "downloads": -1, "filename": "uservoice-v0.0.1.macosx-10.7-intel.exe", "has_sig": false, "md5_digest": "77a26835cb8b01591a380f2b247fdc85", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 72575, "upload_time": "2012-10-23T21:06:10", "url": "https://files.pythonhosted.org/packages/bd/fd/f1525423b2a69d7b6aa8486765abd96a566f84cf4c8fddec1d6cbc23255e/uservoice-v0.0.1.macosx-10.7-intel.exe" }, { "comment_text": "", "digests": { "md5": "b2e95ba1c6290e3001e12d2b6f2380b7", "sha256": "018379fea62f963e057bae01ca24e3478f56191a7baab59d684cf9c86bd4d425" }, "downloads": -1, "filename": "uservoice-v0.0.1.tar.gz", "has_sig": false, "md5_digest": "b2e95ba1c6290e3001e12d2b6f2380b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8508, "upload_time": "2012-10-23T21:06:09", "url": "https://files.pythonhosted.org/packages/dd/fb/c9941da45bd50382b7fb6fa8c80ba16c32b7ae9812c259fd8c84bb2f0d9c/uservoice-v0.0.1.tar.gz" } ], "v0.0.10": [ { "comment_text": "", "digests": { "md5": "2850bf334d8f564492b83d927805340d", "sha256": "9c192418ef69be4f4d54d4e689cc0e6a31d727e070f977ec732305ed1ffb1267" }, "downloads": -1, "filename": "uservoice-v0.0.10.tar.gz", "has_sig": false, "md5_digest": "2850bf334d8f564492b83d927805340d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9584, "upload_time": "2012-10-24T18:04:28", "url": "https://files.pythonhosted.org/packages/4b/e7/e76248078886cf411eadf6c86dc14dec1e31190be40c20a528b99b2dcabf/uservoice-v0.0.10.tar.gz" } ], "v0.0.11": [ { "comment_text": "", "digests": { "md5": "dcc5738b624d58b39f084f19aa9b9d5a", "sha256": "1092d015a53c1ea3977dd8f8edf9f9626377f5c38f4437b24347c0224542d8f9" }, "downloads": -1, "filename": "uservoice-v0.0.11.tar.gz", "has_sig": false, "md5_digest": "dcc5738b624d58b39f084f19aa9b9d5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9727, "upload_time": "2012-10-25T04:35:14", "url": "https://files.pythonhosted.org/packages/6e/0a/139d187686b670d2dad63a2fbffcc11aba26735a897b47309dde3e63a134/uservoice-v0.0.11.tar.gz" } ], "v0.0.2": [ { "comment_text": "", "digests": { "md5": "e966edc79886b1a9e931be78f4c3cbe2", "sha256": "4831b4f5ab8433cbaff93441f8eb17a29c95773bb456ea065932d0df07bad59b" }, "downloads": -1, "filename": "uservoice-v0.0.2.tar.gz", "has_sig": false, "md5_digest": "e966edc79886b1a9e931be78f4c3cbe2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8489, "upload_time": "2012-10-23T21:15:52", "url": "https://files.pythonhosted.org/packages/ab/35/37c143546d244c97cfc28458d50c54f8610a4558b5c1eef36576697ae9bd/uservoice-v0.0.2.tar.gz" } ], "v0.0.3": [ { "comment_text": "", "digests": { "md5": "9d948408064de067e64167eb246c513c", "sha256": "c6b23ec47ec20a4b54f8b2473c009de2deff4eee64df697cf7b8130cb6d866f7" }, "downloads": -1, "filename": "uservoice-v0.0.3.tar.gz", "has_sig": false, "md5_digest": "9d948408064de067e64167eb246c513c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8546, "upload_time": "2012-10-23T21:46:01", "url": "https://files.pythonhosted.org/packages/54/2f/8e28894d307fa35d87c50862a48f76700d6e32e8f88867399a753dd8fd10/uservoice-v0.0.3.tar.gz" } ], "v0.0.4": [ { "comment_text": "", "digests": { "md5": "819b9657f9abed75a4beb4b2dc180484", "sha256": "816b8f6ee1b978d2bb8cac71c0fe22fa93adf1210417a7c1ddfe8155f4ad1e5d" }, "downloads": -1, "filename": "uservoice-v0.0.4.tar.gz", "has_sig": false, "md5_digest": "819b9657f9abed75a4beb4b2dc180484", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9095, "upload_time": "2012-10-23T21:50:07", "url": "https://files.pythonhosted.org/packages/bf/cb/df2f46d57603f6176f9ac032bd8fcf75d131fdf5674821c957a17b402856/uservoice-v0.0.4.tar.gz" } ], "v0.0.5": [ { "comment_text": "", "digests": { "md5": "04ecdea55ce3961ebfb15cf54d312aeb", "sha256": "cefbb8503a54c39dfa7d5dcc9d78368ef78951c44d1138d450143be978fc5420" }, "downloads": -1, "filename": "uservoice-v0.0.5.tar.gz", "has_sig": false, "md5_digest": "04ecdea55ce3961ebfb15cf54d312aeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9051, "upload_time": "2012-10-23T22:02:32", "url": "https://files.pythonhosted.org/packages/3b/a9/bea383f70defa16d2cbb5774b3153ee18161236a61e5f390c0159ee2bc79/uservoice-v0.0.5.tar.gz" } ], "v0.0.6": [ { "comment_text": "", "digests": { "md5": "8048f7d20dfe7406ca0163b01607954d", "sha256": "6e1b8c913b09ecc071c3cb67797007bafe1f62ca515f6d67ed24d64cacdd2061" }, "downloads": -1, "filename": "uservoice-v0.0.6.tar.gz", "has_sig": false, "md5_digest": "8048f7d20dfe7406ca0163b01607954d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9084, "upload_time": "2012-10-23T22:03:52", "url": "https://files.pythonhosted.org/packages/66/1c/57f568a016e2fd6fd18d55f872eec780198e82774667be689c4e0bd65367/uservoice-v0.0.6.tar.gz" } ], "v0.0.7": [ { "comment_text": "", "digests": { "md5": "41ba576b019b0837f662c6be8516049f", "sha256": "6b5927abe3fd876ff748f38fa4edb8f313c7900a5f60c4b608bd6e722caedcb7" }, "downloads": -1, "filename": "uservoice-v0.0.7.tar.gz", "has_sig": false, "md5_digest": "41ba576b019b0837f662c6be8516049f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9083, "upload_time": "2012-10-23T22:27:53", "url": "https://files.pythonhosted.org/packages/d7/2a/85c9986dc7a0cba53fb3e0c62ff4312ede8c715797d7e8fb111a8db799de/uservoice-v0.0.7.tar.gz" } ], "v0.0.8": [ { "comment_text": "", "digests": { "md5": "a8c79bd3161c7d4e50e8434a69b66b9f", "sha256": "46fc25031b6d989cc325363ae66ab796934376c7319431e1344ecf2c9c3d53d0" }, "downloads": -1, "filename": "uservoice-v0.0.8.tar.gz", "has_sig": false, "md5_digest": "a8c79bd3161c7d4e50e8434a69b66b9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9092, "upload_time": "2012-10-23T22:30:40", "url": "https://files.pythonhosted.org/packages/d8/d4/e9a104d83816eef6c8b1a80798caf439668edb7cb2b7d8e9c5b89fda3808/uservoice-v0.0.8.tar.gz" } ], "v0.0.9": [ { "comment_text": "", "digests": { "md5": "a35142dcad893135b2f55d003fbcafa1", "sha256": "aa4edaf73675602848e69bb579c27f0810bade7c61cde19d5c39334cf16100a4" }, "downloads": -1, "filename": "uservoice-v0.0.9.tar.gz", "has_sig": false, "md5_digest": "a35142dcad893135b2f55d003fbcafa1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9079, "upload_time": "2012-10-23T22:34:19", "url": "https://files.pythonhosted.org/packages/36/e5/e05d895317ab1bb185256b9ebc3d6a8271e45e5e8ac4a7f62a1ca56420fe/uservoice-v0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2fe84140435ad3caa338b60dfa444590", "sha256": "06bf021806061accf9534403e9cfe380fc34c1826bd51f0ac7aaefe91588c121" }, "downloads": -1, "filename": "uservoice-0.0.25.tar.gz", "has_sig": false, "md5_digest": "2fe84140435ad3caa338b60dfa444590", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8575, "upload_time": "2019-09-04T17:49:51", "url": "https://files.pythonhosted.org/packages/89/61/0128683a15a534836d6f5b0171fb9ed43164d936ead2c0e564aa9d4e3db2/uservoice-0.0.25.tar.gz" } ] }