From df8d8d4292684d6ffa7474f1e201aed486f02b53 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 28 Mar 2016 18:33:29 -0400 Subject: Fixed E128 flake8 warnings in django/. --- django/core/cache/backends/base.py | 14 +-- django/core/files/temp.py | 3 +- django/core/files/uploadedfile.py | 3 +- django/core/handlers/base.py | 47 ++++------ django/core/handlers/wsgi.py | 3 +- django/core/mail/__init__.py | 42 +++++---- django/core/mail/message.py | 7 +- django/core/management/__init__.py | 6 +- django/core/management/base.py | 33 ++++--- django/core/management/commands/check.py | 18 ++-- django/core/management/commands/compilemessages.py | 23 +++-- .../core/management/commands/createcachetable.py | 30 +++--- django/core/management/commands/dbshell.py | 19 ++-- django/core/management/commands/diffsettings.py | 7 +- django/core/management/commands/dumpdata.py | 89 +++++++++++------- django/core/management/commands/flush.py | 19 ++-- django/core/management/commands/inspectdb.py | 13 ++- django/core/management/commands/loaddata.py | 58 +++++++----- django/core/management/commands/makemessages.py | 103 ++++++++++++++------- django/core/management/commands/makemigrations.py | 48 ++++++---- django/core/management/commands/migrate.py | 53 +++++++---- django/core/management/commands/runserver.py | 24 +++-- django/core/management/commands/sendtestemail.py | 18 ++-- django/core/management/commands/shell.py | 24 +++-- django/core/management/commands/showmigrations.py | 24 +++-- django/core/management/commands/sqlflush.py | 7 +- django/core/management/commands/sqlmigrate.py | 20 ++-- .../core/management/commands/sqlsequencereset.py | 7 +- .../core/management/commands/squashmigrations.py | 31 ++++--- django/core/management/commands/startapp.py | 14 +-- django/core/management/commands/startproject.py | 15 +-- django/core/management/commands/test.py | 35 ++++--- django/core/management/commands/testserver.py | 25 +++-- django/core/management/templates.py | 18 ++-- django/core/serializers/__init__.py | 9 +- django/core/serializers/python.py | 5 +- django/core/signing.py | 3 +- 37 files changed, 559 insertions(+), 358 deletions(-) (limited to 'django/core') diff --git a/django/core/cache/backends/base.py b/django/core/cache/backends/base.py index 76e98a25b6..a07a34e3b5 100644 --- a/django/core/cache/backends/base.py +++ b/django/core/cache/backends/base.py @@ -234,14 +234,16 @@ class BaseCache(object): cache code. """ if len(key) > MEMCACHE_MAX_KEY_LENGTH: - warnings.warn('Cache key will cause errors if used with memcached: ' - '%r (longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH), - CacheKeyWarning) + warnings.warn( + 'Cache key will cause errors if used with memcached: %r ' + '(longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH), CacheKeyWarning + ) for char in key: if ord(char) < 33 or ord(char) == 127: - warnings.warn('Cache key contains characters that will cause ' - 'errors if used with memcached: %r' % key, - CacheKeyWarning) + warnings.warn( + 'Cache key contains characters that will cause errors if ' + 'used with memcached: %r' % key, CacheKeyWarning + ) break def incr_version(self, key, delta=1, version=None): diff --git a/django/core/files/temp.py b/django/core/files/temp.py index 0791b8536e..f70d975dbe 100644 --- a/django/core/files/temp.py +++ b/django/core/files/temp.py @@ -35,8 +35,7 @@ if os.name == 'nt': Python 2.6+, or the 'delete', 'buffering', 'encoding', or 'newline' keyword arguments in Python 3.0+. """ - def __init__(self, mode='w+b', bufsize=-1, suffix='', prefix='', - dir=None): + def __init__(self, mode='w+b', bufsize=-1, suffix='', prefix='', dir=None): fd, name = tempfile.mkstemp(suffix=suffix, prefix=prefix, dir=dir) self.name = name self.file = os.fdopen(fd, mode, bufsize) diff --git a/django/core/files/uploadedfile.py b/django/core/files/uploadedfile.py index 20eaecea75..156c35a1ed 100644 --- a/django/core/files/uploadedfile.py +++ b/django/core/files/uploadedfile.py @@ -62,8 +62,7 @@ class TemporaryUploadedFile(UploadedFile): """ def __init__(self, name, content_type, size, charset, content_type_extra=None): if settings.FILE_UPLOAD_TEMP_DIR: - file = tempfile.NamedTemporaryFile(suffix='.upload', - dir=settings.FILE_UPLOAD_TEMP_DIR) + file = tempfile.NamedTemporaryFile(suffix='.upload', dir=settings.FILE_UPLOAD_TEMP_DIR) else: file = tempfile.NamedTemporaryFile(suffix='.upload') super(TemporaryUploadedFile, self).__init__(file, name, content_type, size, charset, content_type_extra) diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py index b8447de073..69cd2b030f 100644 --- a/django/core/handlers/base.py +++ b/django/core/handlers/base.py @@ -154,8 +154,10 @@ class BaseHandler(object): view_name = callback.__name__ else: # CBV view_name = callback.__class__.__name__ + '.__call__' - raise ValueError("The view %s.%s didn't return an HttpResponse object. It returned None instead." - % (callback.__module__, view_name)) + raise ValueError( + "The view %s.%s didn't return an HttpResponse object. It " + "returned None instead." % (callback.__module__, view_name) + ) # If the response supports deferred rendering, apply template # response middleware and then render the response @@ -167,7 +169,8 @@ class BaseHandler(object): raise ValueError( "%s.process_template_response didn't return an " "HttpResponse object. It returned None instead." - % (middleware_method.__self__.__class__.__name__)) + % (middleware_method.__self__.__class__.__name__) + ) try: response = response.render() except Exception as e: @@ -176,11 +179,10 @@ class BaseHandler(object): response_is_rendered = True except http.Http404 as exc: - logger.warning('Not Found: %s', request.path, - extra={ - 'status_code': 404, - 'request': request - }) + logger.warning( + 'Not Found: %s', request.path, + extra={'status_code': 404, 'request': request}, + ) if settings.DEBUG: response = debug.technical_404_response(request, exc) else: @@ -189,32 +191,25 @@ class BaseHandler(object): except PermissionDenied as exc: logger.warning( 'Forbidden (Permission denied): %s', request.path, - extra={ - 'status_code': 403, - 'request': request - }) + extra={'status_code': 403, 'request': request}, + ) response = self.get_exception_response(request, resolver, 403, exc) except MultiPartParserError as exc: logger.warning( 'Bad request (Unable to parse request body): %s', request.path, - extra={ - 'status_code': 400, - 'request': request - }) + extra={'status_code': 400, 'request': request}, + ) response = self.get_exception_response(request, resolver, 400, exc) except SuspiciousOperation as exc: # The request logger receives events for any problematic request # The security logger receives events for all SuspiciousOperations - security_logger = logging.getLogger('django.security.%s' % - exc.__class__.__name__) + security_logger = logging.getLogger('django.security.%s' % exc.__class__.__name__) security_logger.error( force_text(exc), - extra={ - 'status_code': 400, - 'request': request - }) + extra={'status_code': 400, 'request': request}, + ) if settings.DEBUG: return debug.technical_500_response(request, *sys.exc_info(), status_code=400) @@ -277,12 +272,10 @@ class BaseHandler(object): if settings.DEBUG_PROPAGATE_EXCEPTIONS: raise - logger.error('Internal Server Error: %s', request.path, + logger.error( + 'Internal Server Error: %s', request.path, exc_info=exc_info, - extra={ - 'status_code': 500, - 'request': request - } + extra={'status_code': 500, 'request': request}, ) if settings.DEBUG: diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py index c4de78ea60..1f85511f62 100644 --- a/django/core/handlers/wsgi.py +++ b/django/core/handlers/wsgi.py @@ -158,7 +158,8 @@ class WSGIHandler(base.BaseHandler): try: request = self.request_class(environ) except UnicodeDecodeError: - logger.warning('Bad Request (UnicodeDecodeError)', + logger.warning( + 'Bad Request (UnicodeDecodeError)', exc_info=sys.exc_info(), extra={ 'status_code': 400, diff --git a/django/core/mail/__init__.py b/django/core/mail/__init__.py index 9fb3bdb42b..5741f8a829 100644 --- a/django/core/mail/__init__.py +++ b/django/core/mail/__init__.py @@ -50,11 +50,12 @@ def send_mail(subject, message, from_email, recipient_list, Note: The API for this method is frozen. New code wanting to extend the functionality should use the EmailMessage class directly. """ - connection = connection or get_connection(username=auth_user, - password=auth_password, - fail_silently=fail_silently) - mail = EmailMultiAlternatives(subject, message, from_email, recipient_list, - connection=connection) + connection = connection or get_connection( + username=auth_user, + password=auth_password, + fail_silently=fail_silently, + ) + mail = EmailMultiAlternatives(subject, message, from_email, recipient_list, connection=connection) if html_message: mail.attach_alternative(html_message, 'text/html') @@ -75,12 +76,15 @@ def send_mass_mail(datatuple, fail_silently=False, auth_user=None, Note: The API for this method is frozen. New code wanting to extend the functionality should use the EmailMessage class directly. """ - connection = connection or get_connection(username=auth_user, - password=auth_password, - fail_silently=fail_silently) - messages = [EmailMessage(subject, message, sender, recipient, - connection=connection) - for subject, message, sender, recipient in datatuple] + connection = connection or get_connection( + username=auth_user, + password=auth_password, + fail_silently=fail_silently, + ) + messages = [ + EmailMessage(subject, message, sender, recipient, connection=connection) + for subject, message, sender, recipient in datatuple + ] return connection.send_messages(messages) @@ -89,9 +93,11 @@ def mail_admins(subject, message, fail_silently=False, connection=None, """Sends a message to the admins, as defined by the ADMINS setting.""" if not settings.ADMINS: return - mail = EmailMultiAlternatives('%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject), - message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS], - connection=connection) + mail = EmailMultiAlternatives( + '%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject), message, + settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS], + connection=connection, + ) if html_message: mail.attach_alternative(html_message, 'text/html') mail.send(fail_silently=fail_silently) @@ -102,9 +108,11 @@ def mail_managers(subject, message, fail_silently=False, connection=None, """Sends a message to the managers, as defined by the MANAGERS setting.""" if not settings.MANAGERS: return - mail = EmailMultiAlternatives('%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject), - message, settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS], - connection=connection) + mail = EmailMultiAlternatives( + '%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject), message, + settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS], + connection=connection, + ) if html_message: mail.attach_alternative(html_message, 'text/html') mail.send(fail_silently=fail_silently) diff --git a/django/core/mail/message.py b/django/core/mail/message.py index 8725900ed1..546b895352 100644 --- a/django/core/mail/message.py +++ b/django/core/mail/message.py @@ -90,8 +90,7 @@ def forbid_multi_line_headers(name, val, encoding): val.encode('ascii') except UnicodeEncodeError: if name.lower() in ADDRESS_HEADERS: - val = ', '.join(sanitize_address(addr, encoding) - for addr in getaddresses((val,))) + val = ', '.join(sanitize_address(addr, encoding) for addr in getaddresses((val,))) else: val = Header(val, encoding).encode() else: @@ -418,8 +417,8 @@ class EmailMultiAlternatives(EmailMessage): alternative_subtype = 'alternative' def __init__(self, subject='', body='', from_email=None, to=None, bcc=None, - connection=None, attachments=None, headers=None, alternatives=None, - cc=None, reply_to=None): + connection=None, attachments=None, headers=None, alternatives=None, + cc=None, reply_to=None): """ Initialize a single email message (which can be sent to multiple recipients). diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py index eef52e74ba..aa649176d2 100644 --- a/django/core/management/__init__.py +++ b/django/core/management/__init__.py @@ -196,8 +196,10 @@ class ManagementUtility(object): settings.INSTALLED_APPS else: sys.stderr.write("No Django settings specified.\n") - sys.stderr.write("Unknown command: %r\nType '%s help' for usage.\n" % - (subcommand, self.prog_name)) + sys.stderr.write( + "Unknown command: %r\nType '%s help' for usage.\n" + % (subcommand, self.prog_name) + ) sys.exit(1) if isinstance(app_name, BaseCommand): # If the command is already loaded, use it directly. diff --git a/django/core/management/base.py b/django/core/management/base.py index f747e57ab4..1601d6d055 100644 --- a/django/core/management/base.py +++ b/django/core/management/base.py @@ -241,25 +241,33 @@ class BaseCommand(object): Create and return the ``ArgumentParser`` which will be used to parse the arguments to this command. """ - parser = CommandParser(self, prog="%s %s" % (os.path.basename(prog_name), subcommand), - description=self.help or None) + parser = CommandParser( + self, prog="%s %s" % (os.path.basename(prog_name), subcommand), + description=self.help or None, + ) parser.add_argument('--version', action='version', version=self.get_version()) - parser.add_argument('-v', '--verbosity', action='store', dest='verbosity', default=1, + parser.add_argument( + '-v', '--verbosity', action='store', dest='verbosity', default=1, type=int, choices=[0, 1, 2, 3], - help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output') - parser.add_argument('--settings', + help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output', + ) + parser.add_argument( + '--settings', help=( 'The Python path to a settings module, e.g. ' '"myproject.settings.main". If this isn\'t provided, the ' 'DJANGO_SETTINGS_MODULE environment variable will be used.' ), ) - parser.add_argument('--pythonpath', - help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".') - parser.add_argument('--traceback', action='store_true', - help='Raise on CommandError exceptions') - parser.add_argument('--no-color', action='store_true', dest='no_color', default=False, - help="Don't colorize the command output.") + parser.add_argument( + '--pythonpath', + help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".', + ) + parser.add_argument('--traceback', action='store_true', help='Raise on CommandError exceptions') + parser.add_argument( + '--no-color', action='store_true', dest='no_color', default=False, + help="Don't colorize the command output.", + ) self.add_arguments(parser) return parser @@ -478,8 +486,7 @@ class AppCommand(BaseCommand): missing_args_message = "Enter at least one application label." def add_arguments(self, parser): - parser.add_argument('args', metavar='app_label', nargs='+', - help='One or more application label.') + parser.add_argument('args', metavar='app_label', nargs='+', help='One or more application label.') def handle(self, *app_labels, **options): from django.apps import apps diff --git a/django/core/management/commands/check.py b/django/core/management/commands/check.py index 4f5cc71f43..aa9685caa9 100644 --- a/django/core/management/commands/check.py +++ b/django/core/management/commands/check.py @@ -14,12 +14,18 @@ class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument('args', metavar='app_label', nargs='*') - parser.add_argument('--tag', '-t', action='append', dest='tags', - help='Run only checks labeled with given tag.') - parser.add_argument('--list-tags', action='store_true', dest='list_tags', - help='List available tags.') - parser.add_argument('--deploy', action='store_true', dest='deploy', - help='Check deployment settings.') + parser.add_argument( + '--tag', '-t', action='append', dest='tags', + help='Run only checks labeled with given tag.', + ) + parser.add_argument( + '--list-tags', action='store_true', dest='list_tags', + help='List available tags.', + ) + parser.add_argument( + '--deploy', action='store_true', dest='deploy', + help='Check deployment settings.', + ) parser.add_argument( '--fail-level', default='ERROR', diff --git a/django/core/management/commands/compilemessages.py b/django/core/management/commands/compilemessages.py index 07e108fa1b..874fea4b5a 100644 --- a/django/core/management/commands/compilemessages.py +++ b/django/core/management/commands/compilemessages.py @@ -36,13 +36,19 @@ class Command(BaseCommand): program_options = ['--check-format'] def add_arguments(self, parser): - parser.add_argument('--locale', '-l', dest='locale', action='append', default=[], + parser.add_argument( + '--locale', '-l', dest='locale', action='append', default=[], help='Locale(s) to process (e.g. de_AT). Default is to process all. ' - 'Can be used multiple times.') - parser.add_argument('--exclude', '-x', dest='exclude', action='append', default=[], - help='Locales to exclude. Default is none. Can be used multiple times.') - parser.add_argument('--use-fuzzy', '-f', dest='fuzzy', action='store_true', default=False, - help='Use fuzzy translations.') + 'Can be used multiple times.', + ) + parser.add_argument( + '--exclude', '-x', dest='exclude', action='append', default=[], + help='Locales to exclude. Default is none. Can be used multiple times.', + ) + parser.add_argument( + '--use-fuzzy', '-f', dest='fuzzy', action='store_true', default=False, + help='Use fuzzy translations.', + ) def handle(self, **options): locale = options['locale'] @@ -116,8 +122,9 @@ class Command(BaseCommand): "mo files will not be updated/created." % dirpath) return - args = [self.program] + self.program_options + ['-o', - npath(base_path + '.mo'), npath(base_path + '.po')] + args = [self.program] + self.program_options + [ + '-o', npath(base_path + '.mo'), npath(base_path + '.po') + ] output, errors, status = popen_wrapper(args) if status: if errors: diff --git a/django/core/management/commands/createcachetable.py b/django/core/management/commands/createcachetable.py index 4a6456b536..f80fa8834e 100644 --- a/django/core/management/commands/createcachetable.py +++ b/django/core/management/commands/createcachetable.py @@ -15,16 +15,20 @@ class Command(BaseCommand): requires_system_checks = False def add_arguments(self, parser): - parser.add_argument('args', metavar='table_name', nargs='*', - help='Optional table names. Otherwise, settings.CACHES is used to ' - 'find cache tables.') - parser.add_argument('--database', action='store', dest='database', + parser.add_argument( + 'args', metavar='table_name', nargs='*', + help='Optional table names. Otherwise, settings.CACHES is used to find cache tables.', + ) + parser.add_argument( + '--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, help='Nominates a database onto which the cache tables will be ' - 'installed. Defaults to the "default" database.') - parser.add_argument('--dry-run', action='store_true', dest='dry_run', - help='Does not create the table, just prints the SQL that would ' - 'be run.') + 'installed. Defaults to the "default" database.', + ) + parser.add_argument( + '--dry-run', action='store_true', dest='dry_run', + help='Does not create the table, just prints the SQL that would be run.', + ) def handle(self, *tablenames, **options): db = options['database'] @@ -72,9 +76,10 @@ class Command(BaseCommand): field_output.append("UNIQUE") if f.db_index: unique = "UNIQUE " if f.unique else "" - index_output.append("CREATE %sINDEX %s ON %s (%s);" % - (unique, qn('%s_%s' % (tablename, f.name)), qn(tablename), - qn(f.name))) + index_output.append( + "CREATE %sINDEX %s ON %s (%s);" % + (unique, qn('%s_%s' % (tablename, f.name)), qn(tablename), qn(f.name)) + ) table_output.append(" ".join(field_output)) full_statement = ["CREATE TABLE %s (" % qn(tablename)] for i, line in enumerate(table_output): @@ -89,8 +94,7 @@ class Command(BaseCommand): self.stdout.write(statement) return - with transaction.atomic(using=database, - savepoint=connection.features.can_rollback_ddl): + with transaction.atomic(using=database, savepoint=connection.features.can_rollback_ddl): with connection.cursor() as curs: try: curs.execute(full_statement) diff --git a/django/core/management/commands/dbshell.py b/django/core/management/commands/dbshell.py index d2ff81f7ca..eda1ff68c9 100644 --- a/django/core/management/commands/dbshell.py +++ b/django/core/management/commands/dbshell.py @@ -3,15 +3,18 @@ from django.db import DEFAULT_DB_ALIAS, connections class Command(BaseCommand): - help = ("Runs the command-line client for specified database, or the " - "default database if none is provided.") + help = ( + "Runs the command-line client for specified database, or the " + "default database if none is provided." + ) requires_system_checks = False def add_arguments(self, parser): - parser.add_argument('--database', action='store', dest='database', - default=DEFAULT_DB_ALIAS, help='Nominates a database onto which to ' - 'open a shell. Defaults to the "default" database.') + parser.add_argument( + '--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, + help='Nominates a database onto which to open a shell. Defaults to the "default" database.', + ) def handle(self, **options): connection = connections[options['database']] @@ -22,5 +25,7 @@ class Command(BaseCommand): # isn't installed. There's a possibility OSError would be raised # for some other reason, in which case this error message would be # inaccurate. Still, this message catches the common case. - raise CommandError('You appear not to have the %r program installed or on your path.' % - connection.client.executable_name) + raise CommandError( + 'You appear not to have the %r program installed or on your path.' % + connection.client.executable_name + ) diff --git a/django/core/management/commands/diffsettings.py b/django/core/management/commands/diffsettings.py index 9729131b3f..7bae48c218 100644 --- a/django/core/management/commands/diffsettings.py +++ b/django/core/management/commands/diffsettings.py @@ -14,9 +14,10 @@ class Command(BaseCommand): requires_system_checks = False def add_arguments(self, parser): - parser.add_argument('--all', action='store_true', dest='all', default=False, - help='Display all settings, regardless of their value. ' - 'Default values are prefixed by "###".') + parser.add_argument( + '--all', action='store_true', dest='all', default=False, + help='Display all settings, regardless of their value. Default values are prefixed by "###".', + ) def handle(self, **options): # Inspired by Postfix's "postconf -n". diff --git a/django/core/management/commands/dumpdata.py b/django/core/management/commands/dumpdata.py index f8edcafabb..b8547d684f 100644 --- a/django/core/management/commands/dumpdata.py +++ b/django/core/management/commands/dumpdata.py @@ -12,37 +12,57 @@ class ProxyModelWarning(Warning): class Command(BaseCommand): - help = ("Output the contents of the database as a fixture of the given " - "format (using each model's default manager unless --all is " - "specified).") + help = ( + "Output the contents of the database as a fixture of the given format " + "(using each model's default manager unless --all is specified)." + ) def add_arguments(self, parser): - parser.add_argument('args', metavar='app_label[.ModelName]', nargs='*', - help='Restricts dumped data to the specified app_label or app_label.ModelName.') - parser.add_argument('--format', default='json', dest='format', - help='Specifies the output serialization format for fixtures.') - parser.add_argument('--indent', default=None, dest='indent', type=int, - help='Specifies the indent level to use when pretty-printing output.') - parser.add_argument('--database', action='store', dest='database', + parser.add_argument( + 'args', metavar='app_label[.ModelName]', nargs='*', + help='Restricts dumped data to the specified app_label or app_label.ModelName.', + ) + parser.add_argument( + '--format', default='json', dest='format', + help='Specifies the output serialization format for fixtures.', + ) + parser.add_argument( + '--indent', default=None, dest='indent', type=int, + help='Specifies the indent level to use when pretty-printing output.', + ) + parser.add_argument( + '--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, help='Nominates a specific database to dump fixtures from. ' - 'Defaults to the "default" database.') - parser.add_argument('-e', '--exclude', dest='exclude', action='append', default=[], + 'Defaults to the "default" database.', + ) + parser.add_argument( + '-e', '--exclude', dest='exclude', action='append', default=[], help='An app_label or app_label.ModelName to exclude ' - '(use multiple --exclude to exclude multiple apps/models).') - parser.add_argument('--natural-foreign', action='store_true', dest='use_natural_foreign_keys', default=False, - help='Use natural foreign keys if they are available.') - parser.add_argument('--natural-primary', action='store_true', dest='use_natural_primary_keys', default=False, - help='Use natural primary keys if they are available.') - parser.add_argument('-a', '--all', action='store_true', dest='use_base_manager', default=False, + '(use multiple --exclude to exclude multiple apps/models).', + ) + parser.add_argument( + '--natural-foreign', action='store_true', dest='use_natural_foreign_keys', default=False, + help='Use natural foreign keys if they are available.', + ) + parser.add_argument( + '--natural-primary', action='store_true', dest='use_natural_primary_keys', default=False, + help='Use natural primary keys if they are available.', + ) + parser.add_argument( + '-a', '--all', action='store_true', dest='use_base_manager', default=False, help="Use Django's base manager to dump all models stored in the database, " - "including those that would otherwise be filtered or modified by a custom manager.") - parser.add_argument('--pks', dest='primary_keys', - help="Only dump objects with given primary keys. " - "Accepts a comma separated list of keys. " - "This option will only work when you specify one model.") - parser.add_argument('-o', '--output', default=None, dest='output', - help='Specifies file to which the output is written.') + "including those that would otherwise be filtered or modified by a custom manager.", + ) + parser.add_argument( + '--pks', dest='primary_keys', + help="Only dump objects with given primary keys. Accepts a comma-separated " + "list of keys. This option only works when you specify one model.", + ) + parser.add_argument( + '-o', '--output', default=None, dest='output', + help='Specifies file to which the output is written.' + ) def handle(self, *app_labels, **options): format = options['format'] @@ -80,9 +100,10 @@ class Command(BaseCommand): if len(app_labels) == 0: if primary_keys: raise CommandError("You can only use --pks option with one model") - app_list = OrderedDict((app_config, None) - for app_config in apps.get_app_configs() - if app_config.models_module is not None and app_config not in excluded_apps) + app_list = OrderedDict( + (app_config, None) for app_config in apps.get_app_configs() + if app_config.models_module is not None and app_config not in excluded_apps + ) else: if len(app_labels) > 1 and primary_keys: raise CommandError("You can only use --pks option with one model") @@ -171,11 +192,13 @@ class Command(BaseCommand): object_count = sum(get_objects(count_only=True)) stream = open(output, 'w') if output else None try: - serializers.serialize(format, get_objects(), indent=indent, - use_natural_foreign_keys=use_natural_foreign_keys, - use_natural_primary_keys=use_natural_primary_keys, - stream=stream or self.stdout, progress_output=progress_output, - object_count=object_count) + serializers.serialize( + format, get_objects(), indent=indent, + use_natural_foreign_keys=use_natural_foreign_keys, + use_natural_primary_keys=use_natural_primary_keys, + stream=stream or self.stdout, progress_output=progress_output, + object_count=object_count, + ) finally: if stream: stream.close() diff --git a/django/core/management/commands/flush.py b/django/core/management/commands/flush.py index 3820f2cce8..68226355b8 100644 --- a/django/core/management/commands/flush.py +++ b/django/core/management/commands/flush.py @@ -13,16 +13,21 @@ from django.utils.six.moves import input class Command(BaseCommand): - help = ('Removes ALL DATA from the database, including data added during ' - 'migrations. Does not achieve a "fresh install" state.') + help = ( + 'Removes ALL DATA from the database, including data added during ' + 'migrations. Does not achieve a "fresh install" state.' + ) def add_arguments(self, parser): - parser.add_argument('--noinput', '--no-input', + parser.add_argument( + '--noinput', '--no-input', action='store_false', dest='interactive', default=True, - help='Tells Django to NOT prompt the user for input of any kind.') - parser.add_argument('--database', action='store', dest='database', - default=DEFAULT_DB_ALIAS, - help='Nominates a database to flush. Defaults to the "default" database.') + help='Tells Django to NOT prompt the user for input of any kind.', + ) + parser.add_argument( + '--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, + help='Nominates a database to flush. Defaults to the "default" database.', + ) def handle(self, **options): database = options['database'] diff --git a/django/core/management/commands/inspectdb.py b/django/core/management/commands/inspectdb.py index 24310ee390..02a8ac225e 100644 --- a/django/core/management/commands/inspectdb.py +++ b/django/core/management/commands/inspectdb.py @@ -17,11 +17,14 @@ class Command(BaseCommand): db_module = 'django.db' def add_arguments(self, parser): - parser.add_argument('table', action='store', nargs='*', type=str, - help='Selects what tables or views should be introspected.') - parser.add_argument('--database', action='store', dest='database', - default=DEFAULT_DB_ALIAS, help='Nominates a database to ' - 'introspect. Defaults to using the "default" database.') + parser.add_argument( + 'table', action='store', nargs='*', type=str, + help='Selects what tables or views should be introspected.', + ) + parser.add_argument( + '--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, + help='Nominates a database to introspect. Defaults to using the "default" database.', + ) def handle(self, **options): try: diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py index a53270a38b..1b0cee0d2b 100644 --- a/django/core/management/commands/loaddata.py +++ b/django/core/management/commands/loaddata.py @@ -32,21 +32,26 @@ except ImportError: class Command(BaseCommand): help = 'Installs the named fixture(s) in the database.' - missing_args_message = ("No database fixture specified. Please provide the " - "path of at least one fixture in the command line.") + missing_args_message = ( + "No database fixture specified. Please provide the path of at least " + "one fixture in the command line." + ) def add_arguments(self, parser): - parser.add_argument('args', metavar='fixture', nargs='+', - help='Fixture labels.') - parser.add_argument('--database', action='store', dest='database', - default=DEFAULT_DB_ALIAS, help='Nominates a specific database to load ' - 'fixtures into. Defaults to the "default" database.') - parser.add_argument('--app', action='store', dest='app_label', - default=None, help='Only look for fixtures in the specified app.') - parser.add_argument('--ignorenonexistent', '-i', action='store_true', - dest='ignore', default=False, + parser.add_argument('args', metavar='fixture', nargs='+', help='Fixture labels.') + parser.add_argument( + '--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, + help='Nominates a specific database to load fixtures into. Defaults to the "default" database.', + ) + parser.add_argument( + '--app', action='store', dest='app_label', default=None, + help='Only look for fixtures in the specified app.', + ) + parser.add_argument( + '--ignorenonexistent', '-i', action='store_true', dest='ignore', default=False, help='Ignores entries in the serialized data for fields that do not ' - 'currently exist on the model.') + 'currently exist on the model.', + ) def handle(self, *fixture_labels, **options): @@ -120,11 +125,15 @@ class Command(BaseCommand): if self.verbosity >= 1: if self.fixture_object_count == self.loaded_object_count: - self.stdout.write("Installed %d object(s) from %d fixture(s)" % - (self.loaded_object_count, self.fixture_count)) + self.stdout.write( + "Installed %d object(s) from %d fixture(s)" + % (self.loaded_object_count, self.fixture_count) + ) else: - self.stdout.write("Installed %d object(s) (of %d) from %d fixture(s)" % - (self.loaded_object_count, self.fixture_object_count, self.fixture_count)) + self.stdout.write( + "Installed %d object(s) (of %d) from %d fixture(s)" + % (self.loaded_object_count, self.fixture_object_count, self.fixture_count) + ) def load_label(self, fixture_label): """ @@ -140,11 +149,14 @@ class Command(BaseCommand): objects_in_fixture = 0 loaded_objects_in_fixture = 0 if self.verbosity >= 2: - self.stdout.write("Installing %s fixture '%s' from %s." % - (ser_fmt, fixture_name, humanize(fixture_dir))) + self.stdout.write( + "Installing %s fixture '%s' from %s." + % (ser_fmt, fixture_name, humanize(fixture_dir)) + ) - objects = serializers.deserialize(ser_fmt, fixture, - using=self.using, ignorenonexistent=self.ignore) + objects = serializers.deserialize( + ser_fmt, fixture, using=self.using, ignorenonexistent=self.ignore, + ) for obj in objects: objects_in_fixture += 1 @@ -208,8 +220,10 @@ class Command(BaseCommand): for dir_ in fixture_dirs] fixture_name = os.path.basename(fixture_name) - suffixes = ('.'.join(ext for ext in combo if ext) - for combo in product(databases, ser_fmts, cmp_fmts)) + suffixes = ( + '.'.join(ext for ext in combo if ext) + for combo in product(databases, ser_fmts, cmp_fmts) + ) targets = set('.'.join((fixture_name, suffix)) for suffix in suffixes) fixture_files = [] diff --git a/django/core/management/commands/makemessages.py b/django/core/management/commands/makemessages.py index cfe6d3d087..45113b68ab 100644 --- a/django/core/management/commands/makemessages.py +++ b/django/core/management/commands/makemessages.py @@ -30,8 +30,10 @@ NO_LOCALE_DIR = object() def check_programs(*programs): for program in programs: if find_command(program) is None: - raise CommandError("Can't find %s. Make sure you have GNU " - "gettext tools 0.15 or newer installed." % program) + raise CommandError( + "Can't find %s. Make sure you have GNU gettext tools 0.15 or " + "newer installed." % program + ) @total_ordering @@ -161,11 +163,13 @@ def write_pot_file(potfile, msgs): class Command(BaseCommand): - help = ("Runs over the entire source tree of the current directory and " -"pulls out all strings marked for translation. It creates (or updates) a message " -"file in the conf/locale (in the django tree) or locale (for projects and " -"applications) directory.\n\nYou must run this command with one of either the " -"--locale, --exclude or --all options.") + help = ( + "Runs over the entire source tree of the current directory and " + "pulls out all strings marked for translation. It creates (or updates) a message " + "file in the conf/locale (in the django tree) or locale (for projects and " + "applications) directory.\n\nYou must run this command with one of either the " + "--locale, --exclude, or --all options." + ) translatable_file_class = TranslatableFile build_file_class = BuildFile @@ -179,37 +183,60 @@ class Command(BaseCommand): xgettext_options = ['--from-code=UTF-8', '--add-comments=Translators'] def add_arguments(self, parser): - parser.add_argument('--locale', '-l', default=[], dest='locale', action='append', + parser.add_argument( + '--locale', '-l', default=[], dest='locale', action='append', help='Creates or updates the message files for the given locale(s) (e.g. pt_BR). ' - 'Can be used multiple times.') - parser.add_argument('--exclude', '-x', default=[], dest='exclude', action='append', - help='Locales to exclude. Default is none. Can be used multiple times.') - parser.add_argument('--domain', '-d', default='django', dest='domain', - help='The domain of the message files (default: "django").') - parser.add_argument('--all', '-a', action='store_true', dest='all', - default=False, help='Updates the message files for all existing locales.') - parser.add_argument('--extension', '-e', dest='extensions', + 'Can be used multiple times.', + ) + parser.add_argument( + '--exclude', '-x', default=[], dest='exclude', action='append', + help='Locales to exclude. Default is none. Can be used multiple times.', + ) + parser.add_argument( + '--domain', '-d', default='django', dest='domain', + help='The domain of the message files (default: "django").', + ) + parser.add_argument( + '--all', '-a', action='store_true', dest='all', default=False, + help='Updates the message files for all existing locales.', + ) + parser.add_argument( + '--extension', '-e', dest='extensions', action='append', help='The file extension(s) to examine (default: "html,txt,py", or "js" ' 'if the domain is "djangojs"). Separate multiple extensions with ' 'commas, or use -e multiple times.', - action='append') - parser.add_argument('--symlinks', '-s', action='store_true', dest='symlinks', - default=False, help='Follows symlinks to directories when examining ' - 'source code and templates for translation strings.') - parser.add_argument('--ignore', '-i', action='append', dest='ignore_patterns', + ) + parser.add_argument( + '--symlinks', '-s', action='store_true', dest='symlinks', default=False, + help='Follows symlinks to directories when examining source code ' + 'and templates for translation strings.', + ) + parser.add_argument( + '--ignore', '-i', action='append', dest='ignore_patterns', default=[], metavar='PATTERN', help='Ignore files or directories matching this glob-style pattern. ' - 'Use multiple times to ignore more.') - parser.add_argument('--no-default-ignore', action='store_false', dest='use_default_ignore_patterns', - default=True, help="Don't ignore the common glob-style patterns 'CVS', '.*', '*~' and '*.pyc'.") - parser.add_argument('--no-wrap', action='store_true', dest='no_wrap', - default=False, help="Don't break long message lines into several lines.") - parser.add_argument('--no-location', action='store_true', dest='no_location', - default=False, help="Don't write '#: filename:line' lines.") - parser.add_argument('--no-obsolete', action='store_true', dest='no_obsolete', - default=False, help="Remove obsolete message strings.") - parser.add_argument('--keep-pot', action='store_true', dest='keep_pot', - default=False, help="Keep .pot file after making messages. Useful when debugging.") + 'Use multiple times to ignore more.', + ) + parser.add_argument( + '--no-default-ignore', action='store_false', dest='use_default_ignore_patterns', + default=True, help="Don't ignore the common glob-style patterns 'CVS', '.*', '*~' and '*.pyc'.", + ) + parser.add_argument( + '--no-wrap', action='store_true', dest='no_wrap', + default=False, help="Don't break long message lines into several lines.", + ) + parser.add_argument( + '--no-location', action='store_true', dest='no_location', + default=False, help="Don't write '#: filename:line' lines.", + ) + parser.add_argument( + '--no-obsolete', action='store_true', dest='no_obsolete', + default=False, help="Remove obsolete message strings.", + ) + parser.add_argument( + '--keep-pot', action='store_true', dest='keep_pot', + default=False, help="Keep .pot file after making messages. Useful when debugging.", + ) def handle(self, *args, **options): locale = options['locale'] @@ -256,12 +283,16 @@ class Command(BaseCommand): self.extensions = handle_extensions(exts) if (locale is None and not exclude and not process_all) or self.domain is None: - raise CommandError("Type '%s help %s' for usage information." % ( - os.path.basename(sys.argv[0]), sys.argv[1])) + raise CommandError( + "Type '%s help %s' for usage information." + % (os.path.basename(sys.argv[0]), sys.argv[1]) + ) if self.verbosity > 1: - self.stdout.write('examining files with the extensions: %s\n' - % get_text_list(list(self.extensions), 'and')) + self.stdout.write( + 'examining files with the extensions: %s\n' + % get_text_list(list(self.extensions), 'and') + ) self.invoked_for_django = False self.locale_paths = [] diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py index fc691391f5..6766434193 100644 --- a/django/core/management/commands/makemigrations.py +++ b/django/core/management/commands/makemigrations.py @@ -24,24 +24,40 @@ class Command(BaseCommand): help = "Creates new migration(s) for apps." def add_arguments(self, parser): - parser.add_argument('args', metavar='app_label', nargs='*', - help='Specify the app label(s) to create migrations for.') - parser.add_argument('--dry-run', action='store_true', dest='dry_run', default=False, - help="Just show what migrations would be made; don't actually write them.") - parser.add_argument('--merge', action='store_true', dest='merge', default=False, - help="Enable fixing of migration conflicts.") - parser.add_argument('--empty', action='store_true', dest='empty', default=False, - help="Create an empty migration.") - parser.add_argument('--noinput', '--no-input', + parser.add_argument( + 'args', metavar='app_label', nargs='*', + help='Specify the app label(s) to create migrations for.', + ) + parser.add_argument( + '--dry-run', action='store_true', dest='dry_run', default=False, + help="Just show what migrations would be made; don't actually write them.", + ) + parser.add_argument( + '--merge', action='store_true', dest='merge', default=False, + help="Enable fixing of migration conflicts.", + ) + parser.add_argument( + '--empty', action='store_true', dest='empty', default=False, + help="Create an empty migration.", + ) + parser.add_argument( + '--noinput', '--no-input', action='store_false', dest='interactive', default=True, - help='Tells Django to NOT prompt the user for input of any kind.') - parser.add_argument('-n', '--name', action='store', dest='name', default=None, - help="Use this name for migration file(s).") - parser.add_argument('-e', '--exit', action='store_true', dest='exit_code', default=False, + help='Tells Django to NOT prompt the user for input of any kind.', + ) + parser.add_argument( + '-n', '--name', action='store', dest='name', default=None, + help="Use this name for migration file(s).", + ) + parser.add_argument( + '-e', '--exit', action='store_true', dest='exit_code', default=False, help='Exit with error code 1 if no changes needing migrations are found. ' - 'Deprecated, use the --check option instead.') - parser.add_argument('--check', action='store_true', dest='check_changes', - help='Exit with a non-zero status if model changes are missing migrations.') + 'Deprecated, use the --check option instead.', + ) + parser.add_argument( + '--check', action='store_true', dest='check_changes', + help='Exit with a non-zero status if model changes are missing migrations.', + ) def handle(self, *app_labels, **options): self.verbosity = options['verbosity'] diff --git a/django/core/management/commands/migrate.py b/django/core/management/commands/migrate.py index 9c73500d21..84dbc59c65 100644 --- a/django/core/management/commands/migrate.py +++ b/django/core/management/commands/migrate.py @@ -22,28 +22,39 @@ class Command(BaseCommand): help = "Updates database schema. Manages both apps with migrations and those without." def add_arguments(self, parser): - parser.add_argument('app_label', nargs='?', - help='App label of an application to synchronize the state.') - parser.add_argument('migration_name', nargs='?', - help=( - 'Database state will be brought to the state after that ' - 'migration. Use the name "zero" to unapply all migrations.' - ), + parser.add_argument( + 'app_label', nargs='?', + help='App label of an application to synchronize the state.', ) - parser.add_argument('--noinput', '--no-input', + parser.add_argument( + 'migration_name', nargs='?', + help='Database state will be brought to the state after that ' + 'migration. Use the name "zero" to unapply all migrations.', + ) + parser.add_argument( + '--noinput', '--no-input', action='store_false', dest='interactive', default=True, - help='Tells Django to NOT prompt the user for input of any kind.') - parser.add_argument('--database', action='store', dest='database', - default=DEFAULT_DB_ALIAS, help='Nominates a database to synchronize. ' - 'Defaults to the "default" database.') - parser.add_argument('--fake', action='store_true', dest='fake', default=False, - help='Mark migrations as run without actually running them.') - parser.add_argument('--fake-initial', action='store_true', dest='fake_initial', default=False, + help='Tells Django to NOT prompt the user for input of any kind.', + ) + parser.add_argument( + '--database', action='store', dest='database', + default=DEFAULT_DB_ALIAS, + help='Nominates a database to synchronize. Defaults to the "default" database.', + ) + parser.add_argument( + '--fake', action='store_true', dest='fake', default=False, + help='Mark migrations as run without actually running them.', + ) + parser.add_argument( + '--fake-initial', action='store_true', dest='fake_initial', default=False, help='Detect if tables already exist and fake-apply initial migrations if so. Make sure ' 'that the current database schema matches your initial migration before using this ' - 'flag. Django will only check for an existing table name.') - parser.add_argument('--run-syncdb', action='store_true', dest='run_syncdb', - help='Creates tables for apps without migrations.') + 'flag. Django will only check for an existing table name.', + ) + parser.add_argument( + '--run-syncdb', action='store_true', dest='run_syncdb', + help='Creates tables for apps without migrations.', + ) def handle(self, *args, **options): @@ -238,8 +249,10 @@ class Command(BaseCommand): opts = model._meta converter = connection.introspection.table_name_converter # Note that if a model is unmanaged we short-circuit and never try to install it - return not ((converter(opts.db_table) in tables) or - (opts.auto_created and converter(opts.auto_created._meta.db_table) in tables)) + return not ( + (converter(opts.db_table) in tables) or + (opts.auto_created and converter(opts.auto_created._meta.db_table) in tables) + ) manifest = OrderedDict( (app_name, list(filter(model_installed, model_list))) diff --git a/django/core/management/commands/runserver.py b/django/core/management/commands/runserver.py index d5c8189d6b..18c2d61a88 100644 --- a/django/core/management/commands/runserver.py +++ b/django/core/management/commands/runserver.py @@ -32,14 +32,22 @@ class Command(BaseCommand): default_port = '8000' def add_arguments(self, parser): - parser.add_argument('addrport', nargs='?', - help='Optional port number, or ipaddr:port') - parser.add_argument('--ipv6', '-6', action='store_true', dest='use_ipv6', default=False, - help='Tells Django to use an IPv6 address.') - parser.add_argument('--nothreading', action='store_false', dest='use_threading', default=True, - help='Tells Django to NOT use threading.') - parser.add_argument('--noreload', action='store_false', dest='use_reloader', default=True, - help='Tells Django to NOT use the auto-reloader.') + parser.add_argument( + 'addrport', nargs='?', + help='Optional port number, or ipaddr:port' + ) + parser.add_argument( + '--ipv6', '-6', action='store_true', dest='use_ipv6', default=False, + help='Tells Django to use an IPv6 address.', + ) + parser.add_argument( + '--nothreading', action='store_false', dest='use_threading', default=True, + help='Tells Django to NOT use threading.', + ) + parser.add_argument( + '--noreload', action='store_false', dest='use_reloader', default=True, + help='Tells Django to NOT use the auto-reloader.', + ) def execute(self, *args, **options): if options['no_color']: diff --git a/django/core/management/commands/sendtestemail.py b/django/core/management/commands/sendtestemail.py index 3e3b40a959..6ca011b544 100644 --- a/django/core/management/commands/sendtestemail.py +++ b/django/core/management/commands/sendtestemail.py @@ -10,12 +10,18 @@ class Command(BaseCommand): missing_args_message = "You must specify some email recipients, or pass the --managers or --admin options." def add_arguments(self, parser): - parser.add_argument('email', nargs='*', - help='One or more email addresses to send a test email to.') - parser.add_argument('--managers', action='store_true', dest='managers', default=False, - help='Send a test email to the addresses specified in settings.MANAGERS.') - parser.add_argument('--admins', action='store_true', dest='admins', default=False, - help='Send a test email to the addresses specified in settings.ADMINS.') + parser.add_argument( + 'email', nargs='*', + help='One or more email addresses to send a test email to.', + ) + parser.add_argument( + '--managers', action='store_true', dest='managers', default=False, + help='Send a test email to the addresses specified in settings.MANAGERS.', + ) + parser.add_argument( + '--admins', action='store_true', dest='admins', default=False, + help='Send a test email to the addresses specified in settings.ADMINS.', + ) def handle(self, *args, **kwargs): subject = 'Test email from %s on %s' % (socket.gethostname(), timezone.now()) diff --git a/django/core/management/commands/shell.py b/django/core/management/commands/shell.py index bd61940aba..d6d6f6a087 100644 --- a/django/core/management/commands/shell.py +++ b/django/core/management/commands/shell.py @@ -11,15 +11,23 @@ class Command(BaseCommand): shells = ['ipython', 'bpython', 'python'] def add_arguments(self, parser): - parser.add_argument('--plain', action='store_true', dest='plain', + parser.add_argument( + '--plain', action='store_true', dest='plain', help='Tells Django to use plain Python, not IPython or bpython. ' - 'Deprecated, use the `-i python` or `--interface python` option instead.') - parser.add_argument('--no-startup', action='store_true', dest='no_startup', - help='When using plain Python, ignore the PYTHONSTARTUP environment variable and ~/.pythonrc.py script.') - parser.add_argument('-i', '--interface', choices=self.shells, dest='interface', - help='Specify an interactive interpreter interface. Available options: "ipython", "bpython", and "python"') - parser.add_argument('-c', '--command', dest='command', - help='Instead of opening an interactive shell, run a command as Django and exit.') + 'Deprecated, use the `-i python` or `--interface python` option instead.', + ) + parser.add_argument( + '--no-startup', action='store_true', dest='no_startup', + help='When using plain Python, ignore the PYTHONSTARTUP environment variable and ~/.pythonrc.py script.', + ) + parser.add_argument( + '-i', '--interface', choices=self.shells, dest='interface', + help='Specify an interactive interpreter interface. Available options: "ipython", "bpython", and "python"', + ) + parser.add_argument( + '-c', '--command', dest='command', + help='Instead of opening an interactive shell, run a command as Django and exit.', + ) def _ipython_pre_011(self): """Start IPython pre-0.11""" diff --git a/django/core/management/commands/showmigrations.py b/django/core/management/commands/showmigrations.py index 0e53e11259..0d239b1eef 100644 --- a/django/core/management/commands/showmigrations.py +++ b/django/core/management/commands/showmigrations.py @@ -10,16 +10,24 @@ class Command(BaseCommand): help = "Shows all available migrations for the current project" def add_arguments(self, parser): - parser.add_argument('app_label', nargs='*', - help='App labels of applications to limit the output to.') - parser.add_argument('--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, - help='Nominates a database to synchronize. Defaults to the "default" database.') + parser.add_argument( + 'app_label', nargs='*', + help='App labels of applications to limit the output to.', + ) + parser.add_argument( + '--database', action='store', dest='database', default=DEFAULT_DB_ALIAS, + help='Nominates a database to synchronize. Defaults to the "default" database.', + ) formats = parser.add_mutually_exclusive_group() - formats.add_argument('--list', '-l', action='store_const', dest='format', const='list', - help='Shows a list of all migrations and which are applied.') - formats.add_argument('--plan', '-p', action='store_const', dest='format', const='plan', - help='Shows all migrations in the order they will be applied.') + formats.add_argument( + '--list', '-l', action='store_const', dest='format', const='list', + help='Shows a list of all migrations and which are applied.', + ) + formats.add_argument( + '--plan', '-p', action='store_const', dest='format', const='plan', + help='Shows all migrations in the order they will be applied.', + ) parser.set_defaults(format='list') diff --git a/django/core/management/commands/sqlflush.py b/django/core/management/commands/sqlflush.py index eba9197be7..f0c7e30270 100644 --- a/django/core/management/commands/sqlflush.py +++ b/django/core/management/commands/sqlflush.py @@ -15,9 +15,10 @@ class Command(BaseCommand): def add_arguments(self, parser): super(Command, self).add_arguments(parser) - parser.add_argument('--database', default=DEFAULT_DB_ALIAS, - help='Nominates a database to print the SQL for. Defaults to the ' - '"default" database.') + parser.add_argument( + '--database', default=DEFAULT_DB_ALIAS, + help='Nominates a database to print the SQL for. Defaults to the "default" database.', + ) def handle(self, **options): return '\n'.join(sql_flush(self.style, connections[options['database']], only_django=True)) diff --git a/django/core/management/commands/sqlmigrate.py b/django/core/management/commands/sqlmigrate.py index b858b2b805..5047d900c1 100644 --- a/django/core/management/commands/sqlmigrate.py +++ b/django/core/management/commands/sqlmigrate.py @@ -13,15 +13,17 @@ class Command(BaseCommand): output_transaction = True def add_arguments(self, parser): - parser.add_argument('app_label', - help='App label of the application containing the migration.') - parser.add_argument('migration_name', - help='Migration name to print the SQL for.') - parser.add_argument('--database', default=DEFAULT_DB_ALIAS, - help='Nominates a database to create SQL for. Defaults to the ' - '"default" database.') - parser.add_argument('--backwards', action='store_true', dest='backwards', - default=False, help='Creates SQL to unapply the migration, rather than to apply it') + parser.add_argument('app_label', help='App label of the application containing the migration.') + parser.add_argument('migration_name', help='Migration name to print the SQL for.') + parser.add_argument( + '--database', default=DEFAULT_DB_ALIAS, + help='Nominates a database to create SQL for. Defaults to the "default" database.', + ) + parser.add_argument( + '--backwards', action='store_true', dest='backwards', + default=False, + help='Creates SQL to unapply the migration, rather than to apply it', + ) def execute(self, *args, **options): # sqlmigrate doesn't support coloring its output but we need to force diff --git a/django/core/management/commands/sqlsequencereset.py b/django/core/management/commands/sqlsequencereset.py index ebb6f9da2e..6ac6e10d60 100644 --- a/django/core/management/commands/sqlsequencereset.py +++ b/django/core/management/commands/sqlsequencereset.py @@ -11,9 +11,10 @@ class Command(AppCommand): def add_arguments(self, parser): super(Command, self).add_arguments(parser) - parser.add_argument('--database', default=DEFAULT_DB_ALIAS, - help='Nominates a database to print the SQL for. Defaults to the ' - '"default" database.') + parser.add_argument( + '--database', default=DEFAULT_DB_ALIAS, + help='Nominates a database to print the SQL for. Defaults to the "default" database.', + ) def handle_app_config(self, app_config, **options): if app_config.models_module is None: diff --git a/django/core/management/commands/squashmigrations.py b/django/core/management/commands/squashmigrations.py index 61c99baafd..d9babf85f8 100644 --- a/django/core/management/commands/squashmigrations.py +++ b/django/core/management/commands/squashmigrations.py @@ -13,17 +13,26 @@ class Command(BaseCommand): help = "Squashes an existing set of migrations (from first until specified) into a single new one." def add_arguments(self, parser): - parser.add_argument('app_label', - help='App label of the application to squash migrations for.') - parser.add_argument('start_migration_name', default=None, nargs='?', - help='Migrations will be squashed starting from and including this migration.') - parser.add_argument('migration_name', - help='Migrations will be squashed until and including this migration.') - parser.add_argument('--no-optimize', action='store_true', dest='no_optimize', default=False, - help='Do not try to optimize the squashed operations.') - parser.add_argument('--noinput', '--no-input', - action='store_false', dest='interactive', default=True, - help='Tells Django to NOT prompt the user for input of any kind.') + parser.add_argument( + 'app_label', + help='App label of the application to squash migrations for.', + ) + parser.add_argument( + 'start_migration_name', default=None, nargs='?', + help='Migrations will be squashed starting from and including this migration.', + ) + parser.add_argument( + 'migration_name', + help='Migrations will be squashed until and including this migration.', + ) + parser.add_argument( + '--no-optimize', action='store_true', dest='no_optimize', default=False, + help='Do not try to optimize the squashed operations.', + ) + parser.add_argument( + '--noinput', '--no-input', action='store_false', dest='interactive', default=True, + help='Tells Django to NOT prompt the user for input of any kind.', + ) def handle(self, **options): diff --git a/django/core/management/commands/startapp.py b/django/core/management/commands/startapp.py index 23ae25446b..32e9454a3c 100644 --- a/django/core/management/commands/startapp.py +++ b/django/core/management/commands/startapp.py @@ -5,9 +5,10 @@ from django.core.management.templates import TemplateCommand class Command(TemplateCommand): - help = ("Creates a Django app directory structure for the given app " - "name in the current directory or optionally in the given " - "directory.") + help = ( + "Creates a Django app directory structure for the given app name in " + "the current directory or optionally in the given directory." + ) missing_args_message = "You must provide an application name." def handle(self, **options): @@ -20,8 +21,9 @@ class Command(TemplateCommand): except ImportError: pass else: - raise CommandError("%r conflicts with the name of an existing " - "Python module and cannot be used as an app " - "name. Please try another name." % app_name) + raise CommandError( + "%r conflicts with the name of an existing Python module and " + "cannot be used as an app name. Please try another name." % app_name + ) super(Command, self).handle('app', app_name, target, **options) diff --git a/django/core/management/commands/startproject.py b/django/core/management/commands/startproject.py index f50f27cf1f..d7307e141b 100644 --- a/django/core/management/commands/startproject.py +++ b/django/core/management/commands/startproject.py @@ -7,9 +7,10 @@ from ..utils import get_random_secret_key class Command(TemplateCommand): - help = ("Creates a Django project directory structure for the given " - "project name in the current directory or optionally in the " - "given directory.") + help = ( + "Creates a Django project directory structure for the given project " + "name in the current directory or optionally in the given directory." + ) missing_args_message = "You must provide a project name." def handle(self, **options): @@ -22,10 +23,10 @@ class Command(TemplateCommand): except ImportError: pass else: - raise CommandError("%r conflicts with the name of an existing " - "Python module and cannot be used as a " - "project name. Please try another name." % - project_name) + raise CommandError( + "%r conflicts with the name of an existing Python module and " + "cannot be used as a project name. Please try another name." % project_name + ) # Create a random SECRET_KEY to put it in the main settings. options['secret_key'] = get_random_secret_key() diff --git a/django/core/management/commands/test.py b/django/core/management/commands/test.py index 2d98abebd0..73796fe417 100644 --- a/django/core/management/commands/test.py +++ b/django/core/management/commands/test.py @@ -29,24 +29,29 @@ class Command(BaseCommand): super(Command, self).run_from_argv(argv) def add_arguments(self, parser): - parser.add_argument('args', metavar='test_label', nargs='*', - help='Module paths to test; can be modulename, modulename.TestCase or modulename.TestCase.test_method') - parser.add_argument('--noinput', '--no-input', - action='store_false', dest='interactive', default=True, - help='Tells Django to NOT prompt the user for input of any kind.') - parser.add_argument('--failfast', - action='store_true', dest='failfast', default=False, - help='Tells Django to stop running the test suite after first ' - 'failed test.') - parser.add_argument('--testrunner', - action='store', dest='testrunner', + parser.add_argument( + 'args', metavar='test_label', nargs='*', + help='Module paths to test; can be modulename, modulename.TestCase or modulename.TestCase.test_method' + ) + parser.add_argument( + '--noinput', '--no-input', action='store_false', dest='interactive', default=True, + help='Tells Django to NOT prompt the user for input of any kind.', + ) + parser.add_argument( + '--failfast', action='store_true', dest='failfast', default=False, + help='Tells Django to stop running the test suite after first failed test.', + ) + parser.add_argument( + '--testrunner', action='store', dest='testrunner', help='Tells Django to use specified test runner class instead of ' - 'the one specified by the TEST_RUNNER setting.') - parser.add_argument('--liveserver', - action='store', dest='liveserver', default=None, + 'the one specified by the TEST_RUNNER setting.', + ) + parser.add_argument( + '--liveserver', action='store', dest='liveserver', default=None, help='Overrides the default address where the live server (used ' 'with LiveServerTestCase) is expected to run from. The ' - 'default value is localhost:8081-8179.') + 'default value is localhost:8081-8179.', + ) test_runner_class = get_runner(settings, self.test_runner) diff --git a/django/core/management/commands/testserver.py b/django/core/management/commands/testserver.py index a241283ce2..223a045f7c 100644 --- a/django/core/management/commands/testserver.py +++ b/django/core/management/commands/testserver.py @@ -9,15 +9,22 @@ class Command(BaseCommand): requires_system_checks = False def add_arguments(self, parser): - parser.add_argument('args', metavar='fixture', nargs='*', - help='Path(s) to fixtures to load before running the server.') - parser.add_argument('--noinput', '--no-input', - action='store_false', dest='interactive', default=True, - help='Tells Django to NOT prompt the user for input of any kind.') - parser.add_argument('--addrport', default='', - help='Port number or ipaddr:port to run the server on.') - parser.add_argument('--ipv6', '-6', action='store_true', dest='use_ipv6', default=False, - help='Tells Django to use an IPv6 address.') + parser.add_argument( + 'args', metavar='fixture', nargs='*', + help='Path(s) to fixtures to load before running the server.', + ) + parser.add_argument( + '--noinput', '--no-input', action='store_false', dest='interactive', default=True, + help='Tells Django to NOT prompt the user for input of any kind.', + ) + parser.add_argument( + '--addrport', default='', + help='Port number or ipaddr:port to run the server on.', + ) + parser.add_argument( + '--ipv6', '-6', action='store_true', dest='use_ipv6', default=False, + help='Tells Django to use an IPv6 address.', + ) def handle(self, *fixture_labels, **options): verbosity = options['verbosity'] diff --git a/django/core/management/templates.py b/django/core/management/templates.py index 1cd06d101a..df522e809c 100644 --- a/django/core/management/templates.py +++ b/django/core/management/templates.py @@ -51,18 +51,20 @@ class TemplateCommand(BaseCommand): def add_arguments(self, parser): parser.add_argument('name', help='Name of the application or project.') parser.add_argument('directory', nargs='?', help='Optional destination directory') - parser.add_argument('--template', - help='The path or URL to load the template from.') - parser.add_argument('--extension', '-e', dest='extensions', + parser.add_argument('--template', help='The path or URL to load the template from.') + parser.add_argument( + '--extension', '-e', dest='extensions', action='append', default=['py'], help='The file extension(s) to render (default: "py"). ' 'Separate multiple extensions with commas, or use ' - '-e multiple times.') - parser.add_argument('--name', '-n', dest='files', + '-e multiple times.' + ) + parser.add_argument( + '--name', '-n', dest='files', action='append', default=[], - help='The file name(s) to render. ' - 'Separate multiple extensions with commas, or use ' - '-n multiple times.') + help='The file name(s) to render. Separate multiple extensions ' + 'with commas, or use -n multiple times.' + ) def handle(self, app_or_project, name, target=None, **options): self.app_or_project = app_or_project diff --git a/django/core/serializers/__init__.py b/django/core/serializers/__init__.py index b3f23b223a..e62dbf75da 100644 --- a/django/core/serializers/__init__.py +++ b/django/core/serializers/__init__.py @@ -227,9 +227,12 @@ def sort_dependencies(app_list): else: skipped.append((model, deps)) if not changed: - raise RuntimeError("Can't resolve dependencies for %s in serialized app list." % - ', '.join('%s.%s' % (model._meta.app_label, model._meta.object_name) - for model, deps in sorted(skipped, key=lambda obj: obj[0].__name__)) + raise RuntimeError( + "Can't resolve dependencies for %s in serialized app list." % + ', '.join( + '%s.%s' % (model._meta.app_label, model._meta.object_name) + for model, deps in sorted(skipped, key=lambda obj: obj[0].__name__) + ) ) model_dependencies = skipped diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index 8a8a776d48..94a0272729 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -75,8 +75,9 @@ class Serializer(base.Serializer): else: def m2m_value(value): return force_text(value._get_pk_val(), strings_only=True) - self._current[field.name] = [m2m_value(related) - for related in getattr(obj, field.name).iterator()] + self._current[field.name] = [ + m2m_value(related) for related in getattr(obj, field.name).iterator() + ] def getvalue(self): return self.objects diff --git a/django/core/signing.py b/django/core/signing.py index 9d4c665ad2..22b438315b 100644 --- a/django/core/signing.py +++ b/django/core/signing.py @@ -160,8 +160,7 @@ class Signer(object): 'Unsafe Signer separator: %r (cannot be empty or consist of ' 'only A-z0-9-_=)' % sep, ) - self.salt = force_str(salt or - '%s.%s' % (self.__class__.__module__, self.__class__.__name__)) + self.salt = force_str(salt or '%s.%s' % (self.__class__.__module__, self.__class__.__name__)) def signature(self, value): signature = base64_hmac(self.salt + 'signer', value, self.key) -- cgit v1.3