{ "info": { "author": "Grok Team", "author_email": "grok-dev@zope.org", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Zope3", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "This package provides support for writing browser pages for Zope\nand registering them directly in Python (without ZCML).\n\n.. contents::\n\nSetting up ``grokcore.view``\n============================\n\nThis package is essentially set up like the `grokcore.component`_\npackage, please refer to its documentation for details. The\nadditional ZCML line you will need is::\n\n \n \n\nPut the first line somewhere near the top of your root ZCML file (but\nbelow the line where you include ``grokcore.component``'s\nconfiguration) and the second line somewhere next to your other\ndependency includes.\n\n\nExamples\n========\n\nSimple browser page\n-------------------\n\nA browser page is implemented by subclassing the\n``grokcore.view.View`` baseclass. At a minimum, a browser page must\nhave\n\n1. an associated template (or implement the ``render`` method for direct\n control)\n\n2. a context that it's registered for as a view\n\n3. a name (which is, if not specified explicitly, the class's name in\n lower case characters).\n\nA browser page that does not use a template but just outputs some\ncomputed data also subclasses the ``grokcore.view.View`` baseclass.\nAt a minimum, such a view must have\n\n1. a render() method\n\n2. a context that it's registered for as a view\n\n3. a name (which is, if not specified explicitly, the class's name in\n lower case characters).\n\nFor example, the following class defines a view that's registered for\nall objects and simply prints \"Hello World!\"::\n\n import grokcore.view\n import zope.interface\n\n class Hello(grokcore.view.View):\n grokcore.view.context(zope.interface.Interface)\n\n def render(self):\n self.response.setHeader(\"Content-Type\", \"text/plain\")\n return \"Hello World!\"\n\nHere we've made use of the implicit name feature. This class will be\navailable as the ``hello`` view for all objects. So for instance,\nyou'll be able to invoke it with URLs like::\n\n http://localhost/some/obj/hello\n\nWe could also have spelled this out explicitly::\n\n class Hello(grokcore.view.View):\n grokcore.view.context(zope.interface.Interface)\n grokcore.view.name('hello')\n\n ...\n\nBrowser page with template\n--------------------------\n\nOf course, more than often a view should render HTML which you would\nconstruct using some sort of templating engine. ``grokcore.view``\ncomes with built-in support for Zope's PageTemplate engine. By\nconvention, PageTemplate templates end with the ``.pt`` extension.\n\nSo let our ``Hello`` view render HTML instead of plain text, we remove\nthe ``render()`` method from the class and instead we create a\ntemplate, e.g. like so::\n\n \n \n

Hello !

\n \n \n\nThis will greet a logged in user with his or her actual name.\n\nSuch a template-using page is a subclass of ``grokcore.view.View``::\n\n import grokcore.view\n import zope.interface\n\n class Hello(grokcore.view.View):\n grokcore.view.context(zope.interface.Interface)\n\n\nTo associate the template with the view, we have to put it in a\ncertain place. Let's say the ``Hello`` view class from above was in\nan ``app.py`` module. Then we create an ``app_templates`` directory\nnext to it and place the template file in there (the name of this\ndirectory can be customized with the ``templatedir`` directive, see\nbelow). The file name can be anything as long as the extension is\n``.pt``. However, we can again make use of a convention here. If we\nname the template like the class (except in lower case characters),\nthen the template and the class are associated automatically. If not,\nwe would have to use the ``template`` directive on the view class to\nspell out the name of the template file explicitly.\n\nTo cut a long story short, if we named it ``app_templates/hello.pt``,\nit would be found automatically.\n\nStatic resources\n----------------\n\nBrowser pages often need additional static resources like CSS and JavaScript\nfiles. These can be conveniently placed into a directory called ``static`` in\nthe package that contains the view code. When this directory exists it will\nautomatically be registered as a resource directory. It then is available as\nthe ``static`` variable in all views of this package and you can refer to files\ninside this directory like so::\n\n \n\nDirectoryResource\n-----------------\n\nIn addition to the very convenient \"static resources\", one can use more\nexplicitly configured and flexible DirectoryResource components.\nDirectoryResource component allow for differentiating resources based on layers\nand names and provide a way to register resources in one package and make use\nof these resources in another package's views::\n\n class FooResource(grokcore.view.DirectoryResource):\n grokcore.view.path('foo')\n\nOr with an explicit name::\n\n class BarResource(grokcore.view.DirectoryResource):\n grokcore.view.name('bar')\n grokcore.view.path('bar')\n\nRegistered for a layer::\n\n class BazResource(grokcore.view.DirectoryResource):\n grokcore.view.layer(ISomeLayer)\n grokcore.view.path('baz/qux')\n\nLayers and skins\n----------------\n\nTo define a browser layer, simply extend the ``IBrowserRequest``\ninterface::\n\n class IGreenLayer(grokcore.view.IBrowserRequest):\n pass\n\nIf you then wanted to define a skin, simply inherit from all the layer\ninterfaces that should be in the skin and use the ``skin()`` directive\nto give the layer a name::\n\n class IGreenSkin(IGreenLayer, grokcore.view.IDefaultBrowserLayer):\n grokcore.view.skin('Green')\n\nTo place a view on a layer, simply use the ``layer`` directive::\n\n class Hello(grokcore.view.View):\n grokcore.view.context(zope.interface.Interface)\n grokcore.view.layer(IGreenLayer)\n\n ...\n\n\nAPI overview\n============\n\nBase classes\n------------\n\n``View``\n Base class for browser pages. Use the ``context`` directive to\n specify the view's context. Use the ``name`` directive to set the\n view's name; if not used, the view's name will be the class's name\n in lower case characters. You may also use the ``template``\n directive to specify the name of the template file that should be\n associated with the view as well as the ``layer`` directive to\n specify which layer it should be on if not the default layer.\n Implement the ``render`` method to forgo looking up a template\n and show the result of calling the render method instead.\n\nView API\n--------\n\n``grokcore.view.View`` is a regular Zope browser page, so it behaves\nexactly like a regular browser page from the outside. It provides a\nbit more to the developer using it as a base class, though:\n\n``context``\n The view's context object. This can be discriminated by using the\n ``context`` directive on the view class.\n\n``request``\n The request object, typically provides ``IBrowserRequest``.\n\n``response``\n The response object, typically provides ``IHTTPResponse``.\n\n``static``\n Directory resource representing the package's ``static`` directory or None\n if no such directory was found during grokking.\n\n``redirect(url)``\n Redirect to the given URL.\n\n``url(obj=None, name=None, data=None)``\n Constructs a URL:\n\n * If no arguments are given, the URL to the view itself is\n constructed.\n\n * If only the ``obj`` argument is given, the URL to that object is\n constructed.\n\n * If both ``obj`` and ``name`` arguments are supplied, construct\n the URL to the object and append ``name`` (presumably the name\n of a view).\n\n Optionally, ``data`` can be a dictionary whose contents is added to\n the URL as a query string.\n\nMethod for developers to implement:\n\n``update(**kw)``\n This method will be called before the view's associated template\n is rendered. If you therefore want to pre-compuate values for the\n template, implement this method. You can save the values on\n ``self`` (the view object) and later access them through the\n ``view`` variable from the template. The method can take\n arbitrary keyword parameters which are filled from request values.\n\n``render(**kw)`` \n Return either an encoded 8-bit string or a unicode string. The method can\n take arbitrary keyword parameters which are filled from request values.\n If not implemented, a template is looked up in the template dir instead.\n\n\nDirectives\n----------\n\n``templatedir(dirname)``\n Module-level directive that tells the template machinery which\n directory to look in for templates that should associated with\n views in a particular module. If not used, it defaults to\n ``_templates``.\n\n``template(filename_wo_ext)``\n Class-level directive that specifies the name a template file\n that's associated with a view class, *without* the file extension.\n If not used, it defaults to the class's name in lower case\n characters.\n\n``layer(layer_interface)``\n Class-level directive that defines which layer the view is\n registered on. If not used, it defaults to the\n ``IDefaultBrowserLayer``.\n\n``skin(skin_name)``\n Directive used on a layer interface to register it as skin using a\n human-readable name (``skin_name``).\n\n``path(relative_or_absolute_path)``\n Directove used in a DirectoryResource registration to point to a non-\n package directory(hierarchy) containing resources like images, css files,\n etc.\n\nOther\n-----\n\n``url(request, obj, name=None, data=None)``\n Generate the URL to an object, with an optional view name\n attached. The ``data`` argument can be a dictionary whose\n contents is converted into the a query string that's appended to\n the URL.\n\n``PageTemplate(template_code)``\n Create an inline PageTemplate object.\n\n``PageTemplateFile(filename)``\n Create a PageTemplate object from a file.\n\n``IBrowserRequest``\n Browser request interface from ``zope.publisher``.\n\n``IDefaultBrowserLayer``\n Default layer for browser components from ``zope.publisher``.\n\n\nIn addition, the ``grokcore.view`` package exposes the\n`grokcore.component`_ and `grokcore.security`_ APIs.\n\n.. _grokcore.component: http://pypi.python.org/pypi/grokcore.component\n.. _grokcore.security: http://pypi.python.org/pypi/grokcore.security\n.. _grokcore.view: http://pypi.python.org/pypi/grokcore.view\n\n\nChanges\n=======\n\n3.1 (2018-06-13)\n----------------\n\n- Added AfterTraversalEvent which is fired after all traversal is done.\n\n\n3.0.3 (2018-01-12)\n------------------\n\n- Rearrange tests such that Travis CI can pick up all functional tests too.\n\n3.0.2 (2018-01-05)\n------------------\n\n- Additional test fixes.\n\n3.0.1 (2018-01-05)\n------------------\n\n- Additional test fixes.\n\n3.0 (2018-01-03)\n----------------\n\n- In the template directory grokker, ignore directories and files\n without extensions.\n\n- Drop support of Python 2.6.\n\n- Claim support for Python 3.4, 3.5, and 3.6.\n\n2.10.2 (2016-02-02)\n-------------------\n\n- Update tests.\n\n\n2.10.1 (2014-07-29)\n-------------------\n\n- Fix broken MANIFEST.in\n\n\n2.10 (2014-07-29)\n-----------------\n\n- Add an helper ``render_provider`` to look up and render a given\n content provider.\n\n\n2.9 (2014-05-15)\n----------------\n\n- Make possible to disable the template warning with the help of the\n ``GROK_DISABLE_TEMPLATE_WARNING`` environment variable.\n\n- The ``skin`` option of ``grokcore.view.util.url`` now accepts\n strings that will be used as skin name as possible alternative to a\n skin interface.\n\n- The ``skin`` directive can now be used on interfaces that inherits\n only from ``IRequest`` instead of ``IBrowserRequest``.\n\n2.8 (2012-12-11)\n----------------\n\n- Add a ``skin=[skin component]`` argument to the ``grokcore.view.util.url()``\n function and ``grokcore.view.components.View.url`` method. This allows for\n computing URLs on a specific skin. Note that it is not verified whether\n the computed URL actually exist on the specified skin.\n\n2.7 (2012-05-01)\n----------------\n\n- Use the component registration api in grokcore.component.\n\n- Improve error message when a templatedir() directive points to a non-\n existent directory. (fix launchpad issue 680528).\n\n- Improve error message when a template is required for a component\n but cannot be found (Fix Launchpad issue #225855, #242698).\n\n- Fix how the static resource are found. Instead of using as name the\n package name where the component is defined, using as name the\n package where the template for the component is defined, or the base\n component. This is done by setting an attribute ``__static_name__``\n on the component that specify which resource directory should be\n used. This fix missing resources when you extend the component and\n don't redefined the template.\n\n2.6.1 (2011-06-28)\n------------------\n\n- Fix bug where zope.browserpage was not correctly declared as a dependency.\n\n2.6 (2011-06-28)\n----------------\n\n- Add the ContentProvider component.\n\n2.5 (2011-04-04)\n----------------\n\n- Fix a test that relied on older zope.testbrowser behaviour.\n\n2.4 (2011-03-01)\n----------------\n\n- grok.View component can optionally use the ``grok.provides`` directive,\n specifying an interface that the component provides (instead of the\n zope.interface.Interface that views by default provide).\n\n- Add a new ZCML directive, ``ignoreTemplates`` that let you configure which\n template filename pattern should be ignored by the template registry. The\n pattern attribute of the directive accepts regular expresssion that will be\n matched against the (template) file extension.\n\n- Use the zope configuration action ordering feature to have templates\n registered for all packages and modules, before trying to associate the\n templates. Checking for unassociated templates is done very very late in the\n configuration action order.\n\n- Inherited grok.template() information is looked up against the module of\n the view class that uses the grok.template() directive. This allows for\n subclassing view components that use the grok.template() directive from other\n packages.\n\n2.3 (2011-01-04)\n----------------\n\n- Removed the static directory grokker in order to make way for using\n fanstatic.\n\n2.2 (2010-12-16)\n----------------\n\n- Factor out a base template grokker that associate templates for\n viewish components.\n\n- Merge support for a global template registry that removes\n unnecessary warnings about unassociated templates in \"shared\"\n template directories.\n\n2.1 (2010-11-03)\n----------------\n\n- Use an update martian and grokcore.component.\n\n- The custom zope publication has now moved from the grok package to\n grokcore.view. The registration of the publication is optional, and is used\n by grok and the grokcore.json package.\n\n- The util function `make_checker` has been moved from the `grok`\n package to ``grokcore.view``.\n\n2.0 (2010-11-01)\n----------------\n\n- The `view` directive has been moved from ``grokcore.viewlet`` to\n ``grokcore.view``.\n\n- The `IGrokSecurityView` has been moved from ``grok`` to\n ``grokcore.view``.\n\n- Fix the url() function to behave properly while passed an empty data dict.\n\n- Fix the url() method to accept the \"status\" and \"trusted\" arguments, passed\n on to the redirect method on the response object.\n\n- ``grokcore.view`` no longer depends on ``zope.app.testing`` and\n related packages. Instead we now use ``zope.app.wsgi.testlayer`` to\n run functional tests.\n\n- Made package comply to zope.org repository policy.\n\n- Fixed launchpad bug #395061 : removed the default_fallback_to_name\n function. It can be imported from ``grokcore.security`` if needed.\n\n- ``grokcore.view`` no longer depends on ``zope.app.zcmlfiles``. We\n removed all the extra dependencies and fixed one test that used\n ``zope.app.rotterdam`` and ``zope.app.basicskin``.\n\n- Back-ported the changes of the 1.13 branch related to the directory\n resource registration, using the latest ztk packages.\n\n- Factor out generally useful methods and properties for view-ish\n components into components.ViewSupport mixin.\n\n- Works with new Martian (0.13) and grokcore.component 2.1.\n\n- Test fix: support windows paths.\n\n- Warnings are now emitted as log messages with level\n `logging.WARNING` to a logger named ``grokcore.view`` with level\n `logging.ERROR`.\n\n That means that by default no warnings are emitted anymore (while\n errors will still appear).\n\n To get the warnings back, reduce the level of logger\n ``grokcore.view`` to `logging.WARNING` or lower. This can be done in\n Python or via a logging conf file, for instance in the .ini files of\n regular grokprojects. See the Python standard lib `logging` module\n for details.\n\n1.12.1 (2009-09-17)\n-------------------\n\n- A compatibility fix to support ``grokcore.viewlet``.\n\n1.12 (2009-09-17)\n-----------------\n\n- Use 1.0b1 versions.cfg in Grok's release info instead of a local\n copy; a local copy for all grokcore packages is just too hard to\n maintain.\n\n- Revert the splitting CodeView/View. The original reasons for the\n split have been obsoleted by the recent martain developments\n regarding inheritted module level directives. At the same time the\n split up components proved cumbersome to use and a too big a change\n between the 1.0a and 1.0b releases of Grok.\n\n View components will now again behave like it did up until the latest alpha\n release of Grok.\n\n ``CodeView`` is still available as a backwards compatibility alias\n for ``View``. Please update all references to ``CodeView`` to\n ``View``.\n\n- Fix the template registry and grokker for views to let View and\n other components using View as base class to be associated with a\n template directly by setting it as 'template' attribute on the view\n class. Example::\n\n class MyView(grokcore.view.View):\n\n template = grokcore.view.PageTemplate('

hello

')\n\n This isn't exactly *officially* supported but enough people depend\n on it and have documented it so that we don't want to just break it.\n\n1.11 (2009-09-15)\n-----------------\n\n- The response attribute needs to be available in CodeView as well.\n\n1.10 (2009-09-14)\n-----------------\n\n- Up the version requirement for grokcore.security to 1.2.\n\n- Bring versions.cfg in line with current grok versions.cfg.\n\n\n1.9 (2009-07-04)\n----------------\n\n- Fix needed for grokcore.formlib: allow a base_method'ed render() on view.\n This allows grokcore.formlib to have a render() in addition to a template.\n\n- Reverted change to checkTemplates: for some formlib edge cases it detects\n the right templates again.\n\n\n1.8 (2009-07-04)\n----------------\n\n- Add validator to templatedir directive to disallow path separator.\n\n- Splitted CodeView out of View. View only uses templates, CodeView only uses\n a render() method. So views that have a render method must subclass from\n CodeView instead of View (that should be the only change needed).\n\n- Add grok.View permissions to functional tests (requires grokcore.security 1.1)\n\n\n1.7 (2009-05-19)\n----------------\n\n- Revert dependency from zope.container back to zope.app.container.\n\n\n1.6 (2009-04-28)\n----------------\n\n- Simplify the DirectoryResource and DirectoryResourceFactory\n implementations by making better use of the hook points provided by\n zope.app.publisher.browser.directoryresource.\n\n1.5 (2009-04-10)\n----------------\n\n- Don't register a 'static' resource directory if the 'static' directory does\n not exist.\n\n- Make it possible to instantiate an ungrokked view by being slightly more\n defensive in __init__. This makes it easier to write unit tests.\n\n1.4 (2009-04-08)\n----------------\n\n* Page template reloading now also works for macros. Fixes\n https://bugs.launchpad.net/grok/+bug/162261.\n\n* Use zope.container instead of zope.app.container.\n\n* Ignore '.cache' files when looking up template files in a\n template dir. Fix bug https://bugs.launchpad.net/grok/+bug/332747\n\n1.3 (2009-01-28)\n----------------\n\n* Adapt tests to work also from eggs not only source checkouts by\n avoiding `src` in directory comparisons.\n\n* Fix the factory for subdirectories of the DirectoryResource implementation\n by using hooks in zope.app.publisher.browser.directoryresource.\n\n* Update APIs interfaces to include the new ``path`` directive and\n new ``DirectoryResource`` component.\n\n1.2 (2008-10-16)\n----------------\n\n* Expose the ``DirectoryResource`` class as a component for registering\n directories as resources. This is accompanied by the ``path`` directive that\n is used to point to the directory holding resources by way of an relative (to\n the module) or absolute path. ``DirectoryResource`` components can be\n differentiated by name and layer.\n\n1.1 (2008-09-22)\n----------------\n\n* ``meta.py`` module containing the grokkers has been split in a\n package with separate modules for the view, template, skin and\n static resources grokkers. This allows applications to use only\n grokkers they need (and maybe redefine others).\n\n1.0 (2006-08-07)\n----------------\n\n* Created ``grokcore.view`` in July 2008 by factoring security-related\n components, grokkers and directives out of Grok.", "description_content_type": "", "docs_url": null, "download_url": "http://pypi.python.org/pypi/grok/", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://grok.zope.org", "keywords": "", "license": "ZPL", "maintainer": "", "maintainer_email": "", "name": "grokcore.view", "package_url": "https://pypi.org/project/grokcore.view/", "platform": "", "project_url": "https://pypi.org/project/grokcore.view/", "project_urls": { "Download": "http://pypi.python.org/pypi/grok/", "Homepage": "http://grok.zope.org" }, "release_url": "https://pypi.org/project/grokcore.view/3.1/", "requires_dist": null, "requires_python": "", "summary": "Grok-like configuration for Zope browser pages", "version": "3.1" }, "last_serial": 3957018, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "6f1a23a2188cbe520e68a6148a8112c8", "sha256": "0147706ab4d97280bf3a754d258a7bcc999887a15c3a7e65a40eec5f43d64d6d" }, "downloads": -1, "filename": "grokcore.view-1.0.tar.gz", "has_sig": false, "md5_digest": "6f1a23a2188cbe520e68a6148a8112c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36724, "upload_time": "2008-08-07T21:34:01", "url": "https://files.pythonhosted.org/packages/12/0c/84c3099d21f7119bee3db6c8f75b3845f360986449271aa4a5467ffbb7e0/grokcore.view-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "50e0de95aba04ca71d26022d0d6d463c", "sha256": "865e4221cc9a7bbe62450a0ae439a304ac48bb4f96be2a7c19f80dde365e132e" }, "downloads": -1, "filename": "grokcore.view-1.1.tar.gz", "has_sig": false, "md5_digest": "50e0de95aba04ca71d26022d0d6d463c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37376, "upload_time": "2008-09-22T13:33:06", "url": "https://files.pythonhosted.org/packages/b4/6e/bce23a9ab1bf8e9764127c768cb60871842dbc061bfc86d0c565d42776a8/grokcore.view-1.1.tar.gz" } ], "1.10": [ { "comment_text": "", "digests": { "md5": "182dbdf0ae86f1d29d45368ba3bf3284", "sha256": "bda08b70fe25805254911924a4366e2080b977aa2b1770d86d58ad47be05bb31" }, "downloads": -1, "filename": "grokcore.view-1.10.tar.gz", "has_sig": false, "md5_digest": "182dbdf0ae86f1d29d45368ba3bf3284", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46184, "upload_time": "2009-09-14T17:09:07", "url": "https://files.pythonhosted.org/packages/ac/4b/b58c8a36524ad3ad2c337ba9bfed942728dcc145ddf9954d15bb1d8509fc/grokcore.view-1.10.tar.gz" } ], "1.11": [ { "comment_text": "", "digests": { "md5": "400afbcdd0fe3a1648567b3becb96012", "sha256": "60a59b2476031750c5ec016bceb497d5f560c35ec1887b089d45843c3d84c426" }, "downloads": -1, "filename": "grokcore.view-1.11.tar.gz", "has_sig": false, "md5_digest": "400afbcdd0fe3a1648567b3becb96012", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45400, "upload_time": "2009-09-15T10:38:09", "url": "https://files.pythonhosted.org/packages/5a/e8/84f5cb36f916407aea8b16c93540e3e2797e869258f9f9daa3d4ac525ad8/grokcore.view-1.11.tar.gz" } ], "1.12": [ { "comment_text": "", "digests": { "md5": "1586f58c0f11756017ffa727904c56b9", "sha256": "e39454410f947c9f1b5bccbefdeeeaada39ebf96e1838ee7c58d15c4fcdb704e" }, "downloads": -1, "filename": "grokcore.view-1.12.tar.gz", "has_sig": false, "md5_digest": "1586f58c0f11756017ffa727904c56b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45821, "upload_time": "2009-09-17T09:47:20", "url": "https://files.pythonhosted.org/packages/31/9b/f87fe3dba78d702f43c179a6e93b568a63f7f2d641e63e2d7f91c1c966b0/grokcore.view-1.12.tar.gz" } ], "1.12.1": [ { "comment_text": "", "digests": { "md5": "d885d448fac40bf01fe3144bacc62e21", "sha256": "85ccb3ea2cddbd5ca1dda62a8e55794b4228664c8e439a03dfa77200b763a0e0" }, "downloads": -1, "filename": "grokcore.view-1.12.1.tar.gz", "has_sig": false, "md5_digest": "d885d448fac40bf01fe3144bacc62e21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45931, "upload_time": "2009-09-17T10:16:14", "url": "https://files.pythonhosted.org/packages/b7/b5/a6d474e49a0d1fb27e0e86c2ccb068936dba7030fa8f80ae927262a95664/grokcore.view-1.12.1.tar.gz" } ], "1.12.2": [ { "comment_text": "", "digests": { "md5": "ab7f502bf39df36370ba59f7c8b40d53", "sha256": "39249c195e5fae2e539d94367949bbaa1626723dcf47d36278b4be8bd1fdac74" }, "downloads": -1, "filename": "grokcore.view-1.12.2.tar.gz", "has_sig": false, "md5_digest": "ab7f502bf39df36370ba59f7c8b40d53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46927, "upload_time": "2009-09-17T16:34:06", "url": "https://files.pythonhosted.org/packages/be/b0/0517a9ca25a6f4562b62d822400b6c9c86ed506d15d671c2ff12b529c76b/grokcore.view-1.12.2.tar.gz" } ], "1.12.3": [ { "comment_text": "", "digests": { "md5": "bfaf8243afdf780ac2a5c3729889d0db", "sha256": "b9036557ef08d73526e02ad1f408c1869dcae6237d65db85d8b7fdf831d6bc7c" }, "downloads": -1, "filename": "grokcore.view-1.12.3.tar.gz", "has_sig": false, "md5_digest": "bfaf8243afdf780ac2a5c3729889d0db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48904, "upload_time": "2011-03-01T11:08:48", "url": "https://files.pythonhosted.org/packages/e0/62/b7f1985bc3e48c2d877c126f93a808e33d2d029960f344312298b90aa859/grokcore.view-1.12.3.tar.gz" } ], "1.13": [ { "comment_text": "", "digests": { "md5": "2b6764f16ec8d45bc266f644ef55da86", "sha256": "e489b63a2cddb6564582390f3be991098b071de93b9289b32d6d0411a6169060" }, "downloads": -1, "filename": "grokcore.view-1.13.tar.gz", "has_sig": false, "md5_digest": "2b6764f16ec8d45bc266f644ef55da86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49619, "upload_time": "2009-12-13T20:54:38", "url": "https://files.pythonhosted.org/packages/5b/24/345dfc0d595833886354b0cd64962e3eaac6a5416c8985e518891624a323/grokcore.view-1.13.tar.gz" } ], "1.13.1": [ { "comment_text": "", "digests": { "md5": "c648d7698bf3534d2396f5f3424ed5c3", "sha256": "0ca3d3c5abdfa834a45165b6f286b3289e846953744743b8f592a6a2ac50b706" }, "downloads": -1, "filename": "grokcore.view-1.13.1.tar.gz", "has_sig": false, "md5_digest": "c648d7698bf3534d2396f5f3424ed5c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49759, "upload_time": "2009-12-15T07:17:15", "url": "https://files.pythonhosted.org/packages/76/01/68cebca15fc522a2602ffc462b8a16094c804de213c279d553745c8c536a/grokcore.view-1.13.1.tar.gz" } ], "1.13.2": [ { "comment_text": "", "digests": { "md5": "3a007859c1765d06bad4019ea515d372", "sha256": "7fe8caa941aa0c01d333f6e5f08f354fe8b0ec9500d2c705411a48020d9e8e1d" }, "downloads": -1, "filename": "grokcore.view-1.13.2.tar.gz", "has_sig": false, "md5_digest": "3a007859c1765d06bad4019ea515d372", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50074, "upload_time": "2010-01-09T14:07:49", "url": "https://files.pythonhosted.org/packages/91/d8/85d316c256554f2f91e0b104a87dd6a7f1b2405adc29e9a48d28b251f0f0/grokcore.view-1.13.2.tar.gz" } ], "1.13.3": [ { "comment_text": "", "digests": { "md5": "aa75e015bc322849b236500e5af182b8", "sha256": "a963ef6382ff63329e475d2dbbccd75f98da9c892cbfe2c039dd356a1b726a9c" }, "downloads": -1, "filename": "grokcore.view-1.13.3.tar.gz", "has_sig": false, "md5_digest": "aa75e015bc322849b236500e5af182b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50348, "upload_time": "2010-05-27T11:38:38", "url": "https://files.pythonhosted.org/packages/95/ed/3c598e3d3bcfae07e40a7ea9489d3710e268e379fa186a8354e3087c8176/grokcore.view-1.13.3.tar.gz" } ], "1.13.4": [ { "comment_text": "", "digests": { "md5": "1087e290467cb7dc3e6b1946393c8049", "sha256": "4ace2774dcd8d5ba7cb81cfe800b2abc529f017a24b24ba4a9121464c6455b1f" }, "downloads": -1, "filename": "grokcore.view-1.13.4.tar.gz", "has_sig": false, "md5_digest": "1087e290467cb7dc3e6b1946393c8049", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55629, "upload_time": "2010-06-01T13:35:06", "url": "https://files.pythonhosted.org/packages/a0/d4/fb96c03ea1052412d602dbf06544116c4d6d6b859c8b5b71959c1c4f5271/grokcore.view-1.13.4.tar.gz" } ], "1.13.5": [ { "comment_text": "", "digests": { "md5": "304363398aa752d5e1479bab39b93e4e", "sha256": "bbf661dec217b5f973c9c94c46a8333e5fe1e34322872772b1d6c54f87f9013d" }, "downloads": -1, "filename": "grokcore.view-1.13.5.tar.gz", "has_sig": false, "md5_digest": "304363398aa752d5e1479bab39b93e4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53325, "upload_time": "2010-06-03T00:28:01", "url": "https://files.pythonhosted.org/packages/0f/67/343c670acfa1bea16b60ad6df87d9b4eba5e9e031f6f2ede6acb4e51e036/grokcore.view-1.13.5.tar.gz" } ], "1.13a1": [ { "comment_text": "", "digests": { "md5": "b1dd75d9cd654905bb269ebf4f898a4a", "sha256": "b0b0cd82c80fa357576a2e7d33f6ce86a0b9f44f7cc0d8c6e17926803124a92d" }, "downloads": -1, "filename": "grokcore.view-1.13a1.tar.gz", "has_sig": false, "md5_digest": "b1dd75d9cd654905bb269ebf4f898a4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49297, "upload_time": "2009-11-15T21:17:00", "url": "https://files.pythonhosted.org/packages/29/54/a0aed841bc6ca1806503b97509a697188de0ff786442890dbd4d893fbf41/grokcore.view-1.13a1.tar.gz" } ], "1.13a2": [ { "comment_text": "", "digests": { "md5": "f7ce1db227ccff7fc363fd73167f628e", "sha256": "9ec4199ad008630b04e094ac3932ad6e872a0e4ee48fdf94a82c7857007d753b" }, "downloads": -1, "filename": "grokcore.view-1.13a2.tar.gz", "has_sig": false, "md5_digest": "f7ce1db227ccff7fc363fd73167f628e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49552, "upload_time": "2009-11-27T11:41:05", "url": "https://files.pythonhosted.org/packages/2e/96/9663df316c57b37a919f1bc9bfbf31cc7cbb0e55c483473be3fb3b05d4c0/grokcore.view-1.13a2.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "1f41b74c7c6f06733b984a1273d1fd29", "sha256": "0fccafd33e1fbe8e71e56fdd2b37ad9bfc379059e651ad982817cde6b8cd5b35" }, "downloads": -1, "filename": "grokcore.view-1.2.tar.gz", "has_sig": false, "md5_digest": "1f41b74c7c6f06733b984a1273d1fd29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40594, "upload_time": "2008-10-16T06:39:27", "url": "https://files.pythonhosted.org/packages/e7/83/3a912634060d0a4ca7deec1090ce2349678734f80762ef54c247314a47b8/grokcore.view-1.2.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "63789bf83ac00a769e49e0e0a4ab575d", "sha256": "bffed069354c1f3d5598745c5e64769150e1dc87eb26904e4db302676a8b171e" }, "downloads": -1, "filename": "grokcore.view-1.2.1.tar.gz", "has_sig": false, "md5_digest": "63789bf83ac00a769e49e0e0a4ab575d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39261, "upload_time": "2008-11-28T11:09:51", "url": "https://files.pythonhosted.org/packages/38/40/2156c54ced9ee7bc73cb9cb542afb058d7efd8daaf7df3f0b797287a6e3f/grokcore.view-1.2.1.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "69337555d56cd282190e02986aef1c04", "sha256": "e6ddbce27aa89941f4f964a09d4e1f145565428100b3b11b2cee229b74559237" }, "downloads": -1, "filename": "grokcore.view-1.3.tar.gz", "has_sig": false, "md5_digest": "69337555d56cd282190e02986aef1c04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39756, "upload_time": "2009-01-28T15:54:28", "url": "https://files.pythonhosted.org/packages/65/c0/784c1504aa52fcf85471135a0eae5cfd20917aa904781ca9742bc0e1c5c7/grokcore.view-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "4380c924128154a374cc1a7046073b4d", "sha256": "afd771c8057dccfcefb59381d6d18cd20c82bf627c390d987a096224e89d9cfb" }, "downloads": -1, "filename": "grokcore.view-1.4.tar.gz", "has_sig": false, "md5_digest": "4380c924128154a374cc1a7046073b4d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38398, "upload_time": "2009-04-08T20:33:42", "url": "https://files.pythonhosted.org/packages/ba/4e/590ad5f59e4bedbf1bb68cb81c9ff8f0d913e7da8e8ae94867cf104287c5/grokcore.view-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "cfbb038bf454733f8bf711357c051f27", "sha256": "fc0c9ba9e969e887fe632ce5e61a733468281c2f8f5c75b2f6c58b4aa3c64943" }, "downloads": -1, "filename": "grokcore.view-1.5.tar.gz", "has_sig": false, "md5_digest": "cfbb038bf454733f8bf711357c051f27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38804, "upload_time": "2009-04-10T21:49:02", "url": "https://files.pythonhosted.org/packages/50/3f/a461c95e28013c196ed01e53743fb90110d4d4d1cdc0d3c8a88a39b25019/grokcore.view-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "c5f0abfa7d9bc6a6a4f81b604c510ab9", "sha256": "45f35d86a8e9709123a42c7642e476a0f6a63a19c49a5a67a80dc3a29c12ea63" }, "downloads": -1, "filename": "grokcore.view-1.6.tar.gz", "has_sig": false, "md5_digest": "c5f0abfa7d9bc6a6a4f81b604c510ab9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40941, "upload_time": "2009-04-28T09:31:33", "url": "https://files.pythonhosted.org/packages/dc/09/b4cbbd3ce710f2f2dd3785062162a4565a5e26ddf95ef17db65860ca0938/grokcore.view-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "947d39b01cfaf853d3a4357bde857296", "sha256": "23c57d1b7024fe5af624e5cf42af531032156ff16c51a3f15310a0ca6855a99e" }, "downloads": -1, "filename": "grokcore.view-1.7.tar.gz", "has_sig": false, "md5_digest": "947d39b01cfaf853d3a4357bde857296", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40651, "upload_time": "2009-05-19T21:46:34", "url": "https://files.pythonhosted.org/packages/5e/c9/af20e729593b19cfc040aa1a359ca0e990af707fc303a155e5077bdfe613/grokcore.view-1.7.tar.gz" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "75ce2d37186fa339a8339c7e6f392785", "sha256": "31853ab18551d0c96d8964ce493134fac819535dd557afa181e25c5ade45a227" }, "downloads": -1, "filename": "grokcore.view-1.8.tar.gz", "has_sig": false, "md5_digest": "75ce2d37186fa339a8339c7e6f392785", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45624, "upload_time": "2009-07-04T12:18:59", "url": "https://files.pythonhosted.org/packages/40/83/c6ffa8ca6f45e4d00b1fe1ad8be692b5c3b66b683efbf28afe2abd61df1c/grokcore.view-1.8.tar.gz" } ], "1.9": [ { "comment_text": "", "digests": { "md5": "80265c81a0ce2558c47ddea569590cb3", "sha256": "dff03ae666413976dee68cc35afabd53081abda0c5c799c331513579bc1dd650" }, "downloads": -1, "filename": "grokcore.view-1.9.tar.gz", "has_sig": false, "md5_digest": "80265c81a0ce2558c47ddea569590cb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45981, "upload_time": "2009-07-04T16:41:07", "url": "https://files.pythonhosted.org/packages/27/1b/b3cf9505b85b585f46f3597ed3a7d8981fe4d4554effc8e645066280574e/grokcore.view-1.9.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "5653bfc461bb4ff6a832392ebc623954", "sha256": "1294c4af10a87c87237b19df0841117c3bb1596e452473f94fde89c321c7e6b0" }, "downloads": -1, "filename": "grokcore.view-2.0.tar.gz", "has_sig": false, "md5_digest": "5653bfc461bb4ff6a832392ebc623954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50412, "upload_time": "2010-11-01T20:49:02", "url": "https://files.pythonhosted.org/packages/8f/ee/2469ecd24e206138fb71617a6be5c685afe7e8670fbe15d22ed3f7facc7b/grokcore.view-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "66386673562daba85df680a597d8d6ca", "sha256": "aa88d97c251db31c91840dfdc9885357fa7181a800f0a391a1c9a02c2809722d" }, "downloads": -1, "filename": "grokcore.view-2.1.tar.gz", "has_sig": false, "md5_digest": "66386673562daba85df680a597d8d6ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52193, "upload_time": "2010-11-03T16:05:33", "url": "https://files.pythonhosted.org/packages/a5/1a/19b832da697dfba0d4cbb63aa9d44f4b3aaf00a0416bbf6e1d3b92037a59/grokcore.view-2.1.tar.gz" } ], "2.10": [ { "comment_text": "", "digests": { "md5": "4a645df410fc1e969cebb405701abd08", "sha256": "8fb684c517e9ad136565d21ba4a9c25a629fdfad7bbb6479840ef40ba954f824" }, "downloads": -1, "filename": "grokcore.view-2.10.zip", "has_sig": false, "md5_digest": "4a645df410fc1e969cebb405701abd08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 116453, "upload_time": "2014-07-29T08:45:26", "url": "https://files.pythonhosted.org/packages/11/6c/cd85d6baab3a8dce0fddd5a7748b2a5de7b76d86587c0342776ea93524ba/grokcore.view-2.10.zip" } ], "2.10.1": [ { "comment_text": "", "digests": { "md5": "afc0a81779007f0d910fbb063f4720bd", "sha256": "5b3869791667f0abd66ab4c7bcc18de407261a9c4d1e15d1f8aab9b346af6f75" }, "downloads": -1, "filename": "grokcore.view-2.10.1.zip", "has_sig": false, "md5_digest": "afc0a81779007f0d910fbb063f4720bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 140437, "upload_time": "2014-07-29T09:43:41", "url": "https://files.pythonhosted.org/packages/26/3c/a4177fce9de24ad2a17a59d34f232f3e3e1653b86fa10797d238e1f1519d/grokcore.view-2.10.1.zip" } ], "2.10.2": [ { "comment_text": "", "digests": { "md5": "ca5c00426dabd0eac0f930dd70142659", "sha256": "5f8bc14c28ac50ca595fdffc15bb4f6174c151824d4537f9f272c47ee22f9dab" }, "downloads": -1, "filename": "grokcore.view-2.10.2.tar.gz", "has_sig": false, "md5_digest": "ca5c00426dabd0eac0f930dd70142659", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70440, "upload_time": "2016-02-02T13:46:11", "url": "https://files.pythonhosted.org/packages/a1/b4/24fe9785875561e9b23d5b061eca24c5321c87c9377d13b0d58f967a3394/grokcore.view-2.10.2.tar.gz" } ], "2.11": [ { "comment_text": "", "digests": { "md5": "de81b8df94bf1194e8bdaca6f785a3f3", "sha256": "f48574718ce3a4a67b458a2b1aedc6da20b7f5278220ddfee1421b8f5501c3cb" }, "downloads": -1, "filename": "grokcore.view-2.11.tar.gz", "has_sig": false, "md5_digest": "de81b8df94bf1194e8bdaca6f785a3f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70433, "upload_time": "2016-05-09T09:02:29", "url": "https://files.pythonhosted.org/packages/31/24/fb85bc36d95d5fd3d4e6bf7f80ad34f7b5fc765163d24ff73cad07e9b43d/grokcore.view-2.11.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "d04933e418ada55aee4fe8b615c21dc9", "sha256": "6d9d8ae207889e2a1c19e5e90d643b2d2d37519416a46fe42176fa3758b9a0a5" }, "downloads": -1, "filename": "grokcore.view-2.2.tar.gz", "has_sig": false, "md5_digest": "d04933e418ada55aee4fe8b615c21dc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55563, "upload_time": "2010-12-16T10:48:07", "url": "https://files.pythonhosted.org/packages/84/11/8cecc973f79c3c12f44586f20bc0ea39e69c6f57cc9c0e83ff1da01d53d9/grokcore.view-2.2.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "8a98a1249085be125fae215524cbb4e4", "sha256": "3d76c9dcd9866f4fffc074d283229f612e690011797c05d2d4778d04f5d5065d" }, "downloads": -1, "filename": "grokcore.view-2.3.tar.gz", "has_sig": false, "md5_digest": "8a98a1249085be125fae215524cbb4e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57082, "upload_time": "2011-01-04T15:30:35", "url": "https://files.pythonhosted.org/packages/1e/f2/069527f78d46de912d0c3866b911e30d4a74a47c93e651b83075d3e54ac1/grokcore.view-2.3.tar.gz" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "66e30e5a19ee6d891c51f9f2cb50b4f3", "sha256": "a587d0accd78c2b306f9347a6fca5715e20e2cb6d6ab78abc3cc6b32e3fba315" }, "downloads": -1, "filename": "grokcore.view-2.4.tar.gz", "has_sig": false, "md5_digest": "66e30e5a19ee6d891c51f9f2cb50b4f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58390, "upload_time": "2011-03-01T11:10:35", "url": "https://files.pythonhosted.org/packages/2e/e0/4b41fb17569d07730ad128587618ee227dbc2b8db8c30784fbf8c75c5c62/grokcore.view-2.4.tar.gz" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "160bd81865b4507ed28dfae3e617ff1f", "sha256": "7439f4ba896d5ba105c7790c51bb9df60ae1c69ed325ecdebc2299b0c9bf4c53" }, "downloads": -1, "filename": "grokcore.view-2.5.tar.gz", "has_sig": false, "md5_digest": "160bd81865b4507ed28dfae3e617ff1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58502, "upload_time": "2011-04-04T13:53:17", "url": "https://files.pythonhosted.org/packages/5c/79/af1af6e81fe5ee4126d9df72996bf114cce0299ab5b84a6753d9518c6f1d/grokcore.view-2.5.tar.gz" } ], "2.6": [ { "comment_text": "", "digests": { "md5": "f4ff72d237855eafc42cd5d50a7b1121", "sha256": "95d8df69a17c47c8d0ef9298e36dac36b8820b302d68c29c33a1d699ace09427" }, "downloads": -1, "filename": "grokcore.view-2.6.tar.gz", "has_sig": false, "md5_digest": "f4ff72d237855eafc42cd5d50a7b1121", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62042, "upload_time": "2011-06-28T10:00:15", "url": "https://files.pythonhosted.org/packages/56/93/3b6c93dc28b6fa63cb5daa310fb670372fb517f76edb47a8b72028850b00/grokcore.view-2.6.tar.gz" } ], "2.6.1": [ { "comment_text": "", "digests": { "md5": "60b8b479625a7a504bda072ea0120618", "sha256": "2f986ad296eac169937bb9ced0d2ad87fa164e56407ad525f458270347cb912f" }, "downloads": -1, "filename": "grokcore.view-2.6.1.tar.gz", "has_sig": false, "md5_digest": "60b8b479625a7a504bda072ea0120618", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62239, "upload_time": "2011-06-28T13:36:16", "url": "https://files.pythonhosted.org/packages/e0/aa/a39e570a1e73932e34d589bf4c2ca0835a5c86bb2e3218b5cd9bdb25f15e/grokcore.view-2.6.1.tar.gz" } ], "2.7": [ { "comment_text": "", "digests": { "md5": "a0bcfe55267a8b55a3e7377465bc4dfb", "sha256": "f334b23b41e6241245020547077198e61e0f4b813a0a4f437c4f5e429e26965a" }, "downloads": -1, "filename": "grokcore.view-2.7.tar.gz", "has_sig": false, "md5_digest": "a0bcfe55267a8b55a3e7377465bc4dfb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68080, "upload_time": "2012-05-01T19:29:33", "url": "https://files.pythonhosted.org/packages/1a/50/03a85e1cce51644b79c503c2eb87fa6919bfc31fd842b720f81b689bd942/grokcore.view-2.7.tar.gz" } ], "2.8": [ { "comment_text": "", "digests": { "md5": "298e7f81cfea67f74805aadd09866f52", "sha256": "404f9d335f88d5af21b302ceae2722e642be1a5c566547c915b871b45472d982" }, "downloads": -1, "filename": "grokcore.view-2.8.tar.gz", "has_sig": false, "md5_digest": "298e7f81cfea67f74805aadd09866f52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69013, "upload_time": "2012-12-11T11:09:47", "url": "https://files.pythonhosted.org/packages/43/9b/38106077869a250067fba0ea7652d9884b68d942b1fb3c36a5f88a636439/grokcore.view-2.8.tar.gz" } ], "2.9": [ { "comment_text": "", "digests": { "md5": "80b861c7ebf459d427c86a25de21da87", "sha256": "30118fdd49fa9217b5811085e64d34b36953168488078df4d26b81079143e74f" }, "downloads": -1, "filename": "grokcore.view-2.9.zip", "has_sig": false, "md5_digest": "80b861c7ebf459d427c86a25de21da87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 143606, "upload_time": "2014-05-15T09:48:30", "url": "https://files.pythonhosted.org/packages/9d/b2/448b8db79f6ac8caee7cbc1aecf2d96d0f68b0c1626894a419fd92e4c3b0/grokcore.view-2.9.zip" } ], "3.0": [ { "comment_text": "", "digests": { "md5": "f323633ac0da1ee94459556e5abffc01", "sha256": "b5fb0dac3a54fc4d75cb8b4593806b301de3229e4426dfe232bcf8ae2e2dc820" }, "downloads": -1, "filename": "grokcore.view-3.0.tar.gz", "has_sig": false, "md5_digest": "f323633ac0da1ee94459556e5abffc01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71177, "upload_time": "2018-01-03T15:25:21", "url": "https://files.pythonhosted.org/packages/fa/72/2be13ec3d4d5681005f39b0698972732e7ddb5c25ab2dd9452087a03949e/grokcore.view-3.0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "4e8793ae6aedc34b57c9060abc7227e9", "sha256": "49fbcb765acf35e6b9bdc2b026f449cd77d51b5116ee3317c1d1975d50734ae3" }, "downloads": -1, "filename": "grokcore.view-3.0.1.tar.gz", "has_sig": false, "md5_digest": "4e8793ae6aedc34b57c9060abc7227e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70909, "upload_time": "2018-01-05T10:51:19", "url": "https://files.pythonhosted.org/packages/88/4a/aa2d5a6b0153a66c6a9fdd30f67c1a6e95d567c1daeb1cc450ccb2ac711b/grokcore.view-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "89699a47ffe8d28300e78249630878ae", "sha256": "ad4f38336d21ca71d10010705fdc9692abc627a9661cbe0c200f8a7ecba3947e" }, "downloads": -1, "filename": "grokcore.view-3.0.2.tar.gz", "has_sig": false, "md5_digest": "89699a47ffe8d28300e78249630878ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71375, "upload_time": "2018-01-05T12:31:47", "url": "https://files.pythonhosted.org/packages/4c/d6/5d36973c983e0d9e007569b5eb08874e0d582ae9c5c13ce8fd39a653197b/grokcore.view-3.0.2.tar.gz" } ], "3.0.3": [ { "comment_text": "", "digests": { "md5": "18740eebd1484f770f895f89cde578a5", "sha256": "3cc6b437623e93777784099d69121284f2defb9638fa0c1c44302d65b14cb9e9" }, "downloads": -1, "filename": "grokcore.view-3.0.3.tar.gz", "has_sig": false, "md5_digest": "18740eebd1484f770f895f89cde578a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70431, "upload_time": "2018-01-12T12:38:20", "url": "https://files.pythonhosted.org/packages/76/a7/9c25e4b3daf25d04f0cc51bddcb42b565e8446c87692d504ef84827e9318/grokcore.view-3.0.3.tar.gz" } ], "3.1": [ { "comment_text": "", "digests": { "md5": "b3aabb1aea49efdb8224a148d1b86596", "sha256": "c7dee30259f27f8007eaa3df53a492add92ee2bf4bb09070fcd639159f0f17be" }, "downloads": -1, "filename": "grokcore.view-3.1.tar.gz", "has_sig": false, "md5_digest": "b3aabb1aea49efdb8224a148d1b86596", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69575, "upload_time": "2018-06-13T09:31:31", "url": "https://files.pythonhosted.org/packages/25/a4/d3b518c9e408542ed7ea9c99e244a35dc3cd14363c105ef4c1c2748263a5/grokcore.view-3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b3aabb1aea49efdb8224a148d1b86596", "sha256": "c7dee30259f27f8007eaa3df53a492add92ee2bf4bb09070fcd639159f0f17be" }, "downloads": -1, "filename": "grokcore.view-3.1.tar.gz", "has_sig": false, "md5_digest": "b3aabb1aea49efdb8224a148d1b86596", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69575, "upload_time": "2018-06-13T09:31:31", "url": "https://files.pythonhosted.org/packages/25/a4/d3b518c9e408542ed7ea9c99e244a35dc3cd14363c105ef4c1c2748263a5/grokcore.view-3.1.tar.gz" } ] }