Title: matplotlib 3.3.0 debian amd64: tests errors · Issue #11324 · matplotlib/matplotlib · GitHub
Open Graph Title: matplotlib 3.3.0 debian amd64: tests errors · Issue #11324 · matplotlib/matplotlib
X Title: matplotlib 3.3.0 debian amd64: tests errors · Issue #11324 · matplotlib/matplotlib
Description: Hello, i'm reporting here the errors produced by the test suite when running on debian amd64: python 2.7.15: =================================== FAILURES =================================== _____________________________ test_log_scales[p...
Open Graph Description: Hello, i'm reporting here the errors produced by the test suite when running on debian amd64: python 2.7.15: =================================== FAILURES =================================== _______...
X Description: Hello, i'm reporting here the errors produced by the test suite when running on debian amd64: python 2.7.15: =================================== FAILURES =================================== ___...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/11324
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"matplotlib 3.3.0 debian amd64: tests errors","articleBody":"Hello,\r\ni'm reporting here the errors produced by the test suite when running on debian amd64:\r\n\r\npython 2.7.15:\r\n```\r\n=================================== FAILURES ===================================\r\n_____________________________ test_log_scales[png] _____________________________\r\n\r\nself = \u003cCallInfo when='call' exception: Image sizes do not match expected size: (600, 800, 3) actual size (600, 800, 4)\u003e\r\nfunc = \u003cfunction \u003clambda\u003e at 0x7f13fab3e410\u003e, when = 'call'\r\n\r\n def __init__(self, func, when):\r\n #: context of invocation: one of \"setup\", \"call\",\r\n #: \"teardown\", \"memocollect\"\r\n self.when = when\r\n self.start = time()\r\n try:\r\n\u003e self.result = func()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:189: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\n\u003e return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:175: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_runtest_call'\u003e, args = ()\r\nkwargs = {'item': \u003cFunction 'test_log_scales[png]'\u003e}, notincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f140b120f50\u003e\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a075a10\u003e, \u003cpluggy.HookImpl object at 0x7f1409fb5ad0\u003e, \u003cpluggy.HookImpl object at 0x7f1409fc27d0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a075a10\u003e, \u003cpluggy.HookImpl object at 0x7f1409fb5ad0\u003e, \u003cpluggy.HookImpl object at 0x7f1409fc27d0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nitem = \u003cFunction 'test_log_scales[png]'\u003e\r\n\r\n def pytest_runtest_call(item):\r\n _update_current_test_var(item, 'call')\r\n try:\r\n\u003e item.runtest()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:106: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cFunction 'test_log_scales[png]'\u003e\r\n\r\n def runtest(self):\r\n \"\"\" execute the underlying test function. \"\"\"\r\n\u003e self.ihook.pytest_pyfunc_call(pyfuncitem=self)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:1171: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_pyfunc_call'\u003e, args = ()\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_log_scales[png]'\u003e}, notincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f140b120f50\u003e\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a086090\u003e, \u003cpluggy.HookImpl object at 0x7f140a028090\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a086090\u003e, \u003cpluggy.HookImpl object at 0x7f140a028090\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\npyfuncitem = \u003cFunction 'test_log_scales[png]'\u003e\r\n\r\n @hookimpl(trylast=True)\r\n def pytest_pyfunc_call(pyfuncitem):\r\n testfunction = pyfuncitem.obj\r\n if pyfuncitem._isyieldedfunction():\r\n testfunction(*pyfuncitem._args)\r\n else:\r\n funcargs = pyfuncitem.funcargs\r\n testargs = {}\r\n for arg in pyfuncitem._fixtureinfo.argnames:\r\n testargs[arg] = funcargs[arg]\r\n\u003e testfunction(**testargs)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:147: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpected = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales-expected.png'\r\nactual = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales.png'\r\ntol = 0.306, in_decorator = True\r\n\r\n def compare_images(expected, actual, tol, in_decorator=False):\r\n \"\"\"\r\n Compare two \"image\" files checking differences within a tolerance.\r\n \r\n The two given filenames may point to files which are convertible to\r\n PNG via the `.converter` dictionary. The underlying RMS is calculated\r\n with the `.calculate_rms` function.\r\n \r\n Parameters\r\n ----------\r\n expected : str\r\n The filename of the expected image.\r\n actual :str\r\n The filename of the actual image.\r\n tol : float\r\n The tolerance (a color value difference, where 255 is the\r\n maximal difference). The test fails if the average pixel\r\n difference is greater than this value.\r\n in_decorator : bool\r\n If called from image_comparison decorator, this should be\r\n True. (default=False)\r\n \r\n Examples\r\n --------\r\n img1 = \"./baseline/plot.png\"\r\n img2 = \"./output/plot.png\"\r\n compare_images( img1, img2, 0.001 ):\r\n \r\n \"\"\"\r\n if not os.path.exists(actual):\r\n raise Exception(\"Output image %s does not exist.\" % actual)\r\n \r\n if os.stat(actual).st_size == 0:\r\n raise Exception(\"Output image file %s is empty.\" % actual)\r\n \r\n # Convert the image to png\r\n extension = expected.split('.')[-1]\r\n \r\n if not os.path.exists(expected):\r\n raise IOError('Baseline image %r does not exist.' % expected)\r\n \r\n if extension != 'png':\r\n actual = convert(actual, False)\r\n expected = convert(expected, True)\r\n \r\n # open the image files and remove the alpha channel (if it exists)\r\n expectedImage = _png.read_png_int(expected)\r\n actualImage = _png.read_png_int(actual)\r\n expectedImage = expectedImage[:, :, :3]\r\n actualImage = actualImage[:, :, :3]\r\n \r\n actualImage, expectedImage = crop_to_same(\r\n actual, actualImage, expected, expectedImage)\r\n \r\n diff_image = make_test_filename(actual, 'failed-diff')\r\n \r\n if tol \u003c= 0.0:\r\n if np.array_equal(expectedImage, actualImage):\r\n return None\r\n \r\n # convert to signed integers, so that the images can be subtracted without\r\n # overflow\r\n expectedImage = expectedImage.astype(np.int16)\r\n actualImage = actualImage.astype(np.int16)\r\n \r\n rms = calculate_rms(expectedImage, actualImage)\r\n \r\n if rms \u003c= tol:\r\n return None\r\n \r\n\u003e save_diff_image(expected, actual, diff_image)\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/testing/compare.py:444: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpected = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales-expected.png'\r\nactual = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales.png'\r\noutput = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales-failed-diff.png'\r\n\r\n def save_diff_image(expected, actual, output):\r\n expectedImage = _png.read_png(expected)\r\n actualImage = _png.read_png(actual)\r\n actualImage, expectedImage = crop_to_same(\r\n actual, actualImage, expected, expectedImage)\r\n expectedImage = np.array(expectedImage).astype(float)\r\n actualImage = np.array(actualImage).astype(float)\r\n if expectedImage.shape != actualImage.shape:\r\n raise ImageComparisonFailure(\r\n \"Image sizes do not match expected size: {0} \"\r\n\u003e \"actual size {1}\".format(expectedImage.shape, actualImage.shape))\r\nE ImageComparisonFailure: Image sizes do not match expected size: (600, 800, 3) actual size (600, 800, 4)\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/testing/compare.py:471: ImageComparisonFailure\r\n__________________ test_bbox_inches_tight_suptile_legend[png] __________________\r\n\r\nself = \u003cCallInfo when='call' exception: Image sizes do not match expected size: (593, 921, 3) actual size (592, 921, 3)\u003e\r\nfunc = \u003cfunction \u003clambda\u003e at 0x7f13f9af5ed8\u003e, when = 'call'\r\n\r\n def __init__(self, func, when):\r\n #: context of invocation: one of \"setup\", \"call\",\r\n #: \"teardown\", \"memocollect\"\r\n self.when = when\r\n self.start = time()\r\n try:\r\n\u003e self.result = func()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:189: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\n\u003e return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:175: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_runtest_call'\u003e, args = ()\r\nkwargs = {'item': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f140b120f50\u003e\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a075a10\u003e, \u003cpluggy.HookImpl object at 0x7f1409fb5ad0\u003e, \u003cpluggy.HookImpl object at 0x7f1409fc27d0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a075a10\u003e, \u003cpluggy.HookImpl object at 0x7f1409fb5ad0\u003e, \u003cpluggy.HookImpl object at 0x7f1409fc27d0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nitem = \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e\r\n\r\n def pytest_runtest_call(item):\r\n _update_current_test_var(item, 'call')\r\n try:\r\n\u003e item.runtest()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:106: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e\r\n\r\n def runtest(self):\r\n \"\"\" execute the underlying test function. \"\"\"\r\n\u003e self.ihook.pytest_pyfunc_call(pyfuncitem=self)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:1171: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_pyfunc_call'\u003e, args = ()\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f140b120f50\u003e\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a086090\u003e, \u003cpluggy.HookImpl object at 0x7f140a028090\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a086090\u003e, \u003cpluggy.HookImpl object at 0x7f140a028090\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\npyfuncitem = \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e\r\n\r\n @hookimpl(trylast=True)\r\n def pytest_pyfunc_call(pyfuncitem):\r\n testfunction = pyfuncitem.obj\r\n if pyfuncitem._isyieldedfunction():\r\n testfunction(*pyfuncitem._args)\r\n else:\r\n funcargs = pyfuncitem.funcargs\r\n testargs = {}\r\n for arg in pyfuncitem._fixtureinfo.argnames:\r\n testargs[arg] = funcargs[arg]\r\n\u003e testfunction(**testargs)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:147: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpected = '/build/matplotlib-2.2.2/result_images/test_bbox_tight/bbox_inches_tight_suptile_legend-expected.png'\r\nactual = '/build/matplotlib-2.2.2/result_images/test_bbox_tight/bbox_inches_tight_suptile_legend.png'\r\ntol = 0.306, in_decorator = True\r\n\r\n def compare_images(expected, actual, tol, in_decorator=False):\r\n \"\"\"\r\n Compare two \"image\" files checking differences within a tolerance.\r\n \r\n The two given filenames may point to files which are convertible to\r\n PNG via the `.converter` dictionary. The underlying RMS is calculated\r\n with the `.calculate_rms` function.\r\n \r\n Parameters\r\n ----------\r\n expected : str\r\n The filename of the expected image.\r\n actual :str\r\n The filename of the actual image.\r\n tol : float\r\n The tolerance (a color value difference, where 255 is the\r\n maximal difference). The test fails if the average pixel\r\n difference is greater than this value.\r\n in_decorator : bool\r\n If called from image_comparison decorator, this should be\r\n True. (default=False)\r\n \r\n Examples\r\n --------\r\n img1 = \"./baseline/plot.png\"\r\n img2 = \"./output/plot.png\"\r\n compare_images( img1, img2, 0.001 ):\r\n \r\n \"\"\"\r\n if not os.path.exists(actual):\r\n raise Exception(\"Output image %s does not exist.\" % actual)\r\n \r\n if os.stat(actual).st_size == 0:\r\n raise Exception(\"Output image file %s is empty.\" % actual)\r\n \r\n # Convert the image to png\r\n extension = expected.split('.')[-1]\r\n \r\n if not os.path.exists(expected):\r\n raise IOError('Baseline image %r does not exist.' % expected)\r\n \r\n if extension != 'png':\r\n actual = convert(actual, False)\r\n expected = convert(expected, True)\r\n \r\n # open the image files and remove the alpha channel (if it exists)\r\n expectedImage = _png.read_png_int(expected)\r\n actualImage = _png.read_png_int(actual)\r\n expectedImage = expectedImage[:, :, :3]\r\n actualImage = actualImage[:, :, :3]\r\n \r\n actualImage, expectedImage = crop_to_same(\r\n actual, actualImage, expected, expectedImage)\r\n \r\n diff_image = make_test_filename(actual, 'failed-diff')\r\n \r\n if tol \u003c= 0.0:\r\n if np.array_equal(expectedImage, actualImage):\r\n return None\r\n \r\n # convert to signed integers, so that the images can be subtracted without\r\n # overflow\r\n expectedImage = expectedImage.astype(np.int16)\r\n actualImage = actualImage.astype(np.int16)\r\n \r\n\u003e rms = calculate_rms(expectedImage, actualImage)\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/testing/compare.py:439: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpectedImage = array([[[255, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255],\r\n ...55, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255]]], dtype=int16)\r\nactualImage = array([[[255, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255],\r\n ...55, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255]]], dtype=int16)\r\n\r\n def calculate_rms(expectedImage, actualImage):\r\n \"Calculate the per-pixel errors, then compute the root mean square error.\"\r\n if expectedImage.shape != actualImage.shape:\r\n raise ImageComparisonFailure(\r\n \"Image sizes do not match expected size: {0} \"\r\n\u003e \"actual size {1}\".format(expectedImage.shape, actualImage.shape))\r\nE ImageComparisonFailure: Image sizes do not match expected size: (593, 921, 3) actual size (592, 921, 3)\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/testing/compare.py:369: ImageComparisonFailure\r\n__________________ test_nose_image_comparison[failing figure] __________________\r\n\r\nself = \u003cCallInfo when='call' exception: assert '...' == 'FFF'\r\n - ...\r\n + FFF\u003e\r\nfunc = \u003cfunction \u003clambda\u003e at 0x7f13fa2209b0\u003e, when = 'call'\r\n\r\n def __init__(self, func, when):\r\n #: context of invocation: one of \"setup\", \"call\",\r\n #: \"teardown\", \"memocollect\"\r\n self.when = when\r\n self.start = time()\r\n try:\r\n\u003e self.result = func()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:189: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\n\u003e return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:175: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_runtest_call'\u003e, args = ()\r\nkwargs = {'item': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f140b120f50\u003e\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a075a10\u003e, \u003cpluggy.HookImpl object at 0x7f1409fb5ad0\u003e, \u003cpluggy.HookImpl object at 0x7f1409fc27d0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a075a10\u003e, \u003cpluggy.HookImpl object at 0x7f1409fb5ad0\u003e, \u003cpluggy.HookImpl object at 0x7f1409fc27d0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nitem = \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e\r\n\r\n def pytest_runtest_call(item):\r\n _update_current_test_var(item, 'call')\r\n try:\r\n\u003e item.runtest()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:106: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e\r\n\r\n def runtest(self):\r\n \"\"\" execute the underlying test function. \"\"\"\r\n\u003e self.ihook.pytest_pyfunc_call(pyfuncitem=self)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:1171: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_pyfunc_call'\u003e, args = ()\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f140b120f50\u003e\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a086090\u003e, \u003cpluggy.HookImpl object at 0x7f140a028090\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f140a086090\u003e, \u003cpluggy.HookImpl object at 0x7f140a028090\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\npyfuncitem = \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e\r\n\r\n @hookimpl(trylast=True)\r\n def pytest_pyfunc_call(pyfuncitem):\r\n testfunction = pyfuncitem.obj\r\n if pyfuncitem._isyieldedfunction():\r\n testfunction(*pyfuncitem._args)\r\n else:\r\n funcargs = pyfuncitem.funcargs\r\n testargs = {}\r\n for arg in pyfuncitem._fixtureinfo.argnames:\r\n testargs[arg] = funcargs[arg]\r\n\u003e testfunction(**testargs)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:147: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nfunc = \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e\r\nkwargs = {'baseline_images': ['simple'], 'extensions': ['png', 'png', 'png']}\r\nerrors = []\r\nfailures = [(\u003cclass 'matplotlib.testing.exceptions.ImageComparisonFailure'\u003e, 'images not close'), (\u003cclass 'matplotlib.testing.exc...onFailure'\u003e, 'images not close'), (\u003cclass 'matplotlib.testing.exceptions.ImageComparisonFailure'\u003e, 'images not close')]\r\ndots = 'FFF'\r\nmonkeypatch = \u003c_pytest.monkeypatch.MonkeyPatch instance at 0x7f13fb26e128\u003e\r\n\r\n @pytest.mark.parametrize(\r\n 'func, kwargs, errors, failures, dots',\r\n [\r\n (nosetest_empty, {'baseline_images': []}, [], [], ''),\r\n (nosetest_empty, {'baseline_images': ['foo']},\r\n [(AssertionError,\r\n 'Test generated 0 images but there are 1 baseline images')],\r\n [],\r\n 'E'),\r\n (nosetest_simple_figure,\r\n {'baseline_images': ['basn3p02'], 'extensions': ['png'],\r\n 'remove_text': True},\r\n [],\r\n [(ImageComparisonFailure, 'Image sizes do not match expected size:')],\r\n 'F'),\r\n (nosetest_simple_figure,\r\n {'baseline_images': ['simple']},\r\n [],\r\n [(ImageComparisonFailure, 'images not close')] * 3,\r\n 'FFF'),\r\n (nosetest_simple_figure,\r\n {'baseline_images': ['simple'], 'remove_text': True},\r\n [],\r\n [],\r\n '...'),\r\n (nosetest_manual_text_removal,\r\n {'baseline_images': ['simple']},\r\n [],\r\n [],\r\n '...'),\r\n ],\r\n ids=[\r\n 'empty',\r\n 'extra baselines',\r\n 'incorrect shape',\r\n 'failing figure',\r\n 'passing figure',\r\n 'manual text removal',\r\n ])\r\n def test_nose_image_comparison(func, kwargs, errors, failures, dots,\r\n monkeypatch):\r\n nose = pytest.importorskip('nose')\r\n monkeypatch.setattr('matplotlib._called_from_pytest', False)\r\n \r\n class TestResultVerifier(nose.result.TextTestResult):\r\n def __init__(self, *args, **kwargs):\r\n super(TestResultVerifier, self).__init__(*args, **kwargs)\r\n self.error_count = 0\r\n self.failure_count = 0\r\n \r\n def addError(self, test, err):\r\n super(TestResultVerifier, self).addError(test, err)\r\n \r\n if self.error_count \u003c len(errors):\r\n assert err[0] is errors[self.error_count][0]\r\n assert errors[self.error_count][1] in str(err[1])\r\n else:\r\n raise err[1]\r\n self.error_count += 1\r\n \r\n def addFailure(self, test, err):\r\n super(TestResultVerifier, self).addFailure(test, err)\r\n \r\n assert self.failure_count \u003c len(failures), err[1]\r\n assert err[0] is failures[self.failure_count][0]\r\n assert failures[self.failure_count][1] in str(err[1])\r\n self.failure_count += 1\r\n \r\n # Make sure that multiple extensions work, but don't require LaTeX or\r\n # Inkscape to do so.\r\n kwargs.setdefault('extensions', ['png', 'png', 'png'])\r\n \r\n func = image_comparison(**kwargs)(func)\r\n loader = nose.loader.TestLoader()\r\n suite = loader.loadTestsFromGenerator(\r\n func,\r\n 'matplotlib.tests.test_compare_images')\r\n if six.PY2:\r\n output = io.BytesIO()\r\n else:\r\n output = io.StringIO()\r\n result = TestResultVerifier(stream=output, descriptions=True, verbosity=1)\r\n with warnings.catch_warnings():\r\n # Nose uses deprecated stuff; we don't care about it.\r\n warnings.simplefilter('ignore', DeprecationWarning)\r\n suite.run(result=result)\r\n \r\n\u003e assert output.getvalue() == dots\r\nE AssertionError: assert '...' == 'FFF'\r\nE - ...\r\nE + FFF\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/tests/test_compare_images.py:199: AssertionError\r\n----------------------------- Captured stdout call -----------------------------\r\nimages not close (RMS 12.955):\r\n\tresult_images/test_compare_images/simple.png\r\n\tresult_images/test_compare_images/simple-expected.png \r\nimages not close (RMS 12.955):\r\n\tresult_images/test_compare_images/simple.png\r\n\tresult_images/test_compare_images/simple-expected.png \r\nimages not close (RMS 12.955):\r\n\tresult_images/test_compare_images/simple.png\r\n\tresult_images/test_compare_images/simple-expected.png \r\n------------------------------ Captured log call -------------------------------\r\nimporter.py 143 DEBUG Add path /build/matplotlib-2.2.2\r\nsuite.py 418 DEBUG Create suite for \u003cfunction generate at 0x7f13fb0b9398\u003e\r\nsuite.py 420 DEBUG tests \u003cfunction generate at 0x7f13fb0b9398\u003e context \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e\r\nsuite.py 148 DEBUG Context suite for \u003cfunction generate at 0x7f13fb0b9398\u003e (\u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e) (139723701656336)\r\nsuite.py 481 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has context nosetest_simple_figure\r\nsuite.py 435 DEBUG get ancestry \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e\r\nsuite.py 452 DEBUG \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e ancestors ['matplotlib', 'tests', 'test_compare_images']\r\nutil.py 311 DEBUG __import__ matplotlib.tests.test_compare_images\r\nutil.py 320 DEBUG resolve: ['tests', 'test_compare_images'], matplotlib.tests.test_compare_images, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e\r\nsuite.py 485 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has ancestor matplotlib.tests.test_compare_images\r\nsuite.py 452 DEBUG \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e ancestors ['matplotlib', 'tests']\r\nutil.py 311 DEBUG __import__ matplotlib.tests\r\nutil.py 320 DEBUG resolve: ['tests'], matplotlib.tests, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e\r\nsuite.py 485 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has ancestor matplotlib.tests\r\nsuite.py 452 DEBUG \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e ancestors ['matplotlib']\r\nutil.py 311 DEBUG __import__ matplotlib\r\nutil.py 320 DEBUG resolve: [], matplotlib, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e\r\nsuite.py 485 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has ancestor matplotlib\r\nsuite.py 201 DEBUG suite 139723701656336 (\u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e) run called, tests: \u003cgenerator object _get_wrapped_tests at 0x7f13f9f8eaf0\u003e\r\nsuite.py 269 DEBUG suite 139723701656336 setUp called, tests: \u003cgenerator object _get_wrapped_tests at 0x7f13fa3ce4b0\u003e\r\nsuite.py 79 DEBUG tests in 139723701656336?\r\nsuite.py 288 DEBUG ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e\r\nsuite.py 288 DEBUG ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/__init__.py'\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/__init__.py'\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/__init__.py'\u003e\r\nutil.py 470 DEBUG call fixture \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/__init__.py'\u003e.setup\r\nsuite.py 288 DEBUG ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/test_compare_images.py'\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/test_compare_images.py'\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/test_compare_images.py'\u003e\r\nsuite.py 288 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e\r\nutil.py 470 DEBUG call fixture \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e.setup\r\nsuite.py 298 DEBUG completed suite setup\r\nsuite.py 94 DEBUG precache is [matplotlib.tests.test_compare_images.nosetest_simple_figure(0, 'simple', 'png')]\r\nsuite.py 323 DEBUG context teardown\r\nsuite.py 341 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e\r\nutil.py 470 DEBUG call fixture \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e.teardown\r\nsuite.py 341 DEBUG ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/test_compare_images.py'\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/test_compare_images.py'\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/test_compare_images.py'\u003e\r\nsuite.py 341 DEBUG ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/__init__.py'\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/__init__.py'\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/tests/__init__.py'\u003e\r\nsuite.py 341 DEBUG ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/__init__.py'\u003e\r\nsuite.py 341 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e may need teardown\r\nsuite.py 346 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f13fa4bc938\u003e already torn down\r\n=============================== warnings summary ===============================\r\nbuild/lib.linux-x86_64-2.7/matplotlib/tests/test_axes.py::test_fill_units[png]\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/axes/_base.py:2504: RuntimeWarning: invalid value encountered in double_scalars\r\n delta = (x1t - x0t) * margin\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/tests/test_axes.py::test_pyplot_axes\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Using pyplot.axes(ax) with ax an Axes argument is deprecated. Please use pyplot.sca(ax) instead.\r\n warnings.warn(message, mplDeprecation, stacklevel=1)\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/tests/test_image.py::test_empty_imshow[make_norm2]\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/colors.py:1133: RuntimeWarning: invalid value encountered in greater\r\n masked = np.abs(a) \u003e self.linthresh\r\n\r\nbuild/lib.linux-x86_64-2.7/matplotlib/tests/test_image.py::test_full_invalid\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/image.py:405: UserWarning: Warning: converting a masked element to nan.\r\n dv = (np.float64(self.norm.vmax) -\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/image.py:406: UserWarning: Warning: converting a masked element to nan.\r\n np.float64(self.norm.vmin))\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/image.py:412: UserWarning: Warning: converting a masked element to nan.\r\n a_min = np.float64(newmin)\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/image.py:417: UserWarning: Warning: converting a masked element to nan.\r\n a_max = np.float64(newmax)\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7/matplotlib/colors.py:916: UserWarning: Warning: converting a masked element to nan.\r\n dtype = np.min_scalar_type(value)\r\n /usr/lib/python2.7/dist-packages/numpy/ma/core.py:716: UserWarning: Warning: converting a masked element to nan.\r\n data = np.array(a, copy=False, subok=subok)\r\n\r\n-- Docs: http://doc.pytest.org/en/latest/warnings.html\r\n```\r\n\r\npython 2.7.15 debug flavor:\r\n```\r\n=================================== FAILURES ===================================\r\n_______________ test_save_animation_smoketest[pillow-movie.gif] ________________\r\n\r\nself = \u003cCallInfo when='call' exception: list index out of range\u003e\r\nfunc = \u003cfunction \u003clambda\u003e at 0x7f4fd42b1e28\u003e, when = 'call'\r\n\r\n def __init__(self, func, when):\r\n #: context of invocation: one of \"setup\", \"call\",\r\n #: \"teardown\", \"memocollect\"\r\n self.when = when\r\n self.start = time()\r\n try:\r\n\u003e self.result = func()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:189: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\n\u003e return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:175: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_runtest_call'\u003e, args = ()\r\nkwargs = {'item': \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nitem = \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e\r\n\r\n def pytest_runtest_call(item):\r\n _update_current_test_var(item, 'call')\r\n try:\r\n\u003e item.runtest()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:106: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e\r\n\r\n def runtest(self):\r\n \"\"\" execute the underlying test function. \"\"\"\r\n\u003e self.ihook.pytest_pyfunc_call(pyfuncitem=self)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:1171: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_pyfunc_call'\u003e, args = ()\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\npyfuncitem = \u003cFunction 'test_save_animation_smoketest[pillow-movie.gif]'\u003e\r\n\r\n @hookimpl(trylast=True)\r\n def pytest_pyfunc_call(pyfuncitem):\r\n testfunction = pyfuncitem.obj\r\n if pyfuncitem._isyieldedfunction():\r\n testfunction(*pyfuncitem._args)\r\n else:\r\n funcargs = pyfuncitem.funcargs\r\n testargs = {}\r\n for arg in pyfuncitem._fixtureinfo.argnames:\r\n testargs[arg] = funcargs[arg]\r\n\u003e testfunction(**testargs)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:147: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\ntmpdir = local('/tmp/pytest-of-pbuilder/pytest-1/test_save_animation_smoketest_6')\r\nwriter = 'pillow', output = 'movie.gif'\r\n\r\n @pytest.mark.parametrize('writer, output', WRITER_OUTPUT)\r\n def test_save_animation_smoketest(tmpdir, writer, output):\r\n try:\r\n # for ImageMagick the rcparams must be patched to account for\r\n # 'convert' being a built in MS tool, not the imagemagick\r\n # tool.\r\n writer._init_from_registry()\r\n except AttributeError:\r\n pass\r\n if not animation.writers.is_available(writer):\r\n pytest.skip(\"writer '%s' not available on this system\" % writer)\r\n fig, ax = plt.subplots()\r\n line, = ax.plot([], [])\r\n \r\n ax.set_xlim(0, 10)\r\n ax.set_ylim(-1, 1)\r\n \r\n dpi = None\r\n codec = None\r\n if writer == 'ffmpeg':\r\n # Issue #8253\r\n fig.set_size_inches((10.85, 9.21))\r\n dpi = 100.\r\n codec = 'h264'\r\n \r\n def init():\r\n line.set_data([], [])\r\n return line,\r\n \r\n def animate(i):\r\n x = np.linspace(0, 10, 100)\r\n y = np.sin(x + i)\r\n line.set_data(x, y)\r\n return line,\r\n \r\n # Use temporary directory for the file-based writers, which produce a file\r\n # per frame with known names.\r\n with tmpdir.as_cwd():\r\n anim = animation.FuncAnimation(fig, animate, init_func=init, frames=5)\r\n try:\r\n anim.save(output, fps=30, writer=writer, bitrate=500, dpi=dpi,\r\n\u003e codec=codec)\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_animation.py:174: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cmatplotlib.animation.FuncAnimation object at 0x7f4fcf6047d0\u003e\r\nfilename = 'movie.gif'\r\nwriter = \u003cmatplotlib.animation.PillowWriter object at 0x7f4fcf604b50\u003e, fps = 30\r\ndpi = 100.0, codec = 'mpeg4', bitrate = 500, extra_args = None, metadata = None\r\nextra_anim = None, savefig_kwargs = {}\r\n\r\n def save(self, filename, writer=None, fps=None, dpi=None, codec=None,\r\n bitrate=None, extra_args=None, metadata=None, extra_anim=None,\r\n savefig_kwargs=None):\r\n '''Saves a movie file by drawing every frame.\r\n \r\n Parameters\r\n ----------\r\n \r\n filename : str\r\n The output filename, e.g., :file:`mymovie.mp4`.\r\n \r\n writer : :class:`MovieWriter` or str, optional\r\n A `MovieWriter` instance to use or a key that identifies a\r\n class to use, such as 'ffmpeg'. If ``None``, defaults to\r\n :rc:`animation.writer`.\r\n \r\n fps : number, optional\r\n Frames per second in the movie. Defaults to ``None``, which will use\r\n the animation's specified interval to set the frames per second.\r\n \r\n dpi : number, optional\r\n Controls the dots per inch for the movie frames. This combined with\r\n the figure's size in inches controls the size of the movie. If\r\n ``None``, defaults to :rc:`savefig.dpi`.\r\n \r\n codec : str, optional\r\n The video codec to be used. Not all codecs are supported\r\n by a given :class:`MovieWriter`. If ``None``, default to\r\n :rc:`animation.codec`.\r\n \r\n bitrate : number, optional\r\n Specifies the number of bits used per second in the compressed\r\n movie, in kilobits per second. A higher number means a higher\r\n quality movie, but at the cost of increased file size. If ``None``,\r\n defaults to :rc:`animation.bitrate`.\r\n \r\n extra_args : list, optional\r\n List of extra string arguments to be passed to the underlying movie\r\n utility. If ``None``, defaults to :rc:`animation.extra_args`.\r\n \r\n metadata : Dict[str, str], optional\r\n Dictionary of keys and values for metadata to include in\r\n the output file. Some keys that may be of use include:\r\n title, artist, genre, subject, copyright, srcform, comment.\r\n \r\n extra_anim : list, optional\r\n Additional `Animation` objects that should be included\r\n in the saved movie file. These need to be from the same\r\n `matplotlib.figure.Figure` instance. Also, animation frames will\r\n just be simply combined, so there should be a 1:1 correspondence\r\n between the frames from the different animations.\r\n \r\n savefig_kwargs : dict, optional\r\n Is a dictionary containing keyword arguments to be passed\r\n on to the `savefig` command which is called repeatedly to\r\n save the individual frames.\r\n \r\n Notes\r\n -----\r\n fps, codec, bitrate, extra_args, metadata are used to\r\n construct a :class:`MovieWriter` instance and can only be\r\n passed if `writer` is a string. If they are passed as\r\n non-`None` and ``writer`` is a :class:`MovieWriter`, a\r\n `RuntimeError` will be raised.\r\n \r\n '''\r\n # If the writer is None, use the rc param to find the name of the one\r\n # to use\r\n if writer is None:\r\n writer = rcParams['animation.writer']\r\n elif (not isinstance(writer, six.string_types) and\r\n any(arg is not None\r\n for arg in (fps, codec, bitrate, extra_args, metadata))):\r\n raise RuntimeError('Passing in values for arguments '\r\n 'fps, codec, bitrate, extra_args, or metadata '\r\n 'is not supported when writer is an existing '\r\n 'MovieWriter instance. These should instead be '\r\n 'passed as arguments when creating the '\r\n 'MovieWriter instance.')\r\n \r\n if savefig_kwargs is None:\r\n savefig_kwargs = {}\r\n \r\n # Need to disconnect the first draw callback, since we'll be doing\r\n # draws. Otherwise, we'll end up starting the animation.\r\n if self._first_draw_id is not None:\r\n self._fig.canvas.mpl_disconnect(self._first_draw_id)\r\n reconnect_first_draw = True\r\n else:\r\n reconnect_first_draw = False\r\n \r\n if fps is None and hasattr(self, '_interval'):\r\n # Convert interval in ms to frames per second\r\n fps = 1000. / self._interval\r\n \r\n # Re-use the savefig DPI for ours if none is given\r\n if dpi is None:\r\n dpi = rcParams['savefig.dpi']\r\n if dpi == 'figure':\r\n dpi = self._fig.dpi\r\n \r\n if codec is None:\r\n codec = rcParams['animation.codec']\r\n \r\n if bitrate is None:\r\n bitrate = rcParams['animation.bitrate']\r\n \r\n all_anim = [self]\r\n if extra_anim is not None:\r\n all_anim.extend(anim\r\n for anim\r\n in extra_anim if anim._fig is self._fig)\r\n \r\n # If we have the name of a writer, instantiate an instance of the\r\n # registered class.\r\n if isinstance(writer, six.string_types):\r\n if writer in writers.avail:\r\n writer = writers[writer](fps, codec, bitrate,\r\n extra_args=extra_args,\r\n metadata=metadata)\r\n else:\r\n _log.warning(\"MovieWriter %s unavailable.\", writer)\r\n \r\n try:\r\n writer = writers[writers.list()[0]](fps, codec, bitrate,\r\n extra_args=extra_args,\r\n metadata=metadata)\r\n except IndexError:\r\n raise ValueError(\"Cannot save animation: no writers are \"\r\n \"available. Please install ffmpeg to \"\r\n \"save animations.\")\r\n _log.info('Animation.save using %s', type(writer))\r\n \r\n if 'bbox_inches' in savefig_kwargs:\r\n _log.warning(\"Warning: discarding the 'bbox_inches' argument in \"\r\n \"'savefig_kwargs' as it may cause frame size \"\r\n \"to vary, which is inappropriate for animation.\")\r\n savefig_kwargs.pop('bbox_inches')\r\n \r\n # Create a new sequence of frames for saved data. This is different\r\n # from new_frame_seq() to give the ability to save 'live' generated\r\n # frame information to be saved later.\r\n # TODO: Right now, after closing the figure, saving a movie won't work\r\n # since GUI widgets are gone. Either need to remove extra code to\r\n # allow for this non-existent use case or find a way to make it work.\r\n with rc_context():\r\n if rcParams['savefig.bbox'] == 'tight':\r\n _log.info(\"Disabling savefig.bbox = 'tight', as it may cause \"\r\n \"frame size to vary, which is inappropriate for \"\r\n \"animation.\")\r\n rcParams['savefig.bbox'] = None\r\n with writer.saving(self._fig, filename, dpi):\r\n for anim in all_anim:\r\n # Clear the initial frame\r\n anim._init_draw()\r\n for data in zip(*[a.new_saved_frame_seq() for a in all_anim]):\r\n for anim, d in zip(all_anim, data):\r\n # TODO: See if turning off blit is really necessary\r\n anim._draw_next_frame(d, blit=False)\r\n\u003e writer.grab_frame(**savefig_kwargs)\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/animation.py:1200: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003ccontextlib.GeneratorContextManager object at 0x7f4fcf604ca0\u003e\r\ntype = \u003ctype 'exceptions.ImportError'\u003e\r\nvalue = ImportError('/usr/lib/python2.7/dist-packages/PIL/_imaging.x86_64-linux-gnu.so: undefined symbol: Py_InitModule4_64',)\r\ntraceback = \u003ctraceback object at 0x7f4fcf4b8588\u003e\r\n\r\n def __exit__(self, type, value, traceback):\r\n if type is None:\r\n try:\r\n self.gen.next()\r\n except StopIteration:\r\n return\r\n else:\r\n raise RuntimeError(\"generator didn't stop\")\r\n else:\r\n if value is None:\r\n # Need to force instantiation so we can reliably\r\n # tell if we get the same exception back\r\n value = type()\r\n try:\r\n\u003e self.gen.throw(type, value, traceback)\r\n\r\n/usr/lib/python2.7/contextlib.py:35: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cmatplotlib.animation.PillowWriter object at 0x7f4fcf604b50\u003e\r\nfig = \u003cFigure size 640x480 with 1 Axes\u003e, outfile = 'movie.gif', dpi = 100.0\r\nargs = (), kwargs = {}\r\n\r\n @contextlib.contextmanager\r\n def saving(self, fig, outfile, dpi, *args, **kwargs):\r\n '''\r\n Context manager to facilitate writing the movie file.\r\n \r\n ``*args, **kw`` are any parameters that should be passed to `setup`.\r\n '''\r\n # This particular sequence is what contextlib.contextmanager wants\r\n self.setup(fig, outfile, dpi, *args, **kwargs)\r\n try:\r\n yield self\r\n finally:\r\n\u003e self.finish()\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/animation.py:241: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cmatplotlib.animation.PillowWriter object at 0x7f4fcf604b50\u003e\r\n\r\n def finish(self):\r\n\u003e self._frames[0].save(\r\n self._outfile, save_all=True, append_images=self._frames[1:],\r\n duration=int(1000 / self.fps))\r\nE IndexError: list index out of range\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/animation.py:610: IndexError\r\n------------------------------ Captured log call -------------------------------\r\nanimation.py 1172 INFO Animation.save using \u003cclass 'matplotlib.animation.PillowWriter'\u003e\r\n_____________________________ test_log_scales[png] _____________________________\r\n\r\nself = \u003cCallInfo when='call' exception: Image sizes do not match expected size: (600, 800, 3) actual size (600, 800, 4)\u003e\r\nfunc = \u003cfunction \u003clambda\u003e at 0x7f4fd446c258\u003e, when = 'call'\r\n\r\n def __init__(self, func, when):\r\n #: context of invocation: one of \"setup\", \"call\",\r\n #: \"teardown\", \"memocollect\"\r\n self.when = when\r\n self.start = time()\r\n try:\r\n\u003e self.result = func()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:189: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\n\u003e return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:175: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_runtest_call'\u003e, args = ()\r\nkwargs = {'item': \u003cFunction 'test_log_scales[png]'\u003e}, notincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nitem = \u003cFunction 'test_log_scales[png]'\u003e\r\n\r\n def pytest_runtest_call(item):\r\n _update_current_test_var(item, 'call')\r\n try:\r\n\u003e item.runtest()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:106: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cFunction 'test_log_scales[png]'\u003e\r\n\r\n def runtest(self):\r\n \"\"\" execute the underlying test function. \"\"\"\r\n\u003e self.ihook.pytest_pyfunc_call(pyfuncitem=self)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:1171: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_pyfunc_call'\u003e, args = ()\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_log_scales[png]'\u003e}, notincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_log_scales[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\npyfuncitem = \u003cFunction 'test_log_scales[png]'\u003e\r\n\r\n @hookimpl(trylast=True)\r\n def pytest_pyfunc_call(pyfuncitem):\r\n testfunction = pyfuncitem.obj\r\n if pyfuncitem._isyieldedfunction():\r\n testfunction(*pyfuncitem._args)\r\n else:\r\n funcargs = pyfuncitem.funcargs\r\n testargs = {}\r\n for arg in pyfuncitem._fixtureinfo.argnames:\r\n testargs[arg] = funcargs[arg]\r\n\u003e testfunction(**testargs)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:147: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpected = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales-expected.png'\r\nactual = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales.png'\r\ntol = 0.306, in_decorator = True\r\n\r\n def compare_images(expected, actual, tol, in_decorator=False):\r\n \"\"\"\r\n Compare two \"image\" files checking differences within a tolerance.\r\n \r\n The two given filenames may point to files which are convertible to\r\n PNG via the `.converter` dictionary. The underlying RMS is calculated\r\n with the `.calculate_rms` function.\r\n \r\n Parameters\r\n ----------\r\n expected : str\r\n The filename of the expected image.\r\n actual :str\r\n The filename of the actual image.\r\n tol : float\r\n The tolerance (a color value difference, where 255 is the\r\n maximal difference). The test fails if the average pixel\r\n difference is greater than this value.\r\n in_decorator : bool\r\n If called from image_comparison decorator, this should be\r\n True. (default=False)\r\n \r\n Examples\r\n --------\r\n img1 = \"./baseline/plot.png\"\r\n img2 = \"./output/plot.png\"\r\n compare_images( img1, img2, 0.001 ):\r\n \r\n \"\"\"\r\n if not os.path.exists(actual):\r\n raise Exception(\"Output image %s does not exist.\" % actual)\r\n \r\n if os.stat(actual).st_size == 0:\r\n raise Exception(\"Output image file %s is empty.\" % actual)\r\n \r\n # Convert the image to png\r\n extension = expected.split('.')[-1]\r\n \r\n if not os.path.exists(expected):\r\n raise IOError('Baseline image %r does not exist.' % expected)\r\n \r\n if extension != 'png':\r\n actual = convert(actual, False)\r\n expected = convert(expected, True)\r\n \r\n # open the image files and remove the alpha channel (if it exists)\r\n expectedImage = _png.read_png_int(expected)\r\n actualImage = _png.read_png_int(actual)\r\n expectedImage = expectedImage[:, :, :3]\r\n actualImage = actualImage[:, :, :3]\r\n \r\n actualImage, expectedImage = crop_to_same(\r\n actual, actualImage, expected, expectedImage)\r\n \r\n diff_image = make_test_filename(actual, 'failed-diff')\r\n \r\n if tol \u003c= 0.0:\r\n if np.array_equal(expectedImage, actualImage):\r\n return None\r\n \r\n # convert to signed integers, so that the images can be subtracted without\r\n # overflow\r\n expectedImage = expectedImage.astype(np.int16)\r\n actualImage = actualImage.astype(np.int16)\r\n \r\n rms = calculate_rms(expectedImage, actualImage)\r\n \r\n if rms \u003c= tol:\r\n return None\r\n \r\n\u003e save_diff_image(expected, actual, diff_image)\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/testing/compare.py:444: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpected = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales-expected.png'\r\nactual = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales.png'\r\noutput = '/build/matplotlib-2.2.2/result_images/test_axes/log_scales-failed-diff.png'\r\n\r\n def save_diff_image(expected, actual, output):\r\n expectedImage = _png.read_png(expected)\r\n actualImage = _png.read_png(actual)\r\n actualImage, expectedImage = crop_to_same(\r\n actual, actualImage, expected, expectedImage)\r\n expectedImage = np.array(expectedImage).astype(float)\r\n actualImage = np.array(actualImage).astype(float)\r\n if expectedImage.shape != actualImage.shape:\r\n raise ImageComparisonFailure(\r\n \"Image sizes do not match expected size: {0} \"\r\n\u003e \"actual size {1}\".format(expectedImage.shape, actualImage.shape))\r\nE ImageComparisonFailure: Image sizes do not match expected size: (600, 800, 3) actual size (600, 800, 4)\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/testing/compare.py:471: ImageComparisonFailure\r\n__________________ test_bbox_inches_tight_suptile_legend[png] __________________\r\n\r\nself = \u003cCallInfo when='call' exception: Image sizes do not match expected size: (593, 921, 3) actual size (592, 921, 3)\u003e\r\nfunc = \u003cfunction \u003clambda\u003e at 0x7f4fd3bdf1b0\u003e, when = 'call'\r\n\r\n def __init__(self, func, when):\r\n #: context of invocation: one of \"setup\", \"call\",\r\n #: \"teardown\", \"memocollect\"\r\n self.when = when\r\n self.start = time()\r\n try:\r\n\u003e self.result = func()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:189: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\n\u003e return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:175: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_runtest_call'\u003e, args = ()\r\nkwargs = {'item': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nitem = \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e\r\n\r\n def pytest_runtest_call(item):\r\n _update_current_test_var(item, 'call')\r\n try:\r\n\u003e item.runtest()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:106: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e\r\n\r\n def runtest(self):\r\n \"\"\" execute the underlying test function. \"\"\"\r\n\u003e self.ihook.pytest_pyfunc_call(pyfuncitem=self)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:1171: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_pyfunc_call'\u003e, args = ()\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\npyfuncitem = \u003cFunction 'test_bbox_inches_tight_suptile_legend[png]'\u003e\r\n\r\n @hookimpl(trylast=True)\r\n def pytest_pyfunc_call(pyfuncitem):\r\n testfunction = pyfuncitem.obj\r\n if pyfuncitem._isyieldedfunction():\r\n testfunction(*pyfuncitem._args)\r\n else:\r\n funcargs = pyfuncitem.funcargs\r\n testargs = {}\r\n for arg in pyfuncitem._fixtureinfo.argnames:\r\n testargs[arg] = funcargs[arg]\r\n\u003e testfunction(**testargs)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:147: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpected = '/build/matplotlib-2.2.2/result_images/test_bbox_tight/bbox_inches_tight_suptile_legend-expected.png'\r\nactual = '/build/matplotlib-2.2.2/result_images/test_bbox_tight/bbox_inches_tight_suptile_legend.png'\r\ntol = 0.306, in_decorator = True\r\n\r\n def compare_images(expected, actual, tol, in_decorator=False):\r\n \"\"\"\r\n Compare two \"image\" files checking differences within a tolerance.\r\n \r\n The two given filenames may point to files which are convertible to\r\n PNG via the `.converter` dictionary. The underlying RMS is calculated\r\n with the `.calculate_rms` function.\r\n \r\n Parameters\r\n ----------\r\n expected : str\r\n The filename of the expected image.\r\n actual :str\r\n The filename of the actual image.\r\n tol : float\r\n The tolerance (a color value difference, where 255 is the\r\n maximal difference). The test fails if the average pixel\r\n difference is greater than this value.\r\n in_decorator : bool\r\n If called from image_comparison decorator, this should be\r\n True. (default=False)\r\n \r\n Examples\r\n --------\r\n img1 = \"./baseline/plot.png\"\r\n img2 = \"./output/plot.png\"\r\n compare_images( img1, img2, 0.001 ):\r\n \r\n \"\"\"\r\n if not os.path.exists(actual):\r\n raise Exception(\"Output image %s does not exist.\" % actual)\r\n \r\n if os.stat(actual).st_size == 0:\r\n raise Exception(\"Output image file %s is empty.\" % actual)\r\n \r\n # Convert the image to png\r\n extension = expected.split('.')[-1]\r\n \r\n if not os.path.exists(expected):\r\n raise IOError('Baseline image %r does not exist.' % expected)\r\n \r\n if extension != 'png':\r\n actual = convert(actual, False)\r\n expected = convert(expected, True)\r\n \r\n # open the image files and remove the alpha channel (if it exists)\r\n expectedImage = _png.read_png_int(expected)\r\n actualImage = _png.read_png_int(actual)\r\n expectedImage = expectedImage[:, :, :3]\r\n actualImage = actualImage[:, :, :3]\r\n \r\n actualImage, expectedImage = crop_to_same(\r\n actual, actualImage, expected, expectedImage)\r\n \r\n diff_image = make_test_filename(actual, 'failed-diff')\r\n \r\n if tol \u003c= 0.0:\r\n if np.array_equal(expectedImage, actualImage):\r\n return None\r\n \r\n # convert to signed integers, so that the images can be subtracted without\r\n # overflow\r\n expectedImage = expectedImage.astype(np.int16)\r\n actualImage = actualImage.astype(np.int16)\r\n \r\n\u003e rms = calculate_rms(expectedImage, actualImage)\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/testing/compare.py:439: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nexpectedImage = array([[[255, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255],\r\n ...55, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255]]], dtype=int16)\r\nactualImage = array([[[255, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255],\r\n ...55, 255, 255],\r\n [255, 255, 255],\r\n [255, 255, 255]]], dtype=int16)\r\n\r\n def calculate_rms(expectedImage, actualImage):\r\n \"Calculate the per-pixel errors, then compute the root mean square error.\"\r\n if expectedImage.shape != actualImage.shape:\r\n raise ImageComparisonFailure(\r\n \"Image sizes do not match expected size: {0} \"\r\n\u003e \"actual size {1}\".format(expectedImage.shape, actualImage.shape))\r\nE ImageComparisonFailure: Image sizes do not match expected size: (593, 921, 3) actual size (592, 921, 3)\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/testing/compare.py:369: ImageComparisonFailure\r\n__________________ test_nose_image_comparison[failing figure] __________________\r\n\r\nself = \u003cCallInfo when='call' exception: assert '...' == 'FFF'\r\n - ...\r\n + FFF\u003e\r\nfunc = \u003cfunction \u003clambda\u003e at 0x7f4fd45b0a38\u003e, when = 'call'\r\n\r\n def __init__(self, func, when):\r\n #: context of invocation: one of \"setup\", \"call\",\r\n #: \"teardown\", \"memocollect\"\r\n self.when = when\r\n self.start = time()\r\n try:\r\n\u003e self.result = func()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:189: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\n\u003e return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:175: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_runtest_call'\u003e, args = ()\r\nkwargs = {'item': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_runtest_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3a370\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb93c530\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb944bc0\u003e]\r\nkwargs = {'item': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nitem = \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e\r\n\r\n def pytest_runtest_call(item):\r\n _update_current_test_var(item, 'call')\r\n try:\r\n\u003e item.runtest()\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/runner.py:106: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e\r\n\r\n def runtest(self):\r\n \"\"\" execute the underlying test function. \"\"\"\r\n\u003e self.ihook.pytest_pyfunc_call(pyfuncitem=self)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:1171: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_HookCaller 'pytest_pyfunc_call'\u003e, args = ()\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\nnotincall = set([])\r\n\r\n def __call__(self, *args, **kwargs):\r\n if args:\r\n raise TypeError(\"hook calling supports only keyword arguments\")\r\n assert not self.is_historic()\r\n if self.argnames:\r\n notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n kwargs.keys())\r\n if notincall:\r\n warnings.warn(\r\n \"Argument(s) {} which are declared in the hookspec \"\r\n \"can not be found in this hook call\"\r\n .format(tuple(notincall)),\r\n stacklevel=2,\r\n )\r\n\u003e return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:617: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nself = \u003c_pytest.config.PytestPluginManager object at 0x7f4fdcda3b50\u003e\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n def _hookexec(self, hook, methods, kwargs):\r\n # called from all hookcaller instances.\r\n # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n\u003e return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:222: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nhook = \u003c_HookCaller 'pytest_pyfunc_call'\u003e\r\nmethods = [\u003cpluggy.HookImpl object at 0x7f4fdba3ae60\u003e, \u003cpluggy.HookImpl object at 0x7f4fdb9f7290\u003e]\r\nkwargs = {'pyfuncitem': \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e}\r\n\r\n self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n hook.multicall(\r\n methods, kwargs,\r\n\u003e firstresult=hook.spec_opts.get('firstresult'),\r\n )\r\n\r\n/usr/lib/python2.7/dist-packages/pluggy/__init__.py:216: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\npyfuncitem = \u003cFunction 'test_nose_image_comparison[failing figure]'\u003e\r\n\r\n @hookimpl(trylast=True)\r\n def pytest_pyfunc_call(pyfuncitem):\r\n testfunction = pyfuncitem.obj\r\n if pyfuncitem._isyieldedfunction():\r\n testfunction(*pyfuncitem._args)\r\n else:\r\n funcargs = pyfuncitem.funcargs\r\n testargs = {}\r\n for arg in pyfuncitem._fixtureinfo.argnames:\r\n testargs[arg] = funcargs[arg]\r\n\u003e testfunction(**testargs)\r\n\r\n/usr/lib/python2.7/dist-packages/_pytest/python.py:147: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n\r\nfunc = \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e\r\nkwargs = {'baseline_images': ['simple'], 'extensions': ['png', 'png', 'png']}\r\nerrors = []\r\nfailures = [(\u003cclass 'matplotlib.testing.exceptions.ImageComparisonFailure'\u003e, 'images not close'), (\u003cclass 'matplotlib.testing.exc...onFailure'\u003e, 'images not close'), (\u003cclass 'matplotlib.testing.exceptions.ImageComparisonFailure'\u003e, 'images not close')]\r\ndots = 'FFF'\r\nmonkeypatch = \u003c_pytest.monkeypatch.MonkeyPatch instance at 0x7f4fd5651420\u003e\r\n\r\n @pytest.mark.parametrize(\r\n 'func, kwargs, errors, failures, dots',\r\n [\r\n (nosetest_empty, {'baseline_images': []}, [], [], ''),\r\n (nosetest_empty, {'baseline_images': ['foo']},\r\n [(AssertionError,\r\n 'Test generated 0 images but there are 1 baseline images')],\r\n [],\r\n 'E'),\r\n (nosetest_simple_figure,\r\n {'baseline_images': ['basn3p02'], 'extensions': ['png'],\r\n 'remove_text': True},\r\n [],\r\n [(ImageComparisonFailure, 'Image sizes do not match expected size:')],\r\n 'F'),\r\n (nosetest_simple_figure,\r\n {'baseline_images': ['simple']},\r\n [],\r\n [(ImageComparisonFailure, 'images not close')] * 3,\r\n 'FFF'),\r\n (nosetest_simple_figure,\r\n {'baseline_images': ['simple'], 'remove_text': True},\r\n [],\r\n [],\r\n '...'),\r\n (nosetest_manual_text_removal,\r\n {'baseline_images': ['simple']},\r\n [],\r\n [],\r\n '...'),\r\n ],\r\n ids=[\r\n 'empty',\r\n 'extra baselines',\r\n 'incorrect shape',\r\n 'failing figure',\r\n 'passing figure',\r\n 'manual text removal',\r\n ])\r\n def test_nose_image_comparison(func, kwargs, errors, failures, dots,\r\n monkeypatch):\r\n nose = pytest.importorskip('nose')\r\n monkeypatch.setattr('matplotlib._called_from_pytest', False)\r\n \r\n class TestResultVerifier(nose.result.TextTestResult):\r\n def __init__(self, *args, **kwargs):\r\n super(TestResultVerifier, self).__init__(*args, **kwargs)\r\n self.error_count = 0\r\n self.failure_count = 0\r\n \r\n def addError(self, test, err):\r\n super(TestResultVerifier, self).addError(test, err)\r\n \r\n if self.error_count \u003c len(errors):\r\n assert err[0] is errors[self.error_count][0]\r\n assert errors[self.error_count][1] in str(err[1])\r\n else:\r\n raise err[1]\r\n self.error_count += 1\r\n \r\n def addFailure(self, test, err):\r\n super(TestResultVerifier, self).addFailure(test, err)\r\n \r\n assert self.failure_count \u003c len(failures), err[1]\r\n assert err[0] is failures[self.failure_count][0]\r\n assert failures[self.failure_count][1] in str(err[1])\r\n self.failure_count += 1\r\n \r\n # Make sure that multiple extensions work, but don't require LaTeX or\r\n # Inkscape to do so.\r\n kwargs.setdefault('extensions', ['png', 'png', 'png'])\r\n \r\n func = image_comparison(**kwargs)(func)\r\n loader = nose.loader.TestLoader()\r\n suite = loader.loadTestsFromGenerator(\r\n func,\r\n 'matplotlib.tests.test_compare_images')\r\n if six.PY2:\r\n output = io.BytesIO()\r\n else:\r\n output = io.StringIO()\r\n result = TestResultVerifier(stream=output, descriptions=True, verbosity=1)\r\n with warnings.catch_warnings():\r\n # Nose uses deprecated stuff; we don't care about it.\r\n warnings.simplefilter('ignore', DeprecationWarning)\r\n suite.run(result=result)\r\n \r\n\u003e assert output.getvalue() == dots\r\nE AssertionError: assert '...' == 'FFF'\r\nE - ...\r\nE + FFF\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_compare_images.py:199: AssertionError\r\n----------------------------- Captured stdout call -----------------------------\r\nimages not close (RMS 12.955):\r\n\tresult_images/test_compare_images/simple.png\r\n\tresult_images/test_compare_images/simple-expected.png \r\nimages not close (RMS 12.955):\r\n\tresult_images/test_compare_images/simple.png\r\n\tresult_images/test_compare_images/simple-expected.png \r\nimages not close (RMS 12.955):\r\n\tresult_images/test_compare_images/simple.png\r\n\tresult_images/test_compare_images/simple-expected.png \r\n------------------------------ Captured log call -------------------------------\r\nimporter.py 143 DEBUG Add path /build/matplotlib-2.2.2\r\nsuite.py 418 DEBUG Create suite for \u003cfunction generate at 0x7f4fd49e3d80\u003e\r\nsuite.py 420 DEBUG tests \u003cfunction generate at 0x7f4fd49e3d80\u003e context \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e\r\nsuite.py 148 DEBUG Context suite for \u003cfunction generate at 0x7f4fd49e3d80\u003e (\u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e) (139980834420128)\r\nsuite.py 481 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has context nosetest_simple_figure\r\nsuite.py 435 DEBUG get ancestry \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e\r\nsuite.py 452 DEBUG \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e ancestors ['matplotlib', 'tests', 'test_compare_images']\r\nutil.py 311 DEBUG __import__ matplotlib.tests.test_compare_images\r\nutil.py 320 DEBUG resolve: ['tests', 'test_compare_images'], matplotlib.tests.test_compare_images, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e\r\nsuite.py 485 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has ancestor matplotlib.tests.test_compare_images\r\nsuite.py 452 DEBUG \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e ancestors ['matplotlib', 'tests']\r\nutil.py 311 DEBUG __import__ matplotlib.tests\r\nutil.py 320 DEBUG resolve: ['tests'], matplotlib.tests, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e\r\nsuite.py 485 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has ancestor matplotlib.tests\r\nsuite.py 452 DEBUG \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e ancestors ['matplotlib']\r\nutil.py 311 DEBUG __import__ matplotlib\r\nutil.py 320 DEBUG resolve: [], matplotlib, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e, \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e\r\nsuite.py 485 DEBUG suite \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e has ancestor matplotlib\r\nsuite.py 201 DEBUG suite 139980834420128 (\u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e) run called, tests: \u003cgenerator object _get_wrapped_tests at 0x7f4fd5629ce0\u003e\r\nsuite.py 269 DEBUG suite 139980834420128 setUp called, tests: \u003cgenerator object _get_wrapped_tests at 0x7f4fd3a837e0\u003e\r\nsuite.py 79 DEBUG tests in 139980834420128?\r\nsuite.py 288 DEBUG ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e\r\nsuite.py 288 DEBUG ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/__init__.py'\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/__init__.py'\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/__init__.py'\u003e\r\nutil.py 470 DEBUG call fixture \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/__init__.py'\u003e.setup\r\nsuite.py 288 DEBUG ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_compare_images.py'\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_compare_images.py'\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_compare_images.py'\u003e\r\nsuite.py 288 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e may need setup\r\nsuite.py 291 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e does need setup\r\nsuite.py 302 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup context \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e\r\nutil.py 470 DEBUG call fixture \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e.setup\r\nsuite.py 298 DEBUG completed suite setup\r\nsuite.py 94 DEBUG precache is [matplotlib.tests.test_compare_images.nosetest_simple_figure(0, 'simple', 'png')]\r\nsuite.py 323 DEBUG context teardown\r\nsuite.py 341 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e\r\nutil.py 470 DEBUG call fixture \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e.teardown\r\nsuite.py 341 DEBUG ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_compare_images.py'\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_compare_images.py'\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cmodule 'matplotlib.tests.test_compare_images' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_compare_images.py'\u003e\r\nsuite.py 341 DEBUG ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/__init__.py'\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/__init__.py'\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cmodule 'matplotlib.tests' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/__init__.py'\u003e\r\nsuite.py 341 DEBUG ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e may need teardown\r\nsuite.py 349 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e setup ancestor \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e\r\nsuite.py 356 DEBUG \u003cnose.suite.ContextSuite context=nosetest_simple_figure\u003e teardown context \u003cmodule 'matplotlib' from '/build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/__init__.py'\u003e\r\nsuite.py 341 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e may need teardown\r\nsuite.py 346 DEBUG ancestor \u003cfunction nosetest_simple_figure at 0x7f4fd4d83ae0\u003e already torn down\r\n=============================== warnings summary ===============================\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_axes.py::test_fill_units[png]\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/axes/_base.py:2504: RuntimeWarning: invalid value encountered in double_scalars\r\n delta = (x1t - x0t) * margin\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_axes.py::test_pyplot_axes\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Using pyplot.axes(ax) with ax an Axes argument is deprecated. Please use pyplot.sca(ax) instead.\r\n warnings.warn(message, mplDeprecation, stacklevel=1)\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_image.py::test_empty_imshow[make_norm2]\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/colors.py:1133: RuntimeWarning: invalid value encountered in greater\r\n masked = np.abs(a) \u003e self.linthresh\r\n\r\nbuild/lib.linux-x86_64-2.7-pydebug/matplotlib/tests/test_image.py::test_full_invalid\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/image.py:405: UserWarning: Warning: converting a masked element to nan.\r\n dv = (np.float64(self.norm.vmax) -\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/image.py:406: UserWarning: Warning: converting a masked element to nan.\r\n np.float64(self.norm.vmin))\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/image.py:412: UserWarning: Warning: converting a masked element to nan.\r\n a_min = np.float64(newmin)\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/image.py:417: UserWarning: Warning: converting a masked element to nan.\r\n a_max = np.float64(newmax)\r\n /build/matplotlib-2.2.2/build/lib.linux-x86_64-2.7-pydebug/matplotlib/colors.py:916: UserWarning: Warning: converting a masked element to nan.\r\n dtype = np.min_scalar_type(value)\r\n /usr/lib/python2.7/dist-packages/numpy/ma/core.py:716: UserWarning: Warning: converting a masked element to nan.\r\n data = np.array(a, copy=False, subok=subok)\r\n\r\n-- Docs: http://doc.pytest.org/en/latest/warnings.html\r\n\r\n```\r\n\r\npython 3.6.5\r\n```\r\n ERROR collecting build/lib.linux-x86_64-3.6/mpl_toolkits/tests/test_axisartist_angle_helper.py \r\n/usr/lib/python3/dist-packages/_pytest/python.py:403: in _importtestmodule\r\n mod = self.fspath.pyimport(ensuresyspath=importmode)\r\n/usr/lib/python3/dist-packages/py/_path/local.py:668: in pyimport\r\n __import__(modname)\r\n\u003cfrozen importlib._bootstrap\u003e:971: in _find_and_load\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:955: in _find_and_load_unlocked\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:656: in _load_unlocked\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:626: in _load_backward_compatible\r\n ???\r\n/usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py:213: in load_module\r\n py.builtin.exec_(co, mod.__dict__)\r\nbuild/lib.linux-x86_64-3.6/mpl_toolkits/tests/test_axisartist_angle_helper.py:9: in \u003cmodule\u003e\r\n from mpl_toolkits.axisartist.angle_helper import (\r\nE File \"/build/matplotlib-2.2.2/build/lib.linux-x86_64-3.6/mpl_toolkits/axisartist/angle_helper.py\", line 212\r\nE deg_mark = \"^{\\circ}\"\r\nE ^\r\nE SyntaxError: invalid escape sequence \\c\r\n ERROR collecting build/lib.linux-x86_64-3.6/mpl_toolkits/tests/test_axisartist_floating_axes.py \r\n/usr/lib/python3/dist-packages/_pytest/python.py:403: in _importtestmodule\r\n mod = self.fspath.pyimport(ensuresyspath=importmode)\r\n/usr/lib/python3/dist-packages/py/_path/local.py:668: in pyimport\r\n __import__(modname)\r\n\u003cfrozen importlib._bootstrap\u003e:971: in _find_and_load\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:955: in _find_and_load_unlocked\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:656: in _load_unlocked\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:626: in _load_backward_compatible\r\n ???\r\n/usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py:213: in load_module\r\n py.builtin.exec_(co, mod.__dict__)\r\nbuild/lib.linux-x86_64-3.6/mpl_toolkits/tests/test_axisartist_floating_axes.py:15: in \u003cmodule\u003e\r\n from mpl_toolkits.axisartist import angle_helper\r\nE File \"/build/matplotlib-2.2.2/build/lib.linux-x86_64-3.6/mpl_toolkits/axisartist/angle_helper.py\", line 212\r\nE deg_mark = \"^{\\circ}\"\r\nE ^\r\nE SyntaxError: invalid escape sequence \\c\r\n ERROR collecting build/lib.linux-x86_64-3.6/mpl_toolkits/tests/test_axisartist_grid_helper_curvelinear.py \r\n/usr/lib/python3/dist-packages/_pytest/python.py:403: in _importtestmodule\r\n mod = self.fspath.pyimport(ensuresyspath=importmode)\r\n/usr/lib/python3/dist-packages/py/_path/local.py:668: in pyimport\r\n __import__(modname)\r\n\u003cfrozen importlib._bootstrap\u003e:971: in _find_and_load\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:955: in _find_and_load_unlocked\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:656: in _load_unlocked\r\n ???\r\n\u003cfrozen importlib._bootstrap\u003e:626: in _load_backward_compatible\r\n ???\r\n/usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py:213: in load_module\r\n py.builtin.exec_(co, mod.__dict__)\r\nbuild/lib.linux-x86_64-3.6/mpl_toolkits/tests/test_axisartist_grid_helper_curvelinear.py:15: in \u003cmodule\u003e\r\n from mpl_toolkits.axisartist import angle_helper\r\nE File \"/build/matplotlib-2.2.2/build/lib.linux-x86_64-3.6/mpl_toolkits/axisartist/angle_helper.py\", line 212\r\nE deg_mark = \"^{\\circ}\"\r\nE ^\r\nE SyntaxError: invalid escape sequence \\c\r\n------------------------------- Captured stderr --------------------------------\r\n/build/matplotlib-2.2.2/build/lib.linux-x86_64-3.6/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: The mpl_toolkits.axes_grid module was deprecated in version 2.1. Use mpl_toolkits.axes_grid1 and mpl_toolkits.axisartist provies the same functionality instead.\r\n warnings.warn(message, mplDeprecation, stacklevel=1)\r\n!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!\r\n```","author":{"url":"https://github.com/sandrotosi","@type":"Person","name":"sandrotosi"},"datePublished":"2018-05-28T16:53:19.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":13},"url":"https://github.com/11324/matplotlib/issues/11324"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:ac648b0d-d9ab-ee97-837f-03ca23ca380f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E89E:25F3E7:351231:4A2386:6A53738C |
| html-safe-nonce | b2f96a96e313ad995224469c771d4d8d98dac082133992290a007f82cc9599d4 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFODlFOjI1RjNFNzozNTEyMzE6NEEyMzg2OjZBNTM3MzhDIiwidmlzaXRvcl9pZCI6Ijg4NDAxODAyNDA1MTUwMzYwNDQiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 91e08922641613a89dd7a91fe796561eb242f83167af8bf3321759b9becd7d6c |
| hovercard-subject-tag | issue:327078866 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/11324/issue_layout |
| twitter:image | https://opengraph.githubassets.com/8e88dd2beeb5fda102b5a122fb33bbe0519a213732e6c1760ea11a030fd285de/matplotlib/matplotlib/issues/11324 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/8e88dd2beeb5fda102b5a122fb33bbe0519a213732e6c1760ea11a030fd285de/matplotlib/matplotlib/issues/11324 |
| og:image:alt | Hello, i'm reporting here the errors produced by the test suite when running on debian amd64: python 2.7.15: =================================== FAILURES =================================== _______... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | sandrotosi |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width