{ "info": { "author": "Joe Black", "author_email": "me@joeblack.nyc", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "\nHashIDTools\n===========\n\n\n.. image:: https://travis-ci.org/joeblackwaslike/hashidtools.svg?branch=master\n :target: https://travis-ci.org/joeblackwaslike/hashidtools\n :alt: Build Status\n\n.. image:: https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\n :target: https://github.com/joeblackwaslike/hashidtools\n :alt: Github Repo\n\n.. image:: https://img.shields.io/pypi/v/hashidtools.svg\n :target: https://pypi.python.org/pypi/hashidtools\n :alt: Pypi Version\n\n.. image:: https://img.shields.io/pypi/l/hashidtools.svg\n :target: https://pypi.python.org/pypi/hashidtools\n :alt: Pypi License\n\n.. image:: https://img.shields.io/pypi/wheel/hashidtools.svg\n :target: https://pypi.python.org/pypi/hashidtools\n :alt: Pypi Wheel\n\n.. image:: https://img.shields.io/pypi/pyversions/hashidtools.svg\n :target: https://pypi.python.org/pypi/hashidtools\n :alt: Pypi Versions\n\n\nMaintainer\n----------\n\nJoe Black | me@joeblack.nyc | `github `_\n\nIntroduction\n------------\n\nHashID tools/components for async ID generation. Example: ``k62K3zOn4Y5Kkxmg7pWOAqPyd8NVjrmX`` Designed for async data model ID generation for persisting objects to a graph DB such as ZODB. ZCA means it's simple to customize and override without editing any code.\n\nComes with\n~~~~~~~~~~\n\n\n* Customizable Generator/encoder/decoder utility\n* Type class (experimental)\n* Persistent, 2x BTree-powered IntID/Ref Manager\n* Custom fields for ``zope.schema`` and ``attrs``\\ , with default factory functions, validation, etc.\n\nAlso\n~~~~\n\n\n* Random seed integer is just under 64bits.\n* Derive seed integer at any time by casting type as an int.\n\nInstallation\n------------\n\n.. code-block:: shell\n\n pip3 install hashidtools\n\nUsage\n-----\n\nHashIDGenerator\n^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n >>> from hashidtools import HashIDGenerator\n >>> gen = HashIDGenerator(salt='my random salt', min_length=32)\n\n >>> gen.seed()\n ...\n >>> gen\n HashIDGenerator(salt='my random salt', min_length=32)\n >>> gen.new()\n '...'\n >>> gen.decode(gen.new())\n ...\n\nHashID Type\n^^^^^^^^^^^\n\n.. code-block:: python\n\n >>> from hashidtools import HashID\n ... HashID()\n '...'\n >>> HashID('8nKqkABjlYB5A7430M917zAJao1Me4mN')\n '8nKqkABjlYB5A7430M917zAJao1Me4mN'\n\nHashid IntID Indexing & Event System\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n >>> intid = HashIDManager()\n ... intid\n HashIDManager(attribute='id')\n ... intid.generateId()\n '...'\n\n >>> from zc.intid.interfaces import AddedEvent, RemovedEvent\n ... import zope.event.classhandler\n ...\n >>> @zope.event.classhandler.handler(AddedEvent)\n ... def handler(event):\n ... print(event.id, event.object, event.idmanager)\n ...\n ... @zope.event.classhandler.handler(RemovedEvent)\n ... def handler(event):\n ... print(event.id, event.object, event.idmanager)\n\n >>> import attr\n ... Test = attr.make_class(\n ... 'Test', {'id': fields.hashid(init=False),\n ... 'name': attr.ib(default='default-name')})\n ...\n\n >>> t = Test()\n ... intid.register(t)\n '...'\n\n ... id = intid.getId(t)\n ... intid.getObject(id)\n Test(id='...', name='default-name')\n\n >>> intid.unregister(t)\n\nRetrieving the utilities through the ZCA Registry\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n >>> from zope.component import queryUtility\n ... from hashidtools.interfaces import IHashIDGenerator, IIntIds\n ...\n ... queryUtility(IHashIDGenerator)\n HashIDGenerator(salt='$2a$12$AAAAAAAAAAAAAACgpDEPGQ', min_length=32)\n\n >>> queryUtility(IIntIds)\n HashIDs(attribute='id')\n\nExtending this Package\n^^^^^^^^^^^^^^^^^^^^^^\n\nThis package uses Zope Component Architecture for the ultimate in pluggable extendibility.\n\nQuick example of customizing the HashID Generator:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n # Note: you can also create your own Generator class that implements the\n # IHashIDGenerator interface and register it.\n from zope.component import provideUtility\n\n from hashidtools import HashIDGenerator\n from hashidtools.interfaces import IHashIDGenerator\n\n generator = HashIDGenerator(**custom_options)\n provideUtility(generator, IHashIDGenerator)\n\nNote: the following would preferrably be done using your project's ZCML directives.\n\nChanges\n-------\n\n\n* `CHANGELOG `_\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/joeblackwaslike/hashidtools/tarball/v1.0.2", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/joeblackwaslike/hashidtools", "keywords": "hashid,id-generation,distributed,zodb,database,datamodels", "license": "MIT", "maintainer": "Joe Black", "maintainer_email": "me@joeblack.nyc", "name": "hashidtools", "package_url": "https://pypi.org/project/hashidtools/", "platform": "", "project_url": "https://pypi.org/project/hashidtools/", "project_urls": { "Download": "https://github.com/joeblackwaslike/hashidtools/tarball/v1.0.2", "Homepage": "https://github.com/joeblackwaslike/hashidtools" }, "release_url": "https://pypi.org/project/hashidtools/1.0.2/", "requires_dist": [ "zope.component (>=4.4.1)", "zope.configuration (>=4.1.0)", "zope.interface (>=4.5.0)", "zope.schema (>=4.5.0)", "zope.event (>=4.3.0)", "zope.security (>=4.2.2)", "zope.intid (>=4.3.0)", "zc.intid (>=2.0.0)", "BTrees (>=4.5.0)", "attrs (>=18.1.0)", "hashids (>=1.2.0)" ], "requires_python": "", "summary": "HashID based ID Toolkit.", "version": "1.0.2" }, "last_serial": 3856263, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "273180db7252050776886e0b73c81075", "sha256": "48f3cca2c8b5e4e1ef06ec32ea34a04612d8bb9511a267c08bb40783e736ae75" }, "downloads": -1, "filename": "hashidtools-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "273180db7252050776886e0b73c81075", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11351, "upload_time": "2018-05-12T08:21:10", "url": "https://files.pythonhosted.org/packages/8a/16/69f51cb5702fe74cc9854307c8098c0cafeb858e305095e37987cc84b16d/hashidtools-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02200b0c5aec6efecb708650258615a4", "sha256": "a14f788e615fbec0588a6aebce4627f52d7547ac000863f8123392a333cc93db" }, "downloads": -1, "filename": "hashidtools-1.0.2.tar.gz", "has_sig": false, "md5_digest": "02200b0c5aec6efecb708650258615a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9873, "upload_time": "2018-05-12T08:21:11", "url": "https://files.pythonhosted.org/packages/6f/70/8fe3b2aa26ae1a5e466b0603629506d778b47e948e9b104f22063fd54fc4/hashidtools-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "273180db7252050776886e0b73c81075", "sha256": "48f3cca2c8b5e4e1ef06ec32ea34a04612d8bb9511a267c08bb40783e736ae75" }, "downloads": -1, "filename": "hashidtools-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "273180db7252050776886e0b73c81075", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11351, "upload_time": "2018-05-12T08:21:10", "url": "https://files.pythonhosted.org/packages/8a/16/69f51cb5702fe74cc9854307c8098c0cafeb858e305095e37987cc84b16d/hashidtools-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02200b0c5aec6efecb708650258615a4", "sha256": "a14f788e615fbec0588a6aebce4627f52d7547ac000863f8123392a333cc93db" }, "downloads": -1, "filename": "hashidtools-1.0.2.tar.gz", "has_sig": false, "md5_digest": "02200b0c5aec6efecb708650258615a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9873, "upload_time": "2018-05-12T08:21:11", "url": "https://files.pythonhosted.org/packages/6f/70/8fe3b2aa26ae1a5e466b0603629506d778b47e948e9b104f22063fd54fc4/hashidtools-1.0.2.tar.gz" } ] }