@@ -1857,7 +1857,7 @@ def docs(self, *args, **kwargs):
18571857 return self .plotter_cls .show_docs (* args , ** kwargs )
18581858
18591859 @docstrings .dedent
1860- def check_data (self , ds , name , dims ):
1860+ def check_data (self , ds , name , dims , decoder = None , * args , ** kwargs ):
18611861 """
18621862 A validation method for the data shape
18631863
@@ -1872,6 +1872,10 @@ def check_data(self, ds, name, dims):
18721872 dimensions of this plot method
18731873 is_unstructured: bool or list of bool
18741874 True if the corresponding array is unstructured.
1875+ decoder: :class:`psyplot.data.CFDecoder`, dict or a list of them
1876+ The decoders to use per array. Dictionaries are parsed as keyword
1877+ arguments to the :meth:`psyplot.data.CFDecoder.get_decoder`
1878+ method
18751879
18761880 Returns
18771881 -------
@@ -1880,10 +1884,19 @@ def check_data(self, ds, name, dims):
18801884 if isinstance (name , six .string_types ):
18811885 name = [name ]
18821886 dims = [dims ]
1887+ decoders = [decoder ]
18831888 else :
18841889 dims = list (dims )
1890+ decoders = list (decoder if decoder is not None else [None ])
18851891 variables = [ds [safe_list (n )[0 ]] for n in name ]
1886- decoders = [CFDecoder .get_decoder (ds , var ) for var in variables ]
1892+ if decoders is None :
1893+ decoders = [CFDecoder .get_decoder (ds , var ) for var in variables ]
1894+ else :
1895+ for i , (decoder , var ) in enumerate (zip (decoders , variables )):
1896+ if decoder is None :
1897+ decoder = {}
1898+ if isinstance (decoder , dict ):
1899+ decoders [i ] = CFDecoder .get_decoder (ds , var , ** decoder )
18871900 default_slice = slice (None ) if self ._default_slice is None else \
18881901 self ._default_slice
18891902 for i , (dim_dict , var , decoder ) in enumerate (zip (
0 commit comments