{ "info": { "author": "Georgy Ustinov", "author_email": "georgy.ustinov.hello@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "Flood Fill Filter\n=================\n\n\u0420\u0443\u0441\u0441\u043a\u0438\u0439_\n\n----\n\n | |Python versions: 3.3 and above| |Build Status| |PyPI|\n\n\nSummary\n-------\n\nThe goal is to separate high-density information areas from single-color areas and gradients.\nAt the same time, JPEG noises with low luminance dispersion should be perceived\nas part of these single-color areas and gradients.\n\nI propose a filter based on Flood Fill operation in a local square window with a given width.\n\nThe result is a bit like raster methods for edge detection: Sobel, Prewitt, Laplace, Canny operators,\nbut the meaning is different. Let\u2019s give an example.\n\n|readme_xm|\n\nThe Prewitt operator gives the following result.\nIn this picture, I inverted the intensity; it shows white contours in the original.\n\n|readme_Prewitt_inverted|\n\nBasically, there is nothing to prevent selecting a threshold value, such that there were only contours\nwithout noise. Then there will be a white space between the close lines.\n\n|readme_Prewitt_inverted_contrast|\n\nAnd the Flood Fill Filter shows the following. The default activation level is 0.45.\n\n|readme_fff|\n\nIt paints with black all areas where it is impossible to fill 45% of the 9x9 window around the pixel.\nIt highlights the noises as well, but most interesting is the following. Let us apply the Flood Fill Filter\nto the result of the Flood Fill Filter itself, except with an activation level of 0.05 this time.\nThis operation will result in the free-standing points detected in the first step.\n\n|readme_fff_fffa005|\n\nThen we exclude all black pixels of the second picture from black pixels of the first picture and\nobtain the picture which is the solution to the problem as I understand it.\nThis result can be obtained with a single command by adding the :code:`--denoise` parameter.\n\n|readme_fff_denoise|\n\nThe Flood Fill Filter does not provide a recipe for eliminating noise in photos, but I believe\nthat this method of separating simple areas of photos from complex ones will be useful in creating\nfilters that take good care of details in photos.\nOn its basis, a mask can be created that will protect complex noisy fragments of photos from even\ngreater distortion as a result of further processing.\n\n*JPEG denoising is a problem for photos only. For illustrations,\nan effective denoising method \u2014 Bilateral filter\n(it is called \"Surface blur\" in Adobe Photoshop, \"Selective Gaussian Blur\" in GIMP)\nalready exists.*\n\nLimitations of the method\n-------------------------\n\nIt will not work automatically if the contrast is increased significantly after JPEG compression.\nIn this case, the :code:`--diff` parameter should be selected manually (it is :code:`0.08` by default)\n\nInstallation\n------------\n\n.. code-block:: bash\n\n pip install flood-fill-filter\n\n # or all user installation:\n sudo python3 -m pip install --prefix /usr/local flood-fill-filter\n\n\nUsage\n-----\n\nFrom command line:\n\n.. code-block:: bash\n\n flood_fill_filter input.jpg output.png\n\n flood_fill_filter --help\n\n\nFrom code:\n\n.. code-block:: python\n\n import flood_fill_filter.flood as flood\n\n input = flood.read_linear(filename)\n result = flood.filter(input) # Two-dimensional NumPy array.\n\n flood.save(\n flood.to_8_bit(result * 255),\n output_filename\n )\n\n\nTechnical details\n-----------------\n\nFirst, the image is translated to the CIE XYZ color space.\n\nGamma correction is applied for the luminance component Y.\nLet's call the corrected value Y\u03b3.\n\nY\u03b3 above 0.7 is corrected so that the white color becomes equal to 0.75.\n\nLet's call the resulting value L.\n\n.. code-block::\n\n L = Y\u03b3 - Y\u03b3 * 0.25 * ((Y\u03b3 - 0.7) / (1 - 0.7)), Y\u03b3 > 0.7\n L = Y\u03b3, Y\u03b3 \u2a7d 0.7\n\nThe :code:`--diff` parameter determines the minimum difference between L\u2081 \u0438 L\u2082,\nat which we stop considering the luminance to be the same.\nThat is, with the standard settings, light gray 0.7 and white are considered the same color.\n\nThis is a hack that allows ignoring white halos around objects.\nThey can appear in the photo initially or after the Unsharp Mask filter.\n\nThe differences of the chromaticity components X and Z are taken into account 4 times weaker\nthan the luminance. This means that at the same luminance, we consider the colors to be the same\nonly if both X and Z components differ by less than :code:`4 * diff`.\n\nWhen luminance is above 0.5, the X and Z sensitivity threshold expands to :code:`8 * diff`.\n\nIn pixels close to black, the X and Z components are ignored \u2014 that is, at the same luminance,\nwe consider the colors to be the same.\n\nEach pixel is filled in four directions: horizontally and vertically, but not diagonally.\n\nPixels in the fill process are compared to the fill start point, not to the adjacent pixels.\n\nSee also\n--------\n\n`fffd\n`_\n\n.. |Build Status| image:: https://travis-ci.org/georgy7/flood_fill_filter.svg?branch=master\n :target: https://travis-ci.org/georgy7/flood_fill_filter\n.. |PyPI| image:: https://img.shields.io/pypi/v/flood-fill-filter.svg\n :target: https://pypi.org/project/flood-fill-filter/\n\n.. |readme_xm| image:: samples3/readme_xm.png\n\n.. |readme_Prewitt_inverted| image:: samples3/readme_Prewitt_inverted.png\n\n.. |readme_Prewitt_inverted_contrast| image:: samples3/readme_Prewitt_inverted_contrast.png\n\n.. |readme_fff| image:: samples3/readme_fff.png\n\n.. |readme_fff_fffa005| image:: samples3/readme_fff_fffa005.png\n\n.. |readme_fff_denoise| image:: samples3/readme_fff_denoise.png\n\n.. |Python versions: 3.3 and above| image:: https://img.shields.io/pypi/pyversions/flood_fill_filter.svg?style=flat\n\n.. _\u0420\u0443\u0441\u0441\u043a\u0438\u0439: https://github.com/georgy7/flood_fill_filter/blob/master/README_ru.rst\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/georgy7/flood_fill_filter", "keywords": "", "license": "AGPL-3.0-or-later", "maintainer": "", "maintainer_email": "", "name": "flood-fill-filter", "package_url": "https://pypi.org/project/flood-fill-filter/", "platform": "", "project_url": "https://pypi.org/project/flood-fill-filter/", "project_urls": { "Homepage": "https://github.com/georgy7/flood_fill_filter" }, "release_url": "https://pypi.org/project/flood-fill-filter/1.2.5/", "requires_dist": [ "pillow", "numpy" ], "requires_python": ">=3.3", "summary": "JPEG-noise resistant edge density detection tool.", "version": "1.2.5", "yanked": false, "yanked_reason": null }, "last_serial": 7108605, "releases": { "0.8.0": [ { "comment_text": "", "digests": { "md5": "c1cce3fcf58f90c01bb44846f8add3fc", "sha256": "b14d4036aed794f5f6e407a3d62c02f08b32831e0df7353f2a471ba9adaa54bf" }, "downloads": -1, "filename": "flood_fill_filter-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c1cce3fcf58f90c01bb44846f8add3fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 19626, "upload_time": "2019-10-07T00:51:39", "upload_time_iso_8601": "2019-10-07T00:51:39.215226Z", "url": "https://files.pythonhosted.org/packages/53/a9/637a5ae443b7943df29434a3876308f9d73f8e82564bc2fc94baa5e91d05/flood_fill_filter-0.8.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b83f812dd322c39dbaa1baee648f1d96", "sha256": "ebcce18501027fcfb553a577af51dabec3ad0f47f0ecdf659e7306535036065c" }, "downloads": -1, "filename": "flood_fill_filter-0.8.0.tar.gz", "has_sig": false, "md5_digest": "b83f812dd322c39dbaa1baee648f1d96", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 17561, "upload_time": "2019-10-07T00:51:41", "upload_time_iso_8601": "2019-10-07T00:51:41.883925Z", "url": "https://files.pythonhosted.org/packages/1e/b5/16b1dfaa34d28dd3ccaadf85374331a2ef2df9974bea21e99e178f1619bf/flood_fill_filter-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "07163b83a639b497569fb00561ed16b8", "sha256": "3b2d1b82206df530b83696f35393d1f30297f6e808a70928c0ad2a5e39398f85" }, "downloads": -1, "filename": "flood_fill_filter-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "07163b83a639b497569fb00561ed16b8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 20832, "upload_time": "2019-10-15T05:49:56", "upload_time_iso_8601": "2019-10-15T05:49:56.546787Z", "url": "https://files.pythonhosted.org/packages/27/d6/45ed2301b726cde5750fd74511bedc68a328fcdfeec34ab5f6e983c0cf74/flood_fill_filter-0.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "95a77aab432579987974571a7afa6f54", "sha256": "5311b2dd5d08ab646bbcf5623cccf2caa00df9325e0890c177e933271ecef17b" }, "downloads": -1, "filename": "flood_fill_filter-0.9.0.tar.gz", "has_sig": false, "md5_digest": "95a77aab432579987974571a7afa6f54", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 19105, "upload_time": "2019-10-15T05:49:58", "upload_time_iso_8601": "2019-10-15T05:49:58.306664Z", "url": "https://files.pythonhosted.org/packages/c9/e9/3d4e263b9f28144daf59cf43d8c8fd799bdcf392b8f3ff11ac4ae10f189b/flood_fill_filter-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "1f40a09ffd4b03bbdd668cb3fff2bfe0", "sha256": "3fc7eaecce3523418b87c0030c1ee4bcfb571c04e8dc6a7a6fe981bd91e52d37" }, "downloads": -1, "filename": "flood_fill_filter-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1f40a09ffd4b03bbdd668cb3fff2bfe0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 23238, "upload_time": "2019-10-22T07:33:48", "upload_time_iso_8601": "2019-10-22T07:33:48.362787Z", "url": "https://files.pythonhosted.org/packages/5b/f6/9715450d95b85df7251a8d6111e1405292c8cede840cbc9f93b1754fc3ea/flood_fill_filter-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2926a7d04b0b77d61e38f9ed8cb9bd6a", "sha256": "2b9b6773f64f5e24a45fd2eb2e2e1a5790a78fee377ea31d2a7d81335a983e84" }, "downloads": -1, "filename": "flood_fill_filter-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2926a7d04b0b77d61e38f9ed8cb9bd6a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 23666, "upload_time": "2019-10-22T07:33:50", "upload_time_iso_8601": "2019-10-22T07:33:50.979516Z", "url": "https://files.pythonhosted.org/packages/05/6f/685af89329c394bfcbb1bc55c2996fcf529a7f8ab86f8a40abd8710b1308/flood_fill_filter-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "f2427a110a48c9b203e96959a03dd5f8", "sha256": "bc4ba91911e1c6576de810668364988e84d35777ad3cc17a064fa3fc6f1ee312" }, "downloads": -1, "filename": "flood_fill_filter-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f2427a110a48c9b203e96959a03dd5f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 23402, "upload_time": "2019-10-28T07:24:19", "upload_time_iso_8601": "2019-10-28T07:24:19.578741Z", "url": "https://files.pythonhosted.org/packages/a9/0a/ed1eaf9ee3621cc23ee66311bc1feb7473edbd44441dde60accd05bb0c6c/flood_fill_filter-1.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3c5854ddbb43ecfdab13ba8b850318d2", "sha256": "b14e1a42ab260fe4357fe6680edd52c7b5dbd32f1df8c70b4610eafb43d34b86" }, "downloads": -1, "filename": "flood_fill_filter-1.0.1.tar.gz", "has_sig": false, "md5_digest": "3c5854ddbb43ecfdab13ba8b850318d2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 23808, "upload_time": "2019-10-28T07:24:21", "upload_time_iso_8601": "2019-10-28T07:24:21.219684Z", "url": "https://files.pythonhosted.org/packages/d3/b4/78f81384989d2d6f53ea3aabcbf0c314339a30ae3d90e21228a25d11b2cb/flood_fill_filter-1.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "44da92673ba0f2fc50e053af729c9125", "sha256": "621b287b10febbd0da0a47166dcec34041b6e3e2e54ec834aa80b049941dbf1a" }, "downloads": -1, "filename": "flood_fill_filter-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "44da92673ba0f2fc50e053af729c9125", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 23658, "upload_time": "2020-03-06T16:25:45", "upload_time_iso_8601": "2020-03-06T16:25:45.552645Z", "url": "https://files.pythonhosted.org/packages/01/57/8ac3052d07b86159c3e4d837ac0dbba22907fd4d89657ebbe935c1a81fb4/flood_fill_filter-1.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "65194f01d5bfaa2835a1ee4e28cefea8", "sha256": "d6e1ee4e7cacc1735840508b1d2d7bf2b9742fa52dd04fd3a16c3ff2dc29a4ec" }, "downloads": -1, "filename": "flood_fill_filter-1.1.0.tar.gz", "has_sig": false, "md5_digest": "65194f01d5bfaa2835a1ee4e28cefea8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 24048, "upload_time": "2020-03-06T16:25:47", "upload_time_iso_8601": "2020-03-06T16:25:47.005183Z", "url": "https://files.pythonhosted.org/packages/81/7d/f6021bc57c4f6072e1d6d9f54fd2fe9167168c3d576fc4580202aaf1b73b/flood_fill_filter-1.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "c8ace568263e8f0da96bc50086de797e", "sha256": "6fe52551dc9f6059a32a7a6ee571e0e64bfc5dd938293d32b368b10ed2023edc" }, "downloads": -1, "filename": "flood_fill_filter-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c8ace568263e8f0da96bc50086de797e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 23667, "upload_time": "2020-03-08T12:06:44", "upload_time_iso_8601": "2020-03-08T12:06:44.594214Z", "url": "https://files.pythonhosted.org/packages/de/0f/90fd35bf8ac4b8be9a3cb8040cbf99e4535777181b5ea885db52a5b85a67/flood_fill_filter-1.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b469edc454c83b68985afd576ae3ef71", "sha256": "b91622f6f8611642d7c793b48b7015382263c642462574ea940bc6eb4a1574aa" }, "downloads": -1, "filename": "flood_fill_filter-1.2.0.tar.gz", "has_sig": false, "md5_digest": "b469edc454c83b68985afd576ae3ef71", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 23983, "upload_time": "2020-03-08T12:06:46", "upload_time_iso_8601": "2020-03-08T12:06:46.274201Z", "url": "https://files.pythonhosted.org/packages/08/72/bd7058b491e31b46792720d41479ac72b90562107b0ae84096c0f2a2215a/flood_fill_filter-1.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "f487649ee3f3ae361fa4687ab3fd2a4e", "sha256": "928f5ae278fa1927a7c040582fc25e927cc3cb0c84152b2fcd449bd395bfb753" }, "downloads": -1, "filename": "flood_fill_filter-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f487649ee3f3ae361fa4687ab3fd2a4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 23661, "upload_time": "2020-03-08T12:16:58", "upload_time_iso_8601": "2020-03-08T12:16:58.173460Z", "url": "https://files.pythonhosted.org/packages/30/19/a7d01bbe58a45fae2e7032e8fd4dd09a233d7d44f9c92110ba3a07f07cc0/flood_fill_filter-1.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5d0b9d8a4d6fc13072eed16217c147b6", "sha256": "cf7659a90ad3ec7b19de94f24d7c0bf139dd03f95df2016588b62003a36dd08e" }, "downloads": -1, "filename": "flood_fill_filter-1.2.1.tar.gz", "has_sig": false, "md5_digest": "5d0b9d8a4d6fc13072eed16217c147b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 23983, "upload_time": "2020-03-08T12:17:00", "upload_time_iso_8601": "2020-03-08T12:17:00.012557Z", "url": "https://files.pythonhosted.org/packages/f4/b6/754e3e7ccbd2b809f43ea51e20360ffd8659ca4f72c824d016af5beb76fd/flood_fill_filter-1.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "428c1502b7a034b51d770584d0f5518d", "sha256": "eaf375da68b9fb927174bee1a4ecd248fb2884b6ba605cae39549ef7a80288f8" }, "downloads": -1, "filename": "flood_fill_filter-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "428c1502b7a034b51d770584d0f5518d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 23788, "upload_time": "2020-03-08T15:01:53", "upload_time_iso_8601": "2020-03-08T15:01:53.951133Z", "url": "https://files.pythonhosted.org/packages/08/86/ff3f9e22abe2f49cd06d198984a0abfc85ffa6c51a3f51438974d3036aa6/flood_fill_filter-1.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "72cf07de54bd97fd2cd6ed4618dbd9af", "sha256": "3f518fc987a72619f78ac0d5d4ef176c4640d1dea18ce7a21576e373abe86249" }, "downloads": -1, "filename": "flood_fill_filter-1.2.2.tar.gz", "has_sig": false, "md5_digest": "72cf07de54bd97fd2cd6ed4618dbd9af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 24107, "upload_time": "2020-03-08T15:01:55", "upload_time_iso_8601": "2020-03-08T15:01:55.625561Z", "url": "https://files.pythonhosted.org/packages/bc/f1/c568a0d30854b95a6f16cabccdcb19c6b60d72898be50558dd9a8fec442d/flood_fill_filter-1.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "ea32cf0133787d8723745958e40f7000", "sha256": "bd2a92ee729446f228311fbbc0c6784529d20c435b89fcaee38baec8a3fa7ae6" }, "downloads": -1, "filename": "flood_fill_filter-1.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ea32cf0133787d8723745958e40f7000", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 35312, "upload_time": "2020-03-25T02:17:43", "upload_time_iso_8601": "2020-03-25T02:17:43.323422Z", "url": "https://files.pythonhosted.org/packages/bd/a5/8da47e48891fe417855e9a304ded9c77a6094f5d0167f224e5e92c89c214/flood_fill_filter-1.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5e623a4fbb6750e8fc9227c1eff21a45", "sha256": "763be2d0627407620b92986b63f28650a6a033908690e602ef62f6cdec5deb0d" }, "downloads": -1, "filename": "flood_fill_filter-1.2.3.tar.gz", "has_sig": false, "md5_digest": "5e623a4fbb6750e8fc9227c1eff21a45", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 32297, "upload_time": "2020-03-25T02:17:45", "upload_time_iso_8601": "2020-03-25T02:17:45.641251Z", "url": "https://files.pythonhosted.org/packages/50/30/8779be823c7eae593ef442ff8d82d470a0a7c23a373c2c0eeaea49e2e90f/flood_fill_filter-1.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "5ecf6f030c8cb7a1357c42e8eb3f82ab", "sha256": "2a52d080232205b537630ffc66efb881422d104a5420b739c4ccaf35423fd565" }, "downloads": -1, "filename": "flood_fill_filter-1.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5ecf6f030c8cb7a1357c42e8eb3f82ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 35353, "upload_time": "2020-04-24T14:35:35", "upload_time_iso_8601": "2020-04-24T14:35:35.472560Z", "url": "https://files.pythonhosted.org/packages/47/c4/7467ba5cfb066c409e87c3b1276022657eb84faceee8c234320cd22bab4b/flood_fill_filter-1.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ed1298f270bcc427aa02a869a08d3eae", "sha256": "b40242cba7e79c16d136db07473f275b02e9912987d5452150d5b0cf2e22374a" }, "downloads": -1, "filename": "flood_fill_filter-1.2.4.tar.gz", "has_sig": false, "md5_digest": "ed1298f270bcc427aa02a869a08d3eae", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 32352, "upload_time": "2020-04-24T14:35:36", "upload_time_iso_8601": "2020-04-24T14:35:36.871390Z", "url": "https://files.pythonhosted.org/packages/61/40/6dc9afe09bb30ef69f863be4fd51e9e2dc8bb31aed7df1e1062131472854/flood_fill_filter-1.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "406e6c392784d965922815ed172b413a", "sha256": "0cc5550007237bd736ed0b3e11b70619677fdb0651068b13a18b736ed053d682" }, "downloads": -1, "filename": "flood_fill_filter-1.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "406e6c392784d965922815ed172b413a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 35358, "upload_time": "2020-04-27T04:41:05", "upload_time_iso_8601": "2020-04-27T04:41:05.188537Z", "url": "https://files.pythonhosted.org/packages/8e/67/ce8401df46c317d22a03bf317f5ec92443e78237c07acba82ce80fd73443/flood_fill_filter-1.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8a456184c13b981b17d1fef76028ab7b", "sha256": "9050f2c77b4838f087613696fea984231ea55e371d88e4c23e9fea0e63e2ccd6" }, "downloads": -1, "filename": "flood_fill_filter-1.2.5.tar.gz", "has_sig": false, "md5_digest": "8a456184c13b981b17d1fef76028ab7b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 32354, "upload_time": "2020-04-27T04:41:06", "upload_time_iso_8601": "2020-04-27T04:41:06.639850Z", "url": "https://files.pythonhosted.org/packages/dd/db/aec8f5bf4172fbf576b7dc013974db66cb01b273925dbdfda771ac9bf022/flood_fill_filter-1.2.5.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "406e6c392784d965922815ed172b413a", "sha256": "0cc5550007237bd736ed0b3e11b70619677fdb0651068b13a18b736ed053d682" }, "downloads": -1, "filename": "flood_fill_filter-1.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "406e6c392784d965922815ed172b413a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 35358, "upload_time": "2020-04-27T04:41:05", "upload_time_iso_8601": "2020-04-27T04:41:05.188537Z", "url": "https://files.pythonhosted.org/packages/8e/67/ce8401df46c317d22a03bf317f5ec92443e78237c07acba82ce80fd73443/flood_fill_filter-1.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8a456184c13b981b17d1fef76028ab7b", "sha256": "9050f2c77b4838f087613696fea984231ea55e371d88e4c23e9fea0e63e2ccd6" }, "downloads": -1, "filename": "flood_fill_filter-1.2.5.tar.gz", "has_sig": false, "md5_digest": "8a456184c13b981b17d1fef76028ab7b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 32354, "upload_time": "2020-04-27T04:41:06", "upload_time_iso_8601": "2020-04-27T04:41:06.639850Z", "url": "https://files.pythonhosted.org/packages/dd/db/aec8f5bf4172fbf576b7dc013974db66cb01b273925dbdfda771ac9bf022/flood_fill_filter-1.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }