Skip to content

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

@MetRonnie

Description

@MetRonnie

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions