Skip to content
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

Fish completion not working for files (.whl) #10646

Closed
1 task done
Holt59 opened this issue Nov 9, 2021 · 5 comments · Fixed by #10682
Closed
1 task done

Fish completion not working for files (.whl) #10646

Holt59 opened this issue Nov 9, 2021 · 5 comments · Fixed by #10682
Labels
state: awaiting PR Feature discussed, PR is needed type: bug A confirmed bug or unintended behavior

Comments

@Holt59
Copy link

Holt59 commented Nov 9, 2021

Description

When installing from a local file, e.g. a wheel, auto-completion does not work in fish shell:

$ ls *.whl
package.whl
$ pip install ./pack  # no completion

Expected behavior

I expected ./pack to be auto-completed to ./package.whl

pip version

21.3.1

Python version

3.9.7

OS

Ubuntu 20.04

How to Reproduce

  1. Create a package.whl file in the current folder (either a real one or a dumb one).
  2. Start fish shell (current folder)
  3. Start typing pip install pack

Output

No response

Code of Conduct

@Holt59 Holt59 added S: needs triage Issues/PRs that need to be triaged type: bug A confirmed bug or unintended behavior labels Nov 9, 2021
@notatallshaw
Copy link
Member

notatallshaw commented Nov 9, 2021

Have you run the completion setup documented here: https://pip.pypa.io/en/stable/user_guide/#command-completion

@Holt59
Copy link
Author

Holt59 commented Nov 9, 2021

I just did but now I get:

complete: Unknown option “-m”                                                                                                           643ms  Tue 09 Nov 2021 03:59:51 PM CET

~/.config/fish/completions/pip.fish (line 11): 
complete -fa "(__fish_complete_pip)" -c /usr/bin/python3 -m pip
^
from sourcing file ~/.config/fish/completions/pip.fish
in command substitution

(Type 'help complete' for related documentation)

Doing the version with eval seems to work if I use pip3 instead of python3 -m pip but then I get completion for parameters but the problem with files is still there.

@rouge8
Copy link
Contributor

rouge8 commented Nov 24, 2021

It looks like this is expected behavior:

def test_completion_not_files_after_option(
autocomplete: DoAutocomplete, data: TestData
) -> None:
"""
Test not getting completion files after options which not applicable
(e.g. ``pip install``)
"""
res, env = autocomplete(
words=("pip install r"),
cword="2",
cwd=data.completion_paths,
)
assert not any(
out in res.stdout
for out in (
"requirements.txt",
"readme.txt",
)
), "autocomplete function completed <file> when it should not complete"
assert not any(
os.path.join(out, "") in res.stdout for out in ("replay", "resources")
), "autocomplete function completed <dir> when it should not complete"

I think this is wrong though, it should offer to complete wheel and sdist files...

@uranusjr
Copy link
Member

Feel free to propose a pull request for this.

@uranusjr uranusjr added the state: awaiting PR Feature discussed, PR is needed label Nov 24, 2021
rouge8 added a commit to rouge8/pip that referenced this issue Nov 24, 2021
Previously, `pip install <tab>` did not autocomplete anything. With this
patch, it autocompletes paths to e.g. wheels, sdists, and directories.

Fixes pypa#10646.
@rouge8
Copy link
Contributor

rouge8 commented Nov 24, 2021

PR at #10682

mergify bot pushed a commit to andrewbolster/bolster that referenced this issue Jan 31, 2022
Bumps [pip](https:/pypa/pip) from 21.3.1 to 22.0.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https:/pypa/pip/blob/main/NEWS.rst">pip's changelog</a>.</em></p>
<blockquote>
<h1>22.0.2 (2022-01-30)</h1>
<h2>Deprecations and Removals</h2>
<ul>
<li>Instead of failing on index pages that use non-compliant HTML 5, print a deprecation warning and fall back to <code>html5lib</code>-based parsing for now. This simplifies the migration for non-compliant index pages, by letting such indexes function with a warning. (<code>[#10847](pypa/pip#10847) &lt;https:/pypa/pip/issues/10847&gt;</code>_)</li>
</ul>
<h1>22.0.1 (2022-01-30)</h1>
<h2>Bug Fixes</h2>
<ul>
<li>Accept lowercase <code>&lt;!doctype html&gt;</code> on index pages. (<code>[#10844](pypa/pip#10844) &lt;https:/pypa/pip/issues/10844&gt;</code>_)</li>
<li>Properly handle links parsed by html5lib, when using <code>--use-deprecated=html5lib</code>. (<code>[#10846](pypa/pip#10846) &lt;https:/pypa/pip/issues/10846&gt;</code>_)</li>
</ul>
<h1>22.0 (2022-01-29)</h1>
<h2>Process</h2>
<ul>
<li>Completely replace :pypi:<code>tox</code> in our development workflow, with :pypi:<code>nox</code>.</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li>
<p>Deprecate alternative progress bar styles, leaving only <code>on</code> and <code>off</code> as available choices. (<code>[#10462](pypa/pip#10462) &lt;https:/pypa/pip/issues/10462&gt;</code>_)</p>
</li>
<li>
<p>Drop support for Python 3.6. (<code>[#10641](pypa/pip#10641) &lt;https:/pypa/pip/issues/10641&gt;</code>_)</p>
</li>
<li>
<p>Disable location mismatch warnings on Python versions prior to 3.10.</p>
<p>These warnings were helping identify potential issues as part of the sysconfig -&gt; distutils transition, and we no longer need to rely on reports from older Python versions for information on the transition. (<code>[#10840](pypa/pip#10840) &lt;https:/pypa/pip/issues/10840&gt;</code>_)</p>
</li>
</ul>
<h2>Features</h2>
<ul>
<li>
<p>Changed <code>PackageFinder</code> to parse HTML documents using the stdlib :class:<code>html.parser.HTMLParser</code> class instead of the <code>html5lib</code> package.</p>
<p>For now, the deprecated <code>html5lib</code> code remains and can be used with the <code>--use-deprecated=html5lib</code> command line option. However, it will be removed in a future pip release. (<code>[#10291](pypa/pip#10291) &lt;https:/pypa/pip/issues/10291&gt;</code>_)</p>
</li>
<li>
<p>Utilise <code>rich</code> for presenting pip's default download progress bar. (<code>[#10462](pypa/pip#10462) &lt;https:/pypa/pip/issues/10462&gt;</code>_)</p>
</li>
<li>
<p>Present a better error message when an invalid wheel file is encountered, providing more context where the invalid wheel file is. (<code>[#10535](pypa/pip#10535) &lt;https:/pypa/pip/issues/10535&gt;</code>_)</p>
</li>
<li>
<p>Documents the <code>--require-virtualenv</code> flag for <code>pip install</code>. (<code>[#10588](pypa/pip#10588) &lt;https:/pypa/pip/issues/10588&gt;</code>_)</p>
</li>
<li>
<p><code>pip install &lt;tab&gt;</code> autocompletes paths. (<code>[#10646](pypa/pip#10646) &lt;https:/pypa/pip/issues/10646&gt;</code>_)</p>
</li>
<li>
<p>Allow Python distributors to opt-out from or opt-in to the <code>sysconfig</code> installation scheme backend by setting <code>sysconfig._PIP_USE_SYSCONFIG</code> to <code>True</code> or <code>False</code>. (<code>[#10647](pypa/pip#10647) &lt;https:/pypa/pip/issues/10647&gt;</code>_)</p>
</li>
<li>
<p>Make it possible to deselect tests requiring cryptography package on systems where it cannot be installed. (<code>[#10686](pypa/pip#10686) &lt;https:/pypa/pip/issues/10686&gt;</code>_)</p>
</li>
<li>
<p>Start using Rich for presenting error messages in a consistent format. (<code>[#10703](pypa/pip#10703) &lt;https:/pypa/pip/issues/10703&gt;</code>_)</p>
</li>
<li>
<p>Improve presentation of errors from subprocesses. (<code>[#10705](pypa/pip#10705) &lt;https:/pypa/pip/issues/10705&gt;</code>_)</p>
</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https:/pypa/pip/commit/c721f03190ef888711e8e9efe6ca8345ec6464f3"><code>c721f03</code></a> Bump for release</li>
<li><a href="https:/pypa/pip/commit/844b799c9cf68629cc3c45b75c6e3b7f41086d49"><code>844b799</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/10847">#10847</a> from pradyunsg/better-html5lib-fallback</li>
<li><a href="https:/pypa/pip/commit/a78845ab3387adfe590e2a0ae044a6d3b20ada55"><code>a78845a</code></a> Pacify functional tests that don't start with <code>\&lt;!doctype html&gt;</code></li>
<li><a href="https:/pypa/pip/commit/c3a42f0679d06bfdb3475801618273be5bbce1e8"><code>c3a42f0</code></a> 📰</li>
<li><a href="https:/pypa/pip/commit/c01b0b2729ee096c73416059de825e2f2f01bed9"><code>c01b0b2</code></a> Gracefully fallback to html5lib for parsing non-compliant index pages</li>
<li><a href="https:/pypa/pip/commit/cc35c930b2d7096babb267ddce9382c30c58c7e1"><code>cc35c93</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/10850">#10850</a> from pradyunsg/release/22.0.1</li>
<li><a href="https:/pypa/pip/commit/1b6ef5d0b387d84b1909799d1e18d0b4431038c3"><code>1b6ef5d</code></a> Bump for development</li>
<li><a href="https:/pypa/pip/commit/c73ac8d6bcf4f64041cafeccd2125cca052abed9"><code>c73ac8d</code></a> Bump for release</li>
<li><a href="https:/pypa/pip/commit/9a9c1def6e3bba1f2a860874c8c73b5c55f7f43c"><code>9a9c1de</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/10846">#10846</a> from pradyunsg/fix-html5lib-fallback</li>
<li><a href="https:/pypa/pip/commit/80609e8c20a8db26c97037f252b29307ab44b0e2"><code>80609e8</code></a> Properly yield results from <code>html5lib</code> parsing</li>
<li>Additional commits viewable in <a href="https:/pypa/pip/compare/21.3.1...22.0.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pip&package-manager=pip&previous-version=21.3.1&new-version=22.0.2)](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>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 25, 2022
@pradyunsg pradyunsg removed the S: needs triage Issues/PRs that need to be triaged label Mar 17, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
state: awaiting PR Feature discussed, PR is needed type: bug A confirmed bug or unintended behavior
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants