COMPAT: matplotlib v0.15rc1 issues · Issue #11111 · pandas-dev/pandas (original) (raw)

......F......E..FF...FE..F./home/jreback/miniconda/envs/pandas/lib/python2.7/site-packages/matplotlib/__init__.py:872: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.
  warnings.warn(self.msg_depr % (key, alt_key))
/home/jreback/miniconda/envs/pandas/lib/python2.7/site-packages/matplotlib/__init__.py:892: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.
  warnings.warn(self.msg_depr % (key, alt_key))
...E.../home/jreback/pandas/pandas/tools/plotting.py:3242: UserWarning: To output multiple subplots, the figure containing the passed axes is being cleared
  "is being cleared", UserWarning)
EF......ES.....E.......E.E.........../home/jreback/miniconda/envs/pandas/lib/python2.7/site-packages/matplotlib/artist.py:221: MatplotlibDeprecationWarning: This has been deprecated in mpl 1.5, please use the
axes property.  A removal date has not been set.
  warnings.warn(_get_axes_msg, mplDeprecation, stacklevel=1)
.........FE..E........F.E..E..........E.......................EE.
======================================================================
ERROR: test_bar_colors (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 1810, in test_bar_colors
    self._check_colors(ax.patches[::5], facecolors=default_colors[:5])
TypeError: 'NoneType' object has no attribute '__getitem__'

======================================================================
ERROR: test_boxplot_colors (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2860, in test_boxplot_colors
    _check_colors(bp, default_colors[0], default_colors[0], default_colors[2])
TypeError: 'NoneType' object has no attribute '__getitem__'

======================================================================
ERROR: test_df_legend_labels (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2478, in test_df_legend_labels
    ax = df.plot(legend=True, secondary_y='b')
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3610, in __call__
    sort_columns=sort_columns, **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2495, in plot_frame
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1596, in _make_plot
    ax = self._get_ax(i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1280, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
ERROR: test_errorbar_plot (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 3129, in test_errorbar_plot
    df.plot(yerr=df_err)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3610, in __call__
    sort_columns=sort_columns, **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2495, in plot_frame
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1609, in _make_plot
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1623, in _plot
    lines = MPLPlot._plot(ax, x, y_values, style=style, **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1241, in _plot
    return ax.errorbar(x, y, **kwds)
  File "/home/jreback/miniconda/envs/pandas/lib/python2.7/site-packages/matplotlib/__init__.py", line 1806, in inner
    return func(ax, *args, **kwargs)
  File "/home/jreback/miniconda/envs/pandas/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 2964, in errorbar
    raise ValueError("yerr must be a scalar, the same "
ValueError: yerr must be a scalar, the same dimensions as y, or 2xN.

======================================================================
ERROR: test_hist_colors (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2737, in test_hist_colors
    self._check_colors(ax.patches[::10], facecolors=default_colors[:5])
TypeError: 'NoneType' object has no attribute '__getitem__'

======================================================================
ERROR: test_kde_colors_and_styles_subplots (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2799, in test_kde_colors_and_styles_subplots
    for ax, c in zip(axes, list(default_colors)):
TypeError: 'NoneType' object is not iterable

======================================================================
ERROR: test_line_colors_and_styles_subplots (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2634, in test_line_colors_and_styles_subplots
    for ax, c in zip(axes, list(default_colors)):
TypeError: 'NoneType' object is not iterable

======================================================================
ERROR: test_line_lim (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 1768, in test_line_lim
    ax = df.plot(secondary_y=True)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3610, in __call__
    sort_columns=sort_columns, **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2495, in plot_frame
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1579, in _make_plot
    if self._is_ts_plot():
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1572, in _is_ts_plot
    return not self.x_compat and self.use_index and self._use_dynamic_x()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1576, in _use_dynamic_x
    return _use_dynamic_x(self._get_ax(0), self.data)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1280, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
ERROR: test_subplots_dup_columns (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 1668, in test_subplots_dup_columns
    axes = df.plot(subplots=True, secondary_y='a')
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3610, in __call__
    sort_columns=sort_columns, **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2495, in plot_frame
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1579, in _make_plot
    if self._is_ts_plot():
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1572, in _is_ts_plot
    return not self.x_compat and self.use_index and self._use_dynamic_x()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1576, in _use_dynamic_x
    return _use_dynamic_x(self._get_ax(0), self.data)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1276, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
ERROR: test_subplots_sharex_axes_existing_axes (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 1651, in test_subplots_sharex_axes_existing_axes
    df['C'].plot(ax=axes[0], secondary_y=True)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3436, in __call__
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2526, in plot_series
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1579, in _make_plot
    if self._is_ts_plot():
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1572, in _is_ts_plot
    return not self.x_compat and self.use_index and self._use_dynamic_x()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1576, in _use_dynamic_x
    return _use_dynamic_x(self._get_ax(0), self.data)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1280, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
ERROR: test_df_series_secondary_legend (pandas.tests.test_graphics.TestSeriesPlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 889, in test_df_series_secondary_legend
    s.plot(legend=True, secondary_y=True)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3436, in __call__
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2526, in plot_series
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1579, in _make_plot
    if self._is_ts_plot():
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1572, in _is_ts_plot
    return not self.x_compat and self.use_index and self._use_dynamic_x()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1576, in _use_dynamic_x
    return _use_dynamic_x(self._get_ax(0), self.data)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1280, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
ERROR: test_errorbar_plot (pandas.tests.test_graphics.TestSeriesPlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 1113, in test_errorbar_plot
    s.plot(yerr=s_err)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3436, in __call__
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2526, in plot_series
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1609, in _make_plot
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1623, in _plot
    lines = MPLPlot._plot(ax, x, y_values, style=style, **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1241, in _plot
    return ax.errorbar(x, y, **kwds)
  File "/home/jreback/miniconda/envs/pandas/lib/python2.7/site-packages/matplotlib/__init__.py", line 1806, in inner
    return func(ax, *args, **kwargs)
  File "/home/jreback/miniconda/envs/pandas/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 2964, in errorbar
    raise ValueError("yerr must be a scalar, the same "
ValueError: yerr must be a scalar, the same dimensions as y, or 2xN.

======================================================================
ERROR: test_hist_secondary_legend (pandas.tests.test_graphics.TestSeriesPlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 852, in test_hist_secondary_legend
    df['b'].plot.hist(ax=ax, legend=True, secondary_y=True)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3524, in hist
    return self(kind='hist', bins=bins, **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3436, in __call__
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2526, in plot_series
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1948, in _make_plot
    ax = self._get_ax(i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1280, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
ERROR: test_ts_area_lim (pandas.tests.test_graphics.TestSeriesPlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 582, in test_ts_area_lim
    ax = tz_ts.plot.area(stacked=False, secondary_y=True)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3560, in area
    return self(kind='area', **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3436, in __call__
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2526, in plot_series
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1579, in _make_plot
    if self._is_ts_plot():
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1572, in _is_ts_plot
    return not self.x_compat and self.use_index and self._use_dynamic_x()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1576, in _use_dynamic_x
    return _use_dynamic_x(self._get_ax(0), self.data)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1280, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
ERROR: test_ts_line_lim (pandas.tests.test_graphics.TestSeriesPlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 551, in test_ts_line_lim
    ax = self.ts.plot(secondary_y=True)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 3436, in __call__
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2526, in plot_series
    **kwds)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 2323, in _plot
    plot_obj.generate()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 944, in generate
    self._make_plot()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1579, in _make_plot
    if self._is_ts_plot():
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1572, in _is_ts_plot
    return not self.x_compat and self.use_index and self._use_dynamic_x()
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1576, in _use_dynamic_x
    return _use_dynamic_x(self._get_ax(0), self.data)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 1280, in _get_ax
    ax = self._maybe_right_yaxis(ax, i)
  File "/home/jreback/pandas/pandas/tools/plotting.py", line 976, in _maybe_right_yaxis
    new_ax._get_lines.color_cycle = orig_ax._get_lines.color_cycle
AttributeError: '_process_plot_var_args' object has no attribute 'color_cycle'

======================================================================
FAIL: test_area_colors (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2701, in test_area_colors
    self._check_colors(handles, linecolors=custom_colors)
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 194, in _check_colors
    self.assertEqual(len(collections), len(linecolors))
AssertionError: 10 != 5

======================================================================
FAIL: test_bar_log_no_subplots (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2188, in test_bar_log_no_subplots
    tm.assert_numpy_array_equal(ax.yaxis.get_ticklocs(), expected)
  File "/home/jreback/pandas/pandas/util/testing.py", line 822, in assert_numpy_array_equal
    left.shape, right.shape)
  File "/home/jreback/pandas/pandas/util/testing.py", line 791, in raise_assert_detail
    raise AssertionError(msg)
AssertionError: numpy array are different

numpy array shapes are different
[left]:  (4,)
[right]: (2,)

======================================================================
FAIL: test_bar_log_subplots (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2199, in test_bar_log_subplots
    tm.assert_numpy_array_equal(ax[0].yaxis.get_ticklocs(), expected)
  File "/home/jreback/pandas/pandas/util/testing.py", line 822, in assert_numpy_array_equal
    left.shape, right.shape)
  File "/home/jreback/pandas/pandas/util/testing.py", line 791, in raise_assert_detail
    raise AssertionError(msg)
AssertionError: numpy array are different

numpy array shapes are different
[left]:  (6,)
[right]: (4,)

======================================================================
FAIL: test_boxplot (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2214, in test_boxplot
    self.bp_n_objects * len(numeric_cols))
AssertionError: 21 != 24

======================================================================
FAIL: test_boxplot_vertical (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 2251, in test_boxplot_vertical
    self.assertEqual(len(ax.lines), self.bp_n_objects * len(numeric_cols))
AssertionError: 21 != 24

======================================================================
FAIL: test_errorbar_scatter (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 3251, in test_errorbar_scatter
    _check_errorbar_color(ax.containers, 'green', has_err='has_yerr')
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 3240, in _check_errorbar_color
    self._check_colors(errs, linecolors=[expected] * len(errs))
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 204, in _check_colors
    self.assertEqual(result, expected)
AssertionError: Tuples differ: (0.0, 0.0, 1.0, 1.0) != (0.0, 0.5019607843137255, 0.0,...

First differing element 1:
0.0
0.501960784314

- (0.0, 0.0, 1.0, 1.0)
+ (0.0, 0.5019607843137255, 0.0, 1.0)

======================================================================
FAIL: test_subplots (pandas.tests.test_graphics.TestDataFramePlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 1440, in test_subplots
    self._check_legend_labels(ax, labels=[com.pprint_thing(column)])
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 117, in _check_legend_labels
    self._check_text_labels(ax.get_legend().get_texts(), labels)
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 241, in _check_text_labels
    self.assertEqual(len(labels), len(expected))
AssertionError: 2 != 1

======================================================================
FAIL: test_bar_log (pandas.tests.test_graphics.TestSeriesPlots)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jreback/pandas/pandas/tests/test_graphics.py", line 649, in test_bar_log
    tm.assert_numpy_array_equal(ax.yaxis.get_ticklocs(), expected)
  File "/home/jreback/pandas/pandas/util/testing.py", line 822, in assert_numpy_array_equal
    left.shape, right.shape)
  File "/home/jreback/pandas/pandas/util/testing.py", line 791, in raise_assert_detail
    raise AssertionError(msg)
AssertionError: numpy array are different

numpy array shapes are different
[left]:  (6,)
[right]: (4,)

----------------------------------------------------------------------
Ran 136 tests in 124.794s

FAILED (SKIP=1, errors=15, failures=8)