{ "info": { "author": "Whit Morris", "author_email": "whit@openplans.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Zope2", "Framework :: Zope :: 4", "License :: OSI Approved :: Zope Public License", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Introduction\n============\n\nMake it possible to use `zope.intid`_ in a Zope environment. \nThis includes other packages that rely on it such as `zope.keyreference`_\n\n.. _zope.intid: https://pypi.python.org/pypi/zope.intid\n.. _zope.keyreference: https://pypi.python.org/pypi/zope.keyreference\n\nSource Code\n===========\n\nContributors please read the document `Process for Plone core's development `_\n\nSources are at the `Plone code repository hosted at Github `_.\n\nUsage\n=====\n\nFirst, let make sure the ofs utility provides the interface::\n\n >>> from Products.Five.tests.testing.simplecontent import (\n ... manage_addSimpleContent)\n\n >>> from zope.intid.interfaces import IIntIds\n >>> from five.intid import site\n >>> import five.intid.tests as tests\n >>> from zope.interface.verify import verifyObject\n >>> from zope.component import getAllUtilitiesRegisteredFor\n >>> from zope.site.hooks import setSite\n >>> tests.setUp(self.app)\n\n\nContent added before the utility won't be registered (until explicitly\ncalled to). We'll set some up now for later\n\n >>> manage_addSimpleContent(self.folder, 'mycont1', \"My Content\")\n >>> content1 = self.folder.mycont1\n\n`five.intid.site` has convenience functions for adding, get and\nremoving an IntId utility: `add_intid`, `get_intid`, `del_intid`.\n\nYou can install the utility in a specific location::\n\n >>> site.add_intids(self.folder)\n >>> folder_intids = site.get_intids(self.folder)\n >>> verifyObject(IIntIds, folder_intids)\n True\n\nYou can tell `add_intids` to find the site root, and install there.\nIt will be available everywhere::\n\n >>> site.add_intids(self.folder, findroot=True)\n >>> root_intids = site.get_intids(self.app)\n >>> root_intids\n <...IntIds ...>\n >>> folder_intids is root_intids\n False\n\nAnd finally, do a remove::\n\n >>> site.del_intids(self.folder, findroot=True)\n >>> site.get_intids(self.app)\n Traceback (most recent call last):\n ...\n ComponentLookupError: (, '')\n\nBefore we look at intid events, we need to set the traversal\nhook. Once we have done this, when we ask for all registered Intids,\nwe will get the utility from test folder::\n\n >>> setSite(self.folder)\n >>> tuple(getAllUtilitiesRegisteredFor(IIntIds))\n (<...IntIds ...>,)\n\n\nWhen we add content, event will be fired to add keyreference for said\nobjects the utilities (currently, our content and the utility are\nregistered)::\n\n >>> manage_addSimpleContent(self.folder, 'mycont2', \"My Content\")\n >>> content2 = self.folder.mycont2\n >>> intid = site.get_intids(self.folder)\n >>> len(intid.items()) == 1\n True\n\nPre-existing content will raise a keyerror if passed to the intid\nutility::\n\n >>> intid.getId(content1)\n Traceback (most recent call last):\n ...\n IntIdMissingError: \n\nWe can call the keyreferences, and get the objects back::\n\n >>> intid.items()[0][1]()\n \n\nwe can get an object's `intid` from the utility like so::\n\n >>> ob_id = intid.getId(content2)\n\nand get an object back like this::\n\n >>> intid.getObject(ob_id)\n \n\nthese objects are aquisition wrapped on retrieval::\n\n >>> from Acquisition import IAcquirer\n >>> IAcquirer.providedBy(intid.getObject(ob_id))\n True\n\n\nWe can even turn an unwrapped object into a wrapped object by\nresolving it from it's intid, also the intid utility should work\neven if it is unwrapped::\n\n >>> from Acquisition import aq_base\n >>> resolved = intid.getObject(intid.getId(aq_base(content2)))\n >>> IAcquirer.providedBy(resolved)\n True\n >>> unwrapped = aq_base(intid)\n >>> unwrapped.getObject(ob_id) == resolved\n True\n >>> unwrapped.getId(content2) == ob_id\n True\n\nWhen an object is added or removed, subscribers add it to the intid\nutility, and fire an event is fired\n(zope.intid.interfaces.IIntIdAddedEvent,\nzope.intid.interfaces.IIntIdRemovedEvent respectively).\n\n`five.intid` hooks up these events to redispatch as object events. The\ntests hook up a simple subscriber to verify that the intid object\nevents are fired (these events are useful for catalogish tasks).\n\n >>> tests.NOTIFIED[0]\n ' <...IntIdAddedEvent object at ...'\n\nRegistering and unregistering objects does not fire these events::\n\n >>> tests.NOTIFIED[0] = \"No change\"\n >>> uid = intid.register(content1)\n >>> intid.getObject(uid)\n \n\n >>> tests.NOTIFIED[0]\n 'No change'\n\n >>> intid.unregister(content1)\n >>> intid.getObject(uid)\n Traceback (most recent call last):\n ...\n ObjectMissingError: ...\n\n >>> tests.NOTIFIED[0]\n 'No change'\n\nRenaming an object should not break the rewrapping of the object:\n\n >>> self.setRoles(['Manager'])\n >>> folder.mycont2.meta_type = 'Folder' # We need a metatype to move\n >>> folder.manage_renameObject('mycont2','mycont_new')\n >>> moved = intid.getObject(ob_id)\n >>> moved\n \n >>> [x.path for x in intid.ids]\n ['/test_folder_1_/mycont_new']\n\nNor should moving it:\n\n >>> from OFS.Folder import manage_addFolder\n >>> manage_addFolder(self.folder, 'folder2', \"folder 2\")\n >>> cut = folder.manage_cutObjects(['mycont_new'])\n >>> ignore = folder.folder2.manage_pasteObjects(cut)\n >>> moved = intid.getObject(ob_id)\n >>> moved\n \n >>> moved.aq_parent\n \n\nLet's move it back:\n\n >>> cut = folder.folder2.manage_cutObjects(['mycont_new'])\n >>> ignore = folder.manage_pasteObjects(cut)\n >>> folder.manage_renameObject('mycont_new','mycont2')\n\nWe can create an object without acquisition so we can be able to\nadd intid to it :\n\n >>> from five.intid.tests import DemoPersistent\n >>> demo1 = DemoPersistent()\n >>> demo1.__parent__ = self.app\n >>> from zope.event import notify\n >>> from zope.lifecycleevent import ObjectAddedEvent\n >>> notify(ObjectAddedEvent(demo1))\n >>> nowrappid = intid.getId(demo1)\n >>> demo1 == intid.getObject(nowrappid)\n True\n\nThis is a good time to take a look at keyreferences, the core part of\nthis system.\n\n\nKey References in Zope2\n=======================\n\nKey references are hashable objects returned by IKeyReference. The\nhash produced is a unique identifier for whatever the object is\nreferencing(another zodb object, a hook for sqlobject, etc).\n\nobject retrieval in intid occurs by calling a key reference. This\nimplementation is slightly different than the zope.intid one due to\nacquisition.\n\nThe factories returned by IKeyReference must persist and this dictates\nbeing especially careful about references to acquisition wrapped\nobjects as well as return acq wrapped objects as usually expected in\nzope2.\n\n >>> ref = intid.refs[ob_id]\n >>> ref\n \n\nThe reference object holds a reference to the unwrapped target object\nand a property to fetch the app(also, not wrapped ie )::\n\n >>> ref.object\n \n\n >>> type(ref.object)\n \n\n >>> ref.root\n \n\nCalling the reference object (or the property wrapped_object) will\nreturn an acquisition object wrapped object (wrapped as it was\ncreated)::\n\n >>> ref.wrapped_object == ref()\n True\n\n >>> ref()\n \n\n >>> IAcquirer.providedBy(ref())\n True\n\n\n\nThe resolution mechanism tries its best to end up with the current\nrequest at the end of the acquisition chain, just as it would be\nunder normal circumstances::\n\n >>> ref.wrapped_object.aq_chain[-1]\n \n\n\nThe hash calculation is a combination of the database name and the\nobject's persistent object id(oid)::\n\n >>> ref.dbname\n 'unnamed'\n\n >>> hash((ref.dbname, ref.object._p_oid)) == hash(ref)\n True\n\n >>> tests.tearDown()\n\nAcquisition Loops\n=================\n\nfive.intid detects loops in acquisition chains in both aq_parent and\n__parent__.\n\nSetup a loop::\n\n >>> import Acquisition\n >>> class Acq(Acquisition.Acquirer): pass\n >>> foo = Acq()\n >>> foo.bar = Acq()\n >>> foo.__parent__ = foo.bar\n\nLooking for the root on an object with an acquisition loop will raise\nan error::\n\n >>> from five.intid import site\n >>> site.get_root(foo.bar)\n Traceback (most recent call last):\n ...\n AttributeError: __parent__ loop found\n\nLooking for the connection on an object with an acquisition loop will\nsimply return None::\n\n >>> from five.intid import keyreference\n >>> keyreference.connectionOfPersistent(foo.bar)\n\nUnreferenceable\n===============\n\nSome objects implement IPersistent but are never actually persisted, or\ncontain references to such objects. Specifically, CMFCore directory views\ncontain FSObjects that are never persisted, and DirectoryViewSurrogates\nthat contain references to such objects. Because FSObjects are never actually\npersisted, five.intid's assumption that it can add a\n\nFor such objects, the unreferenceable module provides no-op subcribers and\nadapters to omit such objects from five.intid handling.\n\n >>> from zope import interface, component\n >>> from five.intid import unreferenceable\n\n >>> from Products.CMFCore import FSPythonScript\n >>> foo = FSPythonScript.FSPythonScript('foo', __file__)\n >>> self.app._setObject('foo', foo)\n 'foo'\n\n >>> keyref = unreferenceable.KeyReferenceNever(self.app.foo)\n Traceback (most recent call last):\n ...\n NotYet\n >>> foo in self.app._p_jar._registered_objects\n False\n\nObjects with no id\n==================\n\nIt is possible to attempt to get a key reference for an object that has not\nyet been properly added to a container, but would otherwise have a path.\nIn this case, we raise the NotYet exception to let the calling code defer\nas necessary, since the key reference would otherwise resolve the wrong\nobject (the parent, to be precise) from an incorrect path.\n\n >>> from zope.keyreference.interfaces import IKeyReference\n >>> from five.intid.keyreference import KeyReferenceToPersistent\n >>> from zope.component import provideAdapter\n >>> provideAdapter(KeyReferenceToPersistent)\n\n >>> from OFS.SimpleItem import SimpleItem\n >>> item = SimpleItem('').__of__(self.folder)\n >>> '/'.join(item.getPhysicalPath())\n '/test_folder_1_/'\n\n >>> IKeyReference(item)\n Traceback (most recent call last):\n ...\n NotYet: \n\n\nIf the object is placed in a circular containment, IKeyReference(object) should\nnot be able to adapt, letting the calling code defer as neccesary.\nAlso any object access is defeated and raises a RuntimeError.\n\nThis case happend when having a Plone4 site five.intid enabled\n(five.intid.site.add_intids(site)) and trying to add a portlet via\n@@manage-portlets. plone.portlet.static.static.Assignment seems to have a\ncircular path at some time.\n\nCreating items whith a circular containment\n >>> item_b = SimpleItem().__of__(self.folder)\n >>> item_b.id = \"b\"\n >>> item_c = SimpleItem().__of__(item_b)\n >>> item_c.id = \"c\"\n >>> item_b.__parent__ = item_c\n\n >>> assert item_b.__parent__.__parent__ == item_b\n\n >>> item_b.id\n Traceback (most recent call last):\n ...\n RuntimeError: Recursion detected in acquisition wrapper\n\n >>> IKeyReference(item_c)\n Traceback (most recent call last):\n ...\n TypeError: ('Could not adapt', ,\n )\n\n\nChangelog\n=========\n\n.. You should *NOT* be adding new change log entries to this file.\n You should create a file in the news directory instead.\n For helpful instructions, please see:\n https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n\n.. towncrier release notes start\n\n1.2.4 (2019-10-12)\n------------------\n\nBug fixes:\n\n\n- Also catch KeyError when traversing to fix creating relations during Copy&Paste in Zope 4.\n Fixes https://github.com/plone/Products.CMFPlone/issues/2866\n [pbauer] (#12)\n- When looking up back-references the lookup using unrestrictedTraverse was way to slow.\n A simplified traverse speeds up the lookup by up 80x. [jensens, 2silver] (#14)\n\n\n1.2.3 (2019-06-19)\n------------------\n\nBug fixes:\n\n\n- Properly update the persistent objects stored in the initid utility btrees [ale-rt] (#8)\n- Also catch KeyError when traversing to fix creating relations during Copy&Paste in Zope 4.\n Fixes https://github.com/plone/Products.CMFPlone/issues/2866\n [pbauer] (#12)\n\n\n1.2.2 (2019-05-01)\n------------------\n\nBug fixes:\n\n\n- Fix oid and root_oid that might have been accidentally converted to text when a DB was migrated from py2.\n [pbauer] (#7)\n\n\n1.2.1 (2019-02-13)\n------------------\n\nBug fixes:\n\n\n- Avoid a deprecation warning. [gforcada] (#6)\n\n\n1.2.0 (2018-11-07)\n------------------\n\nBug fixes:\n\n- Fix doctests in Python 3.\n [ale-rt]\n- Adapt raised errors to changes in zope.intid.\n (This makes the tests incompatible with Zope 2.13.)\n [pbauer]\n\n\n1.1.2 (2016-09-09)\n------------------\n\nBug fixes:\n\n- Prevent errors on ``removeIntIdSubscriber`` when the ``IKeyReference`` adapter\n raises a ``NotYet``, e.g. because the object does not have a proper path.\n [ale-rt]\n\n\n1.1.1 (2016-08-19)\n------------------\n\nFixes:\n\n- Acquisition-unwrap each item in the aq_iter chain, as ``getSite().__parent__`` might return an object aquired from the original context which breaks the parent loop detection.\n [thet]\n\n- Prevent errors on ``moveIntIdSubscriber`` when the ``IKeyReference`` adapter\n raises a ``NotYet``, e.g. because the object does not have a proper path.\n [ale-rt]\n\n\n1.1.0 (2016-02-14)\n------------------\n\nNew:\n\n- Enhancement: follow PEP8 and Plone code conventions\n [jensens]\n\nFixes:\n\n- Fix: Make it work with Acquisition>=4.0.1 (and require the version).\n Circular acquisitions were - prior to the above version - not\n detected. Now they are and adaption just fails with a \"Could not\n adapt\" for circulars. Any attribute access fails with a verbose\n RuntimeError. Cleanup also circular containment workarounds.\n [jensens]\n\n1.0.3 - 2012-10-05\n------------------\n\n- Make sure the IConnection adapter works for unwrapped persistent\n objects.\n [davisagli]\n\n1.0.2 - 2011-12-02\n------------------\n\n- Only ignore 'temporary' objects in the ObjectAddedEvent event handler.\n [mj]\n\n1.0.1 - 2011-11-30\n------------------\n\n- Ignore 'temporary' objects (in the Plone portal_factory tool).\n [mj]\n\n1.0 - 2011-10-10\n----------------\n\n- Remove last `zope.app` dependency.\n [hannosch]\n\n- Remove intid browser views.\n [hannosch]\n\n- Modernize code, adept to Zope 2.13.\n [hannosch]\n\n0.5.2 - January 22, 2011\n------------------------\n\n- Import getAllUtilitiesRegisteredFor directly from zope.component and\n remove dependency on zope.app.zapi.\n [Arfrever]\n\n- Fix chameleon template error.\n [robgietema]\n\n0.5.1 - August 4, 2010\n----------------------\n\n- Fix tests to pass with the corrected tp_name of ImplicitAcquisitionWrapper\n in Acquisition 2.13.1.\n [davisagli]\n\n0.5.0 - February 6, 2010\n------------------------\n\n- Use only non-deprecated zope imports, five.intid now only supports\n Zope 2.12+.\n [alecm]\n\n0.4.4 - February 6, 2010\n------------------------\n\n- Fix POSKeyError when the root object is not in the same database\n than the object you are trying to resolve to.\n [thefunny42]\n\n- Fixed all deprecated imports and updated setup.py\n [thet, wichert]\n\n- Fixed tests to reflect changed Zope API\n [thet]\n\n0.4.3 - July 19, 2009\n---------------------\n\n- When looking for an object by path, treat an AttributeError the same as a\n NotFound error. unrestrictedTraverse() raises an AttributeError in certain\n cases when it can't traverse.\n [optilude]\n\n0.4.2 - Apr 26, 2009\n--------------------\n\n- Install utility in a more permanent manner.\n [alecm]\n\n- Drop `five:traversable` statement. It was deprecated since Zope 2.10.\n [hannosch]\n\n- Use `objectEventNotify` from zope.component.event instead of zope.app.event.\n The later was deprecated since Zope 2.10.\n [hannosch]\n\n- Specify package dependencies.\n [hannosch]\n\n0.4.1 - Mar 17, 2009\n--------------------\n\n- Fix missing zcml file in prior release\n\n0.4.0 - Mar 17, 2009\n--------------------\n\n- Raise NotYet exception in the default keyreference constructor when the\n object does not yet have a proper path. This avoids problems of premature\n key references being created and pointing to the parent of the object or\n a non-existent object.\n [optilude]\n\n0.3.0 - Nov 07, 2008\n--------------------\n\n- Add unreferenceable implementations of intid event handlers and IKeyReference\n to deal with IPersistent objects that are never actually persisted, such as\n the CMFCore directory view objects.\n [mj]\n\n- Remove the explicit exceptions for CMFCore directory view objects and use\n subscriber and adapter registrations against unreferenceable instead.\n [mj]\n\n0.2.1 - Nov 05, 2008\n--------------------\n\n- Avoid unnecessary adapter lookups in __cmp__ as __cmp__\n is called rather often and is performance sensitive.\n Cumulative time now 0.080 vs previous 1.820 for 6000 compares\n when profiling.\n [tesdal]\n\n- Avoid redundant __cmp__ calls in BTree traversal.\n [tesdal]\n\n0.2.0 - May 20, 2008\n--------------------\n\n- Cleanup documentation a little bit so it can be used for the pypi page.\n [wichert]\n\n- Many changes by many people.\n [alecm, hannosch, maurits, mborch, reinout, rockt, witsch]\n\n\n0.1.4 - November 11, 2006\n-------------------------\n\n- First public release.\n [brcwhit]\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/plone/five.intid", "keywords": "'zope2 intid'", "license": "ZPL", "maintainer": "", "maintainer_email": "", "name": "five.intid", "package_url": "https://pypi.org/project/five.intid/", "platform": "", "project_url": "https://pypi.org/project/five.intid/", "project_urls": { "Homepage": "https://github.com/plone/five.intid" }, "release_url": "https://pypi.org/project/five.intid/1.2.4/", "requires_dist": [ "Acquisition (>=4.0.1)", "setuptools", "zope.intid", "zope.component", "zope.event", "zope.interface", "zope.lifecycleevent", "zope.keyreference", "zope.site", "zope.location", "five.localsitemanager", "Zope2 (>=2.13)" ], "requires_python": "", "summary": "Zope2 support for zope.intid", "version": "1.2.4" }, "last_serial": 5964156, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "8290e625eac84812f63d19c559dd91f0", "sha256": "42d9a03aa7a5b47b4953c58a85e21e094a3cea219f4a0e12e1a11e7d1557b4fe" }, "downloads": -1, "filename": "five.intid-0.1.2-py2.4.egg", "has_sig": false, "md5_digest": "8290e625eac84812f63d19c559dd91f0", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 19961, "upload_time": "2006-10-19T16:32:02", "url": "https://files.pythonhosted.org/packages/ad/48/855c95c035a7f2b7b4afed35a8396ba2947c363e07cb70a0d43faa5f05e8/five.intid-0.1.2-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "597c231fb727ef0baa1e469e7fb90b85", "sha256": "3ce2783e7dddd45bbedde36cdbcc097d90e21c25c55be7122db7bea0a7a6123d" }, "downloads": -1, "filename": "five.intid-0.1.2.tar.gz", "has_sig": false, "md5_digest": "597c231fb727ef0baa1e469e7fb90b85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10152, "upload_time": "2006-10-19T16:32:00", "url": "https://files.pythonhosted.org/packages/ea/50/ac5c4c28d9111d6aba3f04d6962ab05fccf32b3a51a73538188c34ff776f/five.intid-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "8640f93bb6b9d59444266b4a97fca604", "sha256": "b2cfaf22501efb6addc6146139e8992299fbb42e7bbdbcdb7479352366b28477" }, "downloads": -1, "filename": "five.intid-0.1.3-py2.4.egg", "has_sig": false, "md5_digest": "8640f93bb6b9d59444266b4a97fca604", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 23535, "upload_time": "2006-11-07T16:18:10", "url": "https://files.pythonhosted.org/packages/f6/bc/6fbf20cb5f39051f92fa0504388615023591a747d4ac4c4b1ba632345d07/five.intid-0.1.3-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "05d950c948755caf9340b0255caf8c8f", "sha256": "dbdf6b28761ab20d7f1456cf487178e022989894511e717d9b2db3cbc9005849" }, "downloads": -1, "filename": "five.intid-0.1.3.tar.gz", "has_sig": false, "md5_digest": "05d950c948755caf9340b0255caf8c8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10932, "upload_time": "2006-11-07T16:18:06", "url": "https://files.pythonhosted.org/packages/19/06/191e99d64020e812651c3b6d97d64717b8cf12c8221644eb827b0ad31bfd/five.intid-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "a28d66f8cc6b64300980b942e480780e", "sha256": "a19b2c1d9dae03e8001c656b024e777a4cd1ad460f8854a0b5f71f9af2844570" }, "downloads": -1, "filename": "five.intid-0.1.4-py2.4.egg", "has_sig": false, "md5_digest": "a28d66f8cc6b64300980b942e480780e", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 23529, "upload_time": "2006-11-08T16:35:11", "url": "https://files.pythonhosted.org/packages/22/6a/01de0a381ad9476846cc0657fbbb48c2d07694255c23abf4c71016ba7f97/five.intid-0.1.4-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "17c07041b3cff19cd666d1e04a07dad9", "sha256": "7234d19ba65f1f174c6ddf9a5054adf0a3b3dc9b779ce949482ea83bc595ab68" }, "downloads": -1, "filename": "five.intid-0.1.4.tar.gz", "has_sig": false, "md5_digest": "17c07041b3cff19cd666d1e04a07dad9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10935, "upload_time": "2006-11-08T16:35:04", "url": "https://files.pythonhosted.org/packages/76/70/8dc29f26b3157a75ec712f9bd3b11204e548461f9dd807566f4547470620/five.intid-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "dc470bcba8b68f7bc1539f2b5f4668ac", "sha256": "37f18c0ad08aff7e18fa8fead3615110a3848366e180d23482b6787123d65603" }, "downloads": -1, "filename": "five.intid-0.1.5-py2.4.egg", "has_sig": false, "md5_digest": "dc470bcba8b68f7bc1539f2b5f4668ac", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 26813, "upload_time": "2007-10-04T17:35:52", "url": "https://files.pythonhosted.org/packages/79/fb/357b7e857b508e5185413e11ba940265587d568ad6402f060f27f0ecbc1f/five.intid-0.1.5-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "26552d3ddd503cdac72fe615d935edf0", "sha256": "05f03429d18eded23d0ae1f473ac6f9266032a1fbff19f000569edb82c0baf76" }, "downloads": -1, "filename": "five.intid-0.1.5.tar.gz", "has_sig": false, "md5_digest": "26552d3ddd503cdac72fe615d935edf0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12787, "upload_time": "2007-10-04T17:35:50", "url": "https://files.pythonhosted.org/packages/36/67/2cb3637ae41b55acc90a6cbcd33ebf541a84b3fdfcf8d04ed3e80d46392b/five.intid-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "4ab865e0e3bc7fd9e833cf810814a490", "sha256": "91bc17852547a44dff0550f26687a4837757e899a7ea239d83ff14b6302ffca5" }, "downloads": -1, "filename": "five.intid-0.1.6-py2.4.egg", "has_sig": false, "md5_digest": "4ab865e0e3bc7fd9e833cf810814a490", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 26856, "upload_time": "2007-10-14T10:41:58", "url": "https://files.pythonhosted.org/packages/6f/e7/72c29b509fe6dee637005a70cc2e596801b8053d4643776efe8f1a90cca5/five.intid-0.1.6-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "391b45e9f27e9e20e079133fe264b728", "sha256": "917e3946985dd80bbc4b3de43d787081f8652270570eaffed4be2a8087097c43" }, "downloads": -1, "filename": "five.intid-0.1.6.tar.gz", "has_sig": false, "md5_digest": "391b45e9f27e9e20e079133fe264b728", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12799, "upload_time": "2007-10-14T10:41:58", "url": "https://files.pythonhosted.org/packages/7a/13/d3b158ca8d69d4a6b72adc282cb717c46cd30949dea917dc7fb07bd17bde/five.intid-0.1.6.tar.gz" } ], "0.1dev-r31338": [ { "comment_text": "", "digests": { "md5": "eaea2123376e84c00cba706dfbeb9f75", "sha256": "2b09b5447e3d5de91c884971b4e5264aed400ba1f8cdf4496d2855afa6966723" }, "downloads": -1, "filename": "five.intid-0.1dev_r31338-py2.4.egg", "has_sig": false, "md5_digest": "eaea2123376e84c00cba706dfbeb9f75", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 18660, "upload_time": "2006-10-04T20:10:05", "url": "https://files.pythonhosted.org/packages/08/d1/10076cc7d349eab3f7ba891738200731627e8d266e219c985adfc21a393b/five.intid-0.1dev_r31338-py2.4.egg" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9e9aeda89bdf93189364ef2fdd1044f0", "sha256": "ffa1089b42cffeaf4b74c926084ba1342c3a252c9936b91a97ec32886d97547e" }, "downloads": -1, "filename": "five.intid-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9e9aeda89bdf93189364ef2fdd1044f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16513, "upload_time": "2008-05-20T15:45:49", "url": "https://files.pythonhosted.org/packages/21/a3/4f00a33caa03b22a3ee8d0c58f4f5d5f0066739193c3a4ce417b4312b90c/five.intid-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "44d27447e5ab24b9666db231552750bf", "sha256": "eb67f6851cb6228f417335756e1002d649809e98a8babdf0d9b3ee694d09672b" }, "downloads": -1, "filename": "five.intid-0.2.1.zip", "has_sig": false, "md5_digest": "44d27447e5ab24b9666db231552750bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29367, "upload_time": "2008-11-05T13:22:17", "url": "https://files.pythonhosted.org/packages/12/7c/89be4b4d938d59ef86cd60ff8b52ac7aae1a94b2ab1c34bc0f2b92e9d6c3/five.intid-0.2.1.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ffb07767d12f4d4f14558fe0506c856c", "sha256": "b19c97f08cdbdb7f05396e1248f9a2ddc3c16484674146763d458413e940eb37" }, "downloads": -1, "filename": "five.intid-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ffb07767d12f4d4f14558fe0506c856c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16719, "upload_time": "2008-11-07T15:20:37", "url": "https://files.pythonhosted.org/packages/39/2d/87c2ee4b2198c35b345833db9f39201c463641d0b24180ee32e24f95f8ea/five.intid-0.3.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "2c2c548020b05fb2e6d6f4f2108d17ab", "sha256": "c64efbbe30c30d6d0c4e057d1bbfe908d25768080cc43e4a15314663e908097a" }, "downloads": -1, "filename": "five.intid-0.3.0.zip", "has_sig": false, "md5_digest": "2c2c548020b05fb2e6d6f4f2108d17ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29009, "upload_time": "2008-11-07T15:21:10", "url": "https://files.pythonhosted.org/packages/c0/8a/ef4b55f5790bb0ee11c141c9ca3e7362b14e9649d62b37c6ad5330961a7d/five.intid-0.3.0.zip" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "83b2e5b89ec66a4cbe32c1739c4681ae", "sha256": "e2b09f59442ff8c49863cd089074d1e7da63013af229f13558c24be636b183c3" }, "downloads": -1, "filename": "five.intid-0.4.1.tar.gz", "has_sig": false, "md5_digest": "83b2e5b89ec66a4cbe32c1739c4681ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17651, "upload_time": "2009-03-17T18:44:56", "url": "https://files.pythonhosted.org/packages/c6/6b/f56fe021eca449333fd1cb86cbe4d1ec365cd8deed53bc90d031e1d129b8/five.intid-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "d9dbb06baa6b77ef615c3b103343519c", "sha256": "33742dec7d8c481e7847ac0032603bfcbf79749214769e84ee3a2ec7e6c80a6d" }, "downloads": -1, "filename": "five.intid-0.4.2.tar.gz", "has_sig": false, "md5_digest": "d9dbb06baa6b77ef615c3b103343519c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18288, "upload_time": "2009-04-26T17:57:14", "url": "https://files.pythonhosted.org/packages/44/5c/f41690116c5e3c9994b7d75ae506f1a975826feaca9c437c5097de900bfd/five.intid-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "fac6868cd4e64c00f4a514340be28dad", "sha256": "ac284460734a9083ef9c3afed17b1e5bf99c1cdf23d4058dbba525364324b520" }, "downloads": -1, "filename": "five.intid-0.4.3.tar.gz", "has_sig": false, "md5_digest": "fac6868cd4e64c00f4a514340be28dad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18477, "upload_time": "2009-07-19T03:59:01", "url": "https://files.pythonhosted.org/packages/49/5d/f6cec38440df13d9976f2ff76d5d839293d4d8a3bdcafbe7a3c54ad0f95c/five.intid-0.4.3.tar.gz" } ], "0.4.4-1": [ { "comment_text": "", "digests": { "md5": "89bb20c5fb816b727022196a30c91160", "sha256": "0e4a1811737c1efe1c4a7d51501d06a3a1253ad753adea3599f7dd0190ef1f9c" }, "downloads": -1, "filename": "five.intid-0.4.4-1.zip", "has_sig": false, "md5_digest": "89bb20c5fb816b727022196a30c91160", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33248, "upload_time": "2010-02-06T22:44:13", "url": "https://files.pythonhosted.org/packages/79/50/5b95fa1c1ffa6db5047169c68d8a612bb84aa95d746a544cc4f35425c02b/five.intid-0.4.4-1.zip" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d40ee8304040e45fc0fd4b4799e0702f", "sha256": "b4aaa6708aa8638c2280d911d0cc368bc0307e2af5309923665089e3ddc9ac2b" }, "downloads": -1, "filename": "five.intid-0.5.0.zip", "has_sig": false, "md5_digest": "d40ee8304040e45fc0fd4b4799e0702f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32681, "upload_time": "2010-02-06T23:19:41", "url": "https://files.pythonhosted.org/packages/81/0d/40f07da70fe92e3c729636f480ef8146ef399552600a21c685339c02a193/five.intid-0.5.0.zip" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "badeadcf1162ae2cd1bc83f47292053e", "sha256": "b5c033bd42b35fa28967d9c10886e671ada5f5c71ecf343f80251336209a229a" }, "downloads": -1, "filename": "five.intid-0.5.1.zip", "has_sig": true, "md5_digest": "badeadcf1162ae2cd1bc83f47292053e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32992, "upload_time": "2010-08-05T06:53:56", "url": "https://files.pythonhosted.org/packages/7b/8d/0e41ce7f3026835c8dee2ee71b55f6201681391ce28d20ccf04db0013c8d/five.intid-0.5.1.zip" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "b9aede2d2531834afd4e6dda597a51d0", "sha256": "84ebd1c89611524c584f27900abb633ee21d0e1179de599f8b3594653f294132" }, "downloads": -1, "filename": "five.intid-0.5.2.zip", "has_sig": true, "md5_digest": "b9aede2d2531834afd4e6dda597a51d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33231, "upload_time": "2011-01-22T23:39:39", "url": "https://files.pythonhosted.org/packages/ba/90/66fd746d43e2ebb33bfff0f5e8fa127c6d582fc2da841696eed30c5a32e2/five.intid-0.5.2.zip" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "28416982fcc844361fd9c07c3baf5320", "sha256": "2f5c29ef519bb4c128ec846ff685fd6a23c8b4df631c15207df2d6f3dcc4b44f" }, "downloads": -1, "filename": "five.intid-1.0.zip", "has_sig": false, "md5_digest": "28416982fcc844361fd9c07c3baf5320", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29784, "upload_time": "2011-10-10T11:32:28", "url": "https://files.pythonhosted.org/packages/cb/65/aea3bf3f6ae9dbd2aec08dba45c85b494d4ae8b1eca3bcf154ff0e254b24/five.intid-1.0.zip" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "1f04fe0f8f2ea1525664d4e15d616547", "sha256": "d9cb0995bdcf429f4a84dda311bbf382ec974796909b61e38cd176c0842dd62a" }, "downloads": -1, "filename": "five.intid-1.0.1.zip", "has_sig": false, "md5_digest": "1f04fe0f8f2ea1525664d4e15d616547", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30615, "upload_time": "2011-11-30T16:07:32", "url": "https://files.pythonhosted.org/packages/56/59/b5d84d42b2a610b9fc7f77315d62f19ddc2bca0f51ff7cb1f2830c900bd6/five.intid-1.0.1.zip" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "5c90d49594d9c49714abd083dbe40eff", "sha256": "645cd196b36bbfcedd7ba09fd2e48dbb6dc0fa82b3370ca59437459ac1b8458e" }, "downloads": -1, "filename": "five.intid-1.0.2.zip", "has_sig": false, "md5_digest": "5c90d49594d9c49714abd083dbe40eff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30308, "upload_time": "2011-12-02T10:41:39", "url": "https://files.pythonhosted.org/packages/c4/5f/488e9911d36f8204dc329e7d0b2f43100e7caf3215a6b6743b941faf46a8/five.intid-1.0.2.zip" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "60c6726c07a1c1bf557aeec0ddcee369", "sha256": "74f6f33af653319e179ba7ab9d56f3f399ca7ac72b6b010b0ee3db717855aaa0" }, "downloads": -1, "filename": "five.intid-1.0.3.zip", "has_sig": false, "md5_digest": "60c6726c07a1c1bf557aeec0ddcee369", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30487, "upload_time": "2012-10-05T19:09:59", "url": "https://files.pythonhosted.org/packages/6b/63/4e76fcdf5ae4b6906e03d1d56c50781e197f462355e1d85d7169a466a351/five.intid-1.0.3.zip" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "0154c3776d249e95448d080ab3bd0b39", "sha256": "4e1769f7b54b446de7a8487fe7c8f470201a8205762edf9d956e3e0660e0f0fa" }, "downloads": -1, "filename": "five.intid-1.1.0.tar.gz", "has_sig": false, "md5_digest": "0154c3776d249e95448d080ab3bd0b39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17470, "upload_time": "2016-02-14T18:24:37", "url": "https://files.pythonhosted.org/packages/26/78/70d88f272822afb4a5e49e65e1a43db916e3048a22c7ce7038760e4bd68a/five.intid-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "2e8070a877ec00eab23b7644704e32a7", "sha256": "a38f805162db335c7157838717ec1f832da26dfc8854a90dd739b7c0909168c0" }, "downloads": -1, "filename": "five.intid-1.1.1.tar.gz", "has_sig": false, "md5_digest": "2e8070a877ec00eab23b7644704e32a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17231, "upload_time": "2016-08-19T18:14:31", "url": "https://files.pythonhosted.org/packages/2f/34/9a60edd90f0f6df3b9333997953022a4187aa2f0eec21b7b0c9ac1e68b7b/five.intid-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "82da52bd22e37e2911427dcd16b60d83", "sha256": "706e6444a1e9b1783c3982d35cdb8722a014e4f25998e41549d1b258c730e513" }, "downloads": -1, "filename": "five.intid-1.1.2.tar.gz", "has_sig": false, "md5_digest": "82da52bd22e37e2911427dcd16b60d83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17202, "upload_time": "2016-09-08T22:06:59", "url": "https://files.pythonhosted.org/packages/5e/3d/40a43573e939b605e2d6b8fc1ac9add98f11a196ddb04c1674eaebbf147c/five.intid-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "d32105dbdb9662d6c6b57199afd60ba2", "sha256": "e41d798e882ec77536504d4a5af6dba5302af159ec9682962e6e46b6544f8d1d" }, "downloads": -1, "filename": "five.intid-1.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "d32105dbdb9662d6c6b57199afd60ba2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 21342, "upload_time": "2018-11-07T07:18:28", "url": "https://files.pythonhosted.org/packages/82/e5/f57923cfd7b32ccb3ab1746399fa9610172712fd2a2b903515272202e87a/five.intid-1.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f87cb3ffbec2f8e146d3f2abcf4d7a1", "sha256": "3067c34eae4cbcaf477282e5abf2c2a8068b9e23c6acc444a03a7526d89ad398" }, "downloads": -1, "filename": "five.intid-1.2.0.tar.gz", "has_sig": false, "md5_digest": "7f87cb3ffbec2f8e146d3f2abcf4d7a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23192, "upload_time": "2018-11-07T07:18:30", "url": "https://files.pythonhosted.org/packages/2b/f5/319778b54ba54e07814414a7c5a2190a12fdfa9dd416aca9eee44e88b450/five.intid-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "4587103cfb830a6357f4eaabef91671a", "sha256": "2714ca63e0e7a3e04942cdc6ae7a805135645a4f15b66bb231fa853f8fcc69df" }, "downloads": -1, "filename": "five.intid-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4587103cfb830a6357f4eaabef91671a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21531, "upload_time": "2019-02-12T23:49:23", "url": "https://files.pythonhosted.org/packages/d4/71/70b038314234b8990cf19276210e84df59e99c5496a9c78c74575cf3f9a7/five.intid-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eab3c9ebdd65792cd4e89557ad197f0b", "sha256": "b7d295728d33498a3674a0f18ca081445dc92137589d445f858efc5f4635888a" }, "downloads": -1, "filename": "five.intid-1.2.1.tar.gz", "has_sig": false, "md5_digest": "eab3c9ebdd65792cd4e89557ad197f0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22831, "upload_time": "2019-02-12T23:49:25", "url": "https://files.pythonhosted.org/packages/18/84/3b0df076081d3138cabbb3ab0036517b71dee63cc0f0023c432dca73cecf/five.intid-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "9568489b74b853a424fb296fe58c47d9", "sha256": "fbf43c34c6c393c8e9168291a5dfe5ab1ee16d6fa0728ea601b1338f787afa00" }, "downloads": -1, "filename": "five.intid-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9568489b74b853a424fb296fe58c47d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21699, "upload_time": "2019-05-01T23:34:31", "url": "https://files.pythonhosted.org/packages/4b/cc/73cdea642cd82c47a6013f15bed7b6df00f75b389225ca1625b4e0bc023a/five.intid-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "708550a97449d0f623ca87c3ae56f14b", "sha256": "5d4d85f6574fb4f2e45770d2715668218cfda3b4b05bf308dc9ad5abf5a4f04c" }, "downloads": -1, "filename": "five.intid-1.2.2.tar.gz", "has_sig": false, "md5_digest": "708550a97449d0f623ca87c3ae56f14b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22271, "upload_time": "2019-05-01T23:34:33", "url": "https://files.pythonhosted.org/packages/2c/ea/67b2c2892627b6b59b0ee169edf0ea45efb4325d929177239cf844e999c0/five.intid-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "8380f9e2813b3b6a2801e8a772415b1d", "sha256": "d351f82afba3addd9574e37e99df4221f77381f4460a00eec4c4d93eb14566c2" }, "downloads": -1, "filename": "five.intid-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8380f9e2813b3b6a2801e8a772415b1d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22069, "upload_time": "2019-06-20T02:12:45", "url": "https://files.pythonhosted.org/packages/e7/17/8a1cecaaeb6c9e2ed82db3d02d6bc7f946f9104a9681df78006939fd9efa/five.intid-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ecd63dab3a91d4319812fa77c55e2d00", "sha256": "a40655484cbb11eca759ffa6a4f7509569706e84dc2a4f198ae888fb802b9b06" }, "downloads": -1, "filename": "five.intid-1.2.3.tar.gz", "has_sig": false, "md5_digest": "ecd63dab3a91d4319812fa77c55e2d00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22963, "upload_time": "2019-06-20T02:12:47", "url": "https://files.pythonhosted.org/packages/d0/18/6fd2875ed304f76bfeed4947f91058e629d11fe29c1e9d7f1a8ea39b4db5/five.intid-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "4ec062024f11192c3c03b1ec32057dd5", "sha256": "705808ab614730b0413e127460c56b2dfd87b0f6dde768771d7a11f01b6dba79" }, "downloads": -1, "filename": "five.intid-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4ec062024f11192c3c03b1ec32057dd5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22473, "upload_time": "2019-10-12T12:43:22", "url": "https://files.pythonhosted.org/packages/9d/dd/66a7334ac88bad6c3179d18db2c125f0b9bdfbda72d9383ff96e73fa96d7/five.intid-1.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "644c9e07ffdc305b52fb99289703c0ba", "sha256": "a9c33b90927a537f6cfadb630afeb7f5b8e5390ae99e0e6f5fe2ec2d41a46608" }, "downloads": -1, "filename": "five.intid-1.2.4.tar.gz", "has_sig": false, "md5_digest": "644c9e07ffdc305b52fb99289703c0ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25610, "upload_time": "2019-10-12T12:43:25", "url": "https://files.pythonhosted.org/packages/c1/0d/4ea64fc3cd358a69886c9d66c55fc91227c3beca0cf36ecdf9684fb53eee/five.intid-1.2.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4ec062024f11192c3c03b1ec32057dd5", "sha256": "705808ab614730b0413e127460c56b2dfd87b0f6dde768771d7a11f01b6dba79" }, "downloads": -1, "filename": "five.intid-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4ec062024f11192c3c03b1ec32057dd5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22473, "upload_time": "2019-10-12T12:43:22", "url": "https://files.pythonhosted.org/packages/9d/dd/66a7334ac88bad6c3179d18db2c125f0b9bdfbda72d9383ff96e73fa96d7/five.intid-1.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "644c9e07ffdc305b52fb99289703c0ba", "sha256": "a9c33b90927a537f6cfadb630afeb7f5b8e5390ae99e0e6f5fe2ec2d41a46608" }, "downloads": -1, "filename": "five.intid-1.2.4.tar.gz", "has_sig": false, "md5_digest": "644c9e07ffdc305b52fb99289703c0ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25610, "upload_time": "2019-10-12T12:43:25", "url": "https://files.pythonhosted.org/packages/c1/0d/4ea64fc3cd358a69886c9d66c55fc91227c3beca0cf36ecdf9684fb53eee/five.intid-1.2.4.tar.gz" } ] }