Opened 9 years ago

Last modified 9 years ago

#25372 closed Bug

"TypeError: unorderable types: NoneType() < bool()" — at Initial Version

Reported by: Daniel Hahler Owned by: nobody
Component: Core (Management commands) Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I am seeing an error with manage.py's autocomplete for subcommands that do not use argparse:

% DJANGO_AUTO_COMPLETE=1 COMP_WORDS="manage.py shell_plus " COMP_CWORD=2 python manage.py
Traceback (most recent call last):
  File "…/project/bin/manage.py", line 8, in <module>
    execute_from_command_line(sys.argv)
  File "…/django18/django/core/management/__init__.py", line 351, in execute_from_command_line
    utility.execute()
  File "…/django18/django/core/management/__init__.py", line 327, in execute
    self.autocomplete()
  File "…/django18/django/core/management/__init__.py", line 264, in autocomplete
    options = sorted((k, v) for k, v in options if k.startswith(curr))
TypeError: unorderable types: NoneType() < bool()

The problem appears to be that for subcommands that do not use argparse,
s_opt.nargs does not get casted to a boolean:

if subcommand_cls.use_argparse:
    options.extend((sorted(s_opt.option_strings)[0], s_opt.nargs != 0) for s_opt in
                   parser._actions if s_opt.option_strings)
else:
    options.extend((s_opt.get_opt_string(), s_opt.nargs) for s_opt in
                   parser.option_list)

The functions documentation says this:

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.

Change History (0)

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