{ "info": { "author": "William Minchin", "author_email": "w_minchin@hotmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Web Environment", "Framework :: Pelican :: Plugins", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Multimedia :: Graphics", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "==============\n Image Process\n==============\n\n*Image Process* is a plugin for `Pelican `_,\na static site generator written in Python.\n\n*Image Process* let you automate the processing of images based on their\nclass attribute. Use this plugin to minimize the overall page weight\nand to save you a trip to Gimp or Photoshop each time you include an\nimage in your post.\n\n*Image Process* also makes it easy to create responsive images using\nthe new HTML5 ``srcset`` attribute and ```` tag. It does this\nby generating multiple derivative images from one or more sources.\n\n*Image Process* will not overwrite your original images.\n\n\nInstallation\n============\n\nThe easiest way to install *Image Process* is through the use of pip. This\nwill also install the required dependencies automatically.\n\n.. code-block:: sh\n\n pip install minchin.pelican.plugins.image_process\n\nThen, in your ``pelicanconf.py`` file, add *Image Process* to your list of\nplugins:\n\n.. code-block:: python\n\n PLUGINS = [\n # ...\n 'minchin.pelican.plugins.image_process',\n # ...\n ]\n\nYou will also need to configure your desired transformations (see *Usage*\nbelow) and add the appropriate class to images you want processed.\n\n\nRequirements\n============\n\n*Image Process* requires Beautiful Soup, Pillow, Six, and Pelican. All\nthese can be manually installed with pip:\n\n.. code-block:: sh\n\n pip install pillow beautifulsoup4 six pelican\n\nIf you encounter errors while processing JPEG files, you may need to install\nthe JPEG development library:\n\n.. code-block:: sh\n\n pip uninstall pillow\n apt-get install libjpeg-dev\n pip install pillow\n\n\nUsage\n=====\n\n*Image Process* scans your content for ```` tags with special\nclasses. It then maps the classes to a set of image processing\ninstructions, computes new images and modifies HTML code according to\nthe instructions.\n\nDefine Transformations\n----------------------\n\nThe first step in using this module is to define some image\ntransformations in your Pelican configuration file. Transformations\nare defined in the ``IMAGE_PROCESS`` dictionary, mapping a\ntransformation name to a list of operations. There are three kinds of\ntransformations: image replacement, responsive image and picture set.\n\nImage Replacement\n~~~~~~~~~~~~~~~~~\n\nThe simplest image processing will replace the original image by a\nnew, transformed image computed from the original. You may use this,\nfor example, to ensure that all images are of the same size, or to\ncompute a thumbnail from a larger image:\n\n.. code-block:: python\n\n IMAGE_PROCESS = {\n 'article-image': [\"scale_in 300 300 True\"],\n 'thumb': [\"crop 0 0 50% 50%\", \"scale_out 150 150 True\", \"crop 0 0 150 150\"],\n }\n\nThese transformations tell *Image Process* to transform the image\nreferred by the ``src`` attribute of an ```` according to the\nlist of operations specified and replace the ``src`` attribute by the\nURL of the transformed image.\n\nFor consistency with the other type of transformations described\nbelow, there is an alternative syntax for the processing instructions:\n\n.. code-block:: python\n\n IMAGE_PROCESS = {\n 'thumb': {'type': 'image',\n 'ops': [\"crop 0 0 50% 50%\", \"scale_out 150 150 True\", \"crop 0 0 150 150\"],\n },\n 'article-image': {'type': 'image',\n 'ops': [\"scale_in 300 300 True\"],\n }\n }\n\n\nTo apply image replacement to the images in your articles, you must\nadd them the special class ``image-process-`` followed by the name of\nthe transformation you wish to apply. For example, let's pretend you\nhave defined the transformation described above. If you write your\ncontent in HTML or in Markdown, do something like this:\n\n.. code-block:: html\n\n \n\n\nIn reStructuredText, use the ``:class:`` attribute of the ``image`` or\nthe ``figure`` directive:\n\n.. code-block:: rst\n\n .. image:: /images/pelican.png\n :class: image-process-article-image\n\n .. figure:: /images/pelican.png\n :class: image-process-article-image\n\n.. note::\n\n The reStructuredText reader will convert underscores (``_``) to\n dashes (``-``) in class names. To make sure everything runs\n smoothly, do not use underscores in your transformation names.\n\n\nResponsive Image\n~~~~~~~~~~~~~~~~\n\nYou can use *Image Process* to automatically generate a set of\nimages that will be selected for display by browsers according to the\nviewport width or according to the device resolution. To accomplish\nthis, *Image Process* will add a ``srcset`` attribute (and maybe a\n``media`` and a ``sizes`` attribute) to the ````.\n\nNote that the ``srcset`` syntax is currently not supported by all\nbrowsers. However, browsers who do not support the ``srcset``\nattribute will fall back to a default image specified by the\nstill-present ``src`` attribute. See `Can I Use`_ for the current\nstatus on ``srcset`` support.\n\n.. _Can I Use: http://caniuse.com/#feat=srcset\n\nHTML5 supports two types of responsive image set. The first one is\ndevice-pixel-ratio-based, selecting higher resolution images for higher\nresolution devices; the second one is viewport-based, selecting\nimages according to the viewport width. If you want to know more about\nHTML5 responsive images, I recommend `this article`_ for a gentle\nintroduction to the ``srcset`` and ```` syntaxes.\n\n.. _this article: http://www.smashingmagazine.com/2014/05/14/responsive-images-done-right-guide-picture-srcset/\n\nTo tell *Image Process* to generate a responsive image, add a\n``responsive-image`` transformation to your your ``IMAGE_PROCESS``\ndictionary, with the following syntax:\n\n.. code-block:: python\n\n IMAGE_PROCESS = {\n 'crisp': {'type': 'responsive-image',\n 'srcset': [('1x', [\"scale_in 800 600 True\"]),\n ('2x', [\"scale_in 1600 1200 True\"]),\n ('4x', [\"scale_in 3200 2400 True\"]),\n ],\n 'default': '1x',\n },\n 'large-photo': {'type': 'responsive-image',\n 'sizes': '(min-width: 1200px) 800px, (min-width: 992px) 650px, \\\n (min-width: 768px) 718px, 100vw',\n 'srcset': [('600w', [\"scale_in 600 450 True\"]),\n ('800w', [\"scale_in 800 600 True\"]),\n ('1600w', [\"scale_in 1600 1200 True\"]),\n ],\n 'default': '800w',\n },\n }\n\nThe ``crisp`` transformation is an example of a transformation\nenabling device-pixel-ratio-based selection. The ``srcset`` is a list\nof tuple, each tuple containing the image description (``'1x'``,\n``'2x'``, etc.) and the list of operations to generate the derivative\nimage from the original image (the original image is the value of the\n``src`` attribute of the ````). Image descriptions are hints\nabout the resolution of the associated image and must have the suffix\n``x``. The ``default`` names the image to use to replace the ``src``\nattribute of the image. This is the image that will be displayed by\nbrowsers that do not support the ``srcset`` syntax.\n\nThe ``large-photo`` transformation is an example of a transformation\nenabling viewport-based selection. The ``sizes`` contains a rule to\ncompute the width of the displayed image from the width of the\nviewport. Once the browser knows the image width, it will select an\nimage source from the ``srcset``. The ``srcset`` is a list of tuple,\neach tuple containing the image description (``'600w'``, ``'800w'``,\netc.) and the list of operations to generate the derivative image from\nthe original image (the original image is the value of the ``src``\nattribute of the ````). Image descriptions are hints about the\nwidth in pixels of the associated image and must have the suffix\n``w``. The ``default`` names the image to use to replace the ``src``\nattribute of the image. This is the image that will be displayed by\nbrowsers that do not support the ``srcset`` syntax.\n\nIn the two examples above, the ``default`` is a string referring to\none of the images in the ``srcset``. However, the ``default`` value\ncould also be a list of operations to generate a different derivative\nimage.\n\nTo make the images in your article responsive, you must add them the\nspecial class ``image-process-`` followed by the name of the\ntransformation you wish to apply, exactly like you would do for the\nimage replacement case, described above. So, if you write your content\nin HTML or in Markdown, do something like this:\n\n.. code-block:: html\n\n \n\n\nIn reStructuredText, use the ``:class:`` attribute of the ``image`` of\nthe ``figure`` directive:\n\n.. code-block:: rst\n\n .. image:: /images/pelican.png\n :class: image-process-large-photo\n\n .. figure:: /images/pelican.png\n :class: image-process-large-photo\n\n\nPicture Set\n~~~~~~~~~~~\n\n*Image Process* can be use to generate the images used by a\n```` tag. The ```` syntax allows for more\nflexibility in providing a choice of image to the browser. Again, if\nyou want to know more about HTML5 responsive images, see `this\narticle`_ for a gentle introduction to the ``srcset`` and\n```` syntaxes.\n\nTo tell *Image Process* to generate the images for a ````,\nadd a ``picture`` entry to your ``IMAGE_PROCESS`` dictionary with the\nfollowing syntax:\n\n.. code-block:: python\n\n IMAGE_PROCESS = {\n 'example-pict': {'type': 'picture',\n 'sources': [{'name': 'default',\n 'media': '(min-width: 640px)',\n 'srcset': [('640w', [\"scale_in 640 480 True\"]),\n ('1024w', [\"scale_in 1024 683 True\"]),\n ('1600w', [\"scale_in 1600 1200 True\"]),\n ],\n 'sizes': '100vw',\n },\n {'name': 'source-1',\n 'srcset': [('1x', [\"crop 100 100 200 200\"]),\n ('2x', [\"crop 100 100 300 300\"]),\n ]\n }\n ],\n 'default': ('default', '640w'),\n },\n }\n\nEach of the ``sources`` entry is very similar to the ``responsive\nimage`` describe above. Here, each source must have a ``name``, which\nwill be used to find the URL of the original image for this source in\nyour article. The source may also have a ``media``, which contains a\nrule used by the browser to select the active source. The ``default``\nnames the image to use to replace the ``src`` attribute of the\n```` inside the ````. This is the image that will be\ndisplayed by browsers that do not support the ```` syntax. In\nthis example, it will use the image ``640w`` from the source\n``default``. A list of operations could have been specified instead of\n``640w``.\n\nTo generate a responsive ```` for the images in your\narticles, you must add to your article a pseudo ```` tag that\nlooks like this:\n\n.. code-block:: html\n\n \n \n \n \n\nEach ```` tag maps a source name (the ``class`` attribute) to\na file (the ``src`` attribute). The ```` must have the special\nclass ``image-process-`` followed by the name of the transformation\nyou wish to apply. The file referenced by the ``src`` attribute of the\n``>`` will be used as the special ``default`` source in your\ntransformation definition.\n\n\nThe pseudo ```` tag above can be used in articles written in\nHTML, Markdown or restructuredText. In reStructuredText, however, you\ncan also use the ``figure`` directive to generate a ````. The\nfigure image file will be used as the special ``default`` source;\nother sources must be added in the the legend section of the\n``figure`` as ``image`` directives. The figure class must be\n``image-process-`` followed by the name of the transformation you wish\nto apply, while the other images must have two classes:\n``image-process`` and the name of the source they provide an image\nfor:\n\n.. code-block:: rst\n\n .. figure:: /images/pelican.png\n :class: image-process-large-photo\n\n Test picture\n\n .. image:: /images/pelican-closeup.jpg\n :class: image-process source-1\n\nThe images in the legend section that are used as source for the\n```` will be removed from the image legend, so that they do\nnot appear in your final article.\n\n\nTransformations\n---------------\n\nAvailable operations for transformations are:\n\ncrop \n Crop the image to the box (*left*, *top*)-(*right*, *bottom*). Values\n can be absolute (a number) or relative to the size of the image (a\n number followed by a percent sign ``%``).\n\nflip_horizontal\n Flip the image horizontally.\n\nflip_vertical\n Flip the image vertically.\n\ngrayscale\n Convert the image to grayscale.\n\nresize *width* *height*\n Resize the image. This operation does *not* preserve the image aspect\n ratio. Values can be absolute (a number) or relative to the\n size of the image (a number followed by a percent sign ``%``).\n\nrotate \n Rotate the image.\n\nscale_in \n Resize the image. This operation preserves the image aspect ratio\n and the resulting image will be no larger than *width* x\n *height*. Values can be absolute (a number) or relative to the\n size of the image (a number followed by a percent sign ``%``).\n If *upscale* is False, smaller images will not be enlarged.\n\nscale_out \n Resize the image. This operation preserves the image aspect ratio\n and the resulting image will be no smaller than *width* x\n *height*. Values can be absolute (a number) or relative to the\n size of the image (a number followed by a percent sign ``%``).\n If *upscale* is False, smaller images will not be enlarged.\n\nblur\n Apply the ``pillow.ImageFilter.BLUR`` filter to the image.\n\ncontour\n Apply the ``pillow.ImageFilter.CONTOUR`` filter to the image.\n\ndetail\n Apply the ``pillow.ImageFilter.DETAIL`` filter to the image.\n\nedge_enhance\n Apply the ``pillow.ImageFilter.EDGE_ENHANCE`` filter to the image.\n\nedge_enhance_more\n Apply the ``pillow.ImageFilter.EDGE_ENHANCE_MORE`` filter to the image.\n\nemboss\n Apply the ``pillow.ImageFilter.EMBOSS`` filter to the image.\n\nfind_edges\n Apply the ``pillow.ImageFilter.FIND_EDGES`` filter to the image.\n\nsmooth\n Apply the ``pillow.ImageFilter.SMOOTH filter`` to the image.\n\nsmooth_more\n Apply the ``pillow.ImageFilter.SMOOTH_MORE`` filter to the image.\n\nsharpen\n Apply the ``pillow.ImageFilter.SHARPEN`` filter to the image.\n\n\nYou can also define your own operations; the only requirement is that\nyour operation should be a callable object expecting a ``pillow.Image`` as\nits first parameter and it should return the transformed image:\n\n.. code-block:: python\n\n def crop_face(image):\n \"\"\"Detect face in image and crop around it.\"\"\"\n # TODO: Fancy algorithm.\n return image\n\n IMAGE_PROCESS = {\n 'face-thumbnail': [crop_face, \"scale_out 150 150 True\"]\n }\n\n\nAdditional Settings\n-------------------\n\nDestination Directory\n~~~~~~~~~~~~~~~~~~~~~\n\nBy default, the new images will be stored in a directory named\n``derivative/`` in the output folder at\nthe same location as the original image.\nFor example if the original image is located in\nthe ``content/images`` folder. The computed images will be stored\nin the ``output/images/derivative/``.\nAll the transformations are done in the output directory in order\nto avoid confusion with the source files or if we test multiple\ntransformations.\nYou can replace ``derivative`` by something else using the\n``IMAGE_PROCESS_DIR`` setting in your Pelican configuration file:\n\n.. code-block:: python\n\n IMAGE_PROCESS_DIR = 'derivees'\n\n\nForce Image Processing\n~~~~~~~~~~~~~~~~~~~~~~\n\nIf the transformed image already exists and is newer than the original\nimage, the plugin assumes that it should not recompute it again. You\ncan force the plugin to recompute all images by setting\n``IMAGE_PROCESS_FORCE`` to ``True`` in your Pelican configuration\nfile.\n\n.. code-block:: python\n\n IMAGE_PROCESS_FORCE = True\n\n\nSelecting a HTML Parser\n~~~~~~~~~~~~~~~~~~~~~~~\n\nYou may select the HTML parser which is used. The default is the builtin\n``html.parser`` but you may also select ``html5lib`` or ``lxml`` by setting\n``IMAGE_PROCESS_PARSER`` in your pelican configuration file , e.g.:\n\n.. code-block:: python\n\n IMAGE_PROCESS_PARSER = \"html5lib\"\n\nFor details, refer to the `BeautifulSoup documentation on parsers\n`_.\n\n\nFile Encoding\n~~~~~~~~~~~~~\n\nYou may select a different file encoding to be used by BeautifulSoup as it\nopens your files. The default is ``uft-8``.\n\n.. code-block:: python\n\n IMAGE_PROCESS_ENCODING = \"uft-8\"\n\n\nKnown Issues\n============\n\n- Pillow, when resizing animated GIF files, does not return an animated file\n- the ``setup.py`` file for this project does not run on Python 2.7. However,\n wheels of this project are \"universal\" and so can be generated by Python 3\n and subsequently installed by Python 2.7.\n- test mostly pass, but not entirely. The tests also fail on Windows due to\n path separator issues. The test suite remains a work in progress.\n- version 1.1.2, as uploaded to PyPI, is broken; use a different version. (see\n `issue #2 `_\n for details)\n\n\nCredits\n=======\n\nPelican image in test data by Jon Sullivan. Source:\nhttp://www.pdphoto.org/PictureDetail.php?mat=&pg=5726\n\nOriginal Plugin developed by the team at\n`Whisky Echo Bravo `_.", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MinchinWeb/minchin.pelican.plugins.image_process", "keywords": "", "license": "Affero GPL v3", "maintainer": "", "maintainer_email": "", "name": "minchin.pelican.plugins.image-process", "package_url": "https://pypi.org/project/minchin.pelican.plugins.image-process/", "platform": "any", "project_url": "https://pypi.org/project/minchin.pelican.plugins.image-process/", "project_urls": { "Homepage": "https://github.com/MinchinWeb/minchin.pelican.plugins.image_process" }, "release_url": "https://pypi.org/project/minchin.pelican.plugins.image-process/1.2.0/", "requires_dist": null, "requires_python": "", "summary": "Pelican plugin for automating image processing. Written in Python.", "version": "1.2.0" }, "last_serial": 5694993, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "a786e102e096bdcd0451551e1f30eb28", "sha256": "a22125786587cb7e09563deda48aed805e68e2a3c987698a0ffe257446bc0199" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a786e102e096bdcd0451551e1f30eb28", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21655, "upload_time": "2016-09-12T20:33:30", "url": "https://files.pythonhosted.org/packages/67/5c/e5dbd20f7512a928fcefa768edca29379d908bf64b5cdb91329557e89e4c/minchin.pelican.plugins.image_process-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62689dbb456f443ce26d44fd670f89f5", "sha256": "d33aed699be4c9c69e81f1c46c69cfccafdb9d169ccf971d819087bc08b944ed" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.0.tar.gz", "has_sig": false, "md5_digest": "62689dbb456f443ce26d44fd670f89f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15454, "upload_time": "2016-09-12T20:21:15", "url": "https://files.pythonhosted.org/packages/53/a4/2efd0f73a1f8b781d282d911b5a01e66cf9d60bdf2b6291f341b085d74da/minchin.pelican.plugins.image_process-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "395cc382ff5baebf3f7f728929638fb7", "sha256": "206163e8c15e5477c95641edced983e3041ab62b31ca2042eab1b6c56d3feee8" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "395cc382ff5baebf3f7f728929638fb7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22070, "upload_time": "2017-03-09T03:12:41", "url": "https://files.pythonhosted.org/packages/2f/3a/bc731849e3cb8ee8e91fe526d7339ebd9a129791381687b0cd4ca3552762/minchin.pelican.plugins.image_process-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20667f106f7f1a5955106a58ee0a202a", "sha256": "b5bdc59ff9605c2220d16f1abf7a4c7b30c33cb27bcbfd3190b878ba644c3ff0" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.1.tar.gz", "has_sig": false, "md5_digest": "20667f106f7f1a5955106a58ee0a202a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15647, "upload_time": "2017-03-09T03:11:55", "url": "https://files.pythonhosted.org/packages/32/f9/f597c58369cae566b86fb334c805caa35c982ab229337ad1d1aed26fbda3/minchin.pelican.plugins.image_process-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "f90a05957848994f7ee93289671d65c2", "sha256": "100f0b8fbb484ab3f03f7b849925bd3fc1d1d7b49959afc7c95153461adffbb0" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f90a05957848994f7ee93289671d65c2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22125, "upload_time": "2017-04-10T20:01:58", "url": "https://files.pythonhosted.org/packages/cb/3a/fbcea23c53920622e9226bec7231e54809c09e7ee7cafdce8dafc990c672/minchin.pelican.plugins.image_process-1.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "283f367ebd5642b7babc9a501ccd48e4", "sha256": "20b59575d21e1fb8e07a97ddaf67c258ecde2c5a55b186061d84b25e11805a19" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.2.tar.gz", "has_sig": false, "md5_digest": "283f367ebd5642b7babc9a501ccd48e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15690, "upload_time": "2017-04-10T19:54:48", "url": "https://files.pythonhosted.org/packages/10/17/7a2c621c97ff88bcd2f8243eb474551ac4780b6d5d4e58c137a020175bf2/minchin.pelican.plugins.image_process-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "44d33c2f9d1b014a1ddf81bae8ca2a65", "sha256": "2137526881a17ba930ab7f897745989e47a0ffb7b63707ca191ed53ecccda36e" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "44d33c2f9d1b014a1ddf81bae8ca2a65", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22182, "upload_time": "2017-05-27T22:08:14", "url": "https://files.pythonhosted.org/packages/4b/72/6542ad69dda1dce470e36366136b1356780e2b806a78219e0cef50b05055/minchin.pelican.plugins.image_process-1.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e61c4508d31f2845c82fff6341573043", "sha256": "1cbea2cff2f04f339f843fa398292994728394041f1092aa833de50096cfc307" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.3.tar.gz", "has_sig": false, "md5_digest": "e61c4508d31f2845c82fff6341573043", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15739, "upload_time": "2017-05-27T21:58:43", "url": "https://files.pythonhosted.org/packages/7a/f9/ea2cb6c50708244185a72be1a6e48fe5e3a8d0003cec5a923f55fee6ad8d/minchin.pelican.plugins.image_process-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "df63f05be80037dd0ab0d42a7d81d1a7", "sha256": "866dcf5574eda435c1d84b33f8e630e39565cf551a875260f869b9a925a6b506" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "df63f05be80037dd0ab0d42a7d81d1a7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3050954, "upload_time": "2018-01-04T02:28:40", "url": "https://files.pythonhosted.org/packages/51/12/891416f02db7e628ea86ec3695ad0e2638d941abc32a82251742001b4838/minchin.pelican.plugins.image_process-1.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ea9608be01aee81acbbb006113742dd", "sha256": "0297517c0eba4ae0839a0fb3da90c214f84c28fdfaf9602cd84fa28cb8756422" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.1.4.tar.gz", "has_sig": false, "md5_digest": "5ea9608be01aee81acbbb006113742dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3060113, "upload_time": "2018-01-04T02:27:06", "url": "https://files.pythonhosted.org/packages/0d/f8/f18e686f1cc556716fd4959e35a88b4647b845aac72b3235b7d0654252d1/minchin.pelican.plugins.image_process-1.1.4.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "9841eaf2843a0fc0ffefe214ee0d33ee", "sha256": "1b0c8d5dd1ea495a23810a68f284017f9d106b0e7b4ec2492c321639f89f89ef" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9841eaf2843a0fc0ffefe214ee0d33ee", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3060925, "upload_time": "2019-08-18T15:46:29", "url": "https://files.pythonhosted.org/packages/8e/50/6c0c24c15dc49556c3c5e3e2901604f745aaabf6a4cdb808156f7b1faf9b/minchin.pelican.plugins.image_process-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3fa8b71847cd6e3ad0bfb817b30f738d", "sha256": "792df23f7f229348b632e2753f093c723d8427dc1c31b97e3bc5b28a76ff0109" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.2.0.tar.gz", "has_sig": false, "md5_digest": "3fa8b71847cd6e3ad0bfb817b30f738d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3066547, "upload_time": "2019-08-18T15:45:18", "url": "https://files.pythonhosted.org/packages/36/b7/8cc8b39714a305aff39734353e1b61668b52a7061f7cdce95da6a7f04f94/minchin.pelican.plugins.image_process-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9841eaf2843a0fc0ffefe214ee0d33ee", "sha256": "1b0c8d5dd1ea495a23810a68f284017f9d106b0e7b4ec2492c321639f89f89ef" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9841eaf2843a0fc0ffefe214ee0d33ee", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3060925, "upload_time": "2019-08-18T15:46:29", "url": "https://files.pythonhosted.org/packages/8e/50/6c0c24c15dc49556c3c5e3e2901604f745aaabf6a4cdb808156f7b1faf9b/minchin.pelican.plugins.image_process-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3fa8b71847cd6e3ad0bfb817b30f738d", "sha256": "792df23f7f229348b632e2753f093c723d8427dc1c31b97e3bc5b28a76ff0109" }, "downloads": -1, "filename": "minchin.pelican.plugins.image_process-1.2.0.tar.gz", "has_sig": false, "md5_digest": "3fa8b71847cd6e3ad0bfb817b30f738d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3066547, "upload_time": "2019-08-18T15:45:18", "url": "https://files.pythonhosted.org/packages/36/b7/8cc8b39714a305aff39734353e1b61668b52a7061f7cdce95da6a7f04f94/minchin.pelican.plugins.image_process-1.2.0.tar.gz" } ] }