Opened 11 years ago

Last modified 11 years ago

#19806 new Bug

django_bash_completion clobbers upstream completion of ‘python’

Reported by: Anders Kaseorg Owned by:
Component: Core (Management commands) Version: 1.4
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: yes Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

extras/django_bash_completion now tries to complete python manage.py in addition to ./manage.py (#12174), but this results in the upstream completion hook for python being entirely clobbered. For example, the upstream hook completes python -Q, but this is lost when loading django_bash_completion:

$ python -Q <TAB>
new      old      warn     warnall  
$ . extras/django_bash_completion 
$ python -Q <TAB>
AUTHORS           .git/             LICENSE           setup.py
CONTRIBUTING.rst  .gitattributes    MANIFEST.in       tests/
django/           .gitignore        README.rst        .tx/
docs/             .hgignore         scripts/
extras/           INSTALL           setup.cfg

That seems like a really unfriendly thing to do, especially on Linux distros where merely installing the Django package pulls in django_bash_completion automatically.

I don’t know of a way to install a completion hook for python manage.py without clobbering all of python, so I would propose that the second half of the script (starting at _python_django_completion) should be deleted entirely. Users who want bash completion can type ./manage.py or django-admin instead.

Attachments (2)

ticket19806.diff (2.7 KB ) - added by kwadrat 11 years ago.
Remove-completion-of-python-manage.py.patch (2.1 KB ) - added by Anders Kaseorg 10 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 by Carl Meyer, 11 years ago

Component: UncategorizedCore (Management commands)
Triage Stage: UnreviewedAccepted
Type: UncategorizedBug

Agreed, this is quite unfriendly.

comment:2 by anonymous, 11 years ago

Owner: changed from nobody to anonymous
Status: newassigned

comment:3 by kwadrat, 11 years ago

Owner: changed from anonymous to kwadrat

by kwadrat, 11 years ago

Attachment: ticket19806.diff added

comment:4 by kwadrat, 11 years ago

Has patch: set
Needs tests: set
Owner: kwadrat removed
Status: assignednew

comment:5 by Anders Kaseorg, 11 years ago

Copying the upstream completion for python is still unfriendly, because the upstream completion might change, and things will break again if any other package wants to extend python completion. Also, in bash-completion 2, the preferred way to install completions is in /usr/share/bash-completion/completions/command_name where they are loaded dynamically (rather than all at once at startup), which will break this anyway. This really needs some help from bash-completion upstream. Until that happens, I still recommend that the completion for python manage.py be removed entirely. For concreteness, I’ll attach that patch below.

by Anders Kaseorg, 10 years ago

Note: See TracTickets for help on using tickets.
Back to Top