{ "info": { "author": "Jonas Baumann", "author_email": "mailto:info@4teamwork.ch", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Plone :: 4.3", "Framework :: Plone :: 5.0", "Framework :: Plone :: 5.1", "Framework :: Plone :: 5.2", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Introduction\n============\n\n`collective.dexteritytextindexer` provides a dynamic SearchableText indexer for\ndexterity content types. It makes it possible to index fields of multiple\nbehaviors as SearchableText.\n\n\nUsage\n=====\n\nFor enabling the indexer just add the behavior to the list of behaviors of your\ncontent types.\n\nIn your *profiles/default/types/YOURTYPE.xml* add the behavior::\n\n \n \n\n \n \n \n \n\n \n\n\nNow you need to mark the fields you want to have in your SearchableText. This\nis done with directives::\n\n from collective import dexteritytextindexer\n from plone.autoform.interfaces import IFormFieldProvider\n from plone.supermodel.model import Schema\n from zope import schema\n from zope.interface import alsoProvides\n\n class IMyBehavior(Schema):\n\n dexteritytextindexer.searchable('specialfield')\n specialfield = schema.Text(title=u'Special field')\n\n alsoProvides(IMyBehavior, IFormFieldProvider)\n\nIf you want to mark fields of an existing 3rd party behavior, it can be\ndone using this utility function::\n\n from plone.app.dexterity.behaviors.metadata import ICategorization\n from collective.dexteritytextindexer.utils import searchable\n\n searchable(ICategorization, 'categorization')\n\nThe `title` and `description` on `plone.app.dexterity`'s `IBasic` behavior\nare marked as searchable by default.\nFor marking them as no longer searchable, there is a utility function::\n\n from plone.app.dexterity.behaviors.metadata import IBasic\n from collective.dexteritytextindexer.utils import no_longer_searchable\n\n no_longer_searchable(IBasic, 'title')\n\nAlternatively, if you specified your model as a plone.supermodel XML model,\nyou can mark the field searchable that way::\n\n \n \n\n \n Special field\n \n\n \n \n\n\nYour SearchableText indexer includes now your custom field on your behavior, as\nsoon you enable it in your content type, where `IDexterityTextIndexer` behavior\nis enabled too.\n\n\nRegistering a custom field converter\n====================================\n\nBy default, a field is converted to a searchable text by rendering the widget\nin display mode and transforming the result to text/plain. However, if you need\nto convert your custom field in a different way, you only have to provide a\nmore specific converter multi-adapter.\n\nConvert multi-adapter specification:\n\n:Interface: `collective.dexteritytextindexer.IDexterityTextIndexFieldConverter`\n:Discriminators: context, field, widget\n\nExample::\n\n from collective.dexteritytextindexer.converters import DefaultDexterityTextIndexFieldConverter\n from collective.dexteritytextindexer.interfaces import IDexterityTextIndexFieldConverter\n from my.package.interfaces import IMyFancyField\n from plone.dexterity.interfaces import IDexterityContent\n from z3c.form.interfaces import IWidget\n from zope.component import adapts\n from zope.interface import implements\n\n class CustomFieldConverter(DefaultDexterityTextIndexFieldConverter):\n implements(IDexterityTextIndexFieldConverter)\n adapts(IDexterityContent, IMyFancyField, IWidget)\n\n def convert(self):\n # implement your custom converter\n # which returns a string at the end\n return ''\n\nZCML::\n\n \n\n \n\n \n\n\nThere is already an adapter for converting NamedFiles properly. It's registered\nonly if `plone.namedfile` is installed.\n\n\n\nExtending indexed data\n======================\n\nSometimes you need to extend the SearchableText with additional data which is\nnot stored in a field. It's possible to register a named adapter which provides\nadditional data::\n\n from collective import dexteritytextindexer\n from zope.component import adapts\n from zope.interface import implements\n\n class MySearchableTextExtender(object):\n adapts(IMyBehavior)\n implements(dexteritytextindexer.IDynamicTextIndexExtender)\n\n def __init__(self, context):\n self.context = context\n\n def __call__(self):\n \"\"\"Extend the searchable text with a custom string\"\"\"\n return 'some more searchable words'\n\n\nZCML::\n\n \n\n \n\n \n\n\nThis is a **named** adapter! This makes it possible to register multiple\nextenders for the same object on different behavior interfaces. The name of\nthe adapter does not matter, but it's recommended to use the name of the\nbehavior (this may reduce conflicts).\n\nIf your behavior has a defined factory (which is not attribute storage), then\nyou need to define a marker interface and register the adapter on this marker\ninterface (dexterity objects do not provide behavior interfaces of behaviors,\nwhich are not using attribute storage).\n\n\nContributors\n============\n\n(In order of appearance)\n\n- `Jonas Baumann `_\n- `Philippe Gross `_\n- `Lukas Graf `_\n- `Izhar Firdaus `_\n- `Sune Broendum Woeller `_\n- `Nejc Zupan `_\n\nChangelog\n=========\n\n\n2.3.0 (2019-09-27)\n------------------\n\n- A few updates to make build pass on travis again, i.e.\n add index/allow-hosts to buildout configs,\n set version.cfg reference to 'latest' for 5.0.x,\n bump setuptools and zc.buildout versions\n [staeff]\n\n- Update the Add-On to also run in Plone 5.2 with Python 3.\n Fixes https://github.com/collective/collective.dexteritytextindexer/issues/31\n [staeff]\n\n\n2.2.1 (2017-07-26)\n------------------\n\n- Fix a bug in the RichText field indexer when the value of RichText field is None.\n The bug was introduced in 2.2.0.\n [mbaechtold]\n\n\n2.2.0 (2017-06-23)\n------------------\n\n- Added TupleFieldConverter, to enable indexing of portal catalog KeywordIndex indices.\n [jone, mtrebron, maurits]\n\n- Improved code quality. [maurits]\n\n- Add the ability to index a RichText field. Fixes #23.\n [smcmahon]\n\n\n2.1.1 (2016-11-03)\n------------------\n\n- Remove traces of plone.directives.form (which implicitly added grok as a dependency).\n [gforcada]\n\n- Silent a plone.behavior warning.\n [gforcada]\n\n- Specify compatibility in setup.py for versions which are tested and remove\n unittest2 dependency\n [tomgross]\n\n2.1.0 (2016-04-14)\n------------------\n\n- Add schemaeditor support\n [datakurre]\n\n\n2.0.2 (2016-04-07)\n------------------\n\n- Handle indexing from scripts.\n Fixes https://github.com/collective/collective.dexteritytextindexer/issues/12\n [gforcada]\n\n\n2.0.1 (2014-01-02)\n------------------\n\n- Fix encoding error when transforming HTML to text.\n [jone]\n\n\n2.0 (2013-03-16)\n----------------\n\n- Drop Plone 4.1 support.\n [jone]\n\n- Mark title and description of p.a.dexterity's IBasic\n as searchable by default.\n [jone]\n\n- Add a no_longer_searchable utility function.\n [jone]\n\n- Plone 4.3 support.\n [jone]\n\n- Eliminate grok / martian dependencies in favor of the new plone.supermodel directives. #5\n [jone]\n\n\n1.5.1 (2013-02-20)\n------------------\n\n- Do not try to convert text/plain in files, just index it as it is.\n [zupo]\n\n\n1.5 (2012-08-16)\n----------------\n\n- Fix missing field bug. #3\n\n - Log an error when indexing an object and one of its schemas defines a missing\n field as searchable.\n\n - Make sure that indexing other existing fields of the same schema works.\n\n - searchable utils function: raise AttributeError when field is missing.\n\n [jone]\n\n- Added support for marking fields searchable in plone.supermodel XML models.\n This is done by implementing a IFieldMetadataHandler that is capable of\n serializing/de-serializing the corresponding taggedValue to/from XML.\n [lgraf]\n\n- Add ``utils.searchable`` method for marking fields of third party schemas as searchable.\n [kagesenshi]\n\n\n1.4.1 (2011-11-17)\n------------------\n\n- ignore the request in the get_field_widget method, to avoid problems with request variables wich have the same name than the field.\n [phgross]\n\n- Added test-buildout for plone-4.1.x\n [lgraf]\n\n\n1.4 (2011-08-24)\n----------------\n\n- Added IntFieldConverter, wich return the plain value instead of the render method (600000 --> 600,000)\n [phgross]\n\n\n1.3\n---\n\n- Fixed querying of tagged values: use helper function mergedTaggedValueList - which also looks\n up tagged values on superclasses.\n [jbaumann]\n\n- Fixed html to text transform call: added source mimetype.\n [jbaumann]\n\n\n1.2\n---\n\n- Fixed data transforms in NamedFileConverter\n [lgraf]\n\n\n1.1\n---\n\n- Made reindexer more robust, since sometimes the field values may be wrong.\n [jbaumann]\n\n- Do not traverse to \"view\" in indexer, this could cause security issues especially in tests.\n Using now a fake-view for enabling z2 mode.\n [jbaumann]\n\n\n1.0\n---\n\n- Fixed assertion bug when using a `IDynamicTextIndexExtender` adapter.\n [jbaumann]\n\n\n1.0b3\n-----\n\n- Moved `IDynamicTextIndexExtender` to `interfaces` module.\n [jbaumann]\n\n- The `plone.namedfile` is now optional. The new namedfile converting\n adapter is only registered if its present\n [jbaumann]\n\n- Re-implemented converting of field data with an newly introduced adapter.\n The default converter just converts the widget in display mode and\n transforms it to text/plain.\n [jbaumann]\n\n- Fixed tests for compaitbility with plone.app.testing 4.0a3: Use TEST_USER_ID instead of TEST_USER_NAME\n [jbaumann]\n\n- fixed Bug UnicodeError: while indexing lists or dicts with special chars (Non-Ascii characters)\n [phgross]\n\n\n1.0b2\n-----\n\n- Fixed MANIFEST.in\n [jbaumann]\n\n\n1.0b1\n-----\n\n- Initial release", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/collective/collective.dexteritytextindexer", "keywords": "plone dexterity searchable text indexer", "license": "GPL2", "maintainer": "", "maintainer_email": "", "name": "collective.dexteritytextindexer", "package_url": "https://pypi.org/project/collective.dexteritytextindexer/", "platform": "", "project_url": "https://pypi.org/project/collective.dexteritytextindexer/", "project_urls": { "Homepage": "http://github.com/collective/collective.dexteritytextindexer" }, "release_url": "https://pypi.org/project/collective.dexteritytextindexer/2.3.0/", "requires_dist": null, "requires_python": "", "summary": "Dynamic SearchableText index for dexterity content types", "version": "2.3.0" }, "last_serial": 5896507, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "df1013519afbe6d02b31d8cc0f04487a", "sha256": "8ccdfb84b3ddd63b99784608fe6bc6aa18ae4039dcd2e7de423dc5a82261dcc9" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.0.tar.gz", "has_sig": false, "md5_digest": "df1013519afbe6d02b31d8cc0f04487a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14733, "upload_time": "2010-12-17T10:00:23", "url": "https://files.pythonhosted.org/packages/4f/d6/9c3f4bdcadb6d31dd003d51024ec6d9e32836c94181122d2bab6dbbaa175/collective.dexteritytextindexer-1.0.tar.gz" } ], "1.0b1": [ { "comment_text": "", "digests": { "md5": "178111630fb8ca190dbb90e9d84fb8a9", "sha256": "862b34b33bc61b5af1316e77bb3d7c363ad768f02932775651546b0308eccf04" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.0b1.tar.gz", "has_sig": false, "md5_digest": "178111630fb8ca190dbb90e9d84fb8a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9481, "upload_time": "2010-11-24T16:28:47", "url": "https://files.pythonhosted.org/packages/32/48/1cce9a6cda3d3aabacd84c2ec0cab0bd4e6146f62af4cc8fae918c9f9da8/collective.dexteritytextindexer-1.0b1.tar.gz" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "a959e4000a72233810a66542b90ca618", "sha256": "64aac6ee207e900028d6dc853393e9cf732c323226b3621f72349e6c4d42c213" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.0b2.tar.gz", "has_sig": false, "md5_digest": "a959e4000a72233810a66542b90ca618", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11761, "upload_time": "2010-11-25T11:56:51", "url": "https://files.pythonhosted.org/packages/d4/90/0fbd231dfbc705b84ebd72bf9ab2f23be665bb45a2b73fad317894a66ef7/collective.dexteritytextindexer-1.0b2.tar.gz" } ], "1.0b3": [ { "comment_text": "", "digests": { "md5": "cae1e7e7c3e7b41c26aeeba91642b125", "sha256": "df2f97b51d7eb4f3379cf2ca4668aedf9e6031dfd1ad2b1dd570d5e8f8029fc4" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.0b3.tar.gz", "has_sig": false, "md5_digest": "cae1e7e7c3e7b41c26aeeba91642b125", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14666, "upload_time": "2010-12-16T14:59:17", "url": "https://files.pythonhosted.org/packages/c4/6b/19076524b4a280935e2d077a72ac1ef2802d6e1b96f90425da2ccb64b907/collective.dexteritytextindexer-1.0b3.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "056512ea54191c163154ce4f53c03e30", "sha256": "2e81d76f8aca3b67170cbd889b8392fc3803071790eba15a13b260eac7c08bd4" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.1.tar.gz", "has_sig": false, "md5_digest": "056512ea54191c163154ce4f53c03e30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14719, "upload_time": "2011-01-07T17:06:05", "url": "https://files.pythonhosted.org/packages/fc/61/1514921bb38f8fbb85ec4de1a590831ed6eddbdd52143aa772a6fc6fea5d/collective.dexteritytextindexer-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "10497237e9a2dc78b4b5cd671bd0f25d", "sha256": "fb54baca321f72c47bac91e5eae88f31d95df5d9085163c22afa347ae8a3b468" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.2.tar.gz", "has_sig": false, "md5_digest": "10497237e9a2dc78b4b5cd671bd0f25d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15145, "upload_time": "2011-07-18T12:00:21", "url": "https://files.pythonhosted.org/packages/ef/2a/7c4cf473aac473d07dfd39f241ae8461b96d423f6b4822fa64416fdec451/collective.dexteritytextindexer-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "810f91278f65dd3525eb11e12b541b21", "sha256": "0ac76c60dba4ddce93216aa30984a53c7172425e965892151aa30d07487bf10d" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.3.tar.gz", "has_sig": false, "md5_digest": "810f91278f65dd3525eb11e12b541b21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15235, "upload_time": "2011-07-18T12:03:15", "url": "https://files.pythonhosted.org/packages/fd/ef/9959ad65ed81a07ead1c0c3b2036925b846a81e4aac9a825e41e895b7803/collective.dexteritytextindexer-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "9040ff1e5bcdaf1d314ec81a446c26c1", "sha256": "43c692999ca9d160085bd2477b1b4b8c4e5fe862f9b87f8aa71364e4532f2877" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.4.tar.gz", "has_sig": false, "md5_digest": "9040ff1e5bcdaf1d314ec81a446c26c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17663, "upload_time": "2011-08-24T08:26:05", "url": "https://files.pythonhosted.org/packages/d7/85/7919dbcfd0c635a59f7613a142bf85d6dda5d71d0fdf802099d55da1b614/collective.dexteritytextindexer-1.4.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "98ee7e2f3fe339ca060c28281744e3ae", "sha256": "8d99b8f91f65bf73f639ec32f89f8f8673029738394136774065ecb059fbf7a2" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.4.1.tar.gz", "has_sig": false, "md5_digest": "98ee7e2f3fe339ca060c28281744e3ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10968, "upload_time": "2011-11-17T10:29:18", "url": "https://files.pythonhosted.org/packages/0f/8b/506cba8b1c9dd079656d493a7c5f97da197b27adec3c76b1011912579bc2/collective.dexteritytextindexer-1.4.1.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "7a65aa476ff9aa720fcf22c9da2c792d", "sha256": "711a8be0ab98d8ff0ceab6254484a39db051d93f924bcfc41e2d18a1c6ff5c98" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.5.zip", "has_sig": false, "md5_digest": "7a65aa476ff9aa720fcf22c9da2c792d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30183, "upload_time": "2012-08-16T08:27:33", "url": "https://files.pythonhosted.org/packages/f3/f0/5eb9af6f6c9ac8dcb9406176a9c7fd91dad5a656300369e8363a6bdc3d33/collective.dexteritytextindexer-1.5.zip" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "cf53cb7412515ad0487287e0f4cac81b", "sha256": "e9f369acd980fb9ce1f00a35c160797925dbf34950db30c170c888114bca670d" }, "downloads": -1, "filename": "collective.dexteritytextindexer-1.5.1.zip", "has_sig": false, "md5_digest": "cf53cb7412515ad0487287e0f4cac81b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30582, "upload_time": "2013-02-20T17:19:56", "url": "https://files.pythonhosted.org/packages/0f/b2/3b0da340ad0466c0d878e63129beefb105095365cf64e986baa8fee32e4b/collective.dexteritytextindexer-1.5.1.zip" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "dfbb6a9d145edf4cf1988695c82e0be2", "sha256": "3d9cca5ef2a976d6437b85a1b39b29f057c700b6b16084fe32126eb0c7b89cff" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.0.zip", "has_sig": false, "md5_digest": "dfbb6a9d145edf4cf1988695c82e0be2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31752, "upload_time": "2013-03-16T17:06:10", "url": "https://files.pythonhosted.org/packages/cc/9b/c137ce304ba34f70d999cd6afcee5f362ef1e84ed396ceac3a277106be55/collective.dexteritytextindexer-2.0.zip" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "789aced84aaca9db93677eddaae9df8c", "sha256": "5c2aa6c206125179e3a3d038ff2da5974fc0580488b2815b1e0744e238a61c77" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.0.1.zip", "has_sig": false, "md5_digest": "789aced84aaca9db93677eddaae9df8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32048, "upload_time": "2014-01-02T11:15:35", "url": "https://files.pythonhosted.org/packages/d7/7e/35e33617147887697818b7a8c86f425cac57fe498c05c4a2a7007243eb0d/collective.dexteritytextindexer-2.0.1.zip" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "cdd04f2bb929484742d8c1906d4ca672", "sha256": "def08684102b6118a2b2e860f187fb143ba92d43972a7dbfd60f2191e55a8e0d" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.0.2.tar.gz", "has_sig": false, "md5_digest": "cdd04f2bb929484742d8c1906d4ca672", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14340, "upload_time": "2016-04-07T12:13:50", "url": "https://files.pythonhosted.org/packages/d8/f3/82b64744cd76a2c84c1e0366c3bce696e3daa894cfda968539ae6a0e91e5/collective.dexteritytextindexer-2.0.2.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "d17790735c3ed82a70a5259f42a38a09", "sha256": "3b789de1d16bde6f840ce481431f248b48eb1a84aa1fbf27943a858ab522fc66" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.1.0.tar.gz", "has_sig": false, "md5_digest": "d17790735c3ed82a70a5259f42a38a09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15851, "upload_time": "2016-04-14T08:19:08", "url": "https://files.pythonhosted.org/packages/d0/c6/897902e43e166ca4f3a5c0bfba570590b4ae2c2ad6815f51f91b8fd832ff/collective.dexteritytextindexer-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "902344497e708f3fe1958076bd076207", "sha256": "d30233d15d97b7479881499e0fdf772700dab3b40896e9ab4c28ccd94bf520c4" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.1.1.tar.gz", "has_sig": false, "md5_digest": "902344497e708f3fe1958076bd076207", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16971, "upload_time": "2016-11-03T13:45:01", "url": "https://files.pythonhosted.org/packages/aa/aa/b8d794391fa820fbee2a30312b5c3cb9fa019abe0e54f703978add5ecad1/collective.dexteritytextindexer-2.1.1.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "b7a4f04fc669a51a9be0a674d2c162fc", "sha256": "a414d1c7fbb706a98c9491f9897a53bad71f22becebc24ad983237233030659f" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.2.0.tar.gz", "has_sig": false, "md5_digest": "b7a4f04fc669a51a9be0a674d2c162fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18186, "upload_time": "2017-06-23T10:13:31", "url": "https://files.pythonhosted.org/packages/a8/2f/40a8c0b6cbbf4f54badabb5209570a5e584a31fc41f01981275ff7fb727e/collective.dexteritytextindexer-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "bbe4515c247ef74888d2360baa76b8aa", "sha256": "9a7bec500eb8b82b5b2fcd30eae338dbf2a810b5ee4c44a933be26409c82fe2a" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.2.1.tar.gz", "has_sig": false, "md5_digest": "bbe4515c247ef74888d2360baa76b8aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18402, "upload_time": "2017-07-26T18:47:43", "url": "https://files.pythonhosted.org/packages/72/ac/aa90fa693861a6df2b111003b476fa54b4bba65aa72b1244cf973bd8e210/collective.dexteritytextindexer-2.2.1.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "477d5f42477f4f5511dd09e96f871a5b", "sha256": "18aaf9f37f8a994011ce8b7d32cfeafce6dbbf12db3da772d7e7ca7a5dcdbde8" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.3.0.tar.gz", "has_sig": false, "md5_digest": "477d5f42477f4f5511dd09e96f871a5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20027, "upload_time": "2019-09-27T14:40:24", "url": "https://files.pythonhosted.org/packages/ec/fe/33b867f02be0d3d4d0f717aa86340a7deac0f9b01dd83292ab6fc8c86c22/collective.dexteritytextindexer-2.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "477d5f42477f4f5511dd09e96f871a5b", "sha256": "18aaf9f37f8a994011ce8b7d32cfeafce6dbbf12db3da772d7e7ca7a5dcdbde8" }, "downloads": -1, "filename": "collective.dexteritytextindexer-2.3.0.tar.gz", "has_sig": false, "md5_digest": "477d5f42477f4f5511dd09e96f871a5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20027, "upload_time": "2019-09-27T14:40:24", "url": "https://files.pythonhosted.org/packages/ec/fe/33b867f02be0d3d4d0f717aa86340a7deac0f9b01dd83292ab6fc8c86c22/collective.dexteritytextindexer-2.3.0.tar.gz" } ] }