Skip to content

Fix GRIB1 support #56

@pp-mo

Description

@pp-mo

The GRIB1 load translation code (here) is still using GribWrappers, which is the only thing preventing us throwing all the old loader code away, including the GribWrapper class.

Technical Debt summary :

  • fix: rewrite grib1 loading using iris_grib.message.GribMessage instead
  • legacy cost: clarity of main code structure; dread to maintain this (though little need has arisen)

[
In fact this is still the bulk of code in iris_grib.__init__.py, though no longer publicly exported.

  • globals CENTRE_TITLES, TIME_RANGE_INDICATORS, PROCESSING_TYPES, TIME_CODES_EDITION1 and unknown_string
  • classes GribDataProxy and GribWrapper
  • functions _longitude_is_cyclic and _message_values
    ]

There is still a slippery kludge that means when you load a GRIB1 message the 'field' argument in a callback becomes a GribWrapper instead of a GribMessage (here).

So, this is now the only thing that GribWrapper is still used for, and the only remaining occasion that a user might possibly be concerned about what a GribWrapper looks like.

We haven't addressed this yet because GRIB1 usage is very low.

We should rewrite the Grib1 loader to use the modern message object + throw away all the old GribWrapper-based processing.

Sub-issues

Metadata

Metadata

Type

No type

Projects

Status

No status

Status

⚔ In Development

Relationships

None yet

Development

No branches or pull requests

Issue actions