{ "info": { "author": "Nils Ziehn", "author_email": "nziehn@mail.com", "bugtrack_url": null, "classifiers": [], "description": "# Readable ID\n[![CircleCI](https://circleci.com/gh/nziehn/readableID.svg?style=svg)](https://circleci.com/gh/nziehn/readableID)\n\nUse readableID to transform integer item ids to readable, nonconsecutive ids\n\nCriteria for a good readable id:\n- as short as possible\n- should contain only numbers and characters that are easy to distinguish regardless of font, e.g. no `0` vs `O`.\n- not create any duplicates with increase number of items!\n- consecutive numbers should not create consecutive ids\n\n```python\nid_generator.generate_id(0) # returns 9MBE\nid_generator.generate_id(1) # returns QCAH\n```\n\nThis library does not use any dependencies outside of the python std lib!\n\n\n### Installing\n\nJust install using `pip`:\n```\npip install readableID\n```\n\n\n### Usage\n\nUsage is very simple after creating an object, just call the `generate_id` method:\n```python\nimport readableID\n\nid_generator = readableID.ReadableID()\n\nfor x in range(1000):\n readable_id = id_generator.generate_id(x)\n print(readable_id)\n```\n\nGenerally it is easiest to use this library in conjunction with a database that allows auto-incrementing ids \nwhich you use as input for the generate_id method. \n\n\n### Adapting parameters to your needs\n\nTo create your own unique numbers, you can salt them using the following parameters:\n\n```python\nimport readableID\nid_generator = readableID.ReadableID(\n charset=readableID.DEFAULT_CHARSET, \n min_length=readableID.DEFAULT_MINIMAL_LENGTH,\n prime=readableID.DEFAULT_PRIME, \n xor=readableID.DEFAULT_XOR\n)\n```\n\n#### `charset`:\n\nThe `charset` controls the allowed characters. There are 2 criteria for this string:\n1. characters must be unique\n2. length of string must be a power of 2, e.g. 8, 16, 32, 64\n\nThe default charset is chosen to create minimal confusion for readers, since only very distinct chars were chosen.\n\n#### `min_length`:\n\nThe `min_length` controls the length of the generated ids. The library will fit as many item ids into the given `min_length` as possible,\nbut if your number of items grows beyond this number, the ids will automatically get longer!\n\nExample: with the default parameters, you can fit `32 ^ 4` item ids into 4 characters.\nSo if you call `generate_id` with any number `0 <= x < 32^4` it will produce a id with length of 4.\nStarting at `32^4`, you will see ids with length of 5! Starting at `32^5` you will see ids with length of 6 and so on.\n\n#### `prime`:\n\nThe `prime` parameter allows you to change how the next number is chosen. It is critical that this is a `prime number > 2` if you want to avoid duplicates!\n\nIf you are unsure - you can skip changing this parameter and rather chose a different `xor` value!\n\n#### `xor`:\n\nThe `xor` value allows you to create different sequences of numbers, you can chose `any integer >= 0`, \nbut generally it makes more since to pick a number:\n`100 < x < len(charset) ^ min_length`. Changing `xor` will not have as big of an effect as changing the `prime` value, \nbut will still create reasonably different sequences of numbers/ \n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/nziehn/readableID", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "readableID", "package_url": "https://pypi.org/project/readableID/", "platform": "", "project_url": "https://pypi.org/project/readableID/", "project_urls": { "Homepage": "http://github.com/nziehn/readableID" }, "release_url": "https://pypi.org/project/readableID/0.0.4/", "requires_dist": null, "requires_python": "", "summary": "Transform integer ids into readable, nonconsecutive ids", "version": "0.0.4" }, "last_serial": 4775582, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0ab9539693f4bdb4958e0fdeadfd1da4", "sha256": "872b3357333bf923cbcba2c986d9d13f11963d9b38d179bad723a519b78d935d" }, "downloads": -1, "filename": "readableID-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0ab9539693f4bdb4958e0fdeadfd1da4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2584, "upload_time": "2019-02-03T20:06:09", "url": "https://files.pythonhosted.org/packages/c6/5c/25a2e8be675f630effec7c86e27115fadf463411c44c439db5d0a4c0df1b/readableID-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5446b07c3ac1787fb11983a93c0d989", "sha256": "91071ffed3b7d02a5b512ae0bd2668bb205add7f87863f3069ea46447d02dbbe" }, "downloads": -1, "filename": "readableID-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c5446b07c3ac1787fb11983a93c0d989", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1398, "upload_time": "2019-02-03T20:06:11", "url": "https://files.pythonhosted.org/packages/07/cf/b4f32b378aa8b2324d59eebcae31834e58e27c861ec28ad7eb3c41d7987c/readableID-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8662b55cdf495b1ea2849ff5e942fd93", "sha256": "b51f6105db697dfc92f7589ae40c033e1abba6c6cf9771d6836a38bf751cedc8" }, "downloads": -1, "filename": "readableID-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8662b55cdf495b1ea2849ff5e942fd93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2583, "upload_time": "2019-02-03T20:12:46", "url": "https://files.pythonhosted.org/packages/27/72/8bed58f3d156b51c77b31fcd6bf066d9665f4a0e0014114b3d6963a953fa/readableID-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a278e1d7ba833cf0b526161a2a241220", "sha256": "d78ee27a83d8129429e23c189d4026262ea0f149b4580e03a8f0569f4aaa34de" }, "downloads": -1, "filename": "readableID-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a278e1d7ba833cf0b526161a2a241220", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1394, "upload_time": "2019-02-03T20:12:47", "url": "https://files.pythonhosted.org/packages/68/05/6f8243a8f112dd520a960086547326cf086f93b200cfc093cb289b525e53/readableID-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "e6fd8ff22078d74081f843be8ab9f3d0", "sha256": "a0072a5eb3e267a3a93b5022d39302a32167c56d66ebec60f07fde17e3372d50" }, "downloads": -1, "filename": "readableID-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e6fd8ff22078d74081f843be8ab9f3d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5173, "upload_time": "2019-02-03T20:18:20", "url": "https://files.pythonhosted.org/packages/17/d6/f709597dc778b4cd4e73f6a9ae381acd148154b21292a1d66f007cd7401a/readableID-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "193e516b219edd702256fefd986ff53b", "sha256": "a944c58407617f30f2738ec388c4400c8a38bc33aee8b6f1d7d06282a12c8830" }, "downloads": -1, "filename": "readableID-0.0.3.tar.gz", "has_sig": false, "md5_digest": "193e516b219edd702256fefd986ff53b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2830, "upload_time": "2019-02-03T20:18:21", "url": "https://files.pythonhosted.org/packages/e2/84/73f01b2a501043ca460ec5127f9eb33b3375aa0d030050a5382a5366d9a5/readableID-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "f9ec9e13ae8fe26042f9b96dc99cac9c", "sha256": "2945230c24b085512338f47d074f612f25884bbe8d5708ec11e0fc4a9c7ecb4e" }, "downloads": -1, "filename": "readableID-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f9ec9e13ae8fe26042f9b96dc99cac9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5175, "upload_time": "2019-02-03T20:29:52", "url": "https://files.pythonhosted.org/packages/6f/b9/e3549e0c02016134bae5025f4cfb550b64de71eef065e54dfd7381357ecd/readableID-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a049e341617fd4440b999b9011f6d351", "sha256": "d49dc47f42d14ae38a77e5ba528ac1c618aebeb94acbe18539729583f7573acf" }, "downloads": -1, "filename": "readableID-0.0.4.tar.gz", "has_sig": false, "md5_digest": "a049e341617fd4440b999b9011f6d351", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2824, "upload_time": "2019-02-03T20:29:53", "url": "https://files.pythonhosted.org/packages/71/51/475d985d91cbbc6d387365effd5965b095c24c98c3140e2928c172565322/readableID-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f9ec9e13ae8fe26042f9b96dc99cac9c", "sha256": "2945230c24b085512338f47d074f612f25884bbe8d5708ec11e0fc4a9c7ecb4e" }, "downloads": -1, "filename": "readableID-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f9ec9e13ae8fe26042f9b96dc99cac9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5175, "upload_time": "2019-02-03T20:29:52", "url": "https://files.pythonhosted.org/packages/6f/b9/e3549e0c02016134bae5025f4cfb550b64de71eef065e54dfd7381357ecd/readableID-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a049e341617fd4440b999b9011f6d351", "sha256": "d49dc47f42d14ae38a77e5ba528ac1c618aebeb94acbe18539729583f7573acf" }, "downloads": -1, "filename": "readableID-0.0.4.tar.gz", "has_sig": false, "md5_digest": "a049e341617fd4440b999b9011f6d351", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2824, "upload_time": "2019-02-03T20:29:53", "url": "https://files.pythonhosted.org/packages/71/51/475d985d91cbbc6d387365effd5965b095c24c98c3140e2928c172565322/readableID-0.0.4.tar.gz" } ] }