-
Notifications
You must be signed in to change notification settings - Fork 281
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
Iris py38 #3976
Iris py38 #3976
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Started a review, this is a great way to get stuck into understanding the codebase! Will give it some more time later, a couple of comments/questions inline below.
lib/iris/coords.py
Outdated
@@ -777,6 +775,24 @@ def cube_dims(self, cube): | |||
""" | |||
return cube.ancillary_variable_dims(self) | |||
|
|||
def xml_element(self, doc, split=None): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is there a reason this method returns a different signature (element, attributes) vs. (element,) depending on the param value split
? different use cases?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The default signature xml_element(doc) => (element,)
is different to the default signature of e.g. Coord#xml_element => (element, attributes)
. The api seems inconsistent throughout this file, is this expected?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jamesp Yes, this is intentional, and I couldn't see a neater way around it.
The issue is being forced by the inheritance hierarchy and the fact that the xml_element
method in the final inheritance call chain must return an xml.dom.minidom.Element
.
Just be to explicit we have the following:
CellMethod
`-- xml_element()
_DimensionalMetadata
|-- AncillaryVariable
| |-- CellMeasure
| | `-- xml_element()
| `-- xml_element()
|-- Coord
| |-- AuxCoord
| | `-- xml_element()
| |-- DimCoord
| | `-- xml_element()
| `-- xml_element()
`-- xml_element()
So AncillaryVariable.xml_element
by default requires to return an xml.dom.minidom.Element
if it is directly called, otherwise, if AncillaryVariable.xml_element
is called indirecty as part of the super
in CellMeasure.xml_element
, CellMeasure
requires AncillaryVariable.xml_element
to return (xml.dom.minidom.Element, dict)
instead as it still has has to mix-in the measure
attribute before finally calling xml.dom.minidom.Element.setAttribute
.
Why are we doing this now?
Well, basically, for Python <3.8
the __str__
/__repr__
of a xml.dom.minidom.Element
would show its elements "for free" in alphabetical order... for Python >=3.8
it now shows its elements in assigned order - which breaks all our cml
tests i.e., I'm guessing this is a direct side-effect of dict
s behaving more like OrderedDict
s.
So the deal is that we need all the attributes (key
-values
pairs) that we're ever going to set on the xml.dom.minidom.Element
all at once before doing so, but sort them by key
first, to get the same behaviour pre-3.8.
The fact that CellMeasure
is a sub-class of AncillaryVariable
is forcing this dual return type behaviour from AncillaryVariable
.
This is also the case for Coord
, but as this is an abstract base class for AuxCoord
and DimCoord
it is never called directly (as it's not possible), and so always returns (xml.dom.minidom.Element, dict)
. This also holds true for _DimensionalMetadata
.
Does this help?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW I'm not wedded to the split
kwarg as a name. If you agree on my strategy of doing all this, and the purpose of the split
kwarg... then please suggest a rename for it, if you can think of something better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess I could be a good citizen here and add all the missing doc-strings for the xml_element
methods documenting the args, kwargs and return types...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fact, I'm just going to go ahead an just do that... why not 😉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
Overall looks ok to me @bjlittle . I would only add to ensure the docs are updated to include that Python 3.8 is now supported and tested. See the existing on the installing Iris page: https://scitools-iris.readthedocs.io/en/latest/installing.html |
@jamesp I think this is good to go 😀 |
@bjlittle ok! 👍 |
# Create the XML element as the camelCaseEquivalent of the | ||
# class name | ||
element = super().xml_element(doc=doc) | ||
|
||
element.setAttribute("points", self._xml_array_repr(self.points)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bjlittle can you just confirm this line supposed to be deleted? comment below suggests that it is
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jamesp Yup, that's fine, and it's a good question...
It's actually redundant, and I only noticed it by working through the inheritance behaviour.
Coord.xml_element
calls _DimensionalMetadata.xml_element
, and in the super class it performs the following:
# The values are referred to "points" of a coordinate and "data"
# otherwise.
if isinstance(self, Coord):
values_term = "points"
else:
values_term = "data"
element.setAttribute(values_term, self._xml_array_repr(self._values))
So as it stood, the _DimensionalMetadata
was setting the points
attribute, then the Coord
came along an stomped over it with the same result... seemed like worthwhile trimming that fat whilst we're here.
If it didn't work... we'd have test failures all over the place. So I believe this is fine.
Lovely spot though 🦅 👀
@jamesp I've got come conflicts that I need to resolve... |
* all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]>
* Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]>
* Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]>
* Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) * cirrus-ci compute credits (#4007) * update release process (#4010) * Stop using deprecated aliases of builtin types (#3997) * Stopped using deprecated aliases of builtin types. This is required to avoid warnings starting with NumPy 1.20.0. * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Updated whatsnew. Co-authored-by: Bill Little <[email protected]> * celebrate first time iris contributors (#4013) * Docs unreleased banner (#3999) * baseline * removed debug comments * reverted * remove line * Testing * testing extensions * testing rtd_version * fixed if * removed line * tidy up * tidy comments * debug of pre-existing rtd variables * added reminder * testing * testing still * updated comments * added whatsnew * expanded the if conditiion * review actions * Update layout.html Remove alternative banner that used the RestructuredText notation. * review actions * drop __unicode__ method usage (#4018) * cirrus-ci conditional tasks (#4019) * cirrus-ci conditional tasks * use bc for bash arithmetic * revert back to sed * use expr * reword * minor documentation changes * review actions * make iris.common.metadata._hexdigest public (#4020) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]>
* Update mesh-data-model branch (#4009) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> * Master to mesh data model (#4022) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) * cirrus-ci compute credits (#4007) * update release process (#4010) * Stop using deprecated aliases of builtin types (#3997) * Stopped using deprecated aliases of builtin types. This is required to avoid warnings starting with NumPy 1.20.0. * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Updated whatsnew. Co-authored-by: Bill Little <[email protected]> * celebrate first time iris contributors (#4013) * Docs unreleased banner (#3999) * baseline * removed debug comments * reverted * remove line * Testing * testing extensions * testing rtd_version * fixed if * removed line * tidy up * tidy comments * debug of pre-existing rtd variables * added reminder * testing * testing still * updated comments * added whatsnew * expanded the if conditiion * review actions * Update layout.html Remove alternative banner that used the RestructuredText notation. * review actions * drop __unicode__ method usage (#4018) * cirrus-ci conditional tasks (#4019) * cirrus-ci conditional tasks * use bc for bash arithmetic * revert back to sed * use expr * reword * minor documentation changes * review actions * make iris.common.metadata._hexdigest public (#4020) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]>
* add ugrid mesh-api stubs (#4001) * add additional mesh stubs (#4005) * Update mesh-data-model branch (#4009) (#4011) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> * MeshMetadata class. (#4002) * MeshMetadata class. * MeshMetadata extra members for dim names. * Comment for BaseMetadata refactoring. * add meshmetadata services (#4012) * Mesh api coord manager (#4015) * add mesh coordinate manager * wip * make shape methods private + reorganise method order * review actions * partial mesh * wip * Mesh data model to ng vat mesh api (#4023) * Update mesh-data-model branch (#4009) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> * Master to mesh data model (#4022) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) * cirrus-ci compute credits (#4007) * update release process (#4010) * Stop using deprecated aliases of builtin types (#3997) * Stopped using deprecated aliases of builtin types. This is required to avoid warnings starting with NumPy 1.20.0. * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Updated whatsnew. Co-authored-by: Bill Little <[email protected]> * celebrate first time iris contributors (#4013) * Docs unreleased banner (#3999) * baseline * removed debug comments * reverted * remove line * Testing * testing extensions * testing rtd_version * fixed if * removed line * tidy up * tidy comments * debug of pre-existing rtd variables * added reminder * testing * testing still * updated comments * added whatsnew * expanded the if conditiion * review actions * Update layout.html Remove alternative banner that used the RestructuredText notation. * review actions * drop __unicode__ method usage (#4018) * cirrus-ci conditional tasks (#4019) * cirrus-ci conditional tasks * use bc for bash arithmetic * revert back to sed * use expr * reword * minor documentation changes * review actions * make iris.common.metadata._hexdigest public (#4020) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]> * Connectivity manager (#4017) * ConnectivityManager first pass. * ConnectivityManager align with proposed CoordManager. * Connectivity Manager review actions. * Connectivity Manager more review changes. * Use metadata_manager for Mesh location dimension. * Mesh dimension name abstraction. * Align Cooord and Connectivity Managers filters methods. * Completed Mesh class. * filter_cf improvements. * Moved filter_cf. * Mesh connectivity manager namedtuples comment. * Mesh removed trailing underscores. * Mesh _set_dimension_names improvements. * Mesh import rationalisation. * Mesh connectivity manager remove NDIM. * Connectivity manager use lazy indices_by_src(). * Connectivity manager clearer removal syntax. * Connectivity manager don't override __init__. * Connectivity manager correct base class syntax. * Metadata filter hexdigest reference fix. * test_MeshMetadata fix. * Rename filter to metadata_filter. * minor fixes (#4025) * minor fixes * wip * add mesh pickle support (#4026) Co-authored-by: Bill Little <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]>
* add ugrid mesh-api stubs (#4001) * add additional mesh stubs (#4005) * Update mesh-data-model branch (#4009) (#4011) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> * MeshMetadata class. (#4002) * MeshMetadata class. * MeshMetadata extra members for dim names. * Comment for BaseMetadata refactoring. * add meshmetadata services (#4012) * Mesh api coord manager (#4015) * add mesh coordinate manager * wip * make shape methods private + reorganise method order * review actions * partial mesh * wip * Mesh data model to ng vat mesh api (#4023) * Update mesh-data-model branch (#4009) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> * Master to mesh data model (#4022) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <[email protected]> * add nox session conda list (#3990) * Added text to state the Python version used to build the docs. (#3989) * Added text to state the Python version used to build the docs. * Added footer template that includes the Python version used to build. * added new line * Review actions * added whatsnew * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * normalise version to implicit development release number (#3991) * Gallery: update COP maps example (#3934) * update cop maps example * comment tweaks * minor comment tweak + whatsnew * reinstate whatsnew addition * remove duplicate whatsnew * don't support mpl v1.2 (#3941) * Cubesummary tidy (#3988) * Extra tests; fix for array attributes. * Docstring for CubeSummary, and remove some unused parts. * Fix section name capitalisation, in line with existing cube summary. * Handle array differences; quote strings in extras and if 'awkward'-printing. * Ensure scalar string coord 'content' prints on one line. * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * update readme badges (#4004) * update readme badges * pimp twitter badge * update readme logo img src and href (#4006) * update setuptools description (#4008) * cirrus-ci compute credits (#4007) * update release process (#4010) * Stop using deprecated aliases of builtin types (#3997) * Stopped using deprecated aliases of builtin types. This is required to avoid warnings starting with NumPy 1.20.0. * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <[email protected]> * Updated whatsnew. Co-authored-by: Bill Little <[email protected]> * celebrate first time iris contributors (#4013) * Docs unreleased banner (#3999) * baseline * removed debug comments * reverted * remove line * Testing * testing extensions * testing rtd_version * fixed if * removed line * tidy up * tidy comments * debug of pre-existing rtd variables * added reminder * testing * testing still * updated comments * added whatsnew * expanded the if conditiion * review actions * Update layout.html Remove alternative banner that used the RestructuredText notation. * review actions * drop __unicode__ method usage (#4018) * cirrus-ci conditional tasks (#4019) * cirrus-ci conditional tasks * use bc for bash arithmetic * revert back to sed * use expr * reword * minor documentation changes * review actions * make iris.common.metadata._hexdigest public (#4020) Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]> * Connectivity manager (#4017) * ConnectivityManager first pass. * ConnectivityManager align with proposed CoordManager. * Connectivity Manager review actions. * Connectivity Manager more review changes. * Use metadata_manager for Mesh location dimension. * Mesh dimension name abstraction. * Align Cooord and Connectivity Managers filters methods. * Completed Mesh class. * filter_cf improvements. * Moved filter_cf. * Mesh connectivity manager namedtuples comment. * Mesh removed trailing underscores. * Mesh _set_dimension_names improvements. * Mesh import rationalisation. * Mesh connectivity manager remove NDIM. * Connectivity manager use lazy indices_by_src(). * Connectivity manager clearer removal syntax. * Connectivity manager don't override __init__. * Connectivity manager correct base class syntax. * Metadata filter hexdigest reference fix. * test_MeshMetadata fix. * Rename filter to metadata_filter. * minor fixes (#4025) * minor fixes * wip * add mesh pickle support (#4026) * Test Mesh WIP. * Mesh face_dimension not set for topology_dimension=1. * Mesh testing WIP. * Mesh tests WIP. * Mesh tests WIP. * Mesh tests complete. * Mesh repr tests. * experimental.ugrid restore class ordering. * Mesh tests - move global and class variables into setUpClass methods, to play nicely with unittest. * Delete commented code. * Mesh clearer distinction between coords and connectivities filters. * Mesh tests slight readability improvement. Co-authored-by: Bill Little <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: stephen.worsley <[email protected]> Co-authored-by: tkknight <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Alexander Kuhn-Regnier <[email protected]>
* support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (SciTools#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]>
* mpl 3.4.1 updates (#4087) * replace most recent hashes (#4112) * Corrected plot_anomaly_log_colouring for new Matplotlib linscale rules. (#4115) * Cartopy 0.19 updates (#4128) * Use assertArrayAllClose for sqrt test (#4118) * using AllClose for sqrt test * Omitting the checksum from test cml * use ArrayAllClose (rebase reset it?) * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * reinstate black and nox links * Linkcheck update (#4104) * Updated links * Added login remark * Removed extra space * change to kick cirrus * kick cirrus * test verbose on cirrus * Removed test settings. Co-authored-by: Bill Little <[email protected]> Co-authored-by: Martin Yeo <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: James Penn <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: tkknight <[email protected]>
* Add release highlights and pin rc version (#3898) * Add release highlights and pin rc version * review actions * reorder release highlights (#3899) Tweak release highlights * Add whatsnew announcement (#3900) * Fix spelling (#3903) * Fix unit label handling (#3902) * Add failing test of plotting * Implement fix to pass test * Update idiff to ignore irrelevant hyphens in path * Update imagerepo (following docs) * Update after review by @trexfeathers * Add whatsnew entries * Move whatsnew entries into correct file * Release Docs Improvements (#3895) * Minor phrasing change in 'Release candidate'. * Before release deprecations. * Whatsnew highlights section. * Relax setup.py setup requirements (#3909) * Updated CF saver version in User Guide and docstring (#3925) * Updated CF saver version in User Guide and docstring * Remove references to CF version of the loader in docstrings * Added whatsnew * Pin cftime<1.3.0 * Migrate to cirrus-ci (#3928) * migrate from travis-ci to cirrus-ci * added whatsnew entries * ignore url for doc link check (#3929) * whatsnew for coord default units (#3924) * Cube._summary_coord_extra: efficiency and bugfix (#3922) * Add Documentation Title Case Capitalization (#3940) * Use Title Case Capitalisation for Documentation * add whatsnew enter * CI requirements drop pip packages (#3939) * requirements pip to conda * use pip install over develop * default PY_VER to python versions * update links (#3942) * update links * added s to http * Add support for 1-d weights in collapse. (#3943) * Remove warning for convert_units on lazy data (#3951) * drop stickler references in docs (#3953) * drop stickler references in docs * remove sticker from common links * update docs for travis-ci to cirrus-ci (#3954) * update docs for travis-ci to cirrus-ci * add 'travis-ci' reference locally to whatsnew * update whatsnew comment * docs for nox (#3955) * docs for nox * add titles, notices and additional detail * review actions * Resolve test coverage (#3947) * test coverage for __init__ and __call__ * test coverage for metadata resolve and coverage * partial test coverage for metadata mapping * python 3.6 workaround for deepcopy of mock.sentinel * test coverage for Resolve._free_mapping * test coverage for Resolve convenience methods * add test stub for Resolve._metadata_mapping * fix Test__tgt_cube_position * test coverage for shape * test coverage for _as_compatible_cubes * test coverage for Resolve._metadata_mapping * test coverage for Resolve._prepare_common_dim_payload * test coverage for Resolve._prepare_common_aux_payload * test coverage for Resolve._prepare_points_and_bounds * test coverage for Resolve._create_prepared_item * test coverage for Resolve._prepare_local_payload_dim * test coverage for Resolve._prepare_local_payload_aux * test coverage for Resolve._prepare_local_payload_scalar + docs URL skip * test coverage for Resolve._prepare_local_payload * test coverage for Resolve._metadata_prepare * added docs URL linkcheck skip * test coverage for Resolve._prepare_factory_payload * test coverage for Resolve._get_prepared_item * review actions * test coverage for Resolve.cube * pin v3.0.0 version and whatnew date (#3956) * update github ci checks image (#3957) * Promote unknown units to dimensionless in aux factories (#3965) * promote unknown to dimensionless units in aux factories * patch aux factories to promote unknown to dimensionless units for formula terms * add whatnew PR for entry * Release branch prepare for v3.0.2 (#4044) * update intersphinx mapping and matplotlib urls (#4003) * update intersphinx mapping and matplotlib urls * use matplotlib intersphinx where possible * review actions * review actions * cirrus-ci compute credits (#4007) * cirrus-ci conditional tasks (#4019) * cirrus-ci conditional tasks * use bc for bash arithmetic * revert back to sed * use expr * reword * minor documentation changes * review actions * prepare v3.0.2 release * Fix test_incompatible_dimensions test (#3977) * test_incompatible_dimensions used a ragged array for the test, which has been deprecated in numpy, and now fails if dtype is anything other than object. This test appears to be checking that the addition of a [2x4] masked array to a [2x3] masked cube should raise a ValueError. This commit fixes the creation of `data3` object to be a [2x4] non-ragged array. * Added entry to what's new * Added name to core developer list :) * Update latest.rst Fixed space in PR macro call * update whatsnew v3.0.2 Co-authored-by: James Penn <[email protected]> * um_stash_source attribute improved handling (#4035) * Modified pyke rule * Tests added * Black and whatsnew * Include PR number * Remove latest.rst * Add what's new * Support for py38 and Cartopy 0.19 (#4130) * mpl 3.4.1 updates (#4087) * replace most recent hashes (#4112) * Corrected plot_anomaly_log_colouring for new Matplotlib linscale rules. (#4115) * Cartopy 0.19 updates (#4128) * Use assertArrayAllClose for sqrt test (#4118) * using AllClose for sqrt test * Omitting the checksum from test cml * use ArrayAllClose (rebase reset it?) * Iris py38 (#3976) * support for py38 * update CI and noxfile * enforce alphabetical xml element attribute order * full tests for py38 + fix docs-tests * add whatsnew entry * update doc-strings + review actions * Alternate xml handling routine (#29) * all xml tests pass for nox tests-3.8 * restored docstrings * move sort_xml_attrs * make sort_xml_attrs a classmethod * update sort_xml_attr doc-string Co-authored-by: Bill Little <[email protected]> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <[email protected]> * reinstate black and nox links * Linkcheck update (#4104) * Updated links * Added login remark * Removed extra space * change to kick cirrus * kick cirrus * test verbose on cirrus * Removed test settings. Co-authored-by: Bill Little <[email protected]> Co-authored-by: Martin Yeo <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: James Penn <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: tkknight <[email protected]> * Intersection bounds fix (replacement PR) (#4059) * fix intersection out of bounds point * fix intersection out of bounds point take 2 * add referencing comment * bootstrap ci for 3.0.x (#4154) * add cirrus-ci docker support * wip * wip * wip * wip * wip * add pip * revert docker * fix add_weekday (#32) * fix add_weekday * fix black link * fix link Co-authored-by: Ruth Comer <[email protected]> * Tweak to speed up dask wrapping of netcdf variables (#4135) * Use 'meta' in da.from_array to stop it sampling netcdf variables, which is quite slow. * Fix PR number. * Fix test. * Review changes. * Update docs/iris/src/whatsnew/3.0.2.rst Co-authored-by: lbdreyer <[email protected]> * Fb fix cube coord arithmetic (#4159) * fix coord with cube arithmetic * add coord arithmetic test coverage * add a whatsnew entry * Pp daskfix (#4141) * Remove workaround when dask-wrapping PP data, obsoleted by #4135. * Remove old slice testing * Add whats new * move whitespace? * missing line Co-authored-by: lbdreyer <[email protected]> * add release date to v3.0.2 whatsnew (#4160) * update readme logo img src and href (#4006) (#4216) * In cube.intersection, find split cells using a tolerant equality check (#4220) * In cube.intersection, find split cells using a tolerant equality check * remove unused var * Add bounds check to tests; add what's new * Fix whats new; update version number * Update 3.0.3.rst Update release date in `3.0.3.rst` * Wide cubestr fix 3v0vx v2 (#4233) * Widen cube printout for long ancil or cell-measure names. * Adjust result for fixed cube-units printout. * Added whatsnew. * Include newest whatsnew in index. * Review: fix whatsnew structure. * Fix initial sections display. * Fix some typos in the cube maths docs (#4248) * (More of) Wide cubestr fix 3v0vx v2 (#4238) * Fix whatsnew for #4233. * Move 'empty slicings' whatsnew entry to 3.0.2 section. * unpin cftime (#4222) * Test wrangling vs v3.0.x (#4249) * test changes * add awol init * rename system test cases * fix PartialDateTime tests * fix typo * add whatsnew * Fix mergeback PR #4035 * Fix mergeback PR #4035 tests * Update mergeback nox conda-lock files Co-authored-by: tkknight <[email protected]> Co-authored-by: Zeb Nicholls <[email protected]> Co-authored-by: Martin Yeo <[email protected]> Co-authored-by: Jon Seddon <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: Patrick Peglar <[email protected]> Co-authored-by: James Penn <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: James Penn <[email protected]> Co-authored-by: Ruth Comer <[email protected]> Co-authored-by: lbdreyer <[email protected]> Co-authored-by: lbdreyer <[email protected]>
🚀 Pull Request
Description
This PR extends the
iris
testing to coverpython
3.8.x.In order to provision this testing infra-structure, work was required on
cml
generation, as xml.dom.minidom has changed from 3.8 to preserve xml element attribute assignment order - most likely due topython
dictionaries now preserving order.In addition to this a minor fix was required for the doc-tests, as a
namedtuple._todict()
now returns adict
rather than anOrderedDict
.Note that, all the CI documentation is performed soley for
python
3.8 i.e.,Consult Iris pull request check list