@@ -230,6 +230,13 @@ def from_response(response: geoengine_openapi_client.Colorizer) -> Colorizer:
230230 raise TypeError ("Unknown colorizer type" )
231231
232232
233+ def rgba_from_list (values : list [int ]) -> Rgba :
234+ """Convert a list of integers to an RGBA tuple."""
235+ if len (values ) != 4 :
236+ raise ValueError (f"Expected a list of 4 integers, got { len (values )} instead." )
237+ return (values [0 ], values [1 ], values [2 ], values [3 ])
238+
239+
233240@dataclass
234241class LinearGradientColorizer (Colorizer ):
235242 '''A linear gradient colorizer.'''
@@ -242,10 +249,10 @@ def from_response_linear(response: geoengine_openapi_client.LinearGradient) -> L
242249 """Create a colorizer from a response."""
243250 breakpoints = [ColorBreakpoint .from_response (breakpoint ) for breakpoint in response .breakpoints ]
244251 return LinearGradientColorizer (
245- no_data_color = response .no_data_color ,
252+ no_data_color = rgba_from_list ( response .no_data_color ) ,
246253 breakpoints = breakpoints ,
247- over_color = response .over_color ,
248- under_color = response .under_color ,
254+ over_color = rgba_from_list ( response .over_color ) ,
255+ under_color = rgba_from_list ( response .under_color ) ,
249256 )
250257
251258 def to_api_dict (self ) -> geoengine_openapi_client .Colorizer :
@@ -273,9 +280,9 @@ def from_response_logarithmic(
273280 breakpoints = [ColorBreakpoint .from_response (breakpoint ) for breakpoint in response .breakpoints ]
274281 return LogarithmicGradientColorizer (
275282 breakpoints = breakpoints ,
276- no_data_color = response .no_data_color ,
277- over_color = response .over_color ,
278- under_color = response .under_color ,
283+ no_data_color = rgba_from_list ( response .no_data_color ) ,
284+ over_color = rgba_from_list ( response .over_color ) ,
285+ under_color = rgba_from_list ( response .under_color ) ,
279286 )
280287
281288 def to_api_dict (self ) -> geoengine_openapi_client .Colorizer :
@@ -300,16 +307,16 @@ def from_response_palette(response: geoengine_openapi_client.PaletteColorizer) -
300307 """Create a colorizer from a response."""
301308
302309 return PaletteColorizer (
303- colors = {float (k ): v for k , v in response .colors .items ()},
304- no_data_color = response .no_data_color ,
305- default_color = response .default_color ,
310+ colors = {float (k ): rgba_from_list ( v ) for k , v in response .colors .items ()},
311+ no_data_color = rgba_from_list ( response .no_data_color ) ,
312+ default_color = rgba_from_list ( response .default_color ) ,
306313 )
307314
308315 def to_api_dict (self ) -> geoengine_openapi_client .Colorizer :
309316 """Return the colorizer as a dictionary."""
310317 return geoengine_openapi_client .Colorizer (geoengine_openapi_client .PaletteColorizer (
311318 type = 'palette' ,
312- colors = self .colors ,
319+ colors = { str ( k ): v for k , v in self .colors . items ()} ,
313320 default_color = self .default_color ,
314321 no_data_color = self .no_data_color ,
315322 ))
0 commit comments