{ "info": { "author": "Sumin Byeon", "author_email": "suminb@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9" ], "description": "base62\n======\n\n|Build Status| |Coveralls| |PyPI|\n\nA Python module for ``base62`` encoding. Ported from PHP code that I wrote\nin mid-2000, which can be found\n`here `__.\n\n.. |Build Status| image:: https://travis-ci.org/suminb/base62.svg?branch=master\n :target: https://travis-ci.org/suminb/base62\n.. |PyPI| image:: https://img.shields.io/pypi/v/pybase62.svg\n :target: https://pypi.python.org/pypi/pybase62\n.. |Coveralls| image:: https://coveralls.io/repos/github/suminb/base62/badge.svg?branch=master\n :target: https://coveralls.io/github/suminb/base62?branch=develop\n\n\nRationale\n---------\n\nWhen writing a web application, often times we would like to keep the URLs\nshort.\n\n::\n\n http://localhost/posts/V1Biicwt\n\nThis certainly gives a more concise look than the following.\n\n::\n\n http://localhost/posts/109237591284123\n\nThis was the original motivation to write this module, but there shall be much\nmore broader potential use cases of this module. The main advantage of\n``base62`` is that it is URL-safe (as opposed to ``base64``) due to the lack of\nspecial characters such as '``/``' or '``=``'. Another key aspect is that the\nalphabetical orders of the original (unencoded) data is preserved when encoded.\nIn other words, encoded data can be sorted without being decoded at all.\n\nInstallation\n============\n\n``base62`` can be installed via ``pypi``. Unfortunately, the package name\n``base62`` on ``pypi`` had already been occupied by someone else, so we had to\ngo by ``pybase62``.\n\n::\n\n pip install pybase62\n\nAlternatively, you may clone the code to manually install it.\n\n::\n\n git clone https://github.com/suminb/base62\n cd base62 && python setup.py install\n\nUsage\n=====\n\nThe following section describes a basic usage of ``base62``.\n\n.. code:: python\n\n >>> import base62\n\n >>> base62.encode(34441886726)\n 'base62'\n\n >>> base62.decode('base62')\n 34441886726\n\nFrom version ``0.2.0``, ``base62`` supports ``bytes`` array encoding as well.\n\n.. code:: python\n\n >>> base62.encodebytes(b'\\0')\n 0\n\n >>> base62.encodebytes(b'\\xff\\xff')\n H31\n\n >>> base62.decodebytes('0')\n b''\n\n >>> base62.decodebytes('1')\n b'\\x01'\n\nSome may be inclined to assume that they both take ``bytes`` types as input\ndue to their namings. However, ``encodebytes()`` takes ``bytes`` types\nwhereas ``decodebytes()`` takes ``str`` types as an input. They are intended\nto be commutative, so that a *roundtrip* between both functions yields the\noriginal value.\n\nFormally speaking, we say function *f* and *g* commute if *f\u2218g* = *g\u2218f* where\n*f(g(x))* = *(f\u2218g)(x)*.\n\nTherefore, we may expect the following relationships:\n\n* ``value == encodebytes(decodebytes(value))``\n* ``value == decodebytes(encodebytes(value))``\n\nTests\n=====\n\nYou may run some test cases to ensure all functionalities are operational.\n\n::\n\n py.test -v\n\nIf ``pytest`` is not installed, you may want to run the following command:\n\n::\n\n pip install -r tests/requirements.txt\n\n\nDeployment\n==========\n\nDeploy a source package (to `pypi `_) as follows:\n\n::\n\n python setup.py sdist upload\n", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/suminb/base62", "keywords": null, "license": null, "maintainer": null, "maintainer_email": null, "name": "pybase62", "package_url": "https://pypi.org/project/pybase62/", "platform": null, "project_url": "https://pypi.org/project/pybase62/", "project_urls": { "Homepage": "http://github.com/suminb/base62" }, "release_url": "https://pypi.org/project/pybase62/0.5.0/", "requires_dist": null, "requires_python": null, "summary": "Python module for base62 encoding", "version": "0.5.0", "yanked": false, "yanked_reason": null }, "last_serial": 13676096, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "9b140edfc6b3e5f675b984425f040c73", "sha256": "e95073b2decf9c0a61a3beec1338bb04a6021dca705f3375763e081a92f6853d" }, "downloads": -1, "filename": "pybase62-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9b140edfc6b3e5f675b984425f040c73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 925, "upload_time": "2013-04-14T10:33:19", "upload_time_iso_8601": "2013-04-14T10:33:19.988968Z", "url": "https://files.pythonhosted.org/packages/38/74/783cc5a66482865adeb09975232f4c01958626f0c69b8123a8b4913be1ff/pybase62-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "81753a6f27d68e2ce60cf39a4db53278", "sha256": "d545e465d10c256895f1b4c6f2b6f9309ce6952732baba7002a0a9e8318aac9f" }, "downloads": -1, "filename": "pybase62-0.1.1.tar.gz", "has_sig": false, "md5_digest": "81753a6f27d68e2ce60cf39a4db53278", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1030, "upload_time": "2013-04-16T22:48:07", "upload_time_iso_8601": "2013-04-16T22:48:07.159033Z", "url": "https://files.pythonhosted.org/packages/f0/e7/d58534b56b762eefcf29b20804e5f2aa2611ed347483ad13fb8d11b74d80/pybase62-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "860c470c20204e647f60f50de174a0b1", "sha256": "0e8a0d89a863a04b167e85815fc2cd58b7df390f37e7a66a325ade86c9ffa17d" }, "downloads": -1, "filename": "pybase62-0.1.2.tar.gz", "has_sig": false, "md5_digest": "860c470c20204e647f60f50de174a0b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1065, "upload_time": "2014-01-24T06:26:45", "upload_time_iso_8601": "2014-01-24T06:26:45.360493Z", "url": "https://files.pythonhosted.org/packages/4c/31/5c818e48371d9a5bbfd9a95236ae4516f2cfa232311b0593c7cda47a0f86/pybase62-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "4d1219ef4aae45c42c9235ad1f476803", "sha256": "dce17afb8a90243a9bcd51f20149463326a416c50478c9de06986fb8f43d64fd" }, "downloads": -1, "filename": "pybase62-0.1.3.tar.gz", "has_sig": false, "md5_digest": "4d1219ef4aae45c42c9235ad1f476803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1070, "upload_time": "2014-09-15T15:08:12", "upload_time_iso_8601": "2014-09-15T15:08:12.963654Z", "url": "https://files.pythonhosted.org/packages/fa/da/8f35680e80c28dc626267874a11397e7fd6ff78f12c1ebdc96e93bf53c7c/pybase62-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ac004ec854ce32bbe1a689f8eec1f6cc", "sha256": "98659dd1676c7fd2177fdcb7418fe37a3aa96e1eac8ecc4e72e575475bed4a0e" }, "downloads": -1, "filename": "pybase62-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ac004ec854ce32bbe1a689f8eec1f6cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1634, "upload_time": "2017-04-11T16:10:51", "upload_time_iso_8601": "2017-04-11T16:10:51.250311Z", "url": "https://files.pythonhosted.org/packages/fe/fa/854aa0f5bfc7e025aef957a430bd964718509f43bdeca964023a2d075b03/pybase62-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "8bfbbf964dd722c5b6616b4c0ca7a251", "sha256": "e6373483887b33c442f3179179b984cdbf8a85eec32276110981f661853f9c41" }, "downloads": -1, "filename": "pybase62-0.3.0.tar.gz", "has_sig": false, "md5_digest": "8bfbbf964dd722c5b6616b4c0ca7a251", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1642, "upload_time": "2017-05-21T08:54:09", "upload_time_iso_8601": "2017-05-21T08:54:09.797019Z", "url": "https://files.pythonhosted.org/packages/83/f6/24d3b53c8efe263cd09ca1e4b4544a3ad4d46bb8cde06f31b5e29d317204/pybase62-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "065d0e13443a113c599b3a206b57c97a", "sha256": "1c9f93aab83eb72f2ae907820adc3a73bb1bf74b48ac2e8b0a788503258bf43b" }, "downloads": -1, "filename": "pybase62-0.3.1.tar.gz", "has_sig": false, "md5_digest": "065d0e13443a113c599b3a206b57c97a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2706, "upload_time": "2017-05-21T09:02:33", "upload_time_iso_8601": "2017-05-21T09:02:33.939846Z", "url": "https://files.pythonhosted.org/packages/ec/ea/a769f6275c5fcd0c69c5c1069f19bb3d1a6bb8975dd935cc3e074136337f/pybase62-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "7e6e697837c083ae20fd8eb7d82605e1", "sha256": "92a161af675dd16e9c936cbd229b88d0702ea4f6422a502e5e10470ebbd82a9d" }, "downloads": -1, "filename": "pybase62-0.3.2.tar.gz", "has_sig": false, "md5_digest": "7e6e697837c083ae20fd8eb7d82605e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2713, "upload_time": "2017-06-27T13:32:53", "upload_time_iso_8601": "2017-06-27T13:32:53.145557Z", "url": "https://files.pythonhosted.org/packages/a6/7d/da3aadb0c5b66c8e90164c57e4164ef4c2d806f6493bbd101a4f0d54b183/pybase62-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "112d19ae1feff8778291b281b0cf1af5", "sha256": "223a486286a5ebc7d708065b55cfc46051c6b97abbe00487b752b9f988dfbcc8" }, "downloads": -1, "filename": "pybase62-0.3.3.tar.gz", "has_sig": false, "md5_digest": "112d19ae1feff8778291b281b0cf1af5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3027, "upload_time": "2018-07-30T04:34:12", "upload_time_iso_8601": "2018-07-30T04:34:12.093843Z", "url": "https://files.pythonhosted.org/packages/0c/00/eeb43b10396db548917ce231e96ba060839cc8ee039307a3fdbff6a9a2de/pybase62-0.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "6f7b010d12624a6b7938af25ff2f72a2", "sha256": "d7b85e811a33ef1e0d4bcabc5b48d13294644e4b2108795108f6de36f267a18a" }, "downloads": -1, "filename": "pybase62-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6f7b010d12624a6b7938af25ff2f72a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2915, "upload_time": "2018-08-02T13:37:30", "upload_time_iso_8601": "2018-08-02T13:37:30.143177Z", "url": "https://files.pythonhosted.org/packages/e4/11/4a1281e655e180d96de4b02f0576f0ad744fa4741b45a34cd7ffa206d603/pybase62-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "e47a68be8acfe509a35cf7d4dd3f06c2", "sha256": "79ccaf2f095f7985e6961fe795798f788c0e5047290e177fdbd5d39c4de9103b" }, "downloads": -1, "filename": "pybase62-0.4.1.tar.gz", "has_sig": false, "md5_digest": "e47a68be8acfe509a35cf7d4dd3f06c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3231, "upload_time": "2019-07-26T02:30:45", "upload_time_iso_8601": "2019-07-26T02:30:45.168641Z", "url": "https://files.pythonhosted.org/packages/b1/75/5a1d11bc6853743dc76435713c92a2cc8690098f6043023b908e4e405052/pybase62-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "728a776bf6f2c11d86fde3cc8252e05d", "sha256": "94ffaa8490a55a6cff6687b7273f6184c94fea6d02f66746549e9697d425dc62" }, "downloads": -1, "filename": "pybase62-0.4.2.tar.gz", "has_sig": false, "md5_digest": "728a776bf6f2c11d86fde3cc8252e05d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3698, "upload_time": "2019-10-09T18:25:45", "upload_time_iso_8601": "2019-10-09T18:25:45.468216Z", "url": "https://files.pythonhosted.org/packages/58/a4/2ed68f5030ce2d4e43a42bed4645f3ee5bc7c877fe91bd09ad40d70824f1/pybase62-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "65d11197fd1a9b7ef5c98f36778a3a7e", "sha256": "aaf020d0cf0959cb8576f502138b8e3daecf691b9b30626792d34df6103da7c1" }, "downloads": -1, "filename": "pybase62-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "65d11197fd1a9b7ef5c98f36778a3a7e", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4995, "upload_time": "2022-04-30T18:26:28", "upload_time_iso_8601": "2022-04-30T18:26:28.000688Z", "url": "https://files.pythonhosted.org/packages/d4/84/b72bf53507572a83f58750775a6aa806c47d4bbc445364cc9b3f7cb7c5ba/pybase62-0.4.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c531458ac281712fd4c73519745687d2", "sha256": "0fbbe8474fc5fb020cc7f94dc88adfd12ef9bf38640c46612568ea07f046438c" }, "downloads": -1, "filename": "pybase62-0.4.3.tar.gz", "has_sig": false, "md5_digest": "c531458ac281712fd4c73519745687d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3703, "upload_time": "2019-10-29T16:52:55", "upload_time_iso_8601": "2019-10-29T16:52:55.789746Z", "url": "https://files.pythonhosted.org/packages/f6/24/d8c2de1d9befb05ceabdb7530cb6d2b782838429912a7e6783ed1f0ae305/pybase62-0.4.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "c33961a04b99dfac6ca7f9549b7403a1", "sha256": "f6eb0b570d05be56774d624401e299f338b832cd0e2d4b22944f42ff91f13fd2" }, "downloads": -1, "filename": "pybase62-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c33961a04b99dfac6ca7f9549b7403a1", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4994, "upload_time": "2022-04-30T18:46:37", "upload_time_iso_8601": "2022-04-30T18:46:37.135948Z", "url": "https://files.pythonhosted.org/packages/52/5f/a02ceb1b7b210076ceb9c7d4ce5a901d9839ab6aec46c48f6fbfe9befed0/pybase62-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9509be4534fface77caa19a9def9febf", "sha256": "678dc33464e05012da28936914aa7925b61b940d5802dcb0d33d4038e0a37d10" }, "downloads": -1, "filename": "pybase62-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9509be4534fface77caa19a9def9febf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4525, "upload_time": "2022-04-30T18:46:34", "upload_time_iso_8601": "2022-04-30T18:46:34.522305Z", "url": "https://files.pythonhosted.org/packages/4c/6f/1b9c523aef0fc626285f77465df9d85e1abdeee036424fad02d15d47c8a4/pybase62-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c33961a04b99dfac6ca7f9549b7403a1", "sha256": "f6eb0b570d05be56774d624401e299f338b832cd0e2d4b22944f42ff91f13fd2" }, "downloads": -1, "filename": "pybase62-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c33961a04b99dfac6ca7f9549b7403a1", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4994, "upload_time": "2022-04-30T18:46:37", "upload_time_iso_8601": "2022-04-30T18:46:37.135948Z", "url": "https://files.pythonhosted.org/packages/52/5f/a02ceb1b7b210076ceb9c7d4ce5a901d9839ab6aec46c48f6fbfe9befed0/pybase62-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9509be4534fface77caa19a9def9febf", "sha256": "678dc33464e05012da28936914aa7925b61b940d5802dcb0d33d4038e0a37d10" }, "downloads": -1, "filename": "pybase62-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9509be4534fface77caa19a9def9febf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4525, "upload_time": "2022-04-30T18:46:34", "upload_time_iso_8601": "2022-04-30T18:46:34.522305Z", "url": "https://files.pythonhosted.org/packages/4c/6f/1b9c523aef0fc626285f77465df9d85e1abdeee036424fad02d15d47c8a4/pybase62-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }