Add a UI to set config settings for PEP 517 backends#11059
Add a UI to set config settings for PEP 517 backends#11059
Conversation
abravalheri
left a comment
There was a problem hiding this comment.
Thank you very much for having a look on this @pfmoore ❤️
9101179 to
962b073
Compare
|
Docs added. And on reflection I'm not entirely sure if this needs further tests - I think what I've added probably covers the main cases. Suggestions for extra tests would be welcome, though. So I'm going to move this out of "Draft" mode. Further reviews would be appreciated before I merge this. |
| ''' | ||
|
|
||
|
|
||
| def test_backend_sees_config(script: PipTestEnvironment) -> None: |
There was a problem hiding this comment.
Should we have a test that it gets called on editable hooks?
There was a problem hiding this comment.
Probably... It would likely be just a small variant on this one, so I'll add it.
There was a problem hiding this comment.
Good call, this picked up an error in my implementation (which took me all morning to find 🙁)! Fix (and test) incoming.
New feature suggestion: Have pip error at startup with the message "The InstallRequirement class is an abomination and I refuse to work with it" 🙂
|
I think I've addressed the various review comments, so unless anyone has any additional points they want to raise, I'll merge this in a day or two. Please comment if you want me to wait (even if it's just "I need some time to think about this, please give me a while longer"). |
|
OK, going to merge this now so @pradyunsg isn't waiting around for me 🙂 |
|
I'm sorry for being late to the party but we'd also need a way to pass a list as the value. The only use of config_settings I know of is |
|
From PEP 517, "Build frontends SHOULD provide some mechanism for users to specify arbitrary string-key/string-value pairs to be placed in this dictionary." You could parse the string value passed for Alternatively, a PR to add an option for this would be considered. The hard part (IMO) is designing a reasonable UI. As a final note, pip's legacy |
Bumps [pip](https://github.com/pypa/pip) from 22.0.4 to 22.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pypa/pip/blob/main/NEWS.rst">pip's changelog</a>.</em></p> <blockquote> <h1>22.1 (2022-05-11)</h1> <h2>Process</h2> <ul> <li>Enable the <code>importlib.metadata</code> metadata implementation by default on Python 3.11 (or later). The environment variable <code>_PIP_USE_IMPORTLIB_METADATA</code> can still be used to enable the implementation on 3.10 and earlier, or disable it on 3.11 (by setting it to <code>0</code> or <code>false</code>).</li> </ul> <h2>Bug Fixes</h2> <ul> <li>Revert <code>[#9243](pypa/pip#9243) <https://github.com/pypa/pip/issues/9243></code>_ since it introduced a regression in certain edge cases. (<code>[#10962](pypa/pip#10962) <https://github.com/pypa/pip/issues/10962></code>_)</li> <li>Fix missing <code>REQUESTED</code> metadata when using URL constraints. (<code>[#11079](pypa/pip#11079) <https://github.com/pypa/pip/issues/11079></code>_)</li> <li><code>pip config</code> now normalizes names by converting underscores into dashes. (<code>[#9330](pypa/pip#9330) <https://github.com/pypa/pip/issues/9330></code>_)</li> </ul> <h1>22.1b1 (2022-04-30)</h1> <h2>Process</h2> <ul> <li>Start migration of distribution metadata implementation from <code>pkg_resources</code> to <code>importlib.metadata</code>. The new implementation is currently not exposed in any user-facing way, but included in the code base for easier development.</li> </ul> <h2>Deprecations and Removals</h2> <ul> <li>Drop <code>--use-deprecated=out-of-tree-build</code>, according to deprecation message. (<code>[#11001](pypa/pip#11001) <https://github.com/pypa/pip/issues/11001></code>_)</li> </ul> <h2>Features</h2> <ul> <li>Add option to install and uninstall commands to opt-out from running-as-root warning. (<code>[#10556](pypa/pip#10556) <https://github.com/pypa/pip/issues/10556></code>_)</li> <li>Include Project-URLs in <code>pip show</code> output. (<code>[#10799](pypa/pip#10799) <https://github.com/pypa/pip/issues/10799></code>_)</li> <li>Improve error message when <code>pip config edit</code> is provided an editor that doesn't exist. (<code>[#10812](pypa/pip#10812) <https://github.com/pypa/pip/issues/10812></code>_)</li> <li>Add a user interface for supplying config settings to build backends. (<code>[#11059](pypa/pip#11059) <https://github.com/pypa/pip/issues/11059></code>_)</li> <li>Add support for Powershell autocompletion. (<code>[#9024](pypa/pip#9024) <https://github.com/pypa/pip/issues/9024></code>_)</li> <li>Explains why specified version cannot be retrieved when <em>Requires-Python</em> is not satisfied. (<code>[#9615](pypa/pip#9615) <https://github.com/pypa/pip/issues/9615></code>_)</li> <li>Validate build dependencies when using <code>--no-build-isolation</code>. (<code>[#9794](pypa/pip#9794) <https://github.com/pypa/pip/issues/9794></code>_)</li> </ul> <h2>Bug Fixes</h2> <ul> <li>Fix conditional checks to prevent <code>pip.exe</code> from trying to modify itself, on Windows. (<code>[#10560](pypa/pip#10560) <https://github.com/pypa/pip/issues/10560></code>_)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pypa/pip/commit/3c953322c6683b3f0f4d465d9fa361de55358462"><code>3c95332</code></a> Bump for release</li> <li><a href="https://github.com/pypa/pip/commit/bd54382b59b45975fd4ea00533fb92bd85e3b98d"><code>bd54382</code></a> Update AUTHORS.txt</li> <li><a href="https://github.com/pypa/pip/commit/c86f9f12594c0e05ed2de31a652bc1eaadb970d1"><code>c86f9f1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11044">#11044</a> from uranusjr/importlib-metadata-backend-in-3.11</li> <li><a href="https://github.com/pypa/pip/commit/bd9bcef8b3262c513a0dd614731cfe8db8d64125"><code>bd9bcef</code></a> Enable importlib.metadata backend on Python 3.11</li> <li><a href="https://github.com/pypa/pip/commit/cb24fb4052ca8ab8009866b0de61980c81a7e13c"><code>cb24fb4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11085">#11085</a> from pypa/revert-10962-fix-hashes</li> <li><a href="https://github.com/pypa/pip/commit/6ad9a21a43b7fe5d436472de2492069c4541bf06"><code>6ad9a21</code></a> 📰</li> <li><a href="https://github.com/pypa/pip/commit/cf3696a81b341925f82f20cb527e656176987565"><code>cf3696a</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11080">#11080</a> from sbidoul/requested-with-constraints</li> <li><a href="https://github.com/pypa/pip/commit/bab5bfce502be78318ab2a3b364b4923d657c854"><code>bab5bfc</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11073">#11073</a> from wimglenn/issue-9330</li> <li><a href="https://github.com/pypa/pip/commit/ae1c2e35e493d7a07cb0d300451625629ae07ce9"><code>ae1c2e3</code></a> Grammar fix in changelog</li> <li><a href="https://github.com/pypa/pip/commit/8d51b8365501132c4f9fe929aa40bd66c9eaa60e"><code>8d51b83</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11087">#11087</a> from mkniewallner/fix-version-changelog</li> <li>Additional commits viewable in <a href="https://github.com/pypa/pip/compare/22.0.4...22.1">compare view</a></li> </ul> </details> <br /> [](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 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 [pip](https://github.com/pypa/pip) from 22.0.4 to 22.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pypa/pip/blob/main/NEWS.rst">pip's changelog</a>.</em></p> <blockquote> <h1>22.1 (2022-05-11)</h1> <h2>Process</h2> <ul> <li>Enable the <code>importlib.metadata</code> metadata implementation by default on Python 3.11 (or later). The environment variable <code>_PIP_USE_IMPORTLIB_METADATA</code> can still be used to enable the implementation on 3.10 and earlier, or disable it on 3.11 (by setting it to <code>0</code> or <code>false</code>).</li> </ul> <h2>Bug Fixes</h2> <ul> <li>Revert <code>[#9243](pypa/pip#9243) <https://github.com/pypa/pip/issues/9243></code>_ since it introduced a regression in certain edge cases. (<code>[#10962](pypa/pip#10962) <https://github.com/pypa/pip/issues/10962></code>_)</li> <li>Fix missing <code>REQUESTED</code> metadata when using URL constraints. (<code>[#11079](pypa/pip#11079) <https://github.com/pypa/pip/issues/11079></code>_)</li> <li><code>pip config</code> now normalizes names by converting underscores into dashes. (<code>[#9330](pypa/pip#9330) <https://github.com/pypa/pip/issues/9330></code>_)</li> </ul> <h1>22.1b1 (2022-04-30)</h1> <h2>Process</h2> <ul> <li>Start migration of distribution metadata implementation from <code>pkg_resources</code> to <code>importlib.metadata</code>. The new implementation is currently not exposed in any user-facing way, but included in the code base for easier development.</li> </ul> <h2>Deprecations and Removals</h2> <ul> <li>Drop <code>--use-deprecated=out-of-tree-build</code>, according to deprecation message. (<code>[#11001](pypa/pip#11001) <https://github.com/pypa/pip/issues/11001></code>_)</li> </ul> <h2>Features</h2> <ul> <li>Add option to install and uninstall commands to opt-out from running-as-root warning. (<code>[#10556](pypa/pip#10556) <https://github.com/pypa/pip/issues/10556></code>_)</li> <li>Include Project-URLs in <code>pip show</code> output. (<code>[#10799](pypa/pip#10799) <https://github.com/pypa/pip/issues/10799></code>_)</li> <li>Improve error message when <code>pip config edit</code> is provided an editor that doesn't exist. (<code>[#10812](pypa/pip#10812) <https://github.com/pypa/pip/issues/10812></code>_)</li> <li>Add a user interface for supplying config settings to build backends. (<code>[#11059](pypa/pip#11059) <https://github.com/pypa/pip/issues/11059></code>_)</li> <li>Add support for Powershell autocompletion. (<code>[#9024](pypa/pip#9024) <https://github.com/pypa/pip/issues/9024></code>_)</li> <li>Explains why specified version cannot be retrieved when <em>Requires-Python</em> is not satisfied. (<code>[#9615](pypa/pip#9615) <https://github.com/pypa/pip/issues/9615></code>_)</li> <li>Validate build dependencies when using <code>--no-build-isolation</code>. (<code>[#9794](pypa/pip#9794) <https://github.com/pypa/pip/issues/9794></code>_)</li> </ul> <h2>Bug Fixes</h2> <ul> <li>Fix conditional checks to prevent <code>pip.exe</code> from trying to modify itself, on Windows. (<code>[#10560](pypa/pip#10560) <https://github.com/pypa/pip/issues/10560></code>_)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pypa/pip/commit/3c953322c6683b3f0f4d465d9fa361de55358462"><code>3c95332</code></a> Bump for release</li> <li><a href="https://github.com/pypa/pip/commit/bd54382b59b45975fd4ea00533fb92bd85e3b98d"><code>bd54382</code></a> Update AUTHORS.txt</li> <li><a href="https://github.com/pypa/pip/commit/c86f9f12594c0e05ed2de31a652bc1eaadb970d1"><code>c86f9f1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11044">#11044</a> from uranusjr/importlib-metadata-backend-in-3.11</li> <li><a href="https://github.com/pypa/pip/commit/bd9bcef8b3262c513a0dd614731cfe8db8d64125"><code>bd9bcef</code></a> Enable importlib.metadata backend on Python 3.11</li> <li><a href="https://github.com/pypa/pip/commit/cb24fb4052ca8ab8009866b0de61980c81a7e13c"><code>cb24fb4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11085">#11085</a> from pypa/revert-10962-fix-hashes</li> <li><a href="https://github.com/pypa/pip/commit/6ad9a21a43b7fe5d436472de2492069c4541bf06"><code>6ad9a21</code></a> 📰</li> <li><a href="https://github.com/pypa/pip/commit/cf3696a81b341925f82f20cb527e656176987565"><code>cf3696a</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11080">#11080</a> from sbidoul/requested-with-constraints</li> <li><a href="https://github.com/pypa/pip/commit/bab5bfce502be78318ab2a3b364b4923d657c854"><code>bab5bfc</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11073">#11073</a> from wimglenn/issue-9330</li> <li><a href="https://github.com/pypa/pip/commit/ae1c2e35e493d7a07cb0d300451625629ae07ce9"><code>ae1c2e3</code></a> Grammar fix in changelog</li> <li><a href="https://github.com/pypa/pip/commit/8d51b8365501132c4f9fe929aa40bd66c9eaa60e"><code>8d51b83</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/11087">#11087</a> from mkniewallner/fix-version-changelog</li> <li>Additional commits viewable in <a href="https://github.com/pypa/pip/compare/22.0.4...22.1">compare view</a></li> </ul> </details> <br /> [](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 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>
Still to do:
But it seems to basically work, so reviews are welcome 🙂