Connectivity manager#4017
Conversation
bjlittle
left a comment
There was a problem hiding this comment.
@trexfeathers Awesome stuff!
A peppering of suggestions and questions... nothing too radical.
This is looking really great. Great job 👍
lib/iris/common/__init__.py
Outdated
| Filter a list of :class:`iris.common.CFVariableMixin` subclasses to fit | ||
| the given criteria. | ||
|
|
||
| Kwargs: |
633b454 to
0d16764
Compare
0d16764 to
4cf57f0
Compare
| ): | ||
| """ | ||
| Filter a collection of objects by their metadata to fit the given metadata | ||
| criteria. Criteria be one or both of: specific properties / other objects |
There was a problem hiding this comment.
Change to Criteria be one -> Criteria can be one
| else: | ||
| obj = item | ||
|
|
||
| result = instances |
There was a problem hiding this comment.
We need to ensure that this is an iterable, now that it's a public API function.
| if axis is not None: | ||
| axis = axis.upper() | ||
| result = [ | ||
| instance | ||
| for instance in result | ||
| if guess_coord_axis(instance) == axis | ||
| ] |
There was a problem hiding this comment.
We need to check whether the instance actually has an axis attribute, if so use it, otherwise guess it.
| SERVICES_COMBINE, | ||
| SERVICES_EQUAL, | ||
| SERVICES_DIFFERENCE, | ||
| metadata_filter, |
There was a problem hiding this comment.
This should come before the metadata_manager_factory
| from ..config import get_logger | ||
| from ..coords import _DimensionalMetadata, AuxCoord | ||
| from ..exceptions import CoordinateNotFoundError | ||
| from ..exceptions import CoordinateNotFoundError, ConnectivityNotFoundError |
|
@trexfeathers Super awesome 🏆 Thanks for sticking with it... this is looking really lovely. I spotted a couple of minors along the way, but I'm going to just bank this, and follow-up with a PR to service them seperately. Upwards and onwards! 🚀 |
* 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 <stephen.worsley@metoffice.gov.uk> * 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 <bill.james.little@gmail.com> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <james@jamespenn.co.uk> * 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 <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> * 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 <stephen.worsley@metoffice.gov.uk> * 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 <bill.james.little@gmail.com> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <james@jamespenn.co.uk> * 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 <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> * Master to mesh data model (#4022) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> * 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 <bill.james.little@gmail.com> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <james@jamespenn.co.uk> * 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 <bill.little@metoffice.gov.uk> * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <bill.little@metoffice.gov.uk> * Updated whatsnew. Co-authored-by: Bill Little <bill.little@metoffice.gov.uk> * 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 <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Alexander Kuhn-Regnier <ahf.kuhnregnier@gmail.com> Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Alexander Kuhn-Regnier <ahf.kuhnregnier@gmail.com> * 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 <bill.james.little@gmail.com> Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Alexander Kuhn-Regnier <ahf.kuhnregnier@gmail.com>
* 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 <stephen.worsley@metoffice.gov.uk> * 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 <bill.james.little@gmail.com> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <james@jamespenn.co.uk> * 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 <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> * 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 <stephen.worsley@metoffice.gov.uk> * 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 <bill.james.little@gmail.com> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <james@jamespenn.co.uk> * 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 <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> * Master to mesh data model (#4022) * Add abstract cube summary (#3987) Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> * 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 <bill.james.little@gmail.com> * add jamesp to whatsnew + minor tweak Co-authored-by: James Penn <james@jamespenn.co.uk> * 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 <bill.little@metoffice.gov.uk> * Update lib/iris/tests/test_cell.py Co-authored-by: Bill Little <bill.little@metoffice.gov.uk> * Updated whatsnew. Co-authored-by: Bill Little <bill.little@metoffice.gov.uk> * 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 <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Alexander Kuhn-Regnier <ahf.kuhnregnier@gmail.com> Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Alexander Kuhn-Regnier <ahf.kuhnregnier@gmail.com> * 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 <bill.james.little@gmail.com> Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk> Co-authored-by: stephen.worsley <stephen.worsley@metoffice.gov.uk> Co-authored-by: tkknight <2108488+tkknight@users.noreply.github.com> Co-authored-by: James Penn <james@jamespenn.co.uk> Co-authored-by: Ruth Comer <ruth.comer@metoffice.gov.uk> Co-authored-by: Alexander Kuhn-Regnier <ahf.kuhnregnier@gmail.com>
🚀 Pull Request
Description
This PR finishes the
Meshclass functionality and its supporting code. Still needs docstrings and tests, then it'll be ready for theMeshCoordadditions 🙂.Consult Iris pull request check list