﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25372	TypeError on manage.py's autocomplete for subcommands that do not use argparse	Daniel Hahler	nobody	"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.

PR: https://github.com/django/django/pull/5253"	Bug	closed	Core (Management commands)	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
