Skip to content

Conversation

@stefsmeets
Copy link
Contributor

@stefsmeets stefsmeets commented Oct 8, 2020

Upgrade to iris 3.

Related ESMValTool pull request: ESMValGroup/ESMValTool#1874

Test results

Automated Github Actions tests with iris3 and changes to esmvalcore tests from this PR

CircleCI tests

Conda build fails because of the standard Circle build issue if adding the --channel pointer to the rc label channel (not relevant, GA conda build works well), test suite fails because the env is prebuilt in the docker container with stock esmvalcore=2.0(iris 2.4) so all OK 👍

To do list

We should keep this PR as is until iris3 becomes available on conda-forge and PyPi. Using the label channel conda-forge/label/rc_iris works well, as seen from the tests above, but needs to be kept as testing only in this PR; so before merging into master, we need to revert changes to (and change accordingly for upper limits of iris version):

  • Merge master, conflicts are expected as other contributers are likely changing code using the updated syntax.
  • environment.yml: Remove conda-forge/label/rc_iris
  • package/meta.yaml: ✔
  • setup.py: Uncomment 'scitools-iris=3.0.0'
  • .circleci/config.yml: Remove instances of -c conda-forge/label/rc_iris once iris 3.0.0 hits conda-forge

This PR tracks the progress to use iris3. I'm going by the tests to fix the issues. Some of them are already listed in #376
I will add the current test output in the next comment.

Tasks

  • Create an issue to discuss what you are going to do, if you haven't done so already (and add the link at the bottom)
  • This pull request has a descriptive title that can be used in a changelog
  • Circle/CI tests pass. Status can be seen below your pull request. If the tests are failing, click the link to find out why.
  • Codacy code quality checks pass. Status can be seen below your pull request. If there is an error, click the link to find out why. If you suspect Codacy may be wrong, please ask by commenting.

If you need help with any of the tasks above, please do not hesitate to ask by commenting in the issue or pull request.


Closes #378

The main issues are that:

  1. CubeList.extract_strict has been deprecated, use CubeList.extract_cube instead.
  2. iris3 apparently won't deal with dimensionless coordinates anymore, that means that coordinates must have their units set, i.e. some_coord.units = '1' or AuxCoord(..., units=Unit('1').

@stefsmeets
Copy link
Contributor Author

FAILED tests/integration/cmor/_fixes/test_common.py::test_cl_hybrid_pressure_coord_fix_metadata_with_a - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/test_common.py::test_cl_hybrid_pressure_coord_fix_metadata_with_ap - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/test_common.py::test_cl_hybrid_height_coord_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip5/test_access1_0.py::test_cl_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip5/test_gfdl_esm2g.py::test_get_and_remove[cubes_in0-cubes_out0] - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip5/test_gfdl_esm2g.py::test_get_and_remove[cubes_in1-cubes_out1] - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip5/test_gfdl_esm2g.py::test_get_and_remove[cubes_in2-cubes_out2] - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_bcc_csm2_mr.py::test_tos_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_bcc_csm2_mr.py::test_siconc_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_cesm2.py::test_cl_fix_file - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_cnrm_cm6_1.py::test_cl_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_gfdl_cm4.py::test_cl_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_gfdl_esm4.py::test_siconc_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_ipsl_cm6a_lr.py::TestAllVars::test_fix_data_other_var - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_ipsl_cm6a_lr.py::TestAllVars::test_fix_metadata_ocean_var - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/cmor/_fixes/cmip6/test_noresm2_lm.py::test_siconc_fix_metadata - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/preprocessor/_derive/test_interface.py::test_derive_nonstandard_nofx - ValueError: Derivation of variable 'alb' failed. If you used the option '--skip-nonexist...
FAILED tests/integration/preprocessor/_derive/test_sispeed.py::test_sispeed_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/preprocessor/_derive/test_sispeed.py::test_sispeed_calculation_coord_differ - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/preprocessor/_derive/test_sithick.py::test_sispeed_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/preprocessor/_derive/test_sithick.py::test_sispeed_calculation_percent - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_empty_cube - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_hybrid_height - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_real_cube - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/preprocessor/_regrid/test_regrid.py::FLAKE8
FAILED tests/unit/test_iris_helpers.py::test_var_name_constraint - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_asr.py::test_asr_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_co2s.py::test_co2_calculate_masked_cubes - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_co2s.py::test_co2_calculate_unmasked_cubes - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_ctotal.py::test_ctotal_calculation_cmip5[CMIP5] - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_ctotal.py::test_ctotal_calculation_cmip5[CMIP6] - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_ctotal.py::test_ctotal_calculation_cmip5[CMIPX] - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_et.py::test_et_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_ohc.py::test_ohc_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_rlntcs.py::test_rlntcs_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_rsntcs.py::test_rsntcs_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_derive/test_uajet.py::test_uajet_calculation - AttributeError: 'CubeList' object has no attribute 'extract_strict'
FAILED tests/unit/preprocessor/_regrid/test_extract_levels.py::Test::test_interpolation__masked - AttributeError: module 'iris.analysis' has no attribute 'coord_comparison'
ERROR tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_hybrid_pressure - ValueError: Invalid units: sigma must be dimensionless.
ERROR tests/integration/preprocessor/_io/test_concatenate.py::test_concatenation_with_aux_factory - ValueError: Invalid units: sigma must be dimensionless.

@stefsmeets
Copy link
Contributor Author

stefsmeets commented Oct 8, 2020

It seems that all cases of .extract_strict can be replaced by .extract_cube

Remaining failing tests:

FAILED tests/integration/cmor/_fixes/cmip6/test_cnrm_cm6_1.py::test_cl_fix_metadata - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/cmor/_fixes/test_common.py::test_cl_hybrid_pressure_coord_fix_metadata_with_a - iris.exceptions.CoordinateNotFoundError: 'Expected to find exactly 1 air_pressu...
FAILED tests/integration/cmor/_fixes/cmip6/test_gfdl_cm4.py::test_cl_fix_metadata - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/cmor/_fixes/test_common.py::test_cl_hybrid_pressure_coord_fix_metadata_with_ap - iris.exceptions.CoordinateNotFoundError: 'Expected to find exactly 1 air_press...
FAILED tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_empty_cube - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_hybrid_height - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_real_cube - ValueError: Invalid units: sigma must be dimensionless.
FAILED tests/integration/cmor/_fixes/cmip6/test_cesm2.py::test_cl_fix_file - iris.exceptions.CoordinateNotFoundError: 'Expected to find exactly 1 air_pressure coordinate, but found none.'
FAILED tests/unit/preprocessor/_regrid/test_extract_levels.py::Test::test_interpolation__masked - AttributeError: module 'iris.analysis' has no attribute 'coord_comparison'
FAILED tests/integration/preprocessor/_regrid/test_regrid.py::FLAKE8
ERROR tests/integration/preprocessor/_io/test_concatenate.py::test_fix_aux_factories_hybrid_pressure - ValueError: Invalid units: sigma must be dimensionless.
ERROR tests/integration/preprocessor/_io/test_concatenate.py::test_concatenation_with_aux_factory - ValueError: Invalid units: sigma must be dimensionless.
  • I had a look at the Invalid units: sigma must be dimensionless. This happens when iris.aux_factory.HybridPressureFactory is called with sigma that has Unit('unknown'). It needs them to be dimensionless. I'm not sure how to fix this yet.

  • iris.analysis.coord_comparison has been removed:
    Remove 'iris.analysis.coord_comparison' from public API. SciTools/iris#3562

  • iris.exceptions.CoordinateNotFoundError: 'Expected to find exactly 1 air_pressure coordinate, but found none.', this happens in three of the tests where we are looking for 'air_pressure', which does not exist.

@bouweandela
Copy link
Member

I had a look at the Invalid units: sigma must be dimensionless. This happens when iris.aux_factory.HybridPressureFactory is called with sigma that has Unit('unknown'). It needs them to be dimensionless. I'm not sure how to fix this yet.

@schlunma Would you be able to help out with this?

@schlunma
Copy link
Contributor

schlunma commented Oct 8, 2020

I had a look at the Invalid units: sigma must be dimensionless. This happens when iris.aux_factory.HybridPressureFactory is called with sigma that has Unit('unknown'). It needs them to be dimensionless. I'm not sure how to fix this yet.

@schlunma Would you be able to help out with this?

This shouldn't be hard to fix. Just add a units=Unit('1') here:

b_coord = AuxCoord([0.0], bounds=[[-0.5, 1.5]], var_name='b')

@stefsmeets
Copy link
Contributor Author

stefsmeets commented Oct 9, 2020

'1'

@schlunma Thanks for the hint! I managed to track down a few of the bugs related to that!

@stefsmeets
Copy link
Contributor Author

I updated .coord_comparison to ._dimensional_metadata_comparison as the former has been deprecated for public usage (SciTools/iris#3562). Not ideal, and likely to break in the future.

@stefsmeets
Copy link
Contributor Author

stefsmeets commented Oct 9, 2020

The remaining tests:

FAILED tests/integration/cmor/_fixes/test_common.py::test_cl_hybrid_pressure_coord_fix_metadata_with_a
FAILED tests/integration/cmor/_fixes/test_common.py::test_cl_hybrid_pressure_coord_fix_metadata_with_ap
FAILED tests/integration/cmor/_fixes/cmip6/test_cesm2.py::test_cl_fix_file

fail with:
iris.exceptions.CoordinateNotFoundError: 'Expected to find exactly 1 air_pressure coordinate, but found none.'

for example:

air_pressure_coord = cube.coord('air_pressure')

I traced this back to derived coordinates (which contain air_pressure) that have gone missing when using iris3. And that's where I get stuck. Do you have any idea @schlunma ?

@schlunma
Copy link
Contributor

schlunma commented Oct 9, 2020

Sorry, if iris changed the handling of derived variables I cannot help you right now. Is there anything in the doc that explains what happened to these derived coordinates (that are created with AuxFactory, at least in iris 2) in iris 3?

@stefsmeets
Copy link
Contributor Author

Is this related to ancillary variables? If so, it seems like they did some work there, see the third feature here: https://scitools-iris.readthedocs.io/en/v3.0.0rc0/whatsnew/3.0.html#features

@schlunma
Copy link
Contributor

schlunma commented Oct 9, 2020

No, I don't think so. From this documentation it seems to me that the handling of derived coords has not change, because iris.cube.Cube.coords still takes an AuxFactory as argument. Can you maybe do a print(cube.coords()) right before the tests fail? There are other tests with derived coordinates that do not fail, so maybe this is just a naming issue.

@stefsmeets
Copy link
Contributor Author

stefsmeets commented Oct 9, 2020

Yeah I already checked between master and this PR. The difference is as I described above. On master there is a derived variable attribute on cube with air_pressure, with this PR using iris3 there isn't.

@stefsmeets
Copy link
Contributor Author

Pretty sure the problem is with how the dataset is constructed. For example, this one here:

def create_hybrid_pressure_file_with_a(dataset, short_name):

This is what happens if I load the same data with the 2 different version of iris.

import iris
cubes = iris.load('cl_a.nc')

iris2

/home/stef/miniconda3/envs/esmvaltool/lib/python3.8/site-packages/iris/fileformats/cf.py:1074: UserWarning: Ignoring formula terms variable 'ps' referenced by data variable 'a_bnds' via variable 'lev': Dimensions ('time', 'lat', 'lon') do not span ('lev', 'bnds')
  warnings.warn(msg)
/home/stef/miniconda3/envs/esmvaltool/lib/python3.8/site-packages/iris/fileformats/cf.py:1074: UserWarning: Ignoring formula terms variable 'ps' referenced by data variable 'b_bnds' via variable 'lev': Dimensions ('time', 'lat', 'lon') do not span ('lev', 'bnds')
  warnings.warn(msg)
/home/stef/miniconda3/envs/esmvaltool/lib/python3.8/site-packages/iris/fileformats/netcdf.py:600: UserWarning: Unable to find coordinate for variable 'ps'
  warnings.warn('Unable to find coordinate for variable '
/home/stef/miniconda3/envs/esmvaltool/lib/python3.8/site-packages/iris/fileformats/netcdf.py:600: UserWarning: Unable to find coordinate for variable 'ps'
  warnings.warn('Unable to find coordinate for variable '

iris3

/home/stef/r/iris/lib/iris/fileformats/cf.py:1207: UserWarning: Ignoring formula terms variable 'ps' referenced by data variable 'a_bnds' via variable 'lev': Dimensions ('time', 'lat', 'lon') do not span ('lev', 'bnds')
  warnings.warn(msg)
/home/stef/r/iris/lib/iris/fileformats/cf.py:1207: UserWarning: Ignoring formula terms variable 'ps' referenced by data variable 'b_bnds' via variable 'lev': Dimensions ('time', 'lat', 'lon') do not span ('lev', 'bnds')
  warnings.warn(msg)
/home/stef/r/iris/lib/iris/fileformats/netcdf.py:686: UserWarning: Unable to find coordinate for variable 'ps'
  "{!r}".format(name)
/home/stef/r/iris/lib/iris/fileformats/netcdf.py:812: UserWarning: Invalid units: sigma must be dimensionless.
  warnings.warn("{}".format(e))
/home/stef/r/iris/lib/iris/fileformats/netcdf.py:686: UserWarning: Unable to find coordinate for variable 'ps'
  "{!r}".format(name)
/home/stef/r/iris/lib/iris/fileformats/netcdf.py:812: UserWarning: Invalid units: sigma must be dimensionless.
  warnings.warn("{}".format(e))
/home/stef/r/iris/lib/iris/fileformats/netcdf.py:812: UserWarning: Invalid units: sigma must be dimensionless.
  warnings.warn("{}".format(e))

@stefsmeets
Copy link
Contributor Author

Or is this simply the same UserWarning: Invalid units: sigma must be dimensionless. as before, just hidden 3 layers deep?

@stefsmeets
Copy link
Contributor Author

I managed to fix one of them by setting the correct units ('1')

@stefsmeets
Copy link
Contributor Author

All tests are working again 🥳

@stefsmeets stefsmeets marked this pull request as ready for review October 9, 2020 14:58
@stefsmeets stefsmeets requested a review from bouweandela October 9, 2020 14:58
@stefsmeets
Copy link
Contributor Author

stefsmeets commented Oct 9, 2020

CircleCI is failing as the code requires iris>=3.0. Should we also address that as part of this PR?

@schlunma
Copy link
Contributor

I found an issue with the concatenation of overlapping cubes (see here).

On DKRZ, we have these two files for cl of the CMIP5 model FGOALS-g2:

/pf/b/b309141/work/CMIP5_DKRZ/LASG-CESS/FGOALS-g2/historical/mon/atmos/Amon/r1i1p1/v1/cl/cl_Amon_FGOALS-g2_historical_r1i1p1_200001-200512.nc
/pf/b/b309141/work/CMIP5_DKRZ/LASG-CESS/FGOALS-g2/historical/mon/atmos/Amon/r1i1p1/v1/cl/cl_Amon_FGOALS-g2_historical_r1i1p1_200001-200912.nc

With the current master branch, this works totally fine, but with the new iris version I get this totally confusing error with 200 lines of stack trace:

stdout.txt

The stack trace of the log file is considerably smaller, so most of the error is only written to stdout:

main_log_debug.txt

This is the recipe I'm using:

test_cl.yml.txt

If necessary I can provide the two involved datasets.

@bouweandela
Copy link
Member

@schlunma It looks like the cube you constructed breaks when you call str(cube), that looks like a bug in iris. Could you open an issue with iris for this?

@valeriupredoi
Copy link
Contributor

valeriupredoi commented Jan 28, 2021

@schlunma It looks like the cube you constructed breaks when you call str(cube), that looks like a bug in iris. Could you open an issue with iris for this?

yeah but when you do it, say you are not from ESMValTool 😆 One thing to be careful with is that you are actually running with Python 3.7 - both the current esmvalcore and the iris3 branch of ESMValTool (which I assume you are using) is running under Python 3.9 naturally adopted by conda (if you use esmvalcore in pure development mode, as you should since you are testing this branch not the released version) - it could be an issue with the Python version, that the iris guys have not spotted since I think they've run all their tests with Python 3.9

@schlunma
Copy link
Contributor

@schlunma It looks like the cube you constructed breaks when you call str(cube), that looks like a bug in iris. Could you open an issue with iris for this?

Yeah, I thought that it's something related to that...I have a detailed look at this tomorrow, it's probably also connected to our custom aux factory AtmosphereSigmaFactory.

@valeriupredoi
Copy link
Contributor

I have recreated the conda env with python=3.7 and all tests pass fine, I tried this wee script with the files in test_data and they all pass fine, try running this with your file tomorrow:

import iris
import logging

logger = logging.getLogger(__name__)

print(iris.__version__)

c = iris.load("tests/integration/cmor/_fixes/test_data/common_cl_ap.nc")
for ci in c:
    logger.info("cube %s", str(ci))

(yes, I have just saved you 2 minutes from writing it yourself 😆 )

@bouweandela
Copy link
Member

no they're not, errors related to the test data multimodel pickling

These were caused by your local cache, the tests passed fine on CircleCI. I tried to make the cache key a bit more specific so this doesn't happen again (hopefully) and restored the original netcdf files.

@bouweandela
Copy link
Member

@bouweandela when tests pass, you mind approving, we be merging then - @bjlittle will have iris 3.0.1's first serious client switch 😁

I'd be happy to approve, or should we wait fo solve the latest issue reported by @schlunma?

@valeriupredoi
Copy link
Contributor

@bouweandela when tests pass, you mind approving, we be merging then - @bjlittle will have iris 3.0.1's first serious client switch grin

I'd be happy to approve, or should we wait fo solve the latest issue reported by @schlunma?

cheers Bouwe, let's wait for Manu see what's the deal with that roadblock

@schlunma
Copy link
Contributor

Ok, I found the issue, but I have no clue why my fix works.

The issue is the function iris.cube.Cube.coord_dims: if I call cube.coord_dims('air_pressure') after adding my custom aux factory I get the error above (iris.exceptions.CoordinateNotFoundError: 'air_pressure'), calling cube.coord('air_pressure') however works fine.

I could fix the issues by replacing these lines

@property
def units(self):
"""Units."""
units = self.pressure_at_top.units
return units

with a

self.units = pressure_at_top.units

in the class constructor, similar to the iris aux factories.

So apparently a property behaves differently than a regular class attribute?

I continue my tests now (will check a couple of recipes which I now may be problematic sometime, so stay tuned).

@schlunma
Copy link
Contributor

Bad news, I'm getting quite a lot of errors with several recipes:

  • The derivation of ohc fails because of the new cube arithmetic of iris
  • The derivation of et and rsnstcsnorm fails because attributes are now propagated when using cube arithmetics which leads to failing CMOR checks because the attribute positive is wrong
  • A model (tas of MCM-UA-1-0) does not pass the CMOR check anymore because of tas: does not match coordinate rank (worked fine with the old iris version)
  • ...

I'm pretty sure these are not the only failures. I think before merging this and including it in the new release we really need to test all recipes, otherwise I'm pretty sure that some won't work in the future.

@valeriupredoi
Copy link
Contributor

So apparently a property behaves differently than a regular class attribute?

yip, the __get__ method is supreme with @property, see the good ole stackoverflow

@valeriupredoi
Copy link
Contributor

Bad news, I'm getting quite a lot of errors with several recipes:

* The derivation of `ohc` fails because of the new cube arithmetic of `iris`

* The derivation of `et` and `rsnstcsnorm` fails because attributes are now propagated when using cube arithmetics which leads to failing CMOR checks because the attribute `positive` is wrong

* A model (`tas` of MCM-UA-1-0) does not pass the CMOR check anymore because of `tas: does not match coordinate rank` (worked fine with the old iris version)

* ...

I'm pretty sure these are not the only failures. I think before merging this and including it in the new release we really need to test all recipes, otherwise I'm pretty sure that some won't work in the future.

many thanks for testing all this @schlunma - top job indeed! Do you reccomend halting until further tests be done? I think we can do this: we freeze the code on Monday for the release but keep working on making sure iris3 is indeed secure to be included in the release and act upon what I propose in #963 as sort of an emergency commit before release, if we manage to make it work by then, that is

@schlunma
Copy link
Contributor

schlunma commented Jan 29, 2021

@valeriupredoi I managed to fixed all the issues I found. With these all the recipes I tested (some of mine and all example recipes where I have the data) run now. Should I push them to this branch?

I think merging this is found as long as we thoroughly test all recipes before the release.

@valeriupredoi
Copy link
Contributor

@valeriupredoi I managed to fixed all the issues I found. With these all the recipes I tested (some of mine and all example recipes where I have the data) run now. Should I push them to this branch?

I think merging this is found as long as we thoroughly test all recipes before the release.

great! given the tests pass fine here, I really hope there will be no more changes the Core needs to accommodate iris3 so we can merge this at least. Do you think there'd be more changes needed here specifically? We still have plenty of time for the Tool to get fixes, the bit of the rush is for Core

@schlunma
Copy link
Contributor

I tested all variable derivations, lots of preprocessors and lots of variables, but we cannot be sure that all recipes work fine now. I hope that they do 😬 And if they don't work, I hope that only minor changes are necessary to get them working again...

Copy link
Member

@bouweandela bouweandela left a comment

Choose a reason for hiding this comment

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

Thanks for the great team work and lots of last-minute effort everyone, let's get this in!

There's bound to be a few remaining problems, especially in the tool, but we still have 3 weeks before that will be released, so that should be enough time to find and fix everything.

If anyone would still like to use the development version of the tool with iris 2, I have created an iris2 branch that we can keep around for the next month. If you still need an old development version after that, you can go back in history from the master branch by running git log, selecting the commit hash (the long hexadecimal number after the word 'commit' in the log) and running e.g. git checkout 1c9885bb9796c88f3a14e21ef4148968fe9475b4. Of course, it is also possible to install older versions from Conda.

@bouweandela bouweandela merged commit c26427c into master Jan 31, 2021
@bouweandela bouweandela deleted the iris3 branch January 31, 2021 18:40
@valeriupredoi
Copy link
Contributor

valeriupredoi commented Feb 1, 2021

excellent team work, guys! Props to @schlunma @stefsmeets @jvegasbsc and @bouweandela and of course to @bjlittle and the iris team that have released the fastest bugfix release in the history of iris 😁

@jvegreg jvegreg changed the title Switch to iris3 Switch to Iris 3 Feb 2, 2021
@jvegreg jvegreg added the enhancement New feature or request label Feb 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request iris Related to the Iris package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Switch to iris 3

6 participants