-
Notifications
You must be signed in to change notification settings - Fork 230
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes first #632
LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes first #632
Conversation
012ccda
to
eda686d
Compare
eda686d
to
b131e41
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @joekohlsdorf,
Really sorry, seems we have missed this PR completely.
The idea sounds good to me, however in order to get this merge we also need a test that demonstrates this behavior (and fails without your patch of course). This ensures this works and avoids future regressions.
Closing for now, feel free to reopen if you want to tackle this again. 👍 |
Bumps [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) from 3.4.0 to 3.5.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst">pytest-xdist's changelog</a>.</em></p> <blockquote> <h1>pytest-xdist 3.5.0 (2023-11-21)</h1> <h2>Features</h2> <ul> <li><code>[#632](pytest-dev/pytest-xdist#632) <https://github.com/pytest-dev/pytest-xdist/issues/632></code>_: <code>--dist=loadscope</code> now sorts scopes by number of tests to assign largest scopes early -- in many cases this should improve overall test session running time, as there is less chance of a large scope being left to be processed near the end of the session, leaving other workers idle.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/95b309e980796a261045d770f69c016ca741473d"><code>95b309e</code></a> Release 3.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/3fe877bc6d7211f31e55d2d561803f76ea95b935"><code>3fe877b</code></a> LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes ...</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/f36ea25cb53cb960037f4a8510816b81fa313035"><code>f36ea25</code></a> Create GitHub release after deploy (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/973">#973</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/d81f57508d064915fc16ace5dea4d43406db2ba0"><code>d81f575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/969">#969</a> from pytest-dev/pre-commit-ci-update-config</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/1d2616418c046d0e6f059b8f76e35a0627409616"><code>1d26164</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/5f43575b42d6d4c0078de807880b8b0791b75823"><code>5f43575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/966">#966</a> from pytest-dev/release-3.4.0</li> <li>See full diff in <a href="https://github.com/pytest-dev/pytest-xdist/compare/v3.4.0...v3.5.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest-xdist&package-manager=pip&previous-version=3.4.0&new-version=3.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) from 3.4.0 to 3.5.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst">pytest-xdist's changelog</a>.</em></p> <blockquote> <h1>pytest-xdist 3.5.0 (2023-11-21)</h1> <h2>Features</h2> <ul> <li><code>[#632](pytest-dev/pytest-xdist#632) <https://github.com/pytest-dev/pytest-xdist/issues/632></code>_: <code>--dist=loadscope</code> now sorts scopes by number of tests to assign largest scopes early -- in many cases this should improve overall test session running time, as there is less chance of a large scope being left to be processed near the end of the session, leaving other workers idle.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/95b309e980796a261045d770f69c016ca741473d"><code>95b309e</code></a> Release 3.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/3fe877bc6d7211f31e55d2d561803f76ea95b935"><code>3fe877b</code></a> LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes ...</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/f36ea25cb53cb960037f4a8510816b81fa313035"><code>f36ea25</code></a> Create GitHub release after deploy (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/973">#973</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/d81f57508d064915fc16ace5dea4d43406db2ba0"><code>d81f575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/969">#969</a> from pytest-dev/pre-commit-ci-update-config</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/1d2616418c046d0e6f059b8f76e35a0627409616"><code>1d26164</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/5f43575b42d6d4c0078de807880b8b0791b75823"><code>5f43575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/966">#966</a> from pytest-dev/release-3.4.0</li> <li>See full diff in <a href="https://github.com/pytest-dev/pytest-xdist/compare/v3.4.0...v3.5.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest-xdist&package-manager=pip&previous-version=3.4.0&new-version=3.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps the dev group with 4 updates: [ipython](https://github.com/ipython/ipython), [mypy](https://github.com/python/mypy), [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) and [hypothesis](https://github.com/HypothesisWorks/hypothesis). Updates `ipython` from 8.17.2 to 8.18.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/ipython/ipython/commit/928881c53ca837390c001e972ed2945c3309f9f3"><code>928881c</code></a> release 8.18.0</li> <li><a href="https://github.com/ipython/ipython/commit/4897500b0582a3ba9da61cc6cd21fef3901c9e5a"><code>4897500</code></a> whats new 8.18.0 (<a href="https://redirect.github.com/ipython/ipython/issues/14253">#14253</a>)</li> <li><a href="https://github.com/ipython/ipython/commit/d563354c03ce8721ef0b5c5e66186d9fa74bfa8b"><code>d563354</code></a> whats new 8.18.0</li> <li><a href="https://github.com/ipython/ipython/commit/c0a699d1432d72e687d407c3424aaf26dbff0e49"><code>c0a699d</code></a> Fix memory leak in Qt event loop integration (<a href="https://redirect.github.com/ipython/ipython/issues/14240">#14240</a>) (<a href="https://redirect.github.com/ipython/ipython/issues/14251">#14251</a>)</li> <li><a href="https://github.com/ipython/ipython/commit/c7aea08fe305f667e101fbde50cd3be5aec57fa1"><code>c7aea08</code></a> Fix pickleshare warning on completion (<a href="https://redirect.github.com/ipython/ipython/issues/14252">#14252</a>)</li> <li><a href="https://github.com/ipython/ipython/commit/ec51c50f300de0eb94548582888796102ff2872a"><code>ec51c50</code></a> Silence PickleShare warnings when completing root modules.</li> <li><a href="https://github.com/ipython/ipython/commit/b033ecc88f92e8d83b9679de666e142175d4dd6b"><code>b033ecc</code></a> Clarify comment in IPython/terminal/pt_inputhooks/qt.py</li> <li><a href="https://github.com/ipython/ipython/commit/1e91131cbfcfed1ad654e6750b934bdcbdd394d2"><code>1e91131</code></a> Fix memory leak in Qt event loop integration (<a href="https://redirect.github.com/ipython/ipython/issues/14240">#14240</a>)</li> <li><a href="https://github.com/ipython/ipython/commit/225a1a2699f328c1b4a0ded2de1f7af9f731ad55"><code>225a1a2</code></a> Fix inputhook integration - Pass inputhook as an argument to Promptsesion.run...</li> <li><a href="https://github.com/ipython/ipython/commit/ed21ac64a1ac7066b21e616d357314d92d922651"><code>ed21ac6</code></a> Fix list pygments styles example (<a href="https://redirect.github.com/ipython/ipython/issues/14245">#14245</a>)</li> <li>Additional commits viewable in <a href="https://github.com/ipython/ipython/compare/8.17.2...8.18.0">compare view</a></li> </ul> </details> <br /> Updates `mypy` from 1.7.0 to 1.7.1 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/mypy/commit/6b3c41838d8e7a39242b6fd035535e2d76eabfc6"><code>6b3c418</code></a> Update version to 1.7.1 (without +dev)</li> <li><a href="https://github.com/python/mypy/commit/c10e17348f2eacbbeae80eb6c10c661c0137d849"><code>c10e173</code></a> [mypyc] Fix regression with nested functions (<a href="https://redirect.github.com/python/mypy/issues/16484">#16484</a>)</li> <li><a href="https://github.com/python/mypy/commit/e6399d10b0a1cdb104559482fad1b4dc0e2de6ac"><code>e6399d1</code></a> Fix polymorphic application for callback protocols (<a href="https://redirect.github.com/python/mypy/issues/16514">#16514</a>)</li> <li><a href="https://github.com/python/mypy/commit/661adb756800ecc40fabbe62e9339efd253aff4e"><code>661adb7</code></a> Fix crash on strict-equality with recursive types (<a href="https://redirect.github.com/python/mypy/issues/16483">#16483</a>)</li> <li><a href="https://github.com/python/mypy/commit/6c8e0cc47c014894ea41621a10f3d1b465322362"><code>6c8e0cc</code></a> Ignore position if imprecise arguments are matched by name (<a href="https://redirect.github.com/python/mypy/issues/16471">#16471</a>)</li> <li><a href="https://github.com/python/mypy/commit/5c354c41c0fbb74418afcbd30ba822694be28d11"><code>5c354c4</code></a> Fix missing meet case exposed by len narrowing (<a href="https://redirect.github.com/python/mypy/issues/16470">#16470</a>)</li> <li><a href="https://github.com/python/mypy/commit/88791cabe0521f77b699405154d90f3bb7c6b31b"><code>88791ca</code></a> Exclude private attributes from override checks (<a href="https://redirect.github.com/python/mypy/issues/16464">#16464</a>)</li> <li><a href="https://github.com/python/mypy/commit/4b5b316beb570bba4c9b7797deb2e6d7df0552d0"><code>4b5b316</code></a> Special-case unions in polymorphic inference (<a href="https://redirect.github.com/python/mypy/issues/16461">#16461</a>)</li> <li><a href="https://github.com/python/mypy/commit/f862d3ef540c38e7efd2fffd64fc732d6318dfb4"><code>f862d3e</code></a> Fix crash on Callable self in <strong>call</strong> (<a href="https://redirect.github.com/python/mypy/issues/16453">#16453</a>)</li> <li><a href="https://github.com/python/mypy/commit/fe79a59e44299a3cc8025aa5084e08773c872a54"><code>fe79a59</code></a> Bump version to 1.7.1+dev</li> <li>See full diff in <a href="https://github.com/python/mypy/compare/v1.7.0...v1.7.1">compare view</a></li> </ul> </details> <br /> Updates `pytest-xdist` from 3.4.0 to 3.5.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst">pytest-xdist's changelog</a>.</em></p> <blockquote> <h1>pytest-xdist 3.5.0 (2023-11-21)</h1> <h2>Features</h2> <ul> <li><code>[#632](pytest-dev/pytest-xdist#632) <https://github.com/pytest-dev/pytest-xdist/issues/632></code>_: <code>--dist=loadscope</code> now sorts scopes by number of tests to assign largest scopes early -- in many cases this should improve overall test session running time, as there is less chance of a large scope being left to be processed near the end of the session, leaving other workers idle.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/95b309e980796a261045d770f69c016ca741473d"><code>95b309e</code></a> Release 3.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/3fe877bc6d7211f31e55d2d561803f76ea95b935"><code>3fe877b</code></a> LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes ...</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/f36ea25cb53cb960037f4a8510816b81fa313035"><code>f36ea25</code></a> Create GitHub release after deploy (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/973">#973</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/d81f57508d064915fc16ace5dea4d43406db2ba0"><code>d81f575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/969">#969</a> from pytest-dev/pre-commit-ci-update-config</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/1d2616418c046d0e6f059b8f76e35a0627409616"><code>1d26164</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/5f43575b42d6d4c0078de807880b8b0791b75823"><code>5f43575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/966">#966</a> from pytest-dev/release-3.4.0</li> <li>See full diff in <a href="https://github.com/pytest-dev/pytest-xdist/compare/v3.4.0...v3.5.0">compare view</a></li> </ul> </details> <br /> Updates `hypothesis` from 6.89.1 to 6.90.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/HypothesisWorks/hypothesis/commit/7fad347fdc1552057b9c33b37f036d62b029c86c"><code>7fad347</code></a> Bump hypothesis-python version to 6.90.0 and update changelog</li> <li><a href="https://github.com/HypothesisWorks/hypothesis/commit/04d86ccf0624bf1af42f435cab7de6cbc2939e41"><code>04d86cc</code></a> Merge pull request <a href="https://redirect.github.com/HypothesisWorks/hypothesis/issues/3794">#3794</a> from HypothesisWorks/create-pull-request/patch</li> <li><a href="https://github.com/HypothesisWorks/hypothesis/commit/b5ce73a517ecb08b45e85d0133f8b91ea2320fcb"><code>b5ce73a</code></a> Error on pointless class attribute</li> <li><a href="https://github.com/HypothesisWorks/hypothesis/commit/fdf1c4fc7ed4ea6678e4d223e4414304540dbf88"><code>fdf1c4f</code></a> Updates for mypy</li> <li><a href="https://github.com/HypothesisWorks/hypothesis/commit/405c19b4e355021b45735627be1558a131fc6677"><code>405c19b</code></a> Update pinned dependencies</li> <li>See full diff in <a href="https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.89.1...hypothesis-python-6.90.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details>
Bumps the dev group with 2 updates: [mypy](https://github.com/python/mypy) and [pytest-xdist](https://github.com/pytest-dev/pytest-xdist). Updates `mypy` from 1.7.0 to 1.7.1 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/mypy/commit/6b3c41838d8e7a39242b6fd035535e2d76eabfc6"><code>6b3c418</code></a> Update version to 1.7.1 (without +dev)</li> <li><a href="https://github.com/python/mypy/commit/c10e17348f2eacbbeae80eb6c10c661c0137d849"><code>c10e173</code></a> [mypyc] Fix regression with nested functions (<a href="https://redirect.github.com/python/mypy/issues/16484">#16484</a>)</li> <li><a href="https://github.com/python/mypy/commit/e6399d10b0a1cdb104559482fad1b4dc0e2de6ac"><code>e6399d1</code></a> Fix polymorphic application for callback protocols (<a href="https://redirect.github.com/python/mypy/issues/16514">#16514</a>)</li> <li><a href="https://github.com/python/mypy/commit/661adb756800ecc40fabbe62e9339efd253aff4e"><code>661adb7</code></a> Fix crash on strict-equality with recursive types (<a href="https://redirect.github.com/python/mypy/issues/16483">#16483</a>)</li> <li><a href="https://github.com/python/mypy/commit/6c8e0cc47c014894ea41621a10f3d1b465322362"><code>6c8e0cc</code></a> Ignore position if imprecise arguments are matched by name (<a href="https://redirect.github.com/python/mypy/issues/16471">#16471</a>)</li> <li><a href="https://github.com/python/mypy/commit/5c354c41c0fbb74418afcbd30ba822694be28d11"><code>5c354c4</code></a> Fix missing meet case exposed by len narrowing (<a href="https://redirect.github.com/python/mypy/issues/16470">#16470</a>)</li> <li><a href="https://github.com/python/mypy/commit/88791cabe0521f77b699405154d90f3bb7c6b31b"><code>88791ca</code></a> Exclude private attributes from override checks (<a href="https://redirect.github.com/python/mypy/issues/16464">#16464</a>)</li> <li><a href="https://github.com/python/mypy/commit/4b5b316beb570bba4c9b7797deb2e6d7df0552d0"><code>4b5b316</code></a> Special-case unions in polymorphic inference (<a href="https://redirect.github.com/python/mypy/issues/16461">#16461</a>)</li> <li><a href="https://github.com/python/mypy/commit/f862d3ef540c38e7efd2fffd64fc732d6318dfb4"><code>f862d3e</code></a> Fix crash on Callable self in <strong>call</strong> (<a href="https://redirect.github.com/python/mypy/issues/16453">#16453</a>)</li> <li><a href="https://github.com/python/mypy/commit/fe79a59e44299a3cc8025aa5084e08773c872a54"><code>fe79a59</code></a> Bump version to 1.7.1+dev</li> <li>See full diff in <a href="https://github.com/python/mypy/compare/v1.7.0...v1.7.1">compare view</a></li> </ul> </details> <br /> Updates `pytest-xdist` from 3.4.0 to 3.5.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst">pytest-xdist's changelog</a>.</em></p> <blockquote> <h1>pytest-xdist 3.5.0 (2023-11-21)</h1> <h2>Features</h2> <ul> <li><code>[#632](pytest-dev/pytest-xdist#632) <https://github.com/pytest-dev/pytest-xdist/issues/632></code>_: <code>--dist=loadscope</code> now sorts scopes by number of tests to assign largest scopes early -- in many cases this should improve overall test session running time, as there is less chance of a large scope being left to be processed near the end of the session, leaving other workers idle.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/95b309e980796a261045d770f69c016ca741473d"><code>95b309e</code></a> Release 3.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/3fe877bc6d7211f31e55d2d561803f76ea95b935"><code>3fe877b</code></a> LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes ...</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/f36ea25cb53cb960037f4a8510816b81fa313035"><code>f36ea25</code></a> Create GitHub release after deploy (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/973">#973</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/d81f57508d064915fc16ace5dea4d43406db2ba0"><code>d81f575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/969">#969</a> from pytest-dev/pre-commit-ci-update-config</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/1d2616418c046d0e6f059b8f76e35a0627409616"><code>1d26164</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/5f43575b42d6d4c0078de807880b8b0791b75823"><code>5f43575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/966">#966</a> from pytest-dev/release-3.4.0</li> <li>See full diff in <a href="https://github.com/pytest-dev/pytest-xdist/compare/v3.4.0...v3.5.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details>
Bumps [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) from 3.3.1 to 3.5.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst">pytest-xdist's changelog</a>.</em></p> <blockquote> <h1>pytest-xdist 3.5.0 (2023-11-21)</h1> <h2>Features</h2> <ul> <li><code>[#632](pytest-dev/pytest-xdist#632) <https://github.com/pytest-dev/pytest-xdist/issues/632></code>_: <code>--dist=loadscope</code> now sorts scopes by number of tests to assign largest scopes early -- in many cases this should improve overall test session running time, as there is less chance of a large scope being left to be processed near the end of the session, leaving other workers idle.</li> </ul> <h1>pytest-xdist 3.4.0 (2023-11-11)</h1> <h2>Features</h2> <ul> <li> <p><code>[#963](pytest-dev/pytest-xdist#963) <https://github.com/pytest-dev/pytest-xdist/issues/963></code>_: Wait for workers to finish reporting when test run stops early.</p> <p>This makes sure that the results of in-progress tests are displayed. Previously these reports were being discarded, losing information about the test run.</p> </li> <li> <p><code>[#965](pytest-dev/pytest-xdist#965) <https://github.com/pytest-dev/pytest-xdist/issues/965></code>_: Added support for Python 3.12.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/95b309e980796a261045d770f69c016ca741473d"><code>95b309e</code></a> Release 3.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/3fe877bc6d7211f31e55d2d561803f76ea95b935"><code>3fe877b</code></a> LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes ...</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/f36ea25cb53cb960037f4a8510816b81fa313035"><code>f36ea25</code></a> Create GitHub release after deploy (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/973">#973</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/d81f57508d064915fc16ace5dea4d43406db2ba0"><code>d81f575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/969">#969</a> from pytest-dev/pre-commit-ci-update-config</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/1d2616418c046d0e6f059b8f76e35a0627409616"><code>1d26164</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/5f43575b42d6d4c0078de807880b8b0791b75823"><code>5f43575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/966">#966</a> from pytest-dev/release-3.4.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/a6b56112f9b686aed7a354e0d50ecc26ad2d9dfe"><code>a6b5611</code></a> Update CHANGELOG</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/64f9388f4164e9f64d98a7580933e958ea4a09d5"><code>64f9388</code></a> Add support for Python 3.12</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/230ba6ad1057574c9f3d42a97f890788cd9ec6c3"><code>230ba6a</code></a> Properly wait for workers when test run terminates early (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/963">#963</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/93ca202b400eecc62919bcd9b0bab001e3f3f7ef"><code>93ca202</code></a> fix typo index -> instead</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-xdist/compare/v3.3.1...v3.5.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest-xdist&package-manager=pip&previous-version=3.3.1&new-version=3.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
) Updates the requirements on [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) to permit the latest version. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst">pytest-xdist's changelog</a>.</em></p> <blockquote> <h1>pytest-xdist 3.5.0 (2023-11-21)</h1> <h2>Features</h2> <ul> <li><code>[#632](pytest-dev/pytest-xdist#632) <https://github.com/pytest-dev/pytest-xdist/issues/632></code>_: <code>--dist=loadscope</code> now sorts scopes by number of tests to assign largest scopes early -- in many cases this should improve overall test session running time, as there is less chance of a large scope being left to be processed near the end of the session, leaving other workers idle.</li> </ul> <h1>pytest-xdist 3.4.0 (2023-11-11)</h1> <h2>Features</h2> <ul> <li> <p><code>[#963](pytest-dev/pytest-xdist#963) <https://github.com/pytest-dev/pytest-xdist/issues/963></code>_: Wait for workers to finish reporting when test run stops early.</p> <p>This makes sure that the results of in-progress tests are displayed. Previously these reports were being discarded, losing information about the test run.</p> </li> <li> <p><code>[#965](pytest-dev/pytest-xdist#965) <https://github.com/pytest-dev/pytest-xdist/issues/965></code>_: Added support for Python 3.12.</p> </li> </ul> <h1>pytest-xdist 3.3.1 (2023-05-19)</h1> <h2>Bug Fixes</h2> <ul> <li> <p><code>[#907](pytest-dev/pytest-xdist#907) <https://github.com/pytest-dev/pytest-xdist/issues/907></code>_: Avoid remote calls during startup as <code>execnet</code> by default does not ensure remote affinity with the main thread and might accidentally schedule the pytest worker into a non-main thread, which breaks numerous frameworks, for example <code>asyncio</code>, <code>anyio</code>, <code>PyQt/PySide</code>, etc.</p> <p>A more safe correction will require thread affinity in <code>execnet</code> (<code>pytest-dev/execnet#96 <https://github.com/pytest-dev/execnet/issues/96></code>__).</p> </li> </ul> <h1>pytest-xdist 3.3.0 (2023-05-12)</h1> <h2>Features</h2> <ul> <li><code>[#555](pytest-dev/pytest-xdist#555) <https://github.com/pytest-dev/pytest-xdist/issues/555></code>_: Improved progress output when collecting nodes to be less verbose.</li> </ul> <h1>pytest-xdist 3.2.1 (2023-03-12)</h1> <p>Bug Fixes</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/95b309e980796a261045d770f69c016ca741473d"><code>95b309e</code></a> Release 3.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/3fe877bc6d7211f31e55d2d561803f76ea95b935"><code>3fe877b</code></a> LoadScope scheduler: Sort scopes by number of tests to assign biggest scopes ...</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/f36ea25cb53cb960037f4a8510816b81fa313035"><code>f36ea25</code></a> Create GitHub release after deploy (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/973">#973</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/d81f57508d064915fc16ace5dea4d43406db2ba0"><code>d81f575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/969">#969</a> from pytest-dev/pre-commit-ci-update-config</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/1d2616418c046d0e6f059b8f76e35a0627409616"><code>1d26164</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/5f43575b42d6d4c0078de807880b8b0791b75823"><code>5f43575</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/966">#966</a> from pytest-dev/release-3.4.0</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/a6b56112f9b686aed7a354e0d50ecc26ad2d9dfe"><code>a6b5611</code></a> Update CHANGELOG</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/64f9388f4164e9f64d98a7580933e958ea4a09d5"><code>64f9388</code></a> Add support for Python 3.12</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/230ba6ad1057574c9f3d42a97f890788cd9ec6c3"><code>230ba6a</code></a> Properly wait for workers when test run terminates early (<a href="https://redirect.github.com/pytest-dev/pytest-xdist/issues/963">#963</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-xdist/commit/93ca202b400eecc62919bcd9b0bab001e3f3f7ef"><code>93ca202</code></a> fix typo index -> instead</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-xdist/compare/v2.1.0...v3.5.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
In the real world, test scopes aren't equal: Some have just a few tests which take little time to run while others can have a large amount of tests taking longer to finish.
With the current implementation it can happen that the scheduler assigns a scope with a large amount of tests very late in the run, often we see a single worker still running tests of a large scope while all other workers are idle because all other scopes have finished running.
This PR inserts scopes into the workqueue sorted by the amount of tests. The idea is to begin testing with the biggest scopes so that small scopes can essentially be bin packed late in the run so that all workers finish processing roughly at the same time.
I am aware that the number of tests is not the best indicator for test runtime but it is better than random scope assignment.
We have developed a more sophisticated version sorting with timings from previous test runs but unfortunately it requires external tooling.