Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix imagehash hex_to_hash #2989

Merged
merged 7 commits into from
Apr 30, 2018
Merged

Fix imagehash hex_to_hash #2989

merged 7 commits into from
Apr 30, 2018

Conversation

bjlittle
Copy link
Member

@bjlittle bjlittle commented Mar 19, 2018

This PR addresses the issue of the imagehash package releasing version 4.0, which addresses an error in the creation of hashes, see https://github.com/JohannesBuchner/imagehash#changelog

  • Apply fix to idiff
  • Investigate new test failure image and update imagerepo.json and test-iris-imagehash repo
  • Check .travis-ci for test-iris-imagehash repo

Closes #2973, #2974

@bjlittle
Copy link
Member Author

bjlittle commented Mar 21, 2018

The graphic test iris.tests.test_mapping.TestBoundedCube.test_grid.0 is failing

AssertionError: Image comparison failed: Bad phash fa81857e857e7a81857e7a817a81857a7a81857e857e7a85857e7a817a81857a with hamming distance [12, 4] for test iris.tests.test_mapping.TestBoundedCube.test_grid.0.

idiff

This change doesn't concern me and we don't know how long it's been failing for, so i suggest we just accept the difference.

@bjlittle
Copy link
Member Author

bjlittle commented Mar 21, 2018

Also see the associated PR SciTools/test-iris-imagehash#13 that adds the new image to the test-iris-imagehash repo - as per the update to the imagerepo.json file.

Until the test-iris-image-hash PR is merged, this PR will have the following FAIL: test_resolve (iris.tests.test_image_json.TestImageFile) failure, due to AssertionError: Images are referenced in imagerepo.json but not published in https://scitools.github.io/test-iris-imagehash/images: https://scitools.github.io/test-iris-imagehash/images/fa81857e857e7a81857e7a817a81857a7a81857e857e7a85857e7a817a81857a.png

@bjlittle
Copy link
Member Author

Created issue #2991 to cover the last failing test to investigate, which is not imagehash related.

@corinnebosley
Copy link
Member

@bjlittle You need to spend more time sleeping and less time working.

@bjlittle
Copy link
Member Author

Clearly this PR fixes the image tests. However, on reflection seeing the idiff changes, it's not pretty handling one imagerepo with mixed old (faulty) and new hashes.
The alternative is to simply keep the old and new hashes seperate. This would mean regenerating all images with new hashes and referencing them henceforth.
The pros are that the code is simpler and allows us to easily decouple the imagehash functionality into a new package in the future (and use imagehashing else where i. e. Cartopy or tephi etc). The con is that we're doubling the current test-iris-imagehash repo or creating a new one with new hashes.

@corinnebosley
Copy link
Member

@bjlittle Will the test-iris-imagehash repo just keep getting bigger really fast, or is this new image hash generation just a one-off?

I suppose that's something that we just don't know, but if we get an issue like this again then we could just keep adding to the imagehash repo(s), right?

@corinnebosley
Copy link
Member

Also, would we after a little while remove the old faulty image hashes and just use the new ones, or would we have to use both sets forever?

@bjlittle
Copy link
Member Author

bjlittle commented Mar 22, 2018

@corinnebosley Going forwards, we'll definitely need to retain the old hashes, so that prior versions of iris will have functional image testing. If we remove the old hashes in test-iris-imagehash, then we break iris all imagehash testing prior to 2.0 - which is a bad thing. So we need to keep them.

That said, it should be possible to not double up the size of the test-iris-imagehash repo, but simply keeping all the images with old hash filenames, but also create links to those files but with new hash names and store those links in say a new images/v4 folder. So the new and old hashes are not mixed (the same is true for the imagerepo.json file within iris) and the new hash images could be referenced from the URL https://scitools.github.io/test-iris-imagehash/images/v4/... instead.

With this approach, we keep the old and new separate, we don't double up the test-iris-imagehash repo, and we simplify the code from this PR going forwards i.e. we not supporting retro versions of imagehash within iris. So, from henceforth we're using imagehash v4, our imagerepo.json only references the images/v4 images and the code in iris does not use old_hex_to_hash.

This seems like a cleaner approach to me, plus we can (easily) rip the perceptual imagehash functionality out of iris into a separate package, if we want to so that at a future date.

The test-iris-imagehash repo hasn't really grown that much since we first created it, which is what I hoped for, as the perceptual hashing gives us a more controlled tolerance on image testing, than say using RMS of an image ... so it's kinda stood the test of time so far. However, the next BIG change will be unpinning matplotlib from 1.5 for iris to use matplotlib 2+ ... I would expect this to have an impact on the image testing, but I'd hope that the impact is limited given the benefits perceptual image hashing purports to provide. But when we do start using mpl 2+ within iris, then we'd only generate new hashes using imagehash v4 and store any new images in the images/v4 of test-iris-imagehash ... we would not do this retrospectively for iris 1.13 and the old hashes - there is no LTS for iris 1.13, only bug fixes.

What do you think? Does this make sense?

@bjlittle
Copy link
Member Author

bjlittle commented Apr 1, 2018

Okay, just went ahead and made the necessary changes to the test-iris-imagehash repo, see PR SciTools/test-iris-imagehash#14.

The above PR was merged into my master https://github.com/bjlittle/imagehash

To test this PR, commit ea02532 has it's tests/results/imagerepo.json file pointing my test-iris-imagehash repo. The travis-ci results for build #8146.3 show this PR working (apart from iris.tests.test_image_json.TestImageFile.test_resolve, which requires the test-iris-imagehash PR to be merged).

This approach has has worked out quite nicely and I much prefer it as a way forward. The code changes in iris are minimal whilst still allowing us the freedom to make graphical perceptual image hashing testinggeneric at a later date.

@bjlittle
Copy link
Member Author

bjlittle commented Apr 1, 2018

The latest commit 5e5d262 changes the imagerepo.json URLs to reference scitools rather than bjlittle.

So this PR requires SciTools/test-iris-imagehash#14 to be merged first to work!

@bjlittle
Copy link
Member Author

bjlittle commented Apr 1, 2018

Analysis of the old hash to new hash cross-referencing highlighted that there are duplicate entries in the imagerepo.json file. For completeness, these duplications are documented here in this comment for future reference.

  • 57a9dcdfa956232f26f958a0a37636255aca297a76a583fcd892a14283fcd882 (old)

    • ea953bfb956ac4f4649f1a05c56e6ca45a53945e6ea5c13f1b498542c13f1b41 (new)
    • iris.tests.test_plot.TestHybridHeight.test_points.0
    • iris.tests.test_plot.TestHybridHeight.test_points.3
    • comment - confirmed that above tests generate the same image
  • 5fa146ed436ebc90a956a95aa15ab8112b7aa35efc81037e5687d68403ff5e81 (old)

    • fa8562b7c2763d09956a955a855a1d88d45ec57a3f81c07e6ae16b21c0ff7a81 (new)
    • iris.tests.test_plot.TestSimple.test_points.0
    • iris.tests.test_quickplot.TestQuickplotCoordinatesGiven.test_tx.1
    • comment - confirmed that above tests generate the same image
  • 172ee9d1e9d116aee9d116aee9d11e2aa9d01e0a16aa1e2e162e7e4516aee955 (old)

    • e874978b978b6875978b6875978b7854950b78506855787468747ea2687597aa (new)
    • iris.tests.test_plot.TestPcolor.test_tz.0
    • iris.tests.test_plot.TestPcolormesh.test_tz.0
    • comment - difference in images is meshlines (repo has no meshlines)
  • 175a963369b54987c99369cca1497938c38159b3679ba6737666d60c1c76a68d (old)

    • e85a69cc96ad92e193c9963385929e1cc3819acde6d965ce6e666b30386e65b1 (new)
    • iris.tests.test_plot.TestPlotCoordinatesGiven.test_yx.1
    • iris.tests.test_mapping.TestBasic.test_contourf.0
    • comment - confirmed that above tests generate the same image
  • 9f1ed91ce161e66161693609c9e139a749e3d993b29849d9969cf3668c36e634 (old)

    • f9789b388786678686966c9093879ce592c79bc94d19929b6939cf66316c672c (new)
    • iris.tests.test_plot.TestPlotDimAndAuxCoordsKwarg.test_coord_names.0
    • iris.tests.test_plot.TestPlotDimAndAuxCoordsKwarg.test_coords.0
    • iris.tests.test_plot.TestPlotDimAndAuxCoordsKwarg.test_default.0
    • comment - confirmed that above tests generate the same image
  • 7d053e99837a8d761989730ae3429c523cb7368dcc098f33ce43f9d8b470b366 (old)

    • bea07c99c15eb16e9891ce50c742394a3ced6cb13390f1cc73c29f1b2d0ecd66 (new)
    • iris.tests.test_plot.Test1dQuickplotScatter.test_coord_coord_map.0
    • iris.tests.test_plot.Test1dScatter.test_coord_coord_map.0
    • comment - confirmed that above tests generate the same image
  • 5f85d483a9722ffc03fdf940a1527227a112835e5aad837e5eb01eae857e5c81 (old)

    • faa12bc1954ef43fc0bf9f02854a4ee48548c17a5ab5c17e7a0d7875a17e3a81 (new)
    • iris.tests.test_quickplot.TestLabels.test_contour.1
    • iris.tests.test_quickplot.TestLabels.test_contourf.1
    • comment - confirmed that above tests generate the same image
  • 7d84e5d8837b1a275c8ce1f87ea1260e835fd931de8126ce2166da798b9d1983 (old)

    • be21a71bc1de58e43a31871f7e856470c1fa9b8c7b81647384665b9ed1b998c1 (new)
    • iris.tests.test_mapping.TestLowLevel.test_keywords.0
    • iris.tests.test_mapping.TestLowLevel.test_params.1
    • comment - confirmed that above tests generate the same image
  • 572ee3e0a9d11c1ea9d11c1fe3c456aa5e2a341e16abd2e11eaee9513d1ee944 (old)

    • ea74c707958b3878958b38f8c7236a557a542c7868d54b877875978abc789722 (new)
    • iris.tests.test_plot.TestPcolor.test_ty.0
    • iris.tests.test_plot.TestPcolormesh.test_ty.0
    • comment - difference is meshlines (repo has no meshlines)
  • 97a55c9a6978a3653496581ade6946870387a77c7970d9e17c835a8e863d26f4 (old)

    • e9a53a59961ec5a62c691a587b9662e1c0e1e53e9e0e9b873ec15a7161bc642f (new)
    • iris.tests.test_plot.TestPlotDimAndAuxCoordsKwarg.test_coord_names.1
    • iris.tests.test_plot.TestPlotDimAndAuxCoordsKwarg.test_coords.1
    • comment - confirmed that above tests generate the same image
  • c1ff833b7e000d3b66e8b9a98fe4f3932b929a5d21661a1789e05a7c99825af4 (old)

    • 83ffc1dc7e00b0dc66179d95f127cfc9d44959ba846658e891075a3e99415a2f (new)
    • iris.tests.test_plot.TestQuickplotPlot.test_z.0
    • iris.tests.test_plot.Test1dQuickplotPlotMultiArgs.test_cube.0
    • comment - confirmed that above tests generate the same image
  • f15f832a5ee0492a36e8b9ed8fa4f2b629dace4921681e17a9807e7c89835ef0 (old)

    • 8ffac1547a0792546c179db7f1254f6d945b7392841678e895017e3e91c17a0f (new)
    • iris.tests.test_plot.TestPlot.test_z.0
    • iris.tests.test_plot.Test1dPlotMultiArgs.test_cube.0
    • comment - confirmed that above tests generate the same image
  • 577a86212c356ca783936cd9a9cd391cc3c559f273875976d926d30699a4b3a4 (old)

    • ea5e618434ac36e5c1c9369b95b39c38c3a39a4fcee19a6e9b64cb609925cd25 (new)
    • iris.tests.test_quickplot.TestLabels.test_map.0
    • iris.tests.test_quickplot.TestQuickplotCoordinatesGiven.test_yx.3
    • comment - confirmed that above tests generate same image
  • df0746bc93e1b9892d78d222d9a69ee7e11925d91e4e4b26d23189d99c0c7636 (old)

    • fbe0623dc9879d91b41e4b449b6579e78798a49b7872d2644b8c919b39306e6c (new)
    • iris.tests.test_plot.Test1dPlotMultiArgs.test_coord_coord_map.0
    • iris.tests.test_plot.Test1dQuickplotPlotMultiArgs.test_coord_coord_map.0
    • comment - confirmed that above tests generate same image
  • 57ad8cfca952de4906cfe991a337320b210b23275a85a37f5c209ede8ddcdc60 (old)

    • eab5313f954a7b9260f39789c5ec4cd084d0c4e45aa1c5fe3a04797bb13b3b06 (new)
    • iris.tests.test_plot.TestHybridHeight.test_bounds.0
    • iris.tests.test_plot.TestHybridHeight.test_bounds.2
    • comment - confirmed that above tests generate same image

The two hashes that have duplicates but tests with different actual result images are okay - what this means is that the differences are "similar enough" as represented within the 16byte perceptual image hash and the (expected - actual) hash difference hamming distance of only 2bits.

If we wanted to discriminate between these images then we should either:

  • decrease the hamming distance, or
  • increase the size of the perceptual image hash i.e. >16bytes

I recommend neither of these options, as it will increase the number of items in the imagerepo.json i.e. I believe we have a reasonable definition of "similarity" between images, without it being too exact or too dissimilar.

@bjlittle
Copy link
Member Author

@pelson We could really do with getting this unblocked ... any chance of a review?

@bjlittle bjlittle requested a review from pelson April 11, 2018 10:06
Copy link
Member

@pelson pelson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

If we ever want to release a 2.0.1, then I suggest we need to change the target branch.

In truth though, I'm happy to move forward to a 2.1 in short order.

if action == 'first':
index = 0
elif action == 'last':
index = -1
elif action == 'similar':
index = np.argmin(distances)
elif action == 'difference':
elif action == 'different':
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😕. What's happening here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -1,725 +1,726 @@
{
"example_tests.test_COP_1d_plot.TestCOP1DPlot.test_COP_1d_plot.0": [
"https://scitools.github.io/test-iris-imagehash/images/5dff1a996c06b47193eecc52275b936d58b6239ba94c133643897c6c2333f086.png"
],
"https://scitools.github.io/test-iris-imagehash/images/v4/baff589936602d8ec977334ae4dac9b61a6dc4d99532c86cc2913e36c4cc0f61.png"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bit awkward, because technically I should double check that the old hash matches the new (and that a change hasn't been introduced).

I'm not going to do that, and rely on the fact that the tests passed before this change, and that they will pass after this change + the fact that no changes have occurred that change the behaviour of Iris' plotting...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's really pretty difficult for a reviewer to review the hash changes, but I've tried to address that some what with this #2989 (comment)

@pelson
Copy link
Member

pelson commented Apr 11, 2018

Bill I re-triggered the build, but got:

======================================================================
FAIL: test_resolve (iris.tests.test_image_json.TestImageFile)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/scitools_iris-2.1.0.dev0-py2.7.egg/iris/tests/test_image_json.py", line 81, in test_resolve
    self.assertTrue(uris.issubset(known_image_uris), msg=amsg)
AssertionError: Images are referenced in imagerepo.json but not published in https://scitools.github.io/test-iris-imagehash/images:
https://scitools.github.io/test-iris-imagehash/images/v4/a7efb6367f008d97338fc973e435d86ef030c86ed070d86cd030d86d89f0d82c.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81948e857e4971907ea72e95fa66b2952e4ead6d429b527ac7a5286e981836.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fe896266f068d873b83cb71e435725cd07c607ad07e70fcd0007a7881fe7ab8.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3fd956a7a01a5ee321fc96666919b6ec15fdca593600d2586785a259dfa5a01.png
https://scitools.github.io/test-iris-imagehash/images/v4/8bfe81ff780085fff800855fd4027e00d517d400855f7e0085ff7e8085ff6aed.png
https://scitools.github.io/test-iris-imagehash/images/v4/a5f896d99a67b94c621deda3f69392cccd246db39018989ec4836de9ed249292.png
https://scitools.github.io/test-iris-imagehash/images/v4/8bf98f057a03b5307e16b561f007b53ad067217ac1786afec0f570bf8178685a.png
https://scitools.github.io/test-iris-imagehash/images/v4/faa0cbf1845e34be913787416edcc8bc3bc81f9b63332662a4ed30cdc1b2cd21.png
https://scitools.github.io/test-iris-imagehash/images/v4/e85e67c9c7e1391e97a596b03a3696a13c4fe3026318695ec5c9695e6c49c6a5.png
https://scitools.github.io/test-iris-imagehash/images/v4/8bff81ff7a0195fcf8019578d4027e00d550d402857c7e0185fe7a8385fe6aaf.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea5649c434ac92e5d9c9361b95b39c38c3835a5ec6d966ced34c633099ace5a5.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fe8c0173a19b4066d599946f35f0ed5d0b74729d40369d8953678e897877879.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa17291f95e895e8645e7a95c17a6eece4b4e1333b01c07e1bb13909914b9ec1.png
https://scitools.github.io/test-iris-imagehash/images/v4/e95a69c896a592e59bc99e3384929636c32d98cde6d964ce7e666332386465b1.png
https://scitools.github.io/test-iris-imagehash/images/v4/e63399cd99cd64b29999335965369b262649c98c9b3966c6998d3319ccd69333.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fe9d977f41e1d73000cc1df707d98184427ef8d1367c88d2667d39d0866b68.png
https://scitools.github.io/test-iris-imagehash/images/v4/be813fc0c15ac13dc1bfc27dc17e1d93c51fc43f1ea1c17a3ec138e4b1721a81.png
https://scitools.github.io/test-iris-imagehash/images/v4/9f8260536bd28e1320739437b5f437b0a51d66f4cc7c09f4d00fdb1c93fcb21c.png
https://scitools.github.io/test-iris-imagehash/images/v4/87ff85d47800bd9f660779d0863f49c9947f4e1e9141de38d700da28ce1d9a2b.png
https://scitools.github.io/test-iris-imagehash/images/v4/aeffe6d67780958636179d92e019892dd139daf5815d987a807a48e699684a6d.png
https://scitools.github.io/test-iris-imagehash/images/v4/ebeaa5419e94b5019e97950d685395bee05361fad05560fad01570fef001dabe.png
https://scitools.github.io/test-iris-imagehash/images/v4/cee8953a7a15856978579696d03d672cc49a6e5a842d3d2cc0b66bd1c2ea39f1.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa817a83846ea46ce539c93391de32cc86cf87a33fa168721cdb3e896e374b04.png
https://scitools.github.io/test-iris-imagehash/images/v4/a7ff97837f00c9c830d79921661f9e9695099876c478d964c079c876d879da26.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3ffd4ae7f55efbe200178d7d4082c17d7280906d6e58962df319800da6cdd26.png
https://scitools.github.io/test-iris-imagehash/images/v4/ae953f87d5e82d86801f91ee6e1591fe7e117876c07d6877d068d878d800d07a.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fec2777e04256f68023352f6d61da5c109dec8d19bcf089cc9d99a9c85d999.png
https://scitools.github.io/test-iris-imagehash/images/v4/ee176c7f93e093a0c50f9383815e6e156859e17e6e15e17a9be08e2d851a9b83.png
https://scitools.github.io/test-iris-imagehash/images/v4/af4280bdd0ad2f52d0ad2b52d0bd7f02d0bd7f002d527f002f527f0d2f52d4ad.png
https://scitools.github.io/test-iris-imagehash/images/v4/abffd5ae2a15c9b6a10178d7d4082c57d7290906f6c58942f7b1dc88724cfd26.png
https://scitools.github.io/test-iris-imagehash/images/v4/ad2f6d2fd2d09295c2d1c3d33c1bc2d67d2c696ce0653c3ac2b1d976da05c2c4.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ffac1547a0792546c179db7f1254f6d945b7392841678e895017e3e91c17a0f.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea95317b9562e4d1649f5a05856e4ca4da52947e4ea5f13f1b499d42f13b1b41.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81e535857e92ca8ec23d21b13ce15e7a811ea5c47e1a5ac17b652d3b05e4f2.png
https://scitools.github.io/test-iris-imagehash/images/v4/af42c0bdd0ad2f52d0ad2b52d0bd7f02d0bd7f002d527f002f527e0d2f52d4ad.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3fac1b47c99184e62669ca7f65bc96ab81d97b7e248199cc7913662d84acda0.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea74c707958b387895ab38f8c7236a557a542c7868d54b05787197eab478972a.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea85603f956a9741951e9d83c1fa8d2fd0a55af0d25f345ae5f062c72d68612d.png
https://scitools.github.io/test-iris-imagehash/images/v4/abffd4a02a01cc84f10078d7d4082c77d73909ded6ef816273bd9c98725cdd26.png
https://scitools.github.io/test-iris-imagehash/images/v4/f2c464ce9e399332e1b74ce1cc79338c6586e5b33b31b37a66c9664cc06e1a64.png
https://scitools.github.io/test-iris-imagehash/images/v4/e9e1658e961e92569e9e3c7966d36c586165698c70e1ce739b3698619e1e984c.png
https://scitools.github.io/test-iris-imagehash/images/v4/82faa1977fdf89976200ddf6e000d9e7f75f9866d560dae4dc00d966dc005e20.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea811831957fe3cea68c6ce0d9f29b9b6a816463953e61cc917f1ae36ac09d38.png
https://scitools.github.io/test-iris-imagehash/images/v4/e874978b978b6875978b6875978b7854950b78506855787468747ea2687597aa.png
https://scitools.github.io/test-iris-imagehash/images/v4/f9789b388786678686966c9093879ce592c79bc94d19929b6939cf66316c672c.png
https://scitools.github.io/test-iris-imagehash/images/v4/e961658f961e92469e1e1c7966f36cd86165618c70e166b39b9698719e1e9ec8.png
https://scitools.github.io/test-iris-imagehash/images/v4/a7ff978b7f00c9c830d7992166179e969509d866c478d964d079c876d869da26.png
https://scitools.github.io/test-iris-imagehash/images/v4/a95e381f96a096a5d6a5eb40c3f0ebf0c1e0c3f07c0a3e3e96a13c1e6d5b694a.png
https://scitools.github.io/test-iris-imagehash/images/v4/8bfc815e78018597fc019b65b425d121955e7eda854b7d6a80db7eb481b72b61.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81857e954a7a81857e957e857efc00857e7e007a85c02a7e859f287a85c1fe.png
https://scitools.github.io/test-iris-imagehash/images/v4/e9a53a59961ec5a62c691a587b9662e1c0e1e53e9e0e9b873ec15a7161bc642f.png
https://scitools.github.io/test-iris-imagehash/images/v4/bc7a1c32d3c366cdc785c39986cdc78ec792e7a6960d584939793c3438703873.png
https://scitools.github.io/test-iris-imagehash/images/v4/8bfe81ff780185fff800955ad4027e00d517d400855f7e0085ff7e8085ff6aed.png
https://scitools.github.io/test-iris-imagehash/images/v4/fe816e81917e907eb43e873f85677ac190f0703c6a95811f1ac33ce1a57a6f18.png
https://scitools.github.io/test-iris-imagehash/images/v4/87ff95776a01e1f67801cc36f4075b81c5437668c1167c88d2676d39d6867b68.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ffe95027e05e7007305d9c4a447127f853f069f814f2fa7d4d12b6cfc007e5a.png
https://scitools.github.io/test-iris-imagehash/images/v4/ae953f0591ea3f07914a95fa7e07d1fa68156a15d07c6a7dd068c0fef000d0fa.png
https://scitools.github.io/test-iris-imagehash/images/v4/e78665de9a699659e55e9965886979966986c5e63e98c19e3a256679e1981a24.png
https://scitools.github.io/test-iris-imagehash/images/v4/83ffbd097e84c54a621799d8601d9966d253cc27c039d876d078d866d869d8f7.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fea97194f07c9c830d79169ce16269f91097af6c47861f6d0796076d0797a16.png
https://scitools.github.io/test-iris-imagehash/images/v4/bf813f80c156c05dc0fec29dc17f1a6dd05fc0ff1aa1c57e3b243b20375a1e81.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3ffd4827f51ef94200078d7c4082c57d739095ed6ed8962db759808da6cdd26.png
https://scitools.github.io/test-iris-imagehash/images/v4/ad2f6d2fd2d09295c2d1c3d33c1bc2d27d2c696ce0e53c3ad2b1d976da01c2c4.png
https://scitools.github.io/test-iris-imagehash/images/v4/e385699d9c3896627243318fcdad5a7dc6dba492e9b69964936dc21974b18592.png
https://scitools.github.io/test-iris-imagehash/images/v4/bcf924fb9306930ce12ccf97c73236b28ecec4cd3e29847b18e639e6c14f1a09.png
https://scitools.github.io/test-iris-imagehash/images/v4/bc7a1c32d3c366cdc585c39986cdc79ec792e3a6960d584939793c3438743873.png
https://scitools.github.io/test-iris-imagehash/images/v4/82b8a1977fdf89876200dde6e000d9e7f77f9866d560dfe4dc00d966fc005e20.png
https://scitools.github.io/test-iris-imagehash/images/v4/ad2f6d2dd2d09295c3c0c7d13c1bc6d23d2c696de0e53c3ac393daf6d205c2c4.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81917e857e6e81857e7a857a81917a7a81857e857e7e81857e7a817a81852e.png
https://scitools.github.io/test-iris-imagehash/images/v4/bf80e2f1c17f1d0ac457c8d619a637213749699b6bb34e3666e4b04e944d9d89.png
https://scitools.github.io/test-iris-imagehash/images/v4/e95a6938b6b5969193901a4fc1e594a7c69999cbce33639879526e72330e65e4.png
https://scitools.github.io/test-iris-imagehash/images/v4/aa97b70ff5f0970f20b2956a6a17957af805da71d06f5a75d02cd870d800d8f2.png
https://scitools.github.io/test-iris-imagehash/images/v4/ee819cb7913b63c8846e64737bb1999c6ec52633953a69c8916f6c636e92911c.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa9562d4c7c43d0bb57b97e0857a3f1995d284763a05c17a7b856a2dc0f45a84.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3ffd5ae7f51efb6200378d7d4082c17d7280906d6e58962db31d800da6cdd26.png
https://scitools.github.io/test-iris-imagehash/images/v4/87ff85d47a00bc9f660779d8863f49c9907f4e1e9141de38d708da28ce1d9a0b.png
https://scitools.github.io/test-iris-imagehash/images/v4/abffd5ae2a15cdb6b10178d7d4082e57d7290906f685814277b1dc88724cfd26.png
https://scitools.github.io/test-iris-imagehash/images/v4/b99139de866952e6c946c639c47e6bd18769d16e7a9981662e813699d0763e89.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81817ec40a7a81857e957e857ef40a857ef60b7a81c40a7b81e60f7a814aff.png
https://scitools.github.io/test-iris-imagehash/images/v4/fb946ba684e194fb901b3a0587641ad03b1ae7674e64c15a5b99c767c47e3a98.png
https://scitools.github.io/test-iris-imagehash/images/v4/e1a561b69b1a9a42846e9a49c7596e3cce6c907b3a83c17e1b8239b3e4f33bc4.png
https://scitools.github.io/test-iris-imagehash/images/v4/abff4a9df26435886520c97f12414695c4b69d23934bc86adc969237d68ccc6f.png
https://scitools.github.io/test-iris-imagehash/images/v4/fb11731a94cea4ee64b35e91d1d2304e9e5ac7397b20e1fe12852487e666ce46.png
https://scitools.github.io/test-iris-imagehash/images/v4/82fe81987fdf77ffe0002addd4002805dd28df67d9a9d4625bfddc209841de20.png
https://scitools.github.io/test-iris-imagehash/images/v4/cff8a55f7a15b55a7817854ad007a5e8c04f3ce8c04f3e2ac4706ab295b37a96.png
https://scitools.github.io/test-iris-imagehash/images/v4/afea97094f07c9c870d79129ce16269f91096af6c4f861f6c07960f6d0797a16.png
https://scitools.github.io/test-iris-imagehash/images/v4/87ed2f067f008d8220179c52f01fd9bed1789a6c847cc877c560c976987ec8fd.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8172d0847ecd2bc913939c36846c714933799cc3cc8727e67639f939996a58.png
https://scitools.github.io/test-iris-imagehash/images/v4/82be8db67f95952e761d9d6bb01dcd628059c962c1fbd9e1c072da64d060ca74.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3fac1947c99184e62669ca7f65bc96ab81d97b7c248399cc7917662d84ac5a1.png
https://scitools.github.io/test-iris-imagehash/images/v4/ae953f87d5e82d87801b91ee6e1599fe7e117874c07d6877d068d878d800d07a.png
https://scitools.github.io/test-iris-imagehash/images/v4/ebff6992f50096a5b245dac4f6559496b49248dbc95dcb699529912dcf244a54.png
https://scitools.github.io/test-iris-imagehash/images/v4/e85e67c9c7e1391e97a596b03a3696a13c4f63066318695ec5c9695e6c49c6a5.png
https://scitools.github.io/test-iris-imagehash/images/v4/82fe8db67f95952e76159d6bb01dcd629059c962c1fbd9e1c072da64d020ca74.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa9979468566857ef07e3e8978566b91cb0179883c89946686a96b9d83766f81.png
https://scitools.github.io/test-iris-imagehash/images/v4/a95e3c1f96a096a5d6a5eb40c3f0ebe0c1c0c3f07c0b3e3e96a13c1e6d5b694a.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fec2777e06256f68023352f6d61da5c009decad19bcf089cc9d99a9c85d989.png
https://scitools.github.io/test-iris-imagehash/images/v4/bf81e6b1c17e1d4884bfc8df39a43720374969db69b34e26c4e4b0ca904f9d89.png
https://scitools.github.io/test-iris-imagehash/images/v4/bb423d4e94a5c6b9c15adaadc1fb6a469c8de43a3e07904e5f016b57984e1ea1.png
https://scitools.github.io/test-iris-imagehash/images/v4/bb07314fc6e1c6b4c31e9ee1846939a1c116c15e7b14e17e1ea9393de16e1ac3.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ffe8f367e05952afe05a50b980ded4bd05d69c2c1fb71c1c06272f4d0a06af4.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fec1ff7f90987720029f1ef458cd43811cdb60d647de609485ddb899215f62.png
https://scitools.github.io/test-iris-imagehash/images/v4/e8faad47f784bd0596859d03969f9962c05dc96ee07189fe6870c862687178f8.png
https://scitools.github.io/test-iris-imagehash/images/v4/e3856b999c3896727243318f8dad5a75965ba492f9b69964db4cc65b64918592.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea053d2e916ac2d9c4d894346b24f3477acf68ad39329ed8c696e136c1ab9a71.png
https://scitools.github.io/test-iris-imagehash/images/v4/e87a973d96a56953968769439685a54ae05117eae0511fba60513bba69717aba.png
https://scitools.github.io/test-iris-imagehash/images/v4/fe8142f5c17ebd2cc16eb548954a9542916a347a915e60bd4afd68793f916296.png
https://scitools.github.io/test-iris-imagehash/images/v4/be853f80854ac17ec0bdc2f5c17a0d09cc1fc07f5ab5e1fe3f409d7a38743e00.png
https://scitools.github.io/test-iris-imagehash/images/v4/87fef8117980c7c160078f1ffc049e7e90159a7a95419a7e910dcf1ece19ce3a.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa95350f952ad2f0c1f66ac1c55a4af4e550a52b3e05905e1e419e6f937e3b21.png
https://scitools.github.io/test-iris-imagehash/images/v4/a2f9b5ba7600a56962df9e96f01dc926c498cc46847f9d6cd0244bf19a6b19f1.png
https://scitools.github.io/test-iris-imagehash/images/v4/fe816a95c17fb51e953e9485857a1f409552856a1f81c17e5ab94e15c0ff5a85.png
https://scitools.github.io/test-iris-imagehash/images/v4/e85e87a197a1695a97a16d5a97a17d5a97a17806785a7816685a7e86685ad687.png
https://scitools.github.io/test-iris-imagehash/images/v4/bb07314fc4e0c6b4c31e9ee1847939a1c116c15e7b94e57e1ea9391de16e1ac3.png
https://scitools.github.io/test-iris-imagehash/images/v4/ba176a1795e895e8c5e87c00c1f8c1f894a8c5e87a077adec5e83e173e177a06.png
https://scitools.github.io/test-iris-imagehash/images/v4/bf803f00c05fc4bfc07ec15dc05fd8bbc07cc96c333a32113bd02dd27ced3ec0.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa854e19851a30e4cc76cd0bb179325cb7c664b0c938cb4bce739e9c37a3b5c0.png
https://scitools.github.io/test-iris-imagehash/images/v4/be0e695ac3f096b5943fd2a185fc1e8590e594ee1e05c17a4f403d0fe1fe4b42.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa85857ec45a7a81857e854a857ee56a917ec56a3a85c56a3a85c4ea7a8112fe.png
https://scitools.github.io/test-iris-imagehash/images/v4/8aff878b7f80953860179561f087953ad167997a80784a7fc1e5d86d9978485b.png
https://scitools.github.io/test-iris-imagehash/images/v4/fe818d6ac17e5a958d7ab12b9d677615986e666dc4f20dea7281d98833889b22.png
https://scitools.github.io/test-iris-imagehash/images/v4/a2f9b5ba7600856962df9e96f01dcd26c498cc46847f9d6cd0244bf19a6b1975.png
https://scitools.github.io/test-iris-imagehash/images/v4/b9993986866952e6c9464639c4766bd9c669916e7b99c1663f99768990763e81.png
https://scitools.github.io/test-iris-imagehash/images/v4/8bf88f457a03b5307e16b561f007b53ed067217ac1786afec0f570bf8178681a.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8542b7b503b548857abd08857abd09945eed6a91d96ac163b972d36aa462b5.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea9561ef956a7b92609b922dc16e6ec6845ac47e5aa5c57e5ec04861957b1b81.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fec2ff7c00a56de9023b52e4143da5d16d7ecad1b76f2094c963929c6471c8.png
https://scitools.github.io/test-iris-imagehash/images/v4/a5f896d99a66b94c621deda3f69392cccd646db3901898dec4836de9cd249292.png
https://scitools.github.io/test-iris-imagehash/images/v4/e385699d9c3896727243318f8dad5a7dc65ba492b93699649b6dc25b64938592.png
https://scitools.github.io/test-iris-imagehash/images/v4/bbfac39d9899384a6f6694a7b613cb489c95b7b7c24a399cc5913262d84acda0.png
https://scitools.github.io/test-iris-imagehash/images/v4/a7ffb6067f008d87339bc973e435d86ef034c87ad07cd86cd001da68897e58a8.png
https://scitools.github.io/test-iris-imagehash/images/v4/e87a952d96a56953968769439685a54ae85197eae0511fba60513bba69717aba.png
https://scitools.github.io/test-iris-imagehash/images/v4/87ed2f067f008d8220179852f01fd9bed1789a6c847cc877c468c9f6987ec8fd.png
https://scitools.github.io/test-iris-imagehash/images/v4/a4fb19b3db04c6cd6307b98678601c738c39d71cf3866186d8616e69bd191b9e.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fe955f6a05e5137305d9c4f443127195187e9cd5467fa3d4917b68fc007a1a.png
https://scitools.github.io/test-iris-imagehash/images/v4/faa52ec1955ac536c0bf9e09c57edae69357e13f4e80c0da2f81618493da3f01.png
https://scitools.github.io/test-iris-imagehash/images/v4/ba1e605ec7a193a1b85e9e81c4da58909996b3763a65e16f7b816939ed7a1e01.png
https://scitools.github.io/test-iris-imagehash/images/v4/83f9c8967e009da6245f9946e25f9ed6f0940f29f40749d8853678e8d7857879.png
https://scitools.github.io/test-iris-imagehash/images/v4/ad2f6d2f92d09295c3d0c7d13c1bc6d23d2c696cf0e53c3ac2b3d9f6d201c2c4.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8460b9c17b78723e05a5a9954edaf062333799954e9ca5c63b9a52d24e4a9d.png
https://scitools.github.io/test-iris-imagehash/images/v4/e87a952d96856943969f694696858d4ee0519d6ee07f9b6a78619b2a79711a2a.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa1594f3858a670c94e37b1cccb13e736a1d8cf17a1f94e2c119938e9463678c.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea95629d956a996069939e9bc07f7aad856cc47e5e81857a1e254a35c1be1b81.png
https://scitools.github.io/test-iris-imagehash/images/v4/9f8260536bd28e1320739437b5f437b0a51d66f4cc5d08fcd00fdb1c93fcb21c.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea9521fb956a394069921e93f07f4aad856cc47e4e95857a1ea5da3591ba1b81.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8562b6c0773d09956a955a857a1d88845ec57e3f81c07e4ae56b21d0ff5a85.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81857e857e7a81857e7a817a81857a7a81857e857e7a85857e7a817a81857a.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa854f19851a30e4cc76cd0bb179325ca7c665b0c938cb4b4e719e9cb727b5c0.png
https://scitools.github.io/test-iris-imagehash/images/v4/eaa5e03f957a4f80954a9e41e16e9c60970fb5b24ada634e6e93692d4ba562d8.png
https://scitools.github.io/test-iris-imagehash/images/v4/82fe81987fdf77ffe0002a9dd4002805ddaade65d9a9d5625bfddc209841de20.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3fac1947c99184e62669ca7f65bc96ab81d97b7e248199cc7913662d94ac5a1.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea1f781f95e085e895e0fd4295e095ea95a085e87a153e7e95e06a1778157a17.png
https://scitools.github.io/test-iris-imagehash/images/v4/e9ff6992b50096a5b245dac4f64594b6b49248dbc95dcb699529952dcf244a56.png
https://scitools.github.io/test-iris-imagehash/images/v4/e95e696994b196b593b19a1ec3c591c5c6e596191e4e693269336c36391a6e3a.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ffcc65767039740bc069d9ad00b8dadd03f52f181dd347a847a62ff81e8626c.png
https://scitools.github.io/test-iris-imagehash/images/v4/a8fa2d4797859585b6959d07605f896ee051697ad061d9fad0619aaed801deae.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fe896066f068d873b83cb71e435725cd07c607ad07c70fcd0007af881fe7bb8.png
https://scitools.github.io/test-iris-imagehash/images/v4/afffe6d67700958636179d92e019992dd039daf5817d987a807a48e499684a6d.png
https://scitools.github.io/test-iris-imagehash/images/v4/eab5313f954a7b9260f39789c5ec4cd084d0c4e45aa1c5fe3a04797bb13b3b06.png
https://scitools.github.io/test-iris-imagehash/images/v4/ee953f0591ea3f07914a95fa7e07d1fa68156a15d07c6a3dd038c0fef000d0fa.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81857e857e7a81857e7a817a81817e7a81857e857e7a81857e7a817a81857e.png
https://scitools.github.io/test-iris-imagehash/images/v4/bcf924fb9306930ce12ccf97c73236b28ecec4cc3e29847b38e639e6c14f1a09.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa17291f95e895e8645e7a91c17a6ee464f4e1333b01c17e1bb1390d914b9ec1.png
https://scitools.github.io/test-iris-imagehash/images/v4/82fe81987fd777ffe0002addd4002805dda8de65dde9d4625bfddc209841de20.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ffe95297e87c74a6a059158f89c3d6ed0536597c0387836d0f87866d0697097.png
https://scitools.github.io/test-iris-imagehash/images/v4/e168317a92d36d89c5bb9e94c55e6f0c9a93c15a6ec584763b21716791de3a81.png
https://scitools.github.io/test-iris-imagehash/images/v4/ebfa2d4b968795059e87970f6854697ae055697ac08561fad041d7aef001d6ae.png
https://scitools.github.io/test-iris-imagehash/images/v4/eaa5684eb54a947ad09eb731c521978dc2fb1cc0e4966ce26e2c6b2d3a6e691a.png
https://scitools.github.io/test-iris-imagehash/images/v4/a7ffb6067f008d87339bc973e435d86ef034c87ad07c586cd001da69897e5838.png
https://scitools.github.io/test-iris-imagehash/images/v4/af42c0bdd0ad2f52d0bd3f42d0bd7f02d0bd7f002d527f002f427fa82f42d6a8.png
https://scitools.github.io/test-iris-imagehash/images/v4/baf5347ecf0ac3f1c1f68f83850b1f83cc11c0fc7ad0c17a1be138e4b07e1a0d.png
https://scitools.github.io/test-iris-imagehash/images/v4/faa562ed68569d52857abd12953a8f12951f64e0d30f3ac96a4d6a696ee06a32.png
https://scitools.github.io/test-iris-imagehash/images/v4/e95a330c96a5ccf2695a330c96a5ccf2695a330c96b5ccf3694a330c96b5ccf3.png
https://scitools.github.io/test-iris-imagehash/images/v4/fac460b9c17b78723e05a5a9954edaf062332799954e9ca5c63b9a52d24e5a95.png
https://scitools.github.io/test-iris-imagehash/images/v4/be81c17ec17e7e81c17e3e81c57ea55a3e80c17e3e81c1fe7a81c285c95f2c03.png
https://scitools.github.io/test-iris-imagehash/images/v4/bf80e2b1c17f1d0ac4f7c8d739a637202749699b6bb3ce3666e4b048944d9d89.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea856a9ff16eb740954a9e05855a19a3c0fbc13e1ea5c07d5ad0cb58e45e3c35.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa15615e97a193adc15e1e81c4fa3eb49d30817e3e05c17e7ba59927817e1e01.png
https://scitools.github.io/test-iris-imagehash/images/v4/ad5e94a5c3b0c3f096a5695a96a53c0f711b3c0f7d1b97b46943c3e0cc416b5a.png
https://scitools.github.io/test-iris-imagehash/images/v4/83ffc8967e0098a6241f9d26e34b8e42f4d20bb4942759e9941f78f8d7867a39.png
https://scitools.github.io/test-iris-imagehash/images/v4/baff589936602d8ec977334ae4dac9b61a6dc4d99532c86cc2913e36c4cc0f61.png
https://scitools.github.io/test-iris-imagehash/images/v4/e87a952d96856943969f694696858d4ae0519d6ee07f996a78719b2a79711a3a.png
https://scitools.github.io/test-iris-imagehash/images/v4/af7e1f0ff1e1e0f0d918960e6c076d8bd266d868c537365a90966db0de0e1b09.png
https://scitools.github.io/test-iris-imagehash/images/v4/ebeaa5419e95b5419e97950d6853953ee053617ad05560fad01570fef001dabe.png
https://scitools.github.io/test-iris-imagehash/images/v4/eae942146540b869961f8de694589da69543cc9af1014afbc3fd596b84fe19a7.png
https://scitools.github.io/test-iris-imagehash/images/v4/82fabd867fd5e5822201d9c6a4539a77953d8cbf834f99e7d051996cdc00da48.png
https://scitools.github.io/test-iris-imagehash/images/v4/9f8a60536bd28e1320739437b5f437b0a53d66f4cc5c08f4d00fdb1c93fcb21c.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea74c707958b3878958b38f8c7236a557a542c7868d54b877875978abc789722.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8562b7c2763d09956a955a855a1d88d45ec57a3f81c07e6ae16b21c0ff7a81.png
https://scitools.github.io/test-iris-imagehash/images/v4/af42c0bdd0ad2f52d0bd3f42d0bd7f02d0bd7f003d527f002f427ea82f42d6a8.png
https://scitools.github.io/test-iris-imagehash/images/v4/aeb8b5095a87cd60386592d9ec97ad6dd23ca4f6d0797827f0096216c1f878e6.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fe9dd77f00e1d73000cc1df707db8184427ef8d1367c88d2667d39d0866b68.png
https://scitools.github.io/test-iris-imagehash/images/v4/a6eaa57e6e81ddf999311ba3b3775e20845d5889c199673b4e22a4675e8ca11c.png
https://scitools.github.io/test-iris-imagehash/images/v4/fac54f19851a30e4cc76cd0bb179325cb78665b0c938cb4b4e719e9c9727b5c0.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea1f781f95e085e885e0954295e195ea95a085e87a153e7f95e06a1778557a1f.png
https://scitools.github.io/test-iris-imagehash/images/v4/fe812f88957a955a857a9257c17f7aa5c03dc0bf5a85c07e7f402d40a57a3f01.png
https://scitools.github.io/test-iris-imagehash/images/v4/fba0cbf1845e34be912787416edcc8bc3b881f9b62332762a5ad32cdc1b2cd21.png
https://scitools.github.io/test-iris-imagehash/images/v4/83ffb5d67fd4e5962211d9c6a443da77d5389c8ed346d923d011d968dc00da48.png
https://scitools.github.io/test-iris-imagehash/images/v4/82ffb5d67fdde5962211d9c6a441da77d5389c8cd346d927d011d968dc00da48.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea953bfb956ac4f4649f1a05c56e6ca45a53945e6ea5c13f1b498542c13f1b41.png
https://scitools.github.io/test-iris-imagehash/images/v4/ae7e1f0ff1e1e0f0d918960e6c076d83d266d868c537365ad0966db0de4e1b09.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea053d2e916ac2d9c4d895346b2473477acf68ad39329ed8c69ee126c1ab9a71.png
https://scitools.github.io/test-iris-imagehash/images/v4/bab430b4ce4bce43c5becf89c54b1a63c543c56e1e64907e3bb469b490de1ac1.png
https://scitools.github.io/test-iris-imagehash/images/v4/a95e3c1f96a096a5d6a56b40c3f06be2c1c0c3f07c0b3ebe96a13c1e6d5b694a.png
https://scitools.github.io/test-iris-imagehash/images/v4/bd913e01d07ee07e926e87876f8196c1e0d36967393c1f181e2c3cb8b0f960d7.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81857e857e7e81857e7a81857e7a81857e7a818576c02a7e95856a7e81c17a.png
https://scitools.github.io/test-iris-imagehash/images/v4/ba056717c3e099e9b90f8e81c4da589499b696763e45e56b3b893929c17b7e01.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa854e19851a30e4cc76cd0bb179325cb78665b1c938c94bce739e9c3727b5c0.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa1594f3858a670c94e37b1cccb13e736a1d84f17a1d94e2c11d938e9463678e.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81857e857e7e21857e7a817a817a857a81857a7a81857a857e857a857e7a84.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ff897066b41f076f81dce1fb007da79c50633e9c40626b8d1066df9d6067969.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa81857e857e3e80857e7a817a817a817a81817f7a81857e857e857e857e7a81.png
https://scitools.github.io/test-iris-imagehash/images/v4/ba1e605ec7a191a1b85e9e81c4da58909996b37e3a65e16f7b817939e57a1e01.png
https://scitools.github.io/test-iris-imagehash/images/v4/e5a565b69e1a9a42917e1a19c17b3a619e59c47b3a25c53e3b8430e5c57a3e85.png
https://scitools.github.io/test-iris-imagehash/images/v4/aaff4a9df26435886520c97f12414695c4b69d23934bc86adc969a17d69ccc6f.png
https://scitools.github.io/test-iris-imagehash/images/v4/edf896d79a67b94c651ced23d29392cccd646d33901912fcc4836d69ed249292.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea5e618434ac36e5c1c9369b95b39c38c3a39a4ecef19a6e9b64cb609925cd25.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ffcc65777039740bc069d9ad00b8dadd03d52f181dd707a847a62ff81e8626c.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fec1ff7f94987720009f1ef458cd43810cdb60d647de609485ddb89921df62.png
https://scitools.github.io/test-iris-imagehash/images/v4/e85e87a197a1695a97a1695a97a17d5a97a17906785a7816685a7e86685ad687.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa95350f952ad3f0c1f66a81e55a4af4e550a52b3e05905e1e419e6f937e1b21.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa816a85857a955ae17e957ec57e7a81855fc17e3a81c57e1a813a85c57a1a05.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea159694856a6b5096afa53a36941da1e4f5c369cd1ae6d69b6a1c80625af2f6.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fe896366f0f8d93398bcb71e435f24ed074646ed07670acf010726d81f2798c.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa852f81955ac532c0bf9e89c57edae69357e13f4ea0c05a3f8561a4935a3e01.png
https://scitools.github.io/test-iris-imagehash/images/v4/8aff878b7f00953062179561f087953ad167997a80784a7fc1e5d86d9978485f.png
https://scitools.github.io/test-iris-imagehash/images/v4/a5f896d99a67b94c621ceda3f6d392cccd246db3901898dec4836de9cd249292.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fe82f047c018c83bc01bc5af01fd1bcd15a327c847860fdc57a69beb0be68bd.png
https://scitools.github.io/test-iris-imagehash/images/v4/faa12bc1954ef43fc0bf9f02854a4ee48548c17a5ab5c17e7a0d7875a17e3a81.png
https://scitools.github.io/test-iris-imagehash/images/v4/fac16ee0953b911bc15e9648e56ec4e691be7bcc7a8184733ea16a90c17e930d.png
https://scitools.github.io/test-iris-imagehash/images/v4/bea07c99c15eb16e9891ce50c742394a3ced6cb13390f1cc73c29f1b2d0ecd66.png
https://scitools.github.io/test-iris-imagehash/images/v4/87ffb5867f0060d4301f6d9fb007d899c50699e9c8668e78d8678d69de069969.png
https://scitools.github.io/test-iris-imagehash/images/v4/e95e696994b196b793b19a1ec3c191c5c6e596191e4e693269336c36391a6e3a.png
https://scitools.github.io/test-iris-imagehash/images/v4/be21a71bc1de58e43a31871f7e856470c1fa9b8c7b81647384665b9ed1b998c1.png
https://scitools.github.io/test-iris-imagehash/images/v4/e3856b999c3896727243318f8dad5a75865ba492e9b69964db6cc65b74918592.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa56c3cc34e891b1c9a91c36c5a170e3c71b3e5993a784e492c49b4ecec76393.png
https://scitools.github.io/test-iris-imagehash/images/v4/e85a69cc96ad92e193c9963385929e1cc3819acde6d965ce6e666b30386e65b1.png
https://scitools.github.io/test-iris-imagehash/images/v4/9e1952c9c165b4fc668a9d47c1461d7a60fb2e853eb426bd62fd229c9f04c16d.png
https://scitools.github.io/test-iris-imagehash/images/v4/acf939339a16c64de306318638673c738c19d71cf3866186d8636e69bd191b9e.png
https://scitools.github.io/test-iris-imagehash/images/v4/e5a665a69a599659e5db1865c2653b869996cce63e99e19a1a912639e7181e65.png
https://scitools.github.io/test-iris-imagehash/images/v4/abfef958fd462c993a07d87960464b81d1009687c139d3b594e9cf87c6b89687.png
https://scitools.github.io/test-iris-imagehash/images/v4/e1a561b69b1a9e43846e9a49c7596e2cce6c907b3a83c16e1b9231b3e4f33b8c.png
https://scitools.github.io/test-iris-imagehash/images/v4/ec4464e185a39f93931e9b1e91696d2949dde6e63e26a47a5ad391938d9a5a0c.png
https://scitools.github.io/test-iris-imagehash/images/v4/aa953d0f85fab50fd0f2956a7a1785fafa176877d00f68f1d02c60f2f008d0f0.png
https://scitools.github.io/test-iris-imagehash/images/v4/e9686d8c9696924797879e3b86929e58696d69cc6869659379626133398d9ccd.png
https://scitools.github.io/test-iris-imagehash/images/v4/82f8a1977fdf89876200ddf6e000d9e7f77f9866d560dee4dc00d966dc005e20.png
https://scitools.github.io/test-iris-imagehash/images/v4/ebfaaf439e87b5019687b5019687b56ac05561fae07103fe6079687a607178f8.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fee970b4f07c9c930d79129ce16269f91097af6c4f861f4d0786076d0797a16.png
https://scitools.github.io/test-iris-imagehash/images/v4/fe81957ac17e6a85817e6a85857e942a3e81957a7e81917a7a81d95ec17e2ca1.png
https://scitools.github.io/test-iris-imagehash/images/v4/bbbb31e1c44e64e4b0459b5bb1716ecac464f496ce34618eb1079b39b193ce25.png
https://scitools.github.io/test-iris-imagehash/images/v4/a3fd956a7a01a5ee3217c9e66691996ec15fdca593680d2586785a259dfa5a01.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8562f6c0773d09b54a955a857a3f81955ac47e3e85c17e7aa16a25c0765aa1.png
https://scitools.github.io/test-iris-imagehash/images/v4/ad2f6d2fd2d09295c3c0c7d13c1bc6d23d2c696ce0e53c3ac393dbf6d205c2c0.png
https://scitools.github.io/test-iris-imagehash/images/v4/82ff8db67f94952e76159d6bb01dcd629059c962c1fbd9c1c062da74d820ca74.png
https://scitools.github.io/test-iris-imagehash/images/v4/ad5e94a5c3b0c3f096a1695a96a53c1f711b3c0f791b97b46943c3e06c436b5a.png
https://scitools.github.io/test-iris-imagehash/images/v4/83ffb5097e84c54a621799d8601d9966d213cd67c039d876d078d866d869d8f7.png
https://scitools.github.io/test-iris-imagehash/images/v4/a6ffb5097e84cde2224598d1649f8d6cd2388c76d0799867d009da76c9f8d866.png
https://scitools.github.io/test-iris-imagehash/images/v4/ba173a1795e895e8c5e8f400c1f8c1f895a8c5e87a077a5ec5e83e173e177e02.png
https://scitools.github.io/test-iris-imagehash/images/v4/eae0943295154bcc844e6c314fb093ce7bc7c4b3a4307bc4916f3f316ed2b4ce.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8562b6c0763d09b54a955a857a3f88845ec57a3e85c07e6a616b25d0ff7a81.png
https://scitools.github.io/test-iris-imagehash/images/v4/83ffc1dc7e00b0dc66179d95f127cfc9d44959ba846658e891075a3e99415a2f.png
https://scitools.github.io/test-iris-imagehash/images/v4/ae7f1f07f3e0e0f0311b9e066e074d839266d8e8cd379adad1964db0d80e9b09.png
https://scitools.github.io/test-iris-imagehash/images/v4/ae7f1f07f3e0e0f0211b9e066e074d83926ed8f8cd3792dad1964db0d80e9b09.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa1594f3858a670c94e37b1cccb13e736a1d8cf17a1d94e2c11993ae9463678c.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa9562fcc7c0b50bb53b9f8085727a157a95c0f67a85e07e0be08069e07d9fa0.png
https://scitools.github.io/test-iris-imagehash/images/v4/e1faa549de9497090697971d60539f3ef171c87ac075487ad025d87ed801da3e.png
https://scitools.github.io/test-iris-imagehash/images/v4/bb433d4e94a4c6b9c15adaadc1fb6a469c8de43a3e07904e5f016b57984e1ea1.png
https://scitools.github.io/test-iris-imagehash/images/v4/8bfe857f7a01a56afa05854ad015bd00d015d50a90577e80857f7ea0857f7abf.png
https://scitools.github.io/test-iris-imagehash/images/v4/8ff8c2d73a09b4a76c099d26f14b0e5ad0d643b0d42763e9d51378f895867c39.png
https://scitools.github.io/test-iris-imagehash/images/v4/eae942526540b869961f8da694589da69543cc9af1014afbc3fd596b84fe19a7.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea95956a95626993941a6a2d956e6ed6845a6e65c4bec7b64a9594686ea19578.png
https://scitools.github.io/test-iris-imagehash/images/v4/87ed2f867f008d8220179852f01fd9bed1789a6c847cc877c46ac972987ec8fd.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa8542b7b503b548857abd08857abd09945eed6b91d968c161b972d76aa462b5.png
https://scitools.github.io/test-iris-imagehash/images/v4/83fec1ff7e0098757103a71ce4506dc3d11e7b20d2477ec094857db895217f6a.png
https://scitools.github.io/test-iris-imagehash/images/v4/a6bfb5097f84cde2224599d1649f8d6cd2388c76d0799867d009da76c1f8d866.png
https://scitools.github.io/test-iris-imagehash/images/v4/fbe0623dc9879d91b41e4b449b6579e78798a49b7872d2644b8c919b39306e6c.png
https://scitools.github.io/test-iris-imagehash/images/v4/82f8a1977fdf89876200dde6e000d9e7f77f9866d560dfe4dc00dd64dc005e20.png
https://scitools.github.io/test-iris-imagehash/images/v4/e968658e969692c797879e3b86929e58696d49cd6869c9a37962c923990d9c6d.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea811831957ae3cea68c6ce0c9f39b9b6a816473953e63cc917f1ae36ac09d38.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea5e618434ac36e5c1c9369b95b39c38c3a39a4fcee19a6e9b64cb609925cd25.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea857a81957a857e957ec17e817e6a816a853e817a853e816e818d3a862ad3fe.png
https://scitools.github.io/test-iris-imagehash/images/v4/fa856a95e15ab51a953e9485857a1f409552857e1fc1c07e5abd4a35e07f4aa5.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea9138db95668524913e6ac168997e85957e917e876396b96a81b5ce3c496935.png
https://scitools.github.io/test-iris-imagehash/images/v4/e385699d9c3896627243318fcdad5a7dc6dba492b93699649b6dc25964938592.png
https://scitools.github.io/test-iris-imagehash/images/v4/8fe82f047c018c83bc01bc5af01fd1bcd15a32fd847860fdc57269beb0be689d.png
https://scitools.github.io/test-iris-imagehash/images/v4/ea74c707958b387895ab38f8c7236a557a542c7868d54b05787197eabc789722.png
-------------------- >> begin captured logging << --------------------

Anything I can do to help?

@bjlittle
Copy link
Member Author

bjlittle commented Apr 12, 2018

@pelson Fixed 🎉

I just needed to fix the last test to point to the new v4 URL (phew).

This LGTM, but to be honest it should really also be merged into 2.0.x. That said, and given #2965 (comment), I'm inclined to push on and cut at v2.1.0 but only on the proviso that we unpin matplotlib 😜

Now that the image tests are working, that would be a good win, and a refreshing change to turnaround a quick release on the heels of v2.0.0 ... what do you think? @SciTools/iris-devs

@bjlittle
Copy link
Member Author

@corinnebosley @pp-mo @dkillick @pelson

Please someone merge this PR... before I have to change the license headers to say 2019 😜

@pelson pelson merged commit 73220b2 into SciTools:master Apr 30, 2018
@bjlittle bjlittle deleted the fix-imagehash branch April 30, 2018 22:30
@bjlittle bjlittle mentioned this pull request May 2, 2018
DPeterK added a commit to DPeterK/iris that referenced this pull request Oct 22, 2018
* Fix coord_comparison when coords are the same object

* Added what's new items for SciTools#2730 and SciTools#2325. (SciTools#2852)

* Added what's new items for SciTools#2730 and SciTools#2325. [skip ci]

* Moved the bugfix docs to enhancement for the 3x speedup of area weights. [skip ci]

* Add unit test

* Add workaround

* Add test of current dask behaviour

* Ammended cube.var_name documentation. (SciTools#2874)

Ammended cube.var_name documentation to refer to it as NetCDF.

* Futures netcdf no unlimited (SciTools#2838)

* switched boolean operator and altered docstring

* raised error on future flag and tweaked functionality

* small change to deprecation warning message

* Code changes

* remake cdl results

* More CDL updates

(cherry picked from commit 47272b3)

* Review actions

* Use default Dask scheduler settings (SciTools#2879)

Disable dask.set_options call on _lazy_data import.

* Fix doctest failing due to change in 'netcdf_promote' future behaviour (SciTools#2883)

* Remove unneeded image repo url (SciTools#2885)

* Updated 2.0 release notes. (SciTools#2884)

* Add iris-grib as a testing dependency; Python 3 included.

* Fix requirements for iris_grib>=0.12, assuming it will have eccodes + thus work with Python 3

* Made the iris extensions not install by default.

* Reduced the number of processes used by default when testing.

* Set the documentation build to use viridis as the default colormap (rather than Jet as we are using matplotlib 1 still).

* Change behaviour of 'error' level (SciTools#2881)

* Change behaviour of 'error' level

* Change Future netcdf_no_unlimited tests

* Fix tests testing the wrong thing

* Dask processing options docs updates

* Added some what's new information about SciTools#2435 and SciTools#2810.

* Use the cube dimension order to determine the plot axes.

* Small update to experimental-FF whatsnew statement (SciTools#2898)

* Move some whatsnew items, remove spurious list

* Move nc-no-unlim text to whatsnew

* Fill value handling on save notes

* Netcdf scalar cube loading bugfix

Previously Iris used to simply ignore scalar cubes.

* Corrected usage context in description of PointInCell regrid scheme. (SciTools#2735)

* Re-worked setup.py to avoid the need for separate/non-standard build commands (SciTools#2891)

Re-worked setup.py to avoid the need for separate/non-standard build commands.

* Missing data whitepaper (SciTools#2906)

* Ensure lon/lat return order is consistent throughout (SciTools#2238)

* Updated to v46 of the CF standard-name table. (SciTools#2908)

* Updated to v46 of the CF standard-name table.

* Updated the area-type table to v6.

* Use viridis cmap for doc images (SciTools#2909)

* Stickler config (SciTools#2896)

* Added a flake8 config.

* Added a stickler-ci config.

* Handled the recent update to conda-forge for testing, perhaps relating to GEOS update. (SciTools#2912)

* Bumped master to the v2.1 stream. (SciTools#2910)

* Stickler config (SciTools#2896)

* Added a flake8 config.

* Added a stickler-ci config.

* Improved the way requirements are handled, ensuring that pip gets all the information it needs. (SciTools#2890)

Improved the way requirements are handled, ensuring that pip gets all the information it needs.

* Further docs refinement for v2.0.0 (SciTools#2916)

Some minor documentation tweaks for v2.0.0

* Remove obsolete reference from Userguide. (SciTools#2915)

* Reverse 2878 (SciTools#2926)

* Remove dask issue workaround; wrap computed MaskedConstant as array

* Reduce exception message for loading missing files. (SciTools#2925)

* reduce error message

* update file not found tests

* clearer message

* Allow missing value (SciTools#2892)

* Allow missing_value as a user set attribute

This allows the user to set missing_value as an attribute on a
cube while ensuring that it is saved as local attribute in the
netcdf file.

* Added the what's new and updated the copyright years for SciTools#2892.

* Fix some header dates.

* Add note on using intersection (SciTools#2931)

* CML changes for cf_units v1.2.0 (SciTools#2936)

* CML changes for cf-units v1.2.0
* Add whatsnew entry

* [DOC]: Update userguide note on intersection (SciTools#2933)

* Update userguide note on intersection

* Update with concrete boundary examples

* Prepare master for v2.0.x branch (SciTools#2934)

* Converted the contributions into the whatsnew.

* Updated to a dev version string.

* Tweaked what's new, bumped version string, and updated the MANIFEST for pypi.

* Perserve dtype of source cube with area weighted regridder (SciTools#2203)

Perserve dtype of source cube with area weighted regridder & add what's new

* Update license headers to handle the merge of a PR from 2017 in 2018 (SciTools#2948)

* DOC: lazy data docstring made clearer (SciTools#2947)

* DOC: lazy data docstring made clearer

* Clarify "view"

* Remove gdal from 'all' to 'extensions' depedency group.

* Remove gdal from 'all' to 'extensions' depedency group.

* DOC: lazy data docstring made clearer (SciTools#2947)

* DOC: lazy data docstring made clearer

* Clarify "view"

* No docs are better than wrong docs on dask

* Add a general zenodo link to the readme. (SciTools#2955)

* Improved the pip installability of scitools-iris. (SciTools#2956)

* Release of iris v2.0.0 🎉

* Merge v2.0.x into master (SciTools#2957)

* Tweaked what's new, bumped version string, and updated the MANIFEST for pypi.

* Remove gdal from 'all' to 'extensions' depedency group.

* DOC: lazy data docstring made clearer (SciTools#2947)

* DOC: lazy data docstring made clearer

* Clarify "view"

* No docs are better than wrong docs on dask

* Add a general zenodo link to the readme. (SciTools#2955)

* Improved the pip installability of scitools-iris. (SciTools#2956)

* Release of iris v2.0.0 🎉

* Move v2.0.x branch into development mode.

* Fix the documentation building for latest version of sphinx. (SciTools#2958)

* Remove FutureWarning from use of np.issubdtype(obj, np.str) (SciTools#2954)

* Add cube co-realisation. (SciTools#2967)

* Fix for changed API of cartopy.crs.Stereographic (SciTools#2971)

* Fix for changed API of cartopy.crs.Stereographic; fixes tests.test_coordsystem.

* License header fix.

* remove site.cfg exclude from manifest.in (SciTools#2978)

* Save calendar attribute for cube data (SciTools#2984)

* Fix bug with aux coords with scalefactor/add_offset (SciTools#2975)

Fix bug with aux coords with scalefactor/add_offset

* Rename to correct package name

* Fix imagehash hex_to_hash (SciTools#2989)

* Fix imagehash hex_to_hash

* expose hamming distance vector

* fix idiff

* update imagerepo

* fix repo hashes (bjlittle)

* fix repo hashed (scitools)

* fix test_image_json

* test_pearsonr: use compatible cubes for testing compatible cubes (SciTools#2960)

Pearsonr test using compatible cubes

* Use unittest.mock for Python 3 (SciTools#3003)

* reflect new latitude guess_bounds behaviour (SciTools#3006)

* Pin Dask to >=0.17.1 (SciTools#2965)

* Fill a usability gap in iris.analysis.Trajectory (SciTools#2770)

* Fill a usability hole in Trajectory

* Remove iris.experimental.um module (SciTools#2781)

* Remove iris.experimental.um module

* Replace use of sphinx's status_iterator function, which has moved

* Lazy unit conversions for cube and coord data. (SciTools#2964)

* Gracefully handle long time intervals (SciTools#2354)

Gracefully handle long time intervals (months & years) when plotting

* Prevent creation of invalid CF variable names. (SciTools#3009)

Prevent creation of invalid CF variable names.

* Add stash check to name() (SciTools#2930)

Try the STASH attribute when checking for possible names (as is already done in the summary method)

* Attempts to fix docs-build error reporting. (SciTools#2983)

Remove final semicolon to report docs-build error.

* Phenomenon translation updates (SciTools#3011)

* Netcdftime dep (SciTools#3017)

Pin to netcdf4 1.3 or below while we await netdftime updates
Correct deprecated pandas use in v0.23

* add 'axes' kwarg to _label when called from contourf

* Replace iris.co_realise_cubes with CubeList.realise_data. (SciTools#3013)

* Replace iris.co_realise_cubes with CubeList.realise_data.

* Avoid exposing lazy-data functions in iris.cube and iris.coord modules.

* Tidy lazy_data imports in cube + coords modules.

* Amend var_name documentation (SciTools#3020)

Amend documentation to be explicit that var_name is a netCDF quantity, not necessarily a CF one.

* Updated tests for cf_units 2 (SciTools#3023)

Updated tests for cf_units>=2

This change:
 * Removes the redundant ``iris/tests/test_unit.py`` tests.
   They are all migrated to cf_units.
 * Makes use of CALENDAR_GREGORIAN, rather than CALENDAR_STANDARD.
   These calendars are implemented as aliases in cf_units 2, and the
   "STANDARD" concept is not preserved/round-tripped.

Added a what's new to help reduce possible impact for users.

* Use ConfigParser for py>=3.2 (SciTools#3025)

* WIP: Unpin mpl (SciTools#3019)

* unpin mpl

* Add _repr_html_ for Iris cubes (SciTools#2918)

Add cube _repr_html_ functionality

* Partial collapse of multi-dimensional coordinates (SciTools#3028)

Adding support for partial collapse of multi-dimensional coordinates

* Tidy up the root of the repository for v2.1 (SciTools#3034)

A bunch of miscellaneous changes in preparation for the v2.1 release:

 * Move CONTRIBUTING.md to a .github/ folder.
   See also: https://help.github.com/articles/setting-guidelines-for-repository-contributors/
 * Updated the .gitignore to reflect what gets produce in day-to-day iris development
 * Reduced the amount of redundancy in INSTALL. It now points to the requirements/ directory
   which is what we actually test.
 * Updated minimum dependencies in requirements (because that is all we test):
    * Numpy>=1.14
    * Matplotlib>=2
    * cf_units>=2

* Remove the CODING matrix item. (SciTools#3036)

* Add Albers Equal Area Projection and some test as per SciTools#2496 (SciTools#2943)

Add Albers Equal Area Projection and NetCDF rules to handle it

* Improve the appeal of the landing pages (docs and README) (SciTools#3040)

* Update the Iris README markdown to be consistent with other SciTools projects.
* Gave the package a description (for pypi).
* Minor spruce of the Iris docs layout to include the tagline and the forkme button

* Use the correct pypi name for nc-time-axis. (SciTools#3039)

* Use cftime instead of netcdftime (SciTools#3016)

* use cftime instead of netcdftime

* fix the docs too

* fix license year

* review actions

* simplify test_pandas

* what's new

* remove cf_units check

* Fixed the intermittent test in SciTools#3035. (SciTools#3037)

* Fixed the intermittent test in SciTools#3035.

The problem was that iris.util.format_array was stateful (via np.set_printoptions).

* Fix stateful tests (SciTools#26)

* Add dask-array as a requirement when pip installing. (SciTools#3033)

* Unpin netcdf4 (SciTools#3031)

* unpin netcdf4

* adapt for netcdf4 >=1.4

* fix userguide doctests

* Metarelate updates in the UM 2 CF mapping (SciTools#3043)

* Updated the README, and copied that over to the iris docs homepage. (SciTools#3045)

* Added the what's new for iris 2.1 (SciTools#3044)

Added the what's new for iris 2.1

* Updated the cf-standard names to v54. (SciTools#3046)

Achieved with:

  $ wget http://cfconventions.org/Data/cf-standard-names/54/src/cf-standard-name-table.xml -O  etc/cf-standard-name-table.xml
  ...
  --2018-06-02 06:32:17--  http://cfconventions.org/Data/cf-standard-names/54/src/cf-standard-name-table.xml
  ...

* iris.quickplot: Ensure labels and plot use the same axes

Allow iris.quickplot to accept an axes kwarg to which title and axes labels can be attached.
This is done without using the matplotlib state machine.
Closes SciTools#2946

* sticklering

* Full-featured Mercator coord system (SciTools#3041)

Add ``standard_parallel`` to the Mercator Coord System

* Updated the branding and execution of Iris docs (SciTools#3050)

* Updated the branding and execution of Iris

This includes:

 * removing the "easy-to-use" statement in Iris' strapline. Let's let users be the judge of that.
 * improved the styling of the homepage, including re-instating the search bar.
 * Added a what's new for SciTools#3010.
 * Added a extlinks section for convenient linking to github issues with :issue:`number` and :pr:`number`.

* Added a favicon for the docs.

* Improve strapline style, content (SciTools#27)

* Further improvements to Iris docs

* Improved font (noto-sans)
* Removed old CSS
* Fixed a few what's new entries

* [DOC] Iris Introduction updates (SciTools#3052)

Update the introduction of Iris content.

* Updated to v2.1.0. (SciTools#3051)

* Move into development mode for v2.1.1

* Move into development mode for v2.2.0

* remove first 'and' from tagline to make it read easier

* Notebook repr whatsnew update

* remove first 'and' from tagline to make it read easier

* minor requirements tidy

* http -> https for copybutton.js (SciTools#3066)

* Explain use of saver='string' in iris.save (SciTools#3062)

* Fix reStructuredText warnings in documentation (SciTools#3069)

* Add information about comparing STASH objects with strings (SciTools#3072)

* Doc: Fallback to no syntax hightlighting without warning. (SciTools#3071)

Fixes:
iris/docs/iris/src/developers_guide/gitwash/development_workflow.rst:317: WARNING: Could not lex literal_block as "python". Highlighting skipped.

http://www.sphinx-doc.org/en/stable/config.html#confval-highlight_language

* Quick fix to get tests passing by pinning dask version (SciTools#3086)

* ENH: Working zonal mean linear regridding for circular sources or with use of extrapolation (SciTools#3085)

* Working zonal mean from circular/extrapolated source to target

* MAINT: Refactor of zonal mean testing

* MAINT: Documentation changes from review

* Avoid pandas deprecation warning. (SciTools#3079)

Avoid pandas deprecation warning.

This also simplifies code by being explicit about usage of "base" and "values"
for numpy and pandas objects, and removes legacy code that may no longer be valid.

* Workaround for dask array copy bug (SciTools#3088)

* add contact options to README

* Add stash mapping changes to v2.1.0 changelog

* Pin Dask for avoid 0.18.2 bug with masked arrays.

* Tiny fix for dask, Python3 only?

* Disable doctests for Python 2.

* Ignore warnings and update array printouts.

* Better way to disable Python2 doctests.

* Support plotting 2D bounded coords

* Add gridcell_angles and rotate_grid_vectors to iris.analysis.cartography, with tests: INCOMPLETE WIP

* Roughly working, snapshotted with complex test plot code, to be reduced.

* Small improvements.

* First working quiver+streamplot.

* Handle custom coords correctly

* some words for docs, WIP probably

* suggested tweaks and corrections

* Update docs to included 2.2 versions (SciTools#3110)

* Provide a test skipper for 2d coords WIP. (SciTools#3099)

* Change version number (SciTools#3118)

* re-added bounds definition for contiguity check, removed unnecessary test

* Ensure Sphinx autodocs for grid_angles routines.

* Codestyle fixes.

* Whatsnew entries for 2d vector support.

* Pin Dask to avoid 0.18.2 bug with masked arrays. (SciTools#3127)

* Put orca_util routines in subpackage of iris.test.stock, to get existing iris.tests.unit.plot.test_2d_coords working.

* Disable broken misused testcode in test_gridcell_angles.

* Ditch test_gridcell_angles, none of it is functional.

* Further style fixes.

* Skip tests using iris-test-data, for Travis TEST_MINIMAL phases.

* Codestyle fix (though this code obsolete anyway).

* Fix unused imports.

* Made-up test cube replaces use of iris-test-data.

* Renamed keyword; improved docstring.

* Change 'co' to 'coord' for clarity.

* Review changes.

* Update pp save rules to handle time means (SciTools#3132)

* Vector plots 2 (SciTools#3120)

* Small improvements; first sensible tests.

* Enhanced testing; better checking and crs awareness in grid_angles routine.

* Remove crud from test_gridcell_angles.

* Use degree units for everything in _grid_angles.

* Make assertArrayAllClose print details when it fails.

* Rework and extend testing for gridcell_angles.

* Fix assertArrayAllClose; remove debug code from test_gridcell_angles.

* Remove obsolete assignments.

* Remove obsolete code.

* Small comment improvements.

* Attempt to clarify docstrings of low-level routines.

* More tests, and some functional fixes.

* Codestyle fixes.

* Review changes + fixes.

* Avoid using sample data.

* Temporary pin to avoid problems caused by Proj4 v5.1. (SciTools#3150)

* Extending ORCA blockplotting (w/ tests) (SciTools#3135)

* Tests for rotate_grid_vectors (SciTools#3148)

* Tests for rotate_grid_vectors.

* Small fix to assertArrayAllClose for values near 0.

* Small tweaks.

* Fix test method.

* Fix 1 test for 'equal_nans' no longer the default.

* Review changes.

* Remove 'skip_2d' test decorator. (SciTools#3156)

* Add integration graphics tests for pcolormesh with 2d coords (SciTools#3149)

* Vector plots 4 (SciTools#3158)

* Fix contig_ tolerance kwarg bug (SciTools#3162)

* Add simple lazy aggregations

* Lazy SUM and COUNT, tests improved

* Add tests for MAX and MIN

* Update tests for STD_DEV

* Use NetCDF variable's chunks on load (SciTools#3131)

Preserve NetCDF chunks on dataset load

* Iteration and less duplication

* Attempt to fix Matplotlib issue by resticting to 2.x

* Non-test review actions

* Make COUNT tests truer unit tests

* Convert MAX and MIN tests to truer unit tests

* Convert COUNT and SUM agg tests to truer unit tests

* Tests for new _lazy_data function

* Fix for netCDF4 1.4 behaviour change. (SciTools#3177)

* Improve gracefully filling warning (SciTools#3171)

* Realise that running the tests is simpler than I thought

* Make Gracefully warning only appear when filling is required

* Add tests of warnings

* Get rid of install changes, they are in SciTools#3170

* Update after review

* Add whatsnew entry

* Minor clarification to entry via a little more punctuation

* Revert nc vars masking fix (temporarily). (SciTools#3178)

* fix for pandas column object bug (SciTools#3176)

* turn columns object into pandas array, plus test

included cml this time

* made things the way pandas like it; bambooish

* regenerated cml to match output

* Update module headers and installation instructions (SciTools#3170)

* Update module headers and installation instructions

* Realise that running the tests is simpler than I thought

* Update install instructions for developers

* Update INSTALL to be consistent

* Correct some failing tests

* Update tests.rst (SciTools#3082)

Added one line on how to test. This is mentioned in the Iris Check List in pulls.rst list, but would be good to have it here as well (useful for new contributors like me).

* Add link to developer guide. (SciTools#3093)

* Combine identical test routines for pcolor + pcolormesh.

* Test 'contiguity_tolerance' use in iris.plot.pcolor and pcolormesh.

* Unpin dask

* Handle printing bounds of long time interval coords (SciTools#3140)

* Handle printing time bounds

* Whatsnew, whitespace fix for test result

* iris.util.reverse on cubes (SciTools#3155)

* make cube reversing official

* review: test conventions, etc.

* review: enable coord specification

* add whatsnew

* review: AssertRaises --> AssertRaisesRegexp

* cube error handling

* Improved Aux factory error handling: better message, delivered earlier (SciTools#3182)

* Tests for expected behaviour

* Raise error if aux factory relies on a coordinate external to cube

* Include coordinate name in error message

* Don't check whether dependencies that are "None" are in the coords.

* Review changes: check cube name in error and variable rename

* Truncated variable for flake8

* Correct cube collapse code

* Provide info on pp-field indices in the file for structured um loads. (SciTools#2977)

* Field locations for structured um loads.

* Remove unused import.

* Fix test for new implementation.

* Added whatsnew.

* Review changes.

* simplify dev guide

* Integration test for iris.plot.contour with 2d coords. (SciTools#3189)

* Integration test for iris.plot.contour with 2d coords.

* Review changes.

* pinned numpy to not 1.15.2 in core requirements

* Public contiguity checking (SciTools#3144)

:champagne: :1st_place_medal: for sticking with it @corinnebosley

* Populate whatsnew 2.2 (SciTools#3192)

* started adding entries to whatsnew

* more updates to whatsnew

* first complete draft of 2.2 whatsnew

* some small corrections

* made corrections suggested in review

* Update version str

* Update CF standard name table to v59

* Fix docstring re structured text warnings (SciTools#3073) (SciTools#3197)

* updated version string to 2.3.0dev0

* add contact options to README

removed gitter from contact list

* Add stash mapping changes to v2.1.0 changelog

replaced list with link of stash mappings

* expanded name of dev group

* added an n for better flow

* Fix broken link to dask docs (SciTools#3204)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants