coveragepy icon indicating copy to clipboard operation
coveragepy copied to clipboard

(Python 3.14) 7.11.1-7.11.3 performance 2x slower than 7.11.0

Open MetRonnie opened this issue 4 weeks ago • 16 comments

Describe the bug Running our tests with coverage 7.11.3 is taking about twice as long as 7.11.0. This only occurs on Python 3.14.

To Reproduce How can we reproduce the problem? Please be specific. Don't link to a failing CI job. Think about the time it will take us to recreate your situation: the easier you make it, the more likely your issue will be addressed.

Sorry, only have link to CI for now: https://github.com/MetRonnie/cylc-flow/actions/runs/19274020446/workflow

Answer the questions below:

What version of Python are you using?

3.14.0 (h32b2ec7_102_cp314 conda-forge)

What version of coverage.py shows the problem? The output of coverage debug sys is helpful.

7.11.1+

coverage debug sys output
-- sys -------------------------------------------------------
         coverage_version: 7.11.3
          coverage_module: /home/runner/micromamba/envs/cylc-functional-test/lib/python3.14/site-packages/coverage/__init__.py
                     core: -none-
                  CTracer: available from /home/runner/micromamba/envs/cylc-functional-test/lib/python3.14/site-packages/coverage/tracer.cpython-314-x86_64-linux-gnu.so
     plugins.file_tracers: -none-
      plugins.configurers: -none-
plugins.context_switchers: -none-
        configs_attempted: /home/runner/work/cylc-flow/cylc-flow/.coveragerc
             configs_read: /home/runner/work/cylc-flow/cylc-flow/.coveragerc
              config_file: /home/runner/work/cylc-flow/cylc-flow/.coveragerc
          config_contents: b"# This is the Coverage.py configuration file. This is used by CI when running\n# the tests and collecting coverage\n\n[run]\nbranch = True\ncover_pylib = False\nconcurrency = thread\ndata_file = .coverage\ndisable_warnings =\n    trace-changed\n    module-not-python\n    module-not-imported\n    no-data-collected\n    module-not-measured\nomit =\n    tests/*\n    */cylc/flow/*_pb2.py\n    cylc/flow/etc/*\n    cylc/flow/scripts/report_timings.py\nparallel = True\nsource = ./cylc\ntimid = False\n\n[report]\nexclude_lines =\n    pragma: no cover\n\n    # Don't complain if tests don't hit defensive assertion code:\n    raise NotImplementedError\n    return NotImplemented\n\n    # Ignore type checking code:\n    if (typing\\.)?TYPE_CHECKING:\n    @overload( |$)\n\n    # Don't complain about ellipsis (exception classes, typing overloads etc):\n    \\.\\.\\.\n\n    # Ignore abstract methods\n    @(abc\\.)?abstractmethod\n\nfail_under=0\nignore_errors = False\nomit =\n    tests/*\n 
                data_file: -none-
                   python: 3.14.0 | packaged by conda-forge | (main, Oct 22 2025, 23:24:08) [GCC 14.3.0]
                 platform: Linux-6.11.0-1018-azure-x86_64-with-glibc2.39
           implementation: CPython
                    build: main
                           Oct 22 2025 23:24:08
              gil_enabled: True
               executable: /home/runner/micromamba/envs/cylc-functional-test/bin/python3.14
             def_encoding: utf-8
              fs_encoding: utf-8
                      pid: 2819
                      cwd: /home/runner/work/cylc-flow/cylc-flow
                     path: /home/runner/micromamba/envs/cylc-functional-test/bin
                           /home/runner/micromamba/envs/cylc-functional-test/lib/python314.zip
                           /home/runner/micromamba/envs/cylc-functional-test/lib/python3.14
                           /home/runner/micromamba/envs/cylc-functional-test/lib/python3.14/lib-dynload
                           /home/runner/micromamba/envs/cylc-functional-test/lib/python3.14/site-packages
                           __editable__.cylc_flow-8.7.0.dev0.finder.__path_hook__
              environment: CYLC_COVERAGE = 1
                           HOME = /home/runner
             command_line: /home/runner/micromamba/envs/cylc-functional-test/bin/coverage debug sys
                     time: 2025-11-11 18:02:14

What versions of what packages do you have installed? The output of pip freeze is helpful.

pip freeze output
aiosmtpd==1.4.6
ansimarkup==2.1.0
async-generator==1.10
atpublic==6.0.2
attrs==25.4.0
bandit==1.8.6
certifi==2025.10.5
charset-normalizer==3.4.4
classify-imports==4.2.0
click==8.3.0
colorama==0.4.6
contourpy==1.3.3
coverage==7.11.3
cycler==0.12.1
-e git+https://github.com/MetRonnie/cylc-flow@89989f5619ebd709222c62cebfa938c9173ce59d#egg=cylc_flow
execnet==2.1.1
flake8==7.3.0
flake8-broken-line==1.0.0
flake8-bugbear==25.10.21
flake8-builtins==3.1.0
flake8-comprehensions==3.17.0
flake8-debugger==4.1.2
flake8-implicit-str-concat==0.6.0
flake8-mutable==1.2.0
flake8-type-checking==3.0.0
fonttools==4.60.1
graphene==3.4.3
graphql-core==3.2.7
graphql-relay==3.2.0
idna==3.11
iniconfig==2.3.0
Jinja2==3.0.3
kiwisolver==1.4.9
markdown-it-py==4.0.0
MarkupSafe==3.0.3
matplotlib==3.10.7
mccabe==0.7.0
mdurl==0.1.2
metomi-isodatetime==1!3.1.0
mypy==1.18.2
mypy_extensions==1.1.0
numpy==2.3.4
packaging==25.0
pathspec==0.12.1
pillow==12.0.0
pluggy==1.6.0
protobuf==6.33.0
psutil==7.1.3
pycodestyle==2.14.0
pyflakes==3.4.0
Pygments==2.19.2
Pympler==1.1
pyparsing==3.2.5
pytest==9.0.0
pytest-asyncio==1.3.0
pytest-cov==7.0.0
pytest-mock==3.15.1
pytest-xdist==3.8.0
python-dateutil==2.9.0.post0
PyYAML==6.0.3
pyzmq==27.1.0
requests==2.32.5
rich==14.2.0
six==1.17.0
sqlparse==0.5.3
stevedore==5.5.0
testfixtures==10.0.0
towncrier==25.8.0
types-Jinja2==2.11.9
types-MarkupSafe==1.1.10
types-protobuf==6.32.1.20251105
typing_extensions==4.15.0
urllib3==2.5.0
urwid==3.0.3
wcwidth==0.2.14

What code shows the problem? Give us a specific commit of a specific repo that we can check out. If you've already worked around the problem, please provide a commit before that fix.

https://github.com/cylc/cylc-flow/tree/2d33667a78ee256b3d263ad3dbeb1d65a3019212

What commands should we run to reproduce the problem? Be specific. Include everything, even git clone, pip install, and so on. Explain like we're five!

Steps listed in https://github.com/MetRonnie/cylc-flow/actions/runs/19274020446/workflow

Expected behavior Performance should not be slower than 7.11.0. From the release notes, it should be faster, if anything.

Additional context

https://github.com/MetRonnie/cylc-flow/actions/runs/19274020446/usage

Image

MetRonnie avatar Nov 11 '25 18:11 MetRonnie