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

TEST: Extends #2569 to unpickle #2608

Merged
merged 5 commits into from
Oct 24, 2019
Merged

Conversation

cpelley
Copy link

@cpelley cpelley commented Jun 16, 2017

Locally the grib roundtrip pickle-unpickle fails for me. I'll wait to see what happens on travis says before I post details.

Extends #2569 to check that we can unpickle.

@bjlittle bjlittle self-assigned this Jun 24, 2017
@bjlittle bjlittle added this to the v2.0 milestone Jun 24, 2017
# Check that a GribMessage pickles without errors.
messages = GribMessage.messages_from_filename(self.path)
obj = next(messages)
self.pickle_obj(obj)
Copy link
Member

Choose a reason for hiding this comment

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

@cpelley Is the test simply that there are no exceptions raised by pickle.dump() within pickle_obj() ?

There are no explicit asserts associated with this test nor test_data ...

Copy link
Author

Choose a reason for hiding this comment

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

That's right, these are the original two tests from this module which I refactored only to perform a common pickle dump (self.pickle_obj). I have added test_roundtrip which performs a dump and load and performs an assert.

I do not know enough about grib to understand whether test and test_data actually test something that my new test_roundtrip does not (i.e. redundant or not). Can you confirm whether these two tests still serve a purpose?

@bjlittle
Copy link
Member

@cpelley Are the pickle tests not concerned with cPickle or the variations of the different pickle protocols ...

@bjlittle
Copy link
Member

@cpelley You're going to have to rebase once #2616 is merged to master, thanks!

@cpelley
Copy link
Author

cpelley commented Jun 27, 2017

@cpelley Are the pickle tests not concerned with cPickle or the variations of the different pickle

Thanks @bjlittle. The test do use cPickle. Regarding the different protocols, I hadn't appreciated that the pickleability of an object could be sensitive to the protocol chosen -- I have added tests on all three protocols now (I would be interested to hear about here sensitivities might occur).

@cpelley
Copy link
Author

cpelley commented Jun 27, 2017

Rebased :)

@cpelley
Copy link
Author

cpelley commented Jul 13, 2017

Restarted the travis CI but sill unrelated failures and timeouts.

@DPeterK
Copy link
Member

DPeterK commented Aug 1, 2017

@cpelley unfortunately not all of the test failures are unrelated to this change (although these test failures were right at the top of the list of failing tests). Sorry this is a little long:

======================================================================
ERROR: test_protocol_0 (iris.tests.integration.test_pickle.TestGribMessage)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/tests/integration/test_pickle.py", line 46, in test_protocol_0
    self.pickle_cube(0)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/tests/integration/test_pickle.py", line 43, in pickle_cube
    self.assertEqual(ncube, cube)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/unittest/case.py", line 513, in assertEqual
    assertion_func(first, second, msg=msg)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/unittest/case.py", line 503, in _baseAssertEqual
    if not first == second:
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/cube.py", line 3104, in __eq__
    result = np.all(np.abs(self.data - other.data) < 1e-8)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/cube.py", line 1703, in data
    return self._data_manager.data
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/_data_manager.py", line 343, in data
    result_dtype=self.dtype)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/_lazy_data.py", line 131, in as_concrete_data
    data = np.asanyarray(data.compute())
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/base.py", line 98, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/base.py", line 205, in compute
    results = get(dsk, keys, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 562, in get_sync
    return get_async(apply_sync, 1, dsk, keys, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 508, in get_async
    fire_task()
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 504, in fire_task
    callback=queue.put)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 551, in apply_sync
    res = func(*args, **kwds)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 295, in execute_task
    result = pack_exception(e, dumps)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 290, in execute_task
    result = _execute_task(task, data)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 271, in _execute_task
    return func(*args2)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/array/core.py", line 58, in getter
    c = a[b]
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/fileformats/grib/message.py", line 253, in __getitem__
    data = sections[7]['codedValues']
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/fileformats/grib/message.py", line 419, in __getitem__
    key, self._number))
KeyError: "'codedValues' not defined in section 7"

======================================================================
ERROR: test_protocol_1 (iris.tests.integration.test_pickle.TestGribMessage)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/tests/integration/test_pickle.py", line 49, in test_protocol_1
    self.pickle_cube(1)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/tests/integration/test_pickle.py", line 43, in pickle_cube
    self.assertEqual(ncube, cube)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/unittest/case.py", line 513, in assertEqual
    assertion_func(first, second, msg=msg)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/unittest/case.py", line 503, in _baseAssertEqual
    if not first == second:
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/cube.py", line 3104, in __eq__
    result = np.all(np.abs(self.data - other.data) < 1e-8)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/cube.py", line 1703, in data
    return self._data_manager.data
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/_data_manager.py", line 343, in data
    result_dtype=self.dtype)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/_lazy_data.py", line 131, in as_concrete_data
    data = np.asanyarray(data.compute())
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/base.py", line 98, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/base.py", line 205, in compute
    results = get(dsk, keys, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 562, in get_sync
    return get_async(apply_sync, 1, dsk, keys, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 508, in get_async
    fire_task()
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 504, in fire_task
    callback=queue.put)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 551, in apply_sync
    res = func(*args, **kwds)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 295, in execute_task
    result = pack_exception(e, dumps)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 290, in execute_task
    result = _execute_task(task, data)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 271, in _execute_task
    return func(*args2)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/array/core.py", line 58, in getter
    c = a[b]
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/fileformats/grib/message.py", line 253, in __getitem__
    data = sections[7]['codedValues']
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/fileformats/grib/message.py", line 419, in __getitem__
    key, self._number))
KeyError: "'codedValues' not defined in section 7"

======================================================================
ERROR: test_protocol_2 (iris.tests.integration.test_pickle.TestGribMessage)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/tests/integration/test_pickle.py", line 52, in test_protocol_2
    self.pickle_cube(2)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/tests/integration/test_pickle.py", line 43, in pickle_cube
    self.assertEqual(ncube, cube)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/unittest/case.py", line 513, in assertEqual
    assertion_func(first, second, msg=msg)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/unittest/case.py", line 503, in _baseAssertEqual
    if not first == second:
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/cube.py", line 3104, in __eq__
    result = np.all(np.abs(self.data - other.data) < 1e-8)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/cube.py", line 1703, in data
    return self._data_manager.data
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/_data_manager.py", line 343, in data
    result_dtype=self.dtype)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/_lazy_data.py", line 131, in as_concrete_data
    data = np.asanyarray(data.compute())
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/base.py", line 98, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/base.py", line 205, in compute
    results = get(dsk, keys, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 562, in get_sync
    return get_async(apply_sync, 1, dsk, keys, **kwargs)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 508, in get_async
    fire_task()
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 504, in fire_task
    callback=queue.put)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 551, in apply_sync
    res = func(*args, **kwds)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 295, in execute_task
    result = pack_exception(e, dumps)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 290, in execute_task
    result = _execute_task(task, data)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/local.py", line 271, in _execute_task
    return func(*args2)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/dask/array/core.py", line 58, in getter
    c = a[b]
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/fileformats/grib/message.py", line 253, in __getitem__
    data = sections[7]['codedValues']
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/Iris-2.0a0-py2.7-linux-x86_64.egg/iris/fileformats/grib/message.py", line 419, in __getitem__
    key, self._number))
KeyError: "'codedValues' not defined in section 7"

At least it looks like it's the same thing going wrong in each case! Would you mind taking a look please...

@pelson pelson removed this from the v2.0.0 milestone Oct 19, 2017
@pelson
Copy link
Member

pelson commented Oct 19, 2017

Hi @cpelley - thanks for this. I've just removed this from the v2.0.0 milestone and added the "bug" label. Essentially, I think we can merge this at any time (and I'm happy to do so), but do not consider this a release blocker. There will be a sweet-spot over the next 7 days where there is opportunity to merge simple PRs before the v2.0.0 release candidate - if you can update your PR in that time, I've no objection to it going into master (note: I haven't reviewed the actual code, so usual code review applies).

@cpelley
Copy link
Author

cpelley commented Oct 19, 2017

Thanks @pelson not sure when I'll be able to do this. TBH, a fix to grib couldn't be any lower down on my priorities of things to do especially given my lack of exposure to it.

Would you be open to me turning these into known failure tests for the grib so we can get the benefit of the unpickle test coverage for the fileformats?
We can then open a new ticket on addressing the known failure to grib unpickle and address in future.

Cheers

@bjlittle
Copy link
Member

bjlittle commented Jul 8, 2019

@cpelley Would you mind re-basing (again) ?

@cpelley
Copy link
Author

cpelley commented Jul 9, 2019

After rebase, I get a strange exception:

======================================================================
ERROR: iris.tests.integration.test_pickle.TestGribMessage
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/nose/case.py", line 267, in setUp
    try_run(self.test, names)
  File "/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/nose/util.py", line 471, in try_run
    return func()
TypeError: setUp() takes exactly 1 argument (0 given)

Since I don't have an environment available that seems to have iris_gib in it. Changing the decorator order had no effect. If you have any ideas, feel free to jump in :)

Cheers

@pp-mo
Copy link
Member

pp-mo commented Jul 9, 2019

After rebase, I get a strange exception:

I looked into this. It only occurs whens tests are run with "nose", because its "discovery" methods are subtly different from unittest :-(
But actually I think the real problem is that @unittest.expectedFailure is not intended as a class decorator, and doesn't work as one : it is meant for individual test functions only (unlike the skipXx decorators).

I'm not clear why are you even using this - surely these tests ought to pass ??

@cpelley
Copy link
Author

cpelley commented Jul 9, 2019

Thanks for the comment @pp-mo

...because its "discovery" methods are subtly different from unittest :-(

Gosh, that's unpleasant! Thanks for figuring this out.

I'm not clear why are you even using this - surely these tests ought to pass ??

This issue was intending to add the missing 'unpickle' part to the format testing ('pickle' testing for pp and netcdf being added in #2569).
As per #2608 (comment), grib unpickle testing doesn't work which could represent a real issue, but it is one that I can't delve into given my experience with grib. That is, there are two options as I see them: 1. remove the unpickle test component to grib and assume everything is OK with grib 2. Make the unpickle tests known failures and accept that this reveals an issue which might need further investigation if it raises its head.
I'm favouring option 2 since I suggest these known failures have value.

Cheers

@cpelley
Copy link
Author

cpelley commented Jul 9, 2019

There are unrelated test failures in the python3 CI

@pp-mo
Copy link
Member

pp-mo commented Jul 9, 2019

There are unrelated test failures in the python3 CI

From what I can see, these are because the conda build has installed dask 2 (which is quite new, at least to iris).
We have now pinned that, as it is causing problems all over : #3350

As usual, one more rebase fixes everything ...

@pp-mo
Copy link
Member

pp-mo commented Jul 9, 2019

I'm favouring option 2

Yes, I think that's reasonable.

It would be nice to get the grib-unpickle working too, at some point, but I guess we can wait until there is a real driver for that.
Meanwhile, I would replace (i.e. overload) the failing ones with a decorated version in that one class.
Like this ? ...

class TestGribMessage(Common, tests.IrisTest):
 . . .
    # These probably "ought" to work, but currently fail.
    # see https://github.com/SciTools/iris/pull/2608
    test_protocol_0 = unittest.expectedFailure(Common.test_protocol_0)
    test_protocol_1 = unittest.expectedFailure(Common.test_protocol_1)
    test_protocol_2 = unittest.expectedFailure(Common.test_protocol_2)

N.B. I also think it will be good practice to reference the PR in a comment (like the above).

What do you think @cpelley ?

@bjlittle bjlittle assigned pp-mo and unassigned bjlittle Jul 9, 2019
@cpelley
Copy link
Author

cpelley commented Jul 10, 2019

What do you think @cpelley ?

That's neat. Happy to do this. Thanks for your involvement @pp-mo

@cpelley
Copy link
Author

cpelley commented Jul 10, 2019

I'm not sure why but replacing the failing ones with a decorated version in that one class effects the other test classes too! - puzzling
I have added the comment you suggested though.

Cheers

@pp-mo
Copy link
Member

pp-mo commented Jul 10, 2019

Good stuff @cpelley

But we have a problem ... no grib tests are now running (they are all skipped).
We have developed a problem with installing the grib api, so iris-grib is not functioning.

Please wait on this, while we fix that. 😢

@cpelley
Copy link
Author

cpelley commented Jul 17, 2019

OK NP, thanks @pp-mo
Should we target the v2.2.x branch since this isn't functional changes here?

@bjlittle
Copy link
Member

bjlittle commented Oct 3, 2019

Hey @cpelley and @pp-mo

Where we at with this PR? (nudge) 😉

@cpelley
Copy link
Author

cpelley commented Oct 4, 2019

Hi @bjlittle
Should we target the v2.3.x branch since this isn't functional changes here?

@pp-mo
Copy link
Member

pp-mo commented Oct 4, 2019

Should we target the v2.3.x branch since this isn't functional changes here?

No, I'm afraid this has definitely missed the cut for 2.3 😢
( and it definitely isn't a 2.3 bugfix contribution ).

But the good news is, following action to drop python2, we should be re-enabling grib testing quite soon.
So at that point, the Grib part of this testing will get to run again, and it all starts to make sense.
Then we can merge it !! 🤞 🙏

@bjlittle bjlittle added this to the v3.0.0 milestone Oct 4, 2019
@bjlittle
Copy link
Member

bjlittle commented Oct 4, 2019

@cpelley Yup, what @pp-mo said 😉

Keep this PR targeted on master and it'll make 3.0.0 👍

@cpelley
Copy link
Author

cpelley commented Oct 4, 2019

OK, well I think this PR is good to go when your ready.
Cheers

@bjlittle bjlittle assigned bjlittle and unassigned pp-mo Oct 4, 2019
@pp-mo
Copy link
Member

pp-mo commented Oct 10, 2019

lbdreyer moved this from In progress to Backlog in Iris v3.0.0

It's coming.
Thanks for patience @cpelley ! 🐢

# see https://github.com/SciTools/iris/pull/2608
@unittest.expectedFailure
def test_protocol_0(self):
super(TestGribMessage, self).test_protocol_0()
Copy link
Member

Choose a reason for hiding this comment

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

@cpelley Now we're exclusively Python3, isn't this now simply super().test_protocol_0()?

If true, also applies through out. Fix this and I'll merge 😄

Copy link
Member

Choose a reason for hiding this comment

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

@cpelley This'll all be resolved by #3457, so let's bank some progress 👍

@bjlittle bjlittle merged commit 4f88c38 into SciTools:master Oct 24, 2019
@cpelley cpelley deleted the PICKLEABLE_FORMATS branch November 7, 2019 13:57
trexfeathers pushed a commit to trexfeathers/iris that referenced this pull request Jan 13, 2020
pp-mo pushed a commit to pp-mo/iris that referenced this pull request Jan 14, 2020
pp-mo pushed a commit to pp-mo/iris that referenced this pull request Jan 14, 2020
trexfeathers added a commit that referenced this pull request Jan 16, 2020
* Bump version to 2.4.0rc0.

* unpin mpl (#3468)

* Merge pull request #3301 from bayliffe/fastpercentilemethod_mask_test

Analysis percentile method - update applicability test for fast_percentile_method

* Have Travis test with iris-grib, remove problem tests (#3469)

* Have Travis test with iris-grib, remove problem tests

* mock GribInternalError correctly

* Update license headers

* account for changes in handling of grib message defaults

* Test against the latest version of python-eccodes

* Moved irir-grib skip to iris.tests

* Merge pull request #2608 from cpelley/PICKLEABLE_FORMATS

TEST: Extends #2569 to unpickle

* _regrid_area_weighted_array: Move axes creation over which weights are calculated to before loop (#3519)

* Purge iris.experimental.regrid np<1.7 support (#3539)

* Add NameConstraint with relaxed name loading (#3463)

* _regrid_area_weighted_array:  move indices variable nearer to use (#3564)

* _regrid_area_weighted_array: Tweak variable order to near other use in code (#3571)

* Fix problems with export and echo command. (#3577)

* Pushdocs fix2 (#3580)

* Revert to single-line command for doctr invocation.

* Added script comment, partly to force Github respin.

* Bracketed six.moves and __future__ imports.

* Fixes required due to the release of iris-grib v0.15.0 (#3582)

* Fix python-eccodes pin in travis (#3593)

* PI-2472: Optimise the area weighted regridding routine (#3598)

* PI-2472: Tweak area weighting regrid move xdim and ydim axes (#3594)

* _regrid_area_weighted_array: Set axis order to y_dim, x_dim last dimensions

* _regrid_area_weighted_array: Extra tests for axes ordering

* PI-2472: Tweak area weighting regrid enforce xdim ydim (#3595)

* _regrid_area_weighted_array: Set axis order to y_dim, x_dim last dimensions

* _regrid_area_weighted_array: Extra tests for axes ordering

* _regrid_area_weighted_array: Ensure x_dim and y_dim

* PI-2472: Tweak area weighting regrid move averaging out of loop (#3596)

* _regrid_area_weighted_array: Refactor weights and move averaging outside loop

* Pin pillow to make graphics tests work again. (#3630)

* PI-2472: Area weighted regridding (#3623)

* The Area-weights routine is refactored into the "__prepare" and "__perform" structure, in-line with our other regridding methods.
* The area-weights are now computed in the "__prepare", so are calculated once.
* The information required for checking the regridding weights and target grid info are now cached on the "regridder" object.
* This is inline with the general use already described in the documentation.

* pep8 conformance.

* pep8 compliance.

* Allow some 'key=None' args in Geostationary creation. (#3628)

LGTM

* Allow some 'key=None' args in Geostationary creation.

* Integration test loading netcdf geostationary without offset properties.

* pep8 conformance.

* pep8 conformance.

* pep8 conformance.

* test_NameConstraint get mock from iris.tests.

* Remove use of super() in _constraints.py for Py2 compatibility.

* Updated license headers.

* Updated iris-grib reference in extensions.txt.

* Py2 support for iris-grib in Travis.

* Updates for auto docs for Iris 2.4 release.

* What's new entry to unpinning mpl.

* Edited Py2 support for iris-grib in Travis.

* Renamed whatsnew contributions folder for v2.4.

* Hacked tests.integration.test_grib2 to avoid import error from iris-grib version < 0.15.

* Only test grib with python 3.

* Compiled v2.4 whatsnew.

Co-authored-by: Martin Yeo <[email protected]>
Co-authored-by: Bill Little <[email protected]>
Co-authored-by: stephenworsley <[email protected]>
Co-authored-by: abooton <[email protected]>
Co-authored-by: lbdreyer <[email protected]>
Co-authored-by: Emma Hogan <[email protected]>
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.

6 participants