{ "info": { "author": "Charlie Liban", "author_email": "charlie@clib.ca", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP" ], "description": "Shorten\n=======\n\n.. image:: https://travis-ci.org/tyrannosaur/shorten.png?branch=master\n :alt: Build status\n :target: https://travis-ci.org/tyrannosaur/shorten\n\nShorten is a `MIT licensed `_ Python library\nfor storing your data with automatically generated keys. Use your choice of\nbackend: in-memory, Redis and Memcached are supported by default.\n\nI made this library after being unable to find anything satisfactory for\nURL shortening. Shorten contains no clever tricks or obfuscated schemes \nthat produce unmaintainable code.\n\nIt's gevent-safe, so you can use it with Gunicorn and Heroku (and\nconsequently Flask, Django, Pyramid). Currently, it is neither\nthreadsafe nor multiprocess safe.\n\nInstallation\n------------\n\nInstall with pip:\n\n.. code:: sh\n\n $ pip install shorten\n\nShorten uses `redis-py `_ as its\nRedis client and it will be downloaded automatically. This dependency may \nbe removed in a future version.\n\nTesting\n-------\n\nIf you want to run the tests, install the requirements in ``requirements.txt``:\n\n.. code:: sh\n\n $ virtualenv --no-site-packages .python && source .python/bin/activate\n $ pip install -r requirements.txt\n\nThe ``memcached`` and ``libevent`` (for `gevent`) development libraries are \nrequired. For Debian-based systems, try:\n\n.. code:: sh\n \n $ apt-get install python-dev libmemcached-dev libevent-dev\n\nDocumentation\n-------------\n\nFull documentation is available at http://pythonhosted.org/shorten.\n\nQuickstart\n----------\n\nCreate a `store` which automatically generates `keys` for your values.\n\n.. code:: python\n\n from shorten import MemoryStore\n \n store = MemoryStore()\n key, token = store.insert('aardvark')\n \n # True\n key in store\n\n # 'aardvark'\n store[key]\n\n\nValues can be deleted from the store by `revoking` them with the returned\nrevokation `token`. The default token is the same as the returned key.\n\n.. code:: python\n\n from shorten import MemoryStore\n \n store = MemoryStore()\n key, token = store.insert('bonobo')\n\n del store[token]\n\n # False\n key in store\n\n # KeyError\n store[key]\n\n\nThe included stores are gevent-safe, meaning that values can be inserted from\nmultiple greenlets without fear of duplicate keys.\n\n.. code:: python\n\n import gevent\n \n from shorten import alphabets\n from shorten import MemoryStore\n\n values = (\n 'aardvark',\n 'bonobo',\n 'caiman',\n 'degu',\n 'elk',\n )\n\n store = MemoryStore(alphabet=alphabets.HEX, start=9)\n jobs = [gevent.spawn(store.insert, value) for value in values]\n\n gevent.joinall(jobs)\n\n # '9'\n # 'a'\n # 'c'\n # 'b'\n # 'd'\n for job in jobs:\n key, token = job.value\n print(key)\n\n\nExample\n-------\n\nFor a working example of URL shortening website, see ``example.py``.", "description_content_type": null, "docs_url": "https://pythonhosted.org/shorten/", "download_url": "https://github.com/clibc/shorten/zipball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/clibc/shorten", "keywords": "redis,memcached,internet,url,shortening", "license": "MIT License", "maintainer": null, "maintainer_email": null, "name": "shorten", "package_url": "https://pypi.org/project/shorten/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/shorten/", "project_urls": { "Download": "https://github.com/clibc/shorten/zipball/master", "Homepage": "https://github.com/clibc/shorten" }, "release_url": "https://pypi.org/project/shorten/2.0.2/", "requires_dist": null, "requires_python": null, "summary": "A library for generating and storing short keys.", "version": "2.0.2" }, "last_serial": 838721, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "71b812ed10cc92f6cfdbff3f90f2f59c", "sha256": "cb49d720b1e2deeb575804557de1e6f30bbd1933649dead6b387ad0e75cf9077" }, "downloads": -1, "filename": "shorten-0.2.0-py2.6.egg", "has_sig": false, "md5_digest": "71b812ed10cc92f6cfdbff3f90f2f59c", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 8074, "upload_time": "2012-06-13T06:31:49", "url": "https://files.pythonhosted.org/packages/00/2a/c7dafb381e97ce7a9db540d314705112a0deb4122e226cfbe4027e0a61c4/shorten-0.2.0-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "d5cda7c7e95db2731b765d9ad7882732", "sha256": "7f1c651827e23af5adab30cfffd26ed7b4b9dfe59c43577ebc7dfbdb47cae9b7" }, "downloads": -1, "filename": "shorten-0.2.0-py2.7.egg", "has_sig": false, "md5_digest": "d5cda7c7e95db2731b765d9ad7882732", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 8023, "upload_time": "2012-06-13T06:32:00", "url": "https://files.pythonhosted.org/packages/32/a1/d2982676d686769a7fc300f4b81c6965182ca9d4e525715fd551706c2f6d/shorten-0.2.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "8849fa19f998ffa54ddd00b0ff9449fd", "sha256": "1a736c84d28cabd6710a0a96e77f9c4bffa4274bdb39a18a52963783cef4012b" }, "downloads": -1, "filename": "shorten-0.2.0.tar.gz", "has_sig": false, "md5_digest": "8849fa19f998ffa54ddd00b0ff9449fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3708, "upload_time": "2012-06-13T06:31:59", "url": "https://files.pythonhosted.org/packages/b9/43/399f5863a2ca34bfb74792f78914984e4933c4d91edbf2d26ecf5e932b76/shorten-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "a2302e12521fb5c478047bf990d9dddb", "sha256": "589ed0a057719a349578ff811eace0663e09f2beca9c4dc6f53697509a328890" }, "downloads": -1, "filename": "shorten-0.2.1-py2.6.egg", "has_sig": false, "md5_digest": "a2302e12521fb5c478047bf990d9dddb", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 11554, "upload_time": "2012-06-17T06:05:56", "url": "https://files.pythonhosted.org/packages/d0/26/9c2949c8d56792326b7c398995ad8926e44956539f1c0cc8b8c2aa782e47/shorten-0.2.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "0d97e4a4fc432c9bbd9f73e54c7bc9ec", "sha256": "655d8d1b1524f87c7c05ec0d69b9c98c82f8b60a6854004756648f9e4bc17fac" }, "downloads": -1, "filename": "shorten-0.2.1-py2.7.egg", "has_sig": false, "md5_digest": "0d97e4a4fc432c9bbd9f73e54c7bc9ec", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 11444, "upload_time": "2012-06-17T06:05:28", "url": "https://files.pythonhosted.org/packages/83/2f/ee25b13e950472c2f911300d74cb73f3fb28a042b1cae6445514494fc61f/shorten-0.2.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "c1f93ebf05b8bd5714957652ba58193a", "sha256": "85fbe3d8ae4da8b5ad4ae349e10720444bd89bc56b16aa868793f5308fbbb137" }, "downloads": -1, "filename": "shorten-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c1f93ebf05b8bd5714957652ba58193a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5099, "upload_time": "2012-06-17T06:05:27", "url": "https://files.pythonhosted.org/packages/09/33/9d22807f41378f42d1d3bf4dbc3ebaef4c9b54eb69f4d3947bdc34a53b4f/shorten-0.2.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "978dfb5c1bc98fae8c23d6a16c4473c2", "sha256": "c3029832c2aee5cb5ac09cbcb8722ae963ad662327e014f0a4caf92d2c8f8488" }, "downloads": -1, "filename": "shorten-0.2.1.win32.msi", "has_sig": false, "md5_digest": "978dfb5c1bc98fae8c23d6a16c4473c2", "packagetype": "bdist_msi", "python_version": "2.7", "requires_python": null, "size": 147456, "upload_time": "2012-06-17T08:24:17", "url": "https://files.pythonhosted.org/packages/66/e5/ab86263d1cd39369de842200894072735bb458c0753bfadffbbfca28e187/shorten-0.2.1.win32.msi" }, { "comment_text": "", "digests": { "md5": "c8543ce72b502e1155f6ad05d781fbb1", "sha256": "c332255d73e682d4d9429500222b2717863f76aa209e03a0baf98c05a924f474" }, "downloads": -1, "filename": "shorten-0.2.1.win32-py2.6.msi", "has_sig": false, "md5_digest": "c8543ce72b502e1155f6ad05d781fbb1", "packagetype": "bdist_msi", "python_version": "2.6", "requires_python": null, "size": 114688, "upload_time": "2012-06-17T08:24:30", "url": "https://files.pythonhosted.org/packages/32/fb/9b0dc6f41129cc53f1cee28387b0e24d1ed4343bed07afdabc0c20a1e0b6/shorten-0.2.1.win32-py2.6.msi" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ac296458a7e22b30820029fb406d2410", "sha256": "13755e0390e4c38070f1d1f3c0b23616d46025d3623a8d1163a9e2248699f605" }, "downloads": -1, "filename": "shorten-0.2.2-py2.6.egg", "has_sig": false, "md5_digest": "ac296458a7e22b30820029fb406d2410", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 12522, "upload_time": "2012-06-19T20:22:15", "url": "https://files.pythonhosted.org/packages/76/39/11aee1d09decb82c5bf97811a50225638e6976990e2b0df4dbcc4e335453/shorten-0.2.2-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "58ed10be7dd9079de4501e70d8d3351b", "sha256": "93de2910ba69c6a5dc8d44e4d1be60f9aff0fdf1991064ac625a641c95ad154b" }, "downloads": -1, "filename": "shorten-0.2.2-py2.7.egg", "has_sig": false, "md5_digest": "58ed10be7dd9079de4501e70d8d3351b", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 12415, "upload_time": "2012-06-19T20:22:07", "url": "https://files.pythonhosted.org/packages/34/85/acc9d7561dcd915625849b7b1577a1db01e278127338a02bf80befb1b7b4/shorten-0.2.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "e92aa928f7de12c164b374d12802ba68", "sha256": "662118b193aea12fa5bfbb00e8cde8637d1a1dede7f8944dfca660d81f55658c" }, "downloads": -1, "filename": "shorten-0.2.2.tar.gz", "has_sig": false, "md5_digest": "e92aa928f7de12c164b374d12802ba68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5382, "upload_time": "2012-06-19T20:22:38", "url": "https://files.pythonhosted.org/packages/f8/9d/1d3d187e499b70836ef970c6b17d7b640c79475b345acc57331feb17fee0/shorten-0.2.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "336715c7ea9c0aade682be8035921342", "sha256": "8019856eb6c4a77758c3f6b5dce7b9e1ff6c00e2775244d8c0e17f9552aeaffd" }, "downloads": -1, "filename": "shorten-1.0.0.tar.gz", "has_sig": false, "md5_digest": "336715c7ea9c0aade682be8035921342", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7066, "upload_time": "2013-02-06T04:41:49", "url": "https://files.pythonhosted.org/packages/8c/81/dbc8384aa246365822bafcb9bc27d6a194c1d89b2e651e3ea9c8ff39445a/shorten-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "1d1f472d569f9ba505003fef1e6c79e5", "sha256": "a3a28d2546c6e633301a15e507ab974d1ff0d7fc1c6df08aaf492bc06a23c060" }, "downloads": -1, "filename": "shorten-1.0.1.tar.gz", "has_sig": false, "md5_digest": "1d1f472d569f9ba505003fef1e6c79e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10932, "upload_time": "2013-02-06T05:14:23", "url": "https://files.pythonhosted.org/packages/e5/ec/0507d35bc1410c6d65ff0322c48d2242b461d449d66f0a9483e48a261a45/shorten-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "8a3e502668ec31177c021e4b9bacb483", "sha256": "bbbb1845b4e3fe3d387c728abdf9f6df9be0cfeafe522a3f9c1cfc2d50190177" }, "downloads": -1, "filename": "shorten-1.0.2.tar.gz", "has_sig": false, "md5_digest": "8a3e502668ec31177c021e4b9bacb483", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11457, "upload_time": "2013-02-11T21:24:21", "url": "https://files.pythonhosted.org/packages/e6/d2/efab2e4d4926cb3d8d0d7d1b692a2322286a2b3383d7eae710dff8fe883e/shorten-1.0.2.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "29b1ffa517f67603356d6d774c523803", "sha256": "806f190a47af069207adf6ff8a5e62949607db574ada5403ebf52f61a201dce0" }, "downloads": -1, "filename": "shorten-2.0.2.tar.gz", "has_sig": false, "md5_digest": "29b1ffa517f67603356d6d774c523803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15252, "upload_time": "2013-07-07T09:44:47", "url": "https://files.pythonhosted.org/packages/a1/ee/f18ef008a4069a10871557b2d199d0ceeea9305e630d689b1e862a4decec/shorten-2.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "29b1ffa517f67603356d6d774c523803", "sha256": "806f190a47af069207adf6ff8a5e62949607db574ada5403ebf52f61a201dce0" }, "downloads": -1, "filename": "shorten-2.0.2.tar.gz", "has_sig": false, "md5_digest": "29b1ffa517f67603356d6d774c523803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15252, "upload_time": "2013-07-07T09:44:47", "url": "https://files.pythonhosted.org/packages/a1/ee/f18ef008a4069a10871557b2d199d0ceeea9305e630d689b1e862a4decec/shorten-2.0.2.tar.gz" } ] }