{ "info": { "author": "Roger Ineichen and the Zope Community", "author_email": "zope-dev@zope.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Zope :: 3", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP" ], "description": ".. image:: https://img.shields.io/pypi/v/z3c.macro.svg\n :target: https://pypi.python.org/pypi/z3c.macro/\n :alt: Latest release\n\n.. image:: https://img.shields.io/pypi/pyversions/z3c.macro.svg\n :target: https://pypi.org/project/z3c.macro/\n :alt: Supported Python versions\n\n.. image:: https://travis-ci.org/zopefoundation/z3c.macro.svg?branch=master\n :target: https://travis-ci.org/zopefoundation/z3c.macro\n\n.. image:: https://coveralls.io/repos/github/zopefoundation/z3c.macro/badge.svg?branch=master\n :target: https://coveralls.io/github/zopefoundation/z3c.macro?branch=master\n\nThis package provides an adapter and a TALES expression for a more explicit and\nmore flexible macro handling using the adapter registry for macros.\n\n\nDetailed Documentation\n======================\n\n\n=====\nMacro\n=====\n\nThis package provides a adapter and a TALES expression for a expliciter and\nflexibler macro handling using the adapter registry for macros.\n\nWe start with creating a content object that is used as a view context later:\n\n >>> import zope.interface\n >>> import zope.component\n >>> from zope.publisher.interfaces.browser import IBrowserView\n >>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer\n >>> @zope.interface.implementer(zope.interface.Interface)\n ... class Content(object):\n ... pass\n\n >>> content = Content()\n\nWe also create a temp dir for sample templates which we define later for\ntesting:\n\n >>> import os, tempfile\n >>> temp_dir = tempfile.mkdtemp()\n\n\nMacro Template\n--------------\n\nWe define a macro template as a adapter providing IMacroTemplate:\n\n >>> path = os.path.join(temp_dir, 'navigation.pt')\n >>> with open(path, 'w') as file:\n ... _ = file.write('''\n ... \n ...
---
\n ...
\n ... ''')\n\nLet's define the macro factory\n\n >>> from z3c.macro import interfaces\n >>> from z3c.macro import zcml\n >>> navigationMacro = zcml.MacroFactory(path, 'navigation', 'text/html')\n\nand register them as adapter:\n\n >>> zope.component.provideAdapter(\n ... navigationMacro,\n ... (zope.interface.Interface, IBrowserView, IDefaultBrowserLayer),\n ... interfaces.IMacroTemplate,\n ... name='navigation')\n\n\nThe TALES ``macro`` Expression\n------------------------------\n\nThe ``macro`` expression will look up the name of the macro, call a adapter\nproviding IMacroTemplate and uses them or fills a slot if defined in the\n``macro`` expression.\n\nLet's create a page template using the ``navigation`` macros:\n\n >>> path = os.path.join(temp_dir, 'first.pt')\n >>> with open(path, 'w') as file:\n ... _ = file.write('''\n ... \n ... \n ...

First Page

\n ...
\n ... \n ... \n ... \n ...
\n ...
\n ... Content here\n ...
\n ... \n ... \n ... ''')\n\nAs you can see, we used the ``macro`` expression to simply look up a macro\ncalled navigation whihc get inserted and replaces the HTML content at this\nplace.\n\nLet's now create a view using this page template:\n\n >>> from zope.publisher.browser import BrowserView\n >>> class simple(BrowserView):\n ... def __getitem__(self, name):\n ... return self.index.macros[name]\n ...\n ... def __call__(self, **kwargs):\n ... return self.index(**kwargs)\n\n >>> from zope.browserpage.viewpagetemplatefile import ViewPageTemplateFile\n >>> def SimpleViewClass(path, name=u''):\n ... return type(\n ... \"SimpleViewClass\", (simple,),\n ... {'index': ViewPageTemplateFile(path), '__name__': name})\n\n >>> FirstPage = SimpleViewClass(path, name='first.html')\n\n >>> zope.component.provideAdapter(\n ... FirstPage,\n ... (zope.interface.Interface, IDefaultBrowserLayer),\n ... zope.interface.Interface,\n ... name='first.html')\n\nFinally we look up the view and render it:\n\n >>> from zope.publisher.browser import TestRequest\n >>> request = TestRequest()\n\n >>> view = zope.component.getMultiAdapter((content, request),\n ... name='first.html')\n >>> print(view().strip())\n \n \n

First Page

\n
\n
My Navigation
\n
\n
\n Content here\n
\n \n \n\n\nSlot\n----\n\nWe can also define a macro slot and fill it with given content:\n\n >>> path = os.path.join(temp_dir, 'addons.pt')\n >>> with open(path, 'w') as file:\n ... _ = file.write('''\n ... \n ... Content before header\n ... \n ...
My Header
\n ...
\n ... Content after header\n ...
\n ... ''')\n\nLet's define the macro factory\n\n >>> addonsMacro = zcml.MacroFactory(path, 'addons', 'text/html')\n\nand register them as adapter:\n\n >>> zope.component.provideAdapter(\n ... addonsMacro,\n ... (zope.interface.Interface, IBrowserView, IDefaultBrowserLayer),\n ... interfaces.IMacroTemplate,\n ... name='addons')\n\nLet's create a page template using the ``addons`` macros:\n\n >>> path = os.path.join(temp_dir, 'second.pt')\n >>> with open(path, 'w') as file:\n ... _ = file.write('''\n ... \n ... \n ...

Second Page

\n ...
\n ... \n ... This line get ignored\n ... \n ... Header comes from here\n ... \n ... This line get ignored\n ... \n ...
\n ... \n ... \n ... ''')\n\nLet's now create a view using this page template:\n\n >>> SecondPage = SimpleViewClass(path, name='second.html')\n\n >>> zope.component.provideAdapter(\n ... SecondPage,\n ... (zope.interface.Interface, IDefaultBrowserLayer),\n ... zope.interface.Interface,\n ... name='second.html')\n\nFinally we look up the view and render it:\n\n >>> view = zope.component.getMultiAdapter((content, request),\n ... name='second.html')\n >>> print(view().strip())\n \n \n

Second Page

\n
\n \n Content before header\n \n Header comes from here\n \n Content after header\n
\n \n \n\n\nCleanup\n-------\n\n >>> import shutil\n >>> shutil.rmtree(temp_dir)\n\n\n\n=================\n macro directive\n=================\n\nA macro directive can be used for register macros. Take a look at the\nREADME.txt which explains the macro TALES expression.\n\n >>> import sys\n >>> from zope.configuration import xmlconfig\n >>> import z3c.template\n >>> context = xmlconfig.file('meta.zcml', z3c.macro)\n\nFirst define a template which defines a macro:\n\n >>> import os, tempfile\n >>> temp_dir = tempfile.mkdtemp()\n >>> file_path = os.path.join(temp_dir, 'file.pt')\n >>> with open(file_path, 'w') as file:\n ... _ = file.write('''\n ... \n ... \n ... \n ... Pagelet skin\n ... \n ... \n ... \n ...
content
\n ... \n ... \n ... ''')\n\nand register the macro provider within the ``z3c:macroProvider`` directive:\n\n >>> context = xmlconfig.string(\"\"\"\n ... \n ... \n ... \n ... \"\"\" % file_path, context=context)\n\nWe need a content object...\n\n >>> import zope.interface\n >>> @zope.interface.implementer(zope.interface.Interface)\n ... class Content(object):\n ... pass\n >>> content = Content()\n\nand we need a view...\n\n >>> import zope.interface\n >>> import zope.component\n >>> from zope.publisher.browser import BrowserPage\n >>> class View(BrowserPage):\n ... def __init__(self, context, request):\n ... self.context = context\n ... self.request = request\n\nand we need a request:\n >>> from zope.publisher.browser import TestRequest\n >>> request = TestRequest()\n\nCheck if we get the macro template:\n\n >>> from z3c.macro import interfaces\n >>> view = View(content, request)\n\n >>> macro = zope.component.queryMultiAdapter((content, view, request),\n ... interface=interfaces.IMacroTemplate, name='title')\n\n >>> macro is not None\n True\n\n >>> import os, tempfile\n >>> temp_dir = tempfile.mkdtemp()\n >>> test_path = os.path.join(temp_dir, 'test.pt')\n >>> with open(test_path, 'w') as file:\n ... _ = file.write('''\n ... \n ... \n ... \n ... \n ... \n ... ''')\n\n >>> from zope.browserpage.viewpagetemplatefile import BoundPageTemplate\n >>> from zope.browserpage.viewpagetemplatefile import ViewPageTemplateFile\n >>> template = ViewPageTemplateFile(test_path)\n >>> print(BoundPageTemplate(template, view)(macro=macro))\n \n \n Pagelet skin\n \n \n\nError Conditions\n================\n\nIf the file is not available, the directive fails:\n\n >>> context = xmlconfig.string(\"\"\"\n ... \n ... \n ... \n ... \"\"\", context=context)\n Traceback (most recent call last):\n ...\n zope.configuration.exceptions.ConfigurationError: ...\n\n\n=======\nCHANGES\n=======\n\n2.2.1 (2018-12-05)\n------------------\n\n- Fix list of supported Python versions in Trove classifiers: The currently\n supported Python versions are 2.7, 3.6, 3.7, PyPy2 and PyPy3.\n\n- Flake8 the code.\n\n\n2.2.0 (2018-11-13)\n------------------\n\n- Removed Python 3.5 support, added Python 3.7.\n\n- Fixed up tests.\n\n- Fix docstring that caused DeprecationWarning.\n\n\n2.1.0 (2017-10-17)\n------------------\n\n- Drop support for Python 2.6 and 3.3.\n\n- Add support for Python 3.4, 3.5 and 3.6.\n\n- Add support for PyPy.\n\n\n2.0.0 (2015-11-09)\n------------------\n\n- Standardize namespace ``__init__``.\n\n\n2.0.0a1 (2013-02-25)\n--------------------\n\n- Added support for Python 3.3.\n\n- Replaced deprecated ``zope.interface.implements`` usage with equivalent\n ``zope.interface.implementer`` decorator.\n\n- Dropped support for Python 2.4 and 2.5.\n\n\n1.4.2 (2012-02-15)\n------------------\n\n- Remove hooks to use ViewPageTemplateFile from z3c.pt because this breaks when\n z3c.pt is available, but z3c.ptcompat is not included. As recommended by notes\n in 1.4.0 release.\n\n\n1.4.1 (2011-11-15)\n------------------\n\n- bugfix, missing comma in setup install_requires list\n\n\n1.4.0 (2011-10-29)\n------------------\n\n- Moved z3c.pt include to extras_require chameleon. This makes the package\n independent from chameleon and friends and allows to include this\n dependencies in your own project.\n\n- Upgrade to chameleon 2.0 template engine and use the newest z3c.pt and\n z3c.ptcompat packages adjusted to work with chameleon 2.0.\n\n See the notes from the z3c.ptcompat package:\n\n Update z3c.ptcompat implementation to use component-based template engine\n configuration, plugging directly into the Zope Toolkit framework.\n\n The z3c.ptcompat package no longer provides template classes, or ZCML\n directives; you should import directly from the ZTK codebase.\n\n Note that the ``PREFER_Z3C_PT`` environment option has been\n rendered obsolete; instead, this is now managed via component\n configuration.\n\n Also note that the chameleon CHAMELEON_CACHE environment value changed from\n True/False to a path. Skip this property if you don't like to use a cache.\n None or False defined in buildout environment section doesn't work. At least\n with chameleon <= 2.5.4\n\n Attention: You need to include the configure.zcml file from z3c.ptcompat\n for enable the z3c.pt template engine. The configure.zcml will plugin the\n template engine. Also remove any custom built hooks which will import\n z3c.ptcompat in your tests or other places.\n\n\n1.3.0 (2010-07-05)\n------------------\n\n- Tests now require ``zope.browserpage >= 3.12`` instead of\n ``zope.app.pagetemplate`` as the expression type registration has\n been moved there recently.\n\n- No longer using deprecated ``zope.testing.doctestunit`` but built-in\n ``doctest`` instead.\n\n\n1.2.1 (2009-03-07)\n------------------\n\n- Presence of ``z3c.pt`` is not sufficient to register macro-utility,\n ``chameleon.zpt`` is required otherwise the factory for the utility\n is not defined.\n\n\n1.2.0 (2009-03-07)\n------------------\n\n- Allow use of ``z3c.pt`` using ``z3c.ptcompat`` compatibility layer.\n\n- Change package's mailing list address to zope-dev at zope.org.\n\n\n1.1.0 (2007-11-01)\n------------------\n\n- Update package info data.\n\n- Add z3c namespace package declaration.\n\n\n1.0.0 (2007-09-30)\n------------------\n\n- Initial release.\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/zopefoundation/z3c.macro", "keywords": "zope3 macro pagetemplate zpt", "license": "ZPL 2.1", "maintainer": "", "maintainer_email": "", "name": "z3c.macro", "package_url": "https://pypi.org/project/z3c.macro/", "platform": "", "project_url": "https://pypi.org/project/z3c.macro/", "project_urls": { "Homepage": "https://github.com/zopefoundation/z3c.macro" }, "release_url": "https://pypi.org/project/z3c.macro/2.2.1/", "requires_dist": [ "setuptools", "zope.component", "zope.configuration", "zope.interface", "zope.pagetemplate (>=3.6.2)", "zope.publisher", "zope.schema", "zope.tales", "z3c.pt (>=2.1); extra == 'chameleon'", "z3c.ptcompat (>=1.0); extra == 'chameleon'", "z3c.pt (>=2.1); extra == 'test'", "z3c.ptcompat (>=1.0); extra == 'test'", "z3c.template; extra == 'test'", "zope.browserpage (>=3.12); extra == 'test'", "zope.testing; extra == 'test'", "zope.testrunner; extra == 'test'" ], "requires_python": "", "summary": "Simpler definition of ZPT macros.", "version": "2.2.1" }, "last_serial": 4565210, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "820ab436813ed04f78a9ac455874fbd4", "sha256": "db1ee54d435b7d402f850d1b3ad9d965138d02a18d6e9f0c0d7b4a49423db302" }, "downloads": -1, "filename": "z3c.macro-1.0.0-py2.4.egg", "has_sig": false, "md5_digest": "820ab436813ed04f78a9ac455874fbd4", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 17476, "upload_time": "2007-05-22T17:46:53", "url": "https://files.pythonhosted.org/packages/69/a0/47d4320e29cb8ea933791a3bcd3d9e493dab6f558766588cbe45402560a2/z3c.macro-1.0.0-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "70425f0047e3c3429250d0facbebdf9f", "sha256": "dc58a73ec7030d200fa72e28a882bf0d308e8eaaed4bbb864f6c4ee4061d1ff4" }, "downloads": -1, "filename": "z3c.macro-1.0.0.tar.gz", "has_sig": false, "md5_digest": "70425f0047e3c3429250d0facbebdf9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7792, "upload_time": "2007-05-22T17:45:29", "url": "https://files.pythonhosted.org/packages/c8/7d/da887673bef3095e512a464fe80cfb5a31f7c6330937dc99a2dd9afe3427/z3c.macro-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "9a898b27aceeb6e1952f1412c1759c08", "sha256": "df3cc6fe3d199a36d65e620db5e28b9117ea97870c0114933267cdf76fc475ae" }, "downloads": -1, "filename": "z3c.macro-1.1.0.tar.gz", "has_sig": false, "md5_digest": "9a898b27aceeb6e1952f1412c1759c08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8305, "upload_time": "2007-11-01T19:47:34", "url": "https://files.pythonhosted.org/packages/7a/c2/7bdca87316016d897af154bb4b7759df0e053b989a8be39bc545cd0e4a42/z3c.macro-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "1fa495fb6eb8b92b48bb5bf397130dde", "sha256": "ca49d10263cecb557181e59c789787911f030f127e4a539d3b3f75efe8b6204b" }, "downloads": -1, "filename": "z3c.macro-1.2.0.tar.gz", "has_sig": false, "md5_digest": "1fa495fb6eb8b92b48bb5bf397130dde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9249, "upload_time": "2009-03-06T22:08:49", "url": "https://files.pythonhosted.org/packages/9a/c0/65cd92c148cefff06e62503ba77c2c299a7dc704fe75866f322ca19c417a/z3c.macro-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "4d85f8bcbd83fec99b2bd95804821831", "sha256": "3d3c4c35a71a84ea6acd370ba8df391933418f6a3bd7c79312a244ab64298250" }, "downloads": -1, "filename": "z3c.macro-1.2.1.tar.gz", "has_sig": false, "md5_digest": "4d85f8bcbd83fec99b2bd95804821831", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10574, "upload_time": "2009-03-07T14:46:04", "url": "https://files.pythonhosted.org/packages/1d/9f/7d926f6bba8406ca25ad93dff213988e644d9482c4c1ba065d5f3f2682df/z3c.macro-1.2.1.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "bd9ad67e942c8d622c2b30c678916af6", "sha256": "8e175c191b2aee07336d390fc3f76cff7e8479d939ea29ce0ec633c186af158f" }, "downloads": -1, "filename": "z3c.macro-1.3.0.tar.gz", "has_sig": false, "md5_digest": "bd9ad67e942c8d622c2b30c678916af6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10485, "upload_time": "2010-07-05T08:45:20", "url": "https://files.pythonhosted.org/packages/21/64/772ee3d4b14a1f60f00c33f5e0f60d19a987301e79341c284b5d85138216/z3c.macro-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "cf4d95cc7b3657115800681439e27239", "sha256": "0d5bca404c7ff93737dca7d4a9d4d2c0f6218c623d346deba3c3875b7f9927a3" }, "downloads": -1, "filename": "z3c.macro-1.4.0.zip", "has_sig": false, "md5_digest": "cf4d95cc7b3657115800681439e27239", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24344, "upload_time": "2011-10-29T23:12:29", "url": "https://files.pythonhosted.org/packages/a3/48/12f69d525e985f78e25fce543cf16efe5fb8241678b674b5b66f1b7b18a3/z3c.macro-1.4.0.zip" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "be1ba9d9085134b71684fcb80a186b7b", "sha256": "6232f68f6ea24824dd26b272d3309ba8e20ad7996ea33cd2bb3a288709f8ca05" }, "downloads": -1, "filename": "z3c.macro-1.4.1.zip", "has_sig": false, "md5_digest": "be1ba9d9085134b71684fcb80a186b7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24453, "upload_time": "2011-11-15T18:50:41", "url": "https://files.pythonhosted.org/packages/fe/5d/cfa12f9a40971dd4cf8fa0f6f36687225a4e0704d2fcd51f6d2fd4c4c8ef/z3c.macro-1.4.1.zip" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "a96768ed123c73ac1b7383cbecd1e7fc", "sha256": "2d99f5d2f1e41e7d8f138862dc9b047c3f106ae8ca9848f2edbb0b987f8830b3" }, "downloads": -1, "filename": "z3c.macro-1.4.2.tar.gz", "has_sig": false, "md5_digest": "a96768ed123c73ac1b7383cbecd1e7fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13314, "upload_time": "2012-02-15T19:17:34", "url": "https://files.pythonhosted.org/packages/34/13/31b765563dd6ad67c848c76bce346eee85fe58734c7ffa15773a2bf6b7ac/z3c.macro-1.4.2.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "f8489d50a57da9a81d76025cb2b672f0", "sha256": "bc847ce2318fdd4d08a3526a0888234ee4a7acea8d514b30d0c4338ed7c4f657" }, "downloads": -1, "filename": "z3c.macro-2.0.0.tar.gz", "has_sig": false, "md5_digest": "f8489d50a57da9a81d76025cb2b672f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16036, "upload_time": "2015-11-09T14:24:55", "url": "https://files.pythonhosted.org/packages/35/b2/d33e269ecaafbc69139f3ad2f4b3310280f13cf39c24cc43ecd42c9b947c/z3c.macro-2.0.0.tar.gz" } ], "2.0.0a1": [ { "comment_text": "", "digests": { "md5": "7b1cf23e49fc53efa5531e81b1f5946b", "sha256": "1db14bc3fd7c7f13f9a8d3ffc9465d53978ae0c2479f41d6f30ddc42f6e9fd5a" }, "downloads": -1, "filename": "z3c.macro-2.0.0a1.zip", "has_sig": false, "md5_digest": "7b1cf23e49fc53efa5531e81b1f5946b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26469, "upload_time": "2013-02-25T07:16:37", "url": "https://files.pythonhosted.org/packages/0d/65/15f595f1f8b3bfde3ea401afaf2547d9c64d41981987b087fd375eb805ab/z3c.macro-2.0.0a1.zip" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "ad3415f0a1af9345fde10972f17efc2b", "sha256": "0aad1bc7976cb1e15d05e6944d669b94c98d55323f94f8846b50659eb7275836" }, "downloads": -1, "filename": "z3c.macro-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad3415f0a1af9345fde10972f17efc2b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19941, "upload_time": "2017-10-17T13:18:37", "url": "https://files.pythonhosted.org/packages/fd/91/d078ba72586865d4c072e8ed88588f0dae4669d24e0c35b6faf169ee43eb/z3c.macro-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db19614a67f4bd514e74c5dcd81dbd08", "sha256": "8072efb8e7c17a3f53131741015f61bccf4542b8fd5ab5e13c0a8ec02cf8a90c" }, "downloads": -1, "filename": "z3c.macro-2.1.0.tar.gz", "has_sig": false, "md5_digest": "db19614a67f4bd514e74c5dcd81dbd08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17966, "upload_time": "2017-10-17T13:18:39", "url": "https://files.pythonhosted.org/packages/d4/42/44af709a5c1818cdc5cf777a059c097d8d50b15b25e07f6fe56ebdf407df/z3c.macro-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "7502be9798e7897cd46880cbb7a02715", "sha256": "b56a933f58c86e18beb3326f879d2832353c6c001ec838d593996e2c56ac8d8f" }, "downloads": -1, "filename": "z3c.macro-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7502be9798e7897cd46880cbb7a02715", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15075, "upload_time": "2018-11-13T12:34:31", "url": "https://files.pythonhosted.org/packages/99/d8/a63383307ad4c3a4df751a10b182b3675a68f0df6d00044c886c71d17c9d/z3c.macro-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b6ad1a6f41f5e46be584ec06d822d07", "sha256": "8bfcbbb80abc2afd72651ee7f0aca8a1e9984cb0acaa6faa3ec5904db187fdcb" }, "downloads": -1, "filename": "z3c.macro-2.2.0.tar.gz", "has_sig": false, "md5_digest": "5b6ad1a6f41f5e46be584ec06d822d07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18496, "upload_time": "2018-11-13T12:34:33", "url": "https://files.pythonhosted.org/packages/8f/ca/967506cba7c53b873c97ea4500f677563579718ada4ed4e1b4cad61658e2/z3c.macro-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "494ebee636ced1b680cdd866653690d9", "sha256": "c9c3243e0f73a3061c5c315d6dae6c332aca6868c42c56cd4ff2971a936c0620" }, "downloads": -1, "filename": "z3c.macro-2.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "494ebee636ced1b680cdd866653690d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20019, "upload_time": "2018-12-05T19:48:45", "url": "https://files.pythonhosted.org/packages/1a/aa/ce93a465d30fc2c671444db8e54f821c0289c8e4c906520cc4cd597b463f/z3c.macro-2.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a53e030917cdb12b4ef6812e4a599724", "sha256": "0caa0fe0e83095f71ae283aeb03ac210d7df50588e9034d07a7bd817eccef989" }, "downloads": -1, "filename": "z3c.macro-2.2.1.tar.gz", "has_sig": false, "md5_digest": "a53e030917cdb12b4ef6812e4a599724", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16070, "upload_time": "2018-12-05T19:48:48", "url": "https://files.pythonhosted.org/packages/b9/11/b6c0c81794b427bb1cacb873ed54360f8eabaf78ab2cb4136de69a43f9d3/z3c.macro-2.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "494ebee636ced1b680cdd866653690d9", "sha256": "c9c3243e0f73a3061c5c315d6dae6c332aca6868c42c56cd4ff2971a936c0620" }, "downloads": -1, "filename": "z3c.macro-2.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "494ebee636ced1b680cdd866653690d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20019, "upload_time": "2018-12-05T19:48:45", "url": "https://files.pythonhosted.org/packages/1a/aa/ce93a465d30fc2c671444db8e54f821c0289c8e4c906520cc4cd597b463f/z3c.macro-2.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a53e030917cdb12b4ef6812e4a599724", "sha256": "0caa0fe0e83095f71ae283aeb03ac210d7df50588e9034d07a7bd817eccef989" }, "downloads": -1, "filename": "z3c.macro-2.2.1.tar.gz", "has_sig": false, "md5_digest": "a53e030917cdb12b4ef6812e4a599724", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16070, "upload_time": "2018-12-05T19:48:48", "url": "https://files.pythonhosted.org/packages/b9/11/b6c0c81794b427bb1cacb873ed54360f8eabaf78ab2cb4136de69a43f9d3/z3c.macro-2.2.1.tar.gz" } ] }