Opened 10 years ago

Last modified 10 years ago

#23551 closed Bug

Exception raised when using the bash autocompletion with Python 3 — at Initial Version

Reported by: Marco Buttu Owned by: nobody
Component: Utilities Version: dev
Severity: Normal Keywords:
Cc: marco.buttu@… Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

My environment is Python 3.4 and Linux Mint 17. When using the django autocompletion, a TAB-completion after a command gives me an exception. For instance, typing a TAB after *django-admin startproject*:

$ django-admin startproject Traceback (most recent call last):
      ...
  File ".../django/core/management/__init__.py", line 262, in autocomplete
    options = sorted((k, v) for k, v in options if k.startswith(curr))
  TypeError: unorderable types: bool() < NoneType()

That happens because at line 225 the *options* list is initilized as:

    options = [('--help', None)]

and at line 263:

    options = sorted((k, v) for k, v in options if k.startswith(curr))

But since *options* contains *--help* twice, in Python 3 we get an error comparing a *bool* with *None*:

    >>> sorted([('foo', True), ('--help', False), ('--help', None)])
    Traceback (most recent call last):
        ...
    TypeError: unorderable types: NoneType() < bool()

That obviously does not happen in Python 2. The doctring of *autocomplete()* says:

    >>> from django.core.management import ManagementUtility
    >>> for line in ManagementUtility.autocomplete.__doc__.splitlines()[10:15]:
    ...     print(line)
    ... 

            Subcommand options are saved as pairs. A pair consists of
            the long option string (e.g. '--exclude') and a boolean
            value indicating if the option requires arguments. When printing to
            stdout, an equal sign is appended to options which require arguments.

So, how come *options* is initialized with the pair *('--help', None)* instead of *('--help', False)*?

Change History (0)

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