Title: [Bug]: test_invisible_Line_rendering test is flaky (too short timeout) · Issue #30809 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: test_invisible_Line_rendering test is flaky (too short timeout) · Issue #30809 · matplotlib/matplotlib
X Title: [Bug]: test_invisible_Line_rendering test is flaky (too short timeout) · Issue #30809 · matplotlib/matplotlib
Description: Bug summary Hi, Running the test suite of 3.10.8 a couple times, eventually I got: =================================== FAILURES =================================== ________________________ test_invisible_Line_rendering __________________...
Open Graph Description: Bug summary Hi, Running the test suite of 3.10.8 a couple times, eventually I got: =================================== FAILURES =================================== ________________________ test_inv...
X Description: Bug summary Hi, Running the test suite of 3.10.8 a couple times, eventually I got: =================================== FAILURES =================================== ________________________ test_inv...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/30809
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: test_invisible_Line_rendering test is flaky (too short timeout)","articleBody":"### Bug summary\n\nHi,\n\nRunning the test suite of 3.10.8 a couple times, eventually I got:\n```\n=================================== FAILURES ===================================\n________________________ test_invisible_Line_rendering _________________________\n[gw11] linux -- Python 3.11.11 /gnu/store/v76lvm9985mj5h3kwrkif7gnqv3q30ck-python-wrapper-3.11.11/bin/python\n\n @pytest.mark.flaky(reruns=3)\n def test_invisible_Line_rendering():\n \"\"\"\n GitHub issue #1256 identified a bug in Line.draw method\n \n Despite visibility attribute set to False, the draw method was not\n returning early enough and some pre-rendering code was executed\n though not necessary.\n \n Consequence was an excessive draw time for invisible Line instances\n holding a large number of points (Npts\u003e 10**6)\n \"\"\"\n # Creates big x and y data:\n N = 10**7\n x = np.linspace(0, 1, N)\n y = np.random.normal(size=N)\n \n # Create a plot figure:\n fig = plt.figure()\n ax = plt.subplot()\n \n # Create a \"big\" Line instance:\n l = mlines.Line2D(x, y)\n l.set_visible(False)\n # but don't add it to the Axis instance `ax`\n \n # [here Interactive panning and zooming is pretty responsive]\n # Time the canvas drawing:\n t_no_line = min(timeit.repeat(fig.canvas.draw, number=1, repeat=3))\n # (gives about 25 ms)\n \n # Add the big invisible Line:\n ax.add_line(l)\n \n # [Now interactive panning and zooming is very slow]\n # Time the canvas drawing:\n t_invisible_line = min(timeit.repeat(fig.canvas.draw, number=1, repeat=3))\n # gives about 290 ms for N = 10**7 pts\n \n slowdown_factor = t_invisible_line / t_no_line\n slowdown_threshold = 2 # trying to avoid false positive failures\n\u003e assert slowdown_factor \u003c slowdown_threshold\nE assert 2.218287122977422 \u003c 2\n\n/gnu/store/j1595nb44lp30vbjd9c8iadzf8z7d3ry-python-matplotlib-3.10.8/lib/python3.11/site-packages/matplotlib/tests/test_lines.py:77: AssertionError\n------------------------------ Captured log setup ------------------------------\nWARNING matplotlib.testing:__init__.py:38 Could not set locale to English/United States. Some date-related tests may fail.\n=========================== short test summary info ============================\nFAILED tests/test_lines.py::test_invisible_Line_rendering - assert 2.218287122977422 \u003c 2\n========== 1 failed, 6592 passed, 1521 skipped, 29 xfailed in 24.07s ===========\n\n```\n\n### Code for reproduction\n\n```Python\nI build on Guix with this package:\n\n(define-public python-matplotlib\n (package\n (name \"python-matplotlib\")\n (version \"3.10.8\")\n (source (origin\n (method git-fetch)\n (uri (git-reference\n (url \"https://github.com/matplotlib/matplotlib\")\n (commit (string-append \"v\" version))))\n (file-name (git-file-name name version))\n (sha256\n (base32\n \"1rlday52hcyrp7xfbdf4z8lzgnxkpfvjxnl9qmq0jvc3ph3n8k5i\"))))\n (build-system pyproject-build-system)\n (arguments\n (list\n #:configure-flags\n ''((\"setup-args\" . #(\"-DrcParams-backend=TkAgg\"\n \"-Dsystem-freetype=true\"\n \"-Dsystem-qhull=true\"))\n (\"install-args\" . \"--tags=data,python-runtime,runtime,tests\"))\n #:test-flags\n #~(list \"-m\" \"not network\"\n \"-n\" (number-\u003estring (parallel-job-count))\n ;; Run the installed tests, which is what we want since not\n ;; everything gets built in the source directory.\n \"--pyargs\" \"matplotlib\"\n \"-k\"\n (string-join\n (list\n ;; XXX: Disable all image comparison tests because we're using\n ;; a newer version of FreeType than matplotlib expects. This\n ;; leads to minor differences throughout the tests.\n \"not image_comparison\"\n \"check_figures_equal\"\n \"png\" ;disables many problematic image tests\n \"test_figure_legend_outside\"\n \"test_ft2font_get_kerning\"\n \"test_normal_axes\"\n \"test_get_tightbbox_polar\")\n \" and not \"))\n #:phases\n #~(modify-phases %standard-phases\n (add-before 'build 'pretend-version\n ;; The version string is usually derived via setuptools-scm, but\n ;; without the git metadata available, the version string is set to\n ;; '0.0.0'.\n (lambda _\n (setenv \"SETUPTOOLS_SCM_PRETEND_VERSION\" #$version)))\n (add-after 'unpack 'patch-commands\n (lambda _\n (substitute* \"lib/matplotlib/tests/test_animation.py\"\n ((\"/bin/sh\") (which \"sh\")))))\n (add-after 'unpack 'patch-dlopen\n (lambda* (#:key inputs #:allow-other-keys)\n (substitute* \"src/_c_internal_utils.cpp\"\n ((\"libX11.so.6\")\n (search-input-file inputs \"lib/libX11.so.6\")))))\n (add-before 'build 'configure-environment\n (lambda* (#:key inputs #:allow-other-keys)\n ;; Fix rounding errors when using the x87 FPU.\n (when (string-prefix? \"i686\" #$(%current-system))\n (setenv \"CFLAGS\" \"-ffloat-store\"))))\n (add-before 'check 'chdir\n (lambda _\n ;; Step out of the source directory to avoid interference.\n (chdir \"/tmp\"))))))\n (propagated-inputs\n (list python-contourpy\n python-cycler\n python-dateutil\n python-fonttools-minimal\n python-importlib-resources\n python-kiwisolver\n python-numpy\n python-packaging\n python-pillow\n python-pyparsing\n `(,python \"tk\")))\n (inputs\n (list cairo\n freetype\n glib\n libpng\n qhull\n tcl\n tk))\n (native-inputs\n (list meson-python\n pkg-config\n pybind11\n python-pytest\n python-pytest-timeout\n python-pytest-xdist\n python-setuptools\n python-setuptools-scm\n python-wheel))\n (home-page \"https://matplotlib.org/\")\n (synopsis \"2D plotting library for Python\")\n (description\n \"Matplotlib is a Python 2D plotting library which produces publication\nquality figures in a variety of hardcopy formats and interactive environments\nacross platforms. Matplotlib can be used in Python scripts, the python and\nipython shell, web application servers, and six graphical user interface\ntoolkits.\")\n (license license:psfl)))\n\nBut it should be reproducible anywhere.\n```\n\n### Actual outcome\n\nTest fails.\n\n### Expected outcome\n\nTest should pass.\n\n### Additional information\n\n_No response_\n\n### Operating system\n\nGuix System\n\n### Matplotlib Version\n\n3.10.8\n\n### Matplotlib Backend\n\n_No response_\n\n### Python version\n\n3.11.11\n\n### Jupyter version\n\n_No response_\n\n### Installation\n\ngit checkout","author":{"url":"https://github.com/apteryks","@type":"Person","name":"apteryks"},"datePublished":"2025-12-04T12:37:04.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5},"url":"https://github.com/30809/matplotlib/issues/30809"}
| 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:bf987442-ec4b-4c59-d748-57e86714d386 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D4C8:11304E:591AEA:7C0F71:6A537FBE |
| html-safe-nonce | afdb54f7f39784c31275d1ddc130d31849607607d468f84e9dd5580bd198979f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENEM4OjExMzA0RTo1OTFBRUE6N0MwRjcxOjZBNTM3RkJFIiwidmlzaXRvcl9pZCI6IjYyOTY0MjM1Mzk0ODM1NzQyMDYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 79be753f2d32be3498129e7a124ea1dae6dabf2d85d3c132bc4af086370c8a00 |
| hovercard-subject-tag | issue:3694461613 |
| 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/30809/issue_layout |
| twitter:image | https://opengraph.githubassets.com/757eb34b790f1ef062005dacde3e7a98e041cd346848cb89eccd94b141afe161/matplotlib/matplotlib/issues/30809 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/757eb34b790f1ef062005dacde3e7a98e041cd346848cb89eccd94b141afe161/matplotlib/matplotlib/issues/30809 |
| og:image:alt | Bug summary Hi, Running the test suite of 3.10.8 a couple times, eventually I got: =================================== FAILURES =================================== ________________________ test_inv... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | apteryks |
| 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