code: def test_scale_discrete_mapping_nulls():
      a = np.array([1, 2, 3], dtype=object)
  
      sc = _scale_manual([1, 2, 3, 4, 5])
      sc.train(a)
      res = sc.map([1, 2, 3])
      expected = np.array([1, 2, 3])
      npt.assert_array_equal(res, expected)
  
      sc = _scale_manual([1, None, 3, 4, 5])
      sc.train(a)
      res = sc.map([1, 2, 3])
      expected = np.array([1, np.nan, 3])
      assert res[0] == expected[0]
      assert all(np.isnan([res[1], expected[1]]))
      assert res[2] == expected[2]
  
imports: import warnings
  from datetime import datetime
  import numpy
  import numpy.testing
  import pandas
  import pytest
  import plotnine
  from plotnine import aes, annotate, element_text, expand_limits, facet_wrap, geom_bar, geom_col, geom_point, ggplot, lims, theme
  from plotnine.exceptions import PlotnineError, PlotnineWarning
  from plotnine.scales import scale_color, scale_color_manual, scale_identity, scale_manual, scale_xy
  from plotnine.scales.scale_alpha import scale_alpha_continuous, scale_alpha_discrete
  from plotnine.scales.scale_linetype import scale_linetype_continuous, scale_linetype_discrete
  from plotnine.scales.scale_manual import _scale_manual
  from plotnine.scales.scale_shape import scale_shape_continuous, scale_shape_discrete
  from plotnine.scales.scale_size import scale_size_area, scale_size_continuous, scale_size_discrete, scale_size_radius
  from plotnine.scales.scale_xy import scale_x_continuous, scale_x_discrete, scale_x_log10, scale_y_continuous
  from plotnine.scales.scales import make_scale
label_desc: Use image node_id 28 for calling a global function with example usage: test_scale_discrete_mapping_nulls() without return types