Bug 1715652 - python-matplotlib fails to build on Python 3.8
Summary: python-matplotlib fails to build on Python 3.8
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: python-matplotlib
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Thomas Spura
QA Contact: Fedora Extras Quality Assurance
URL: https://copr.fedorainfracloud.org/cop...
Whiteboard:
Depends On:
Blocks: PYTHON38
TreeView+ depends on / blocked
 
Reported: 2019-05-30 22:12 UTC by Miro Hrončok
Modified: 2019-09-08 18:24 UTC (History)
11 users (show)

Fixed In Version: python-matplotlib-3.1.1-2.fc32
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-09-08 18:24:02 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github matplotlib matplotlib pull 14891 0 None None None 2019-08-31 09:24:16 UTC
Github matplotlib matplotlib pull 15168 0 None None None 2019-09-07 01:19:56 UTC
Github numpy numpy issues 14397 0 None None None 2019-08-31 09:05:50 UTC
Python 37980 0 None None None 2019-08-31 09:05:50 UTC

Description Miro Hrončok 2019-05-30 22:12:28 UTC
python-matplotlib 3.0.3-1.fc30 fails to build on Python 3.8.0a4+:


=================================== FAILURES ===================================
___________________________ test_pathological_hexbin ___________________________
[gw1] linux -- Python 3.8.0 /usr/bin/python3

    def test_pathological_hexbin():
        # issue #2863
        out = io.BytesIO()
    
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("always")
            mylist = [10] * 100
            fig, ax = plt.subplots(1, 1)
            ax.hexbin(mylist, mylist)
            fig.savefig(out)
>           assert len(w) == 0
E           assert 22 == 0
E            +  where 22 = len([<warnings.WarningMessage object at 0x7fa9edebd070>, <warnings.WarningMessage object at 0x7fa9ede7b220>, <warnings.War...ede7b5b0>, <warnings.WarningMessage object at 0x7fa9ed446d90>, <warnings.WarningMessage object at 0x7fa9edc7b070>, ...])

../../BUILDROOT/python-matplotlib-3.0.3-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_axes.py:4889: AssertionError
=============================== warnings summary ===============================

Seems like the test cannot handle extra warnings.

Full logs at https://copr.fedorainfracloud.org/coprs/g/python/python3.8/package/python-matplotlib/

Setting severity urgent as we'd like to start rebuilding in Koji side tag next week with 3.8.0beta1.

Comment 1 Elliott Sales de Andrade 2019-05-31 07:09:40 UTC
Can you see how it looks with https://src.fedoraproject.org/rpms/python-matplotlib/pull-request/18 ?

Comment 3 Elliott Sales de Andrade 2019-05-31 07:28:43 UTC
Different error because I re-enabled test_tinypages:

E           /usr/lib/python3.8/site-packages/docutils/writers/latex2e/__init__.py:2978: SyntaxWarning: invalid escape sequence \l
E             self.out.append('}] \leavevmode ')

Isn't this a bug in python3-docutils?

Comment 4 Elliott Sales de Andrade 2019-05-31 07:37:24 UTC
Seems to have been fixed upstream: https://sourceforge.net/p/docutils/code/8255/ but no release yet?

Comment 5 Miro Hrončok 2019-05-31 07:43:00 UTC
Definitively coming from docutils, but matplotlib test IMHO should not error on such things.

Comment 6 Petr Viktorin (pviktori) 2019-06-04 12:51:23 UTC
The warnings in test_pathological_hexbin are about PY_SSIZE_T_CLEAN in _png.cpp. Upstream fix is here: https://github.com/matplotlib/matplotlib/commit/593faa04d96de5424c2b5163aeed4f1a562e60fd

Comment 7 Petr Viktorin (pviktori) 2019-06-04 13:47:59 UTC
https://src.fedoraproject.org/rpms/python-matplotlib/pull-request/19

Comment 8 Miro Hrončok 2019-08-13 08:44:31 UTC
Matplotlib 3.1.1 fails again.

https://copr.fedorainfracloud.org/coprs/g/python/python3.8/build/998214/

=================================== FAILURES ===================================
______________________ test_eventplot_problem_kwargs[png] ______________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3

    @image_comparison(baseline_images=['test_eventplot_problem_kwargs'],
                      extensions=['png'], remove_text=True)
    def test_eventplot_problem_kwargs():
        '''
        test that 'singular' versions of LineCollection props raise an
        IgnoredKeywordWarning rather than overriding the 'plural' versions (e.g.
        to prevent 'color' from overriding 'colors', see issue #4297)
        '''
        np.random.seed(0)
    
        data1 = np.random.random([20]).tolist()
        data2 = np.random.random([10]).tolist()
        data = [data1, data2]
    
        fig = plt.figure()
        axobj = fig.add_subplot(111)
    
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("always")
            colls = axobj.eventplot(data,
                                    colors=['r', 'b'],
                                    color=['c', 'm'],
                                    linewidths=[2, 1],
                                    linewidth=[1, 2],
                                    linestyles=['solid', 'dashed'],
                                    linestyle=['dashdot', 'dotted'])
    
            # check that three IgnoredKeywordWarnings were raised
>           assert len(w) == 3
E           assert 5 == 3
E            +  where 5 = len([<warnings.WarningMessage object at 0x7fa2aa610430>, <warnings.WarningMessage object at 0x7fa2ace58940>, <warnings.War...x7fa2ace58790>, <warnings.WarningMessage object at 0x7fa2aa7a36a0>, <warnings.WarningMessage object at 0x7fa2aa7a3850>])

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_axes.py:3447: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
___________________________ test_pathological_hexbin ___________________________
[gw1] linux -- Python 3.8.0 /usr/bin/python3

    def test_pathological_hexbin():
        # issue #2863
        out = io.BytesIO()
    
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("always")
            mylist = [10] * 100
            fig, ax = plt.subplots(1, 1)
            ax.hexbin(mylist, mylist)
            fig.savefig(out)
>           assert len(w) == 0
E           assert 2 == 0
E            +  where 2 = len([<warnings.WarningMessage object at 0x7fd1b4b07580>, <warnings.WarningMessage object at 0x7fd1b4b071c0>])

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_axes.py:5046: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
_______________________________ test_square_plot _______________________________
[gw1] linux -- Python 3.8.0 /usr/bin/python3

    def test_square_plot():
        x = np.arange(4)
        y = np.array([1., 3., 5., 7.])
        fig, ax = plt.subplots()
        ax.plot(x, y, 'mo')
>       ax.axis('square')

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_axes.py:5175: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/axes/_base.py:1694: in axis
    self.set_xlim([xlim[0], xlim[0] + edge_size],
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <matplotlib.axes._subplots.AxesSubplot object at 0x7fd1b75fadc0>
left = 0.0, right = array([6.]), emit = True, auto = False

    def set_xlim(self, left=None, right=None, emit=True, auto=False,
                 *, xmin=None, xmax=None):
        """
        Set the x-axis view limits.
    
        .. ACCEPTS: (left: float, right: float)
    
        Parameters
        ----------
        left : scalar, optional
            The left xlim in data coordinates. Passing *None* leaves the
            limit unchanged.
    
            The left and right xlims may be passed as the tuple
            (*left*, *right*) as the first positional argument (or as
            the *left* keyword argument).
    
        right : scalar, optional
            The right xlim in data coordinates. Passing *None* leaves the
            limit unchanged.
    
        emit : bool, optional
            Whether to notify observers of limit change (default: True).
    
        auto : bool or None, optional
            Whether to turn on autoscaling of the x-axis. True turns on,
            False turns off (default action), None leaves unchanged.
    
        xmin, xmax : scalar, optional
            They are equivalent to left and right respectively,
            and it is an error to pass both *xmin* and *left* or
            *xmax* and *right*.
    
        Returns
        -------
        left, right : (float, float)
            The new x-axis limits in data coordinates.
    
        See Also
        --------
        get_xlim
        set_xbound, get_xbound
        invert_xaxis, xaxis_inverted
    
        Notes
        -----
        The *left* value may be greater than the *right* value, in which
        case the x-axis values will decrease from left to right.
    
        Examples
        --------
        >>> set_xlim(left, right)
        >>> set_xlim((left, right))
        >>> left, right = set_xlim(left, right)
    
        One limit may be left unchanged.
    
        >>> set_xlim(right=right_lim)
    
        Limits may be passed in reverse order to flip the direction of
        the x-axis. For example, suppose *x* represents the number of
        years before present. The x-axis limits might be set like the
        following so 5000 years ago is on the left of the plot and the
        present is on the right.
    
        >>> set_xlim(5000, 0)
    
        """
        if right is None and np.iterable(left):
            left, right = left
        if xmin is not None:
            if left is not None:
                raise TypeError('Cannot pass both `xmin` and `left`')
            left = xmin
        if xmax is not None:
            if right is not None:
                raise TypeError('Cannot pass both `xmax` and `right`')
            right = xmax
    
        self._process_unit_info(xdata=(left, right))
        left = self._validate_converted_limits(left, self.convert_xunits)
        right = self._validate_converted_limits(right, self.convert_xunits)
    
        old_left, old_right = self.get_xlim()
        if left is None:
            left = old_left
        if right is None:
            right = old_right
    
        if self.get_xscale() == 'log':
            if left <= 0:
                cbook._warn_external(
                    'Attempted to set non-positive left xlim on a '
                    'log-scaled axis.\n'
                    'Invalid limit will be ignored.')
                left = old_left
            if right <= 0:
                cbook._warn_external(
                    'Attempted to set non-positive right xlim on a '
                    'log-scaled axis.\n'
                    'Invalid limit will be ignored.')
                right = old_right
        if left == right:
            cbook._warn_external(
                f"Attempting to set identical left == right == {left} results "
                f"in singular transformations; automatically expanding.")
        reverse = left > right
        left, right = self.xaxis.get_major_locator().nonsingular(left, right)
        left, right = self.xaxis.limit_range_for_scale(left, right)
>       left, right = sorted([left, right], reverse=reverse)
E       TypeError: only integer scalar arrays can be converted to a scalar index

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/axes/_base.py:3270: TypeError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
__________________________ test_contour_empty_levels ___________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3

    def test_contour_empty_levels():
    
        x = np.arange(9)
        z = np.random.random((9, 9))
    
        fig, ax = plt.subplots()
        with pytest.warns(UserWarning) as record:
            ax.contour(x, x, z, levels=[])
>       assert len(record) == 1
E       assert 5 == 1
E        +  where 5 = len(WarningsChecker(record=True))

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:129: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
__________________________ test_contour_badlevel_fmt ___________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3

    def test_contour_badlevel_fmt():
        # test funny edge case from
        # https://github.com/matplotlib/matplotlib/issues/9742
        # User supplied fmt for each level as a dictionary, but
        # MPL changed the level to the minimum data value because
        # no contours possible.
        # This would error out pre
        # https://github.com/matplotlib/matplotlib/pull/9743
        x = np.arange(9)
        z = np.zeros((9, 9))
    
        fig, ax = plt.subplots()
        fmt = {1.: '%1.2f'}
        with pytest.warns(UserWarning) as record:
            cs = ax.contour(x, x, z, levels=[1.])
            ax.clabel(cs, fmt=fmt)
>       assert len(record) == 1
E       assert 5 == 1
E        +  where 5 = len(WarningsChecker(record=True))

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:159: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
________________________ test_circular_contour_warning _________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3

    def test_circular_contour_warning():
        # Check that almost circular contours don't throw a warning
        with pytest.warns(None) as record:
            x, y = np.meshgrid(np.linspace(-2, 2, 4), np.linspace(-2, 2, 4))
            r = np.hypot(x, y)
    
            plt.figure()
            cs = plt.contour(x, y, r)
            plt.clabel(cs)
>       assert len(record) == 0
E       assert 4 == 0
E        +  where 4 = len(WarningsChecker(record=True))

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:370: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
____________________________ test_contour_uniform_z ____________________________
[gw1] linux -- Python 3.8.0 /usr/bin/python3

    def test_contour_uniform_z():
    
        x = np.arange(9)
        z = np.ones((9, 9))
    
        fig, ax = plt.subplots()
        with pytest.warns(UserWarning) as record:
            ax.contour(x, x, z)
>       assert len(record) == 1
E       assert 5 == 1
E        +  where 5 = len(WarningsChecker(record=True))

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:170: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
_______________________________ test_no_warnings _______________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3

    def test_no_warnings():
        fig, ax = plt.subplots()
    
        X, Y = np.meshgrid(np.arange(15), np.arange(10))
        U = V = np.ones_like(X)
    
        phi = (np.random.rand(15, 10) - .5) * 150
        with warnings.catch_warnings(record=True) as w:
            ax.quiver(X, Y, U, V, angles=phi)
            fig.canvas.draw()
>       assert len(w) == 0
E       assert 2 == 0
E        +  where 2 = len([<warnings.WarningMessage object at 0x7fa2acb714f0>, <warnings.WarningMessage object at 0x7fa2acb71610>])

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_quiver.py:54: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.
_____________________________ test_zero_headlength _____________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3

    def test_zero_headlength():
        # Based on report by Doug McNeil:
        # http://matplotlib.1069221.n5.nabble.com/quiver-warnings-td28107.html
        fig, ax = plt.subplots()
        X, Y = np.meshgrid(np.arange(10), np.arange(10))
        U, V = np.cos(X), np.sin(Y)
        with warnings.catch_warnings(record=True) as w:
            ax.quiver(U, V, headlength=0, headaxislength=0)
            fig.canvas.draw()
>       assert len(w) == 0
E       assert 2 == 0
E        +  where 2 = len([<warnings.WarningMessage object at 0x7fa2aa761a60>, <warnings.WarningMessage object at 0x7fa2aa761fa0>])

../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_quiver.py:66: AssertionError
------------------------------ Captured log setup ------------------------------
WARNING  matplotlib.testing:__init__.py:39 Could not set locale to English/United States. Some date-related tests may fail.

FAILED test_axes.py::test_eventplot_problem_kwargs[png] - assert 5 == 3
FAILED test_axes.py::test_pathological_hexbin - assert 2 == 0
FAILED test_axes.py::test_square_plot - TypeError: only integer scalar arrays...
FAILED test_contour.py::test_contour_empty_levels - assert 5 == 1
FAILED test_contour.py::test_contour_badlevel_fmt - assert 5 == 1
FAILED test_contour.py::test_circular_contour_warning - assert 4 == 0
FAILED test_contour.py::test_contour_uniform_z - assert 5 == 1
FAILED test_quiver.py::test_no_warnings - assert 2 == 0
FAILED test_quiver.py::test_zero_headlength - assert 2 == 0



Will try to add English locale.

Comment 9 Miro Hrončok 2019-08-13 09:27:57 UTC
=================================== FAILURES ===================================
______________________ test_eventplot_problem_kwargs[png] ______________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3
    @image_comparison(baseline_images=['test_eventplot_problem_kwargs'],
                      extensions=['png'], remove_text=True)
    def test_eventplot_problem_kwargs():
        '''
        test that 'singular' versions of LineCollection props raise an
        IgnoredKeywordWarning rather than overriding the 'plural' versions (e.g.
        to prevent 'color' from overriding 'colors', see issue #4297)
        '''
        np.random.seed(0)
    
        data1 = np.random.random([20]).tolist()
        data2 = np.random.random([10]).tolist()
        data = [data1, data2]
    
        fig = plt.figure()
        axobj = fig.add_subplot(111)
    
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("always")
            colls = axobj.eventplot(data,
                                    colors=['r', 'b'],
                                    color=['c', 'm'],
                                    linewidths=[2, 1],
                                    linewidth=[1, 2],
                                    linestyles=['solid', 'dashed'],
                                    linestyle=['dashdot', 'dotted'])
    
            # check that three IgnoredKeywordWarnings were raised
>           assert len(w) == 3
E           assert 5 == 3
E            +  where 5 = len([<warnings.WarningMessage object at 0x7f8222de7f40>, <warnings.WarningMessage object at 0x7f8222de7e80>, <warnings.War...x7f8222de7a90>, <warnings.WarningMessage object at 0x7f8222b2a250>, <warnings.WarningMessage object at 0x7f8222b2a280>])
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_axes.py:3447: AssertionError
___________________________ test_pathological_hexbin ___________________________
[gw1] linux -- Python 3.8.0 /usr/bin/python3
    def test_pathological_hexbin():
        # issue #2863
        out = io.BytesIO()
    
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("always")
            mylist = [10] * 100
            fig, ax = plt.subplots(1, 1)
            ax.hexbin(mylist, mylist)
            fig.savefig(out)
>           assert len(w) == 0
E           assert 2 == 0
E            +  where 2 = len([<warnings.WarningMessage object at 0x7fd011b3dbe0>, <warnings.WarningMessage object at 0x7fd011b3d640>])
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_axes.py:5046: AssertionError
_______________________________ test_square_plot _______________________________
[gw1] linux -- Python 3.8.0 /usr/bin/python3
    def test_square_plot():
        x = np.arange(4)
        y = np.array([1., 3., 5., 7.])
        fig, ax = plt.subplots()
        ax.plot(x, y, 'mo')
>       ax.axis('square')
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_axes.py:5175: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/axes/_base.py:1694: in axis
    self.set_xlim([xlim[0], xlim[0] + edge_size],
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <matplotlib.axes._subplots.AxesSubplot object at 0x7fd011d19430>
left = 0.0, right = array([6.]), emit = True, auto = False
    def set_xlim(self, left=None, right=None, emit=True, auto=False,
                 *, xmin=None, xmax=None):
        """
        Set the x-axis view limits.
    
        .. ACCEPTS: (left: float, right: float)
    
        Parameters
        ----------
        left : scalar, optional
            The left xlim in data coordinates. Passing *None* leaves the
            limit unchanged.
    
            The left and right xlims may be passed as the tuple
            (*left*, *right*) as the first positional argument (or as
            the *left* keyword argument).
    
        right : scalar, optional
            The right xlim in data coordinates. Passing *None* leaves the
            limit unchanged.
    
        emit : bool, optional
            Whether to notify observers of limit change (default: True).
    
        auto : bool or None, optional
            Whether to turn on autoscaling of the x-axis. True turns on,
            False turns off (default action), None leaves unchanged.
    
        xmin, xmax : scalar, optional
            They are equivalent to left and right respectively,
            and it is an error to pass both *xmin* and *left* or
            *xmax* and *right*.
    
        Returns
        -------
        left, right : (float, float)
            The new x-axis limits in data coordinates.
    
        See Also
        --------
        get_xlim
        set_xbound, get_xbound
        invert_xaxis, xaxis_inverted
    
        Notes
        -----
        The *left* value may be greater than the *right* value, in which
        case the x-axis values will decrease from left to right.
    
        Examples
        --------
        >>> set_xlim(left, right)
        >>> set_xlim((left, right))
        >>> left, right = set_xlim(left, right)
    
        One limit may be left unchanged.
    
        >>> set_xlim(right=right_lim)
    
        Limits may be passed in reverse order to flip the direction of
        the x-axis. For example, suppose *x* represents the number of
        years before present. The x-axis limits might be set like the
        following so 5000 years ago is on the left of the plot and the
        present is on the right.
    
        >>> set_xlim(5000, 0)
    
        """
        if right is None and np.iterable(left):
            left, right = left
        if xmin is not None:
            if left is not None:
                raise TypeError('Cannot pass both `xmin` and `left`')
            left = xmin
        if xmax is not None:
            if right is not None:
                raise TypeError('Cannot pass both `xmax` and `right`')
            right = xmax
    
        self._process_unit_info(xdata=(left, right))
        left = self._validate_converted_limits(left, self.convert_xunits)
        right = self._validate_converted_limits(right, self.convert_xunits)
    
        old_left, old_right = self.get_xlim()
        if left is None:
            left = old_left
        if right is None:
            right = old_right
    
        if self.get_xscale() == 'log':
            if left <= 0:
                cbook._warn_external(
                    'Attempted to set non-positive left xlim on a '
                    'log-scaled axis.\n'
                    'Invalid limit will be ignored.')
                left = old_left
            if right <= 0:
                cbook._warn_external(
                    'Attempted to set non-positive right xlim on a '
                    'log-scaled axis.\n'
                    'Invalid limit will be ignored.')
                right = old_right
        if left == right:
            cbook._warn_external(
                f"Attempting to set identical left == right == {left} results "
                f"in singular transformations; automatically expanding.")
        reverse = left > right
        left, right = self.xaxis.get_major_locator().nonsingular(left, right)
        left, right = self.xaxis.limit_range_for_scale(left, right)
>       left, right = sorted([left, right], reverse=reverse)
E       TypeError: only integer scalar arrays can be converted to a scalar index
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/axes/_base.py:3270: TypeError
__________________________ test_contour_empty_levels ___________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3
    def test_contour_empty_levels():
    
        x = np.arange(9)
        z = np.random.random((9, 9))
    
        fig, ax = plt.subplots()
        with pytest.warns(UserWarning) as record:
            ax.contour(x, x, z, levels=[])
>       assert len(record) == 1
E       assert 5 == 1
E        +  where 5 = len(WarningsChecker(record=True))
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:129: AssertionError
__________________________ test_contour_badlevel_fmt ___________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3
    def test_contour_badlevel_fmt():
        # test funny edge case from
        # https://github.com/matplotlib/matplotlib/issues/9742
        # User supplied fmt for each level as a dictionary, but
        # MPL changed the level to the minimum data value because
        # no contours possible.
        # This would error out pre
        # https://github.com/matplotlib/matplotlib/pull/9743
        x = np.arange(9)
        z = np.zeros((9, 9))
    
        fig, ax = plt.subplots()
        fmt = {1.: '%1.2f'}
        with pytest.warns(UserWarning) as record:
            cs = ax.contour(x, x, z, levels=[1.])
            ax.clabel(cs, fmt=fmt)
>       assert len(record) == 1
E       assert 5 == 1
E        +  where 5 = len(WarningsChecker(record=True))
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:159: AssertionError
________________________ test_circular_contour_warning _________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3
    def test_circular_contour_warning():
        # Check that almost circular contours don't throw a warning
        with pytest.warns(None) as record:
            x, y = np.meshgrid(np.linspace(-2, 2, 4), np.linspace(-2, 2, 4))
            r = np.hypot(x, y)
    
            plt.figure()
            cs = plt.contour(x, y, r)
            plt.clabel(cs)
>       assert len(record) == 0
E       assert 4 == 0
E        +  where 4 = len(WarningsChecker(record=True))
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:370: AssertionError
____________________________ test_contour_uniform_z ____________________________
[gw1] linux -- Python 3.8.0 /usr/bin/python3
    def test_contour_uniform_z():
    
        x = np.arange(9)
        z = np.ones((9, 9))
    
        fig, ax = plt.subplots()
        with pytest.warns(UserWarning) as record:
            ax.contour(x, x, z)
>       assert len(record) == 1
E       assert 5 == 1
E        +  where 5 = len(WarningsChecker(record=True))
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_contour.py:170: AssertionError
_______________________________ test_no_warnings _______________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3
    def test_no_warnings():
        fig, ax = plt.subplots()
    
        X, Y = np.meshgrid(np.arange(15), np.arange(10))
        U = V = np.ones_like(X)
    
        phi = (np.random.rand(15, 10) - .5) * 150
        with warnings.catch_warnings(record=True) as w:
            ax.quiver(X, Y, U, V, angles=phi)
            fig.canvas.draw()
>       assert len(w) == 0
E       assert 2 == 0
E        +  where 2 = len([<warnings.WarningMessage object at 0x7f82205151f0>, <warnings.WarningMessage object at 0x7f8220515a00>])
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_quiver.py:54: AssertionError
_____________________________ test_zero_headlength _____________________________
[gw0] linux -- Python 3.8.0 /usr/bin/python3
    def test_zero_headlength():
        # Based on report by Doug McNeil:
        # http://matplotlib.1069221.n5.nabble.com/quiver-warnings-td28107.html
        fig, ax = plt.subplots()
        X, Y = np.meshgrid(np.arange(10), np.arange(10))
        U, V = np.cos(X), np.sin(Y)
        with warnings.catch_warnings(record=True) as w:
            ax.quiver(U, V, headlength=0, headaxislength=0)
            fig.canvas.draw()
>       assert len(w) == 0
E       assert 2 == 0
E        +  where 2 = len([<warnings.WarningMessage object at 0x7f822060fb80>, <warnings.WarningMessage object at 0x7f822060f190>])
../../BUILDROOT/python-matplotlib-3.1.1-1.fc31.x86_64/usr/lib64/python3.8/site-packages/matplotlib/tests/test_quiver.py:66: AssertionError


> Will try to add English locale.

I'll push the change anyway to avoid the red herring.

Comment 10 Ben Cotton 2019-08-13 17:01:00 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 31 development cycle.
Changing version to '31'.

Comment 11 Ben Cotton 2019-08-13 17:03:33 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 31 development cycle.
Changing version to 31.

Comment 12 Miro Hrončok 2019-08-13 17:17:47 UTC
Python 3.8 will happen in Fedora 32, changing back to rawhide.

Comment 13 Miro Hrončok 2019-08-14 22:24:58 UTC
The coordinated rebuild of Python 3.8 has started in the `f32-python` side tag.

If you figure out how to rebuild this package, please don't rebuild it in regular rawhide, but use the side tag instead:

    on branch master:
    $ fedpkg build --target=f32-python

To wait for a build to show up in the side tag, do:

    $ koji wait-repo f32-python --build=<nvr>

Where <nvr> is name-version-release of the source package, e.g. python-foo-1.1-2.fc32.

An updated mock config is posted at:
http://copr.fedorainfracloud.org/coprs/g/python/python3.8/

Note that it will take a while before the essential packages are rebuilt, so don't expect all your dependencies to be available right away.

Thanks. Let us know if you need up to date info, or if you have any questions.



PS this message is mass posted to all the bugs that block the PYTHON38 bug. If this is also a Fedora 31 FTBFS bug and you manage to fix it, you can do a f31 build as usual:

    on branch f31:
    $ fedpkg build

Comment 14 Miro Hrončok 2019-08-19 18:29:45 UTC
Lowering the severity, I've rebuilt the package without tests for now.

Comment 15 Miro Hrončok 2019-08-21 16:35:45 UTC
The f32-python side tag has been merged. In order to rebuild the package, do it in regular rawhide, but please wait until python3-3.8 is tagged:

  $ koji wait-repo f32-build --build python3-3.8.0~b3-3.fc32


If your built already started in f32-python, after it is finished, please tag it to rawhide with:

  $ koji tag-build f32-pending <nvr>

For example:

  $ koji tag-build f32-pending libreoffice-6.3.0.4-3.fc32

Thanks!

(This comment is mass posted to all bugzillas blocking the PYTHON38 tracking bug.)

Comment 16 Miro Hrončok 2019-08-21 17:29:41 UTC
(Python 3.8 has landed in the rawhide buildroot.)

Comment 17 Lumír Balhar 2019-08-22 14:11:23 UTC
There has to be some difference in buildroot because I'm testing it and it behaves differently. I have Python 3.8.0b3 and matplotlib installed from RPM  	python3-matplotlib-3.1.1-1.fc32.1.x86_64.rpm (the latest build with Python 3.8 without tests).

PASS - test_zero_headlenght shows zero warnings as it should
PASS - test_no_warnings shows zero warnings as it should
PASS - test_contour_uniform_z shows one warning as it should (<stdin>:1: UserWarning: No contour levels were found within the data range.)
PASS - test_circular_contour_warning shows zero warnings as it should
FAIL - test_contour_badlevel_fmt shows zero warnings but should show one
FAIL - test_contour_empty_levels shows zero warnings but should show one

I am going to investigate it more. Help is welcome.

Comment 18 Elliott Sales de Andrade 2019-08-31 09:05:50 UTC
Strange that you don't see it, but removing the capture entirely shows that it's actually from NumPy:

::test_eventplot_problem_kwargs[png]
::test_pathological_hexbin
::test_square_plot
::test_contour_empty_levels
::test_contour_badlevel_fmt
::test_contour_uniform_z
::test_circular_contour_warning
::test_no_warnings
::test_zero_headlength
  /builddir/build/BUILDROOT/python-matplotlib-3.1.1-1.fc32.1.x86_64/usr/lib64/python3.8/site-packages/matplotlib/axes/_base.py:3270: DeprecationWarning: In future, it will be an error for 'np.bool_' scalars to be interpreted as an index
    left, right = sorted([left, right], reverse=reverse)

::test_eventplot_problem_kwargs[png]
::test_pathological_hexbin
::test_square_plot
::test_contour_empty_levels
::test_contour_badlevel_fmt
::test_contour_uniform_z
::test_circular_contour_warning
::test_no_warnings
::test_zero_headlength
  /builddir/build/BUILDROOT/python-matplotlib-3.1.1-1.fc32.1.x86_64/usr/lib64/python3.8/site-packages/matplotlib/axes/_base.py:3652: DeprecationWarning: In future, it will be an error for 'np.bool_' scalars to be interpreted as an index
    bottom, top = sorted([bottom, top], reverse=reverse)

The warning is a bit strange, and possibly a bug in NumPy, but using `bool(reverse)` fixes it. Perhaps you were using an old NumPy to test?

This is reported on NumPy at https://github.com/numpy/numpy/issues/14397 and CPython at https://bugs.python.org/issue37980

test_square_plot triggers a TypeError in the same place, but something has a funny array shape, so it might be a different bug.

Comment 19 Elliott Sales de Andrade 2019-08-31 09:23:43 UTC
Ah, I thought it looked familiar; the TypeError is fixed by https://github.com/matplotlib/matplotlib/pull/14891

Comment 20 Lumír Balhar 2019-09-02 06:10:14 UTC
Thank you! Have you managed to build it in rawhide? Should we skip these tests and wait for the next releases?

Comment 22 Elliott Sales de Andrade 2019-09-07 01:18:40 UTC
https://src.fedoraproject.org/rpms/python-matplotlib/pull-request/20

Comment 23 Miro Hrončok 2019-09-08 17:54:44 UTC
Build runs at https://koji.fedoraproject.org/koji/taskinfo?taskID=37541917

Comment 24 Miro Hrončok 2019-09-08 18:24:02 UTC
Thanks!


Note You need to log in before you can comment on or make changes to this bug.