﻿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: unorderable types: NoneType() < bool()"""	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	new	Core (Management commands)	dev	Normal				Unreviewed	1	0	0	0	0	0
