From c3336e7e4f146fc62272d462288a00f8d78c1f83 Mon Sep 17 00:00:00 2001
From: Tim Graham <timograham@gmail.com>
Date: Sat, 17 Jan 2015 20:18:34 -0500
Subject: [PATCH] Removed dumpdata --natural option and serializers
 use_natural_keys parameter.

Per deprecation timeline; refs #13252.
---
 django/core/management/commands/dumpdata.py | 11 +----------
 django/core/serializers/base.py             |  9 +--------
 docs/ref/django-admin.txt                   |  9 ---------
 docs/topics/serialization.txt               | 13 -------------
 tests/serializers_regress/tests.py          |  7 ++-----
 5 files changed, 4 insertions(+), 45 deletions(-)

diff --git a/django/core/management/commands/dumpdata.py b/django/core/management/commands/dumpdata.py
index 9d506d1611..94d2427304 100644
--- a/django/core/management/commands/dumpdata.py
+++ b/django/core/management/commands/dumpdata.py
@@ -1,12 +1,9 @@
-import warnings
-
 from collections import OrderedDict
 
 from django.apps import apps
 from django.core.management.base import BaseCommand, CommandError
 from django.core import serializers
 from django.db import router, DEFAULT_DB_ALIAS
-from django.utils.deprecation import RemovedInDjango19Warning
 
 
 class Command(BaseCommand):
@@ -28,8 +25,6 @@ class Command(BaseCommand):
         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('-n', '--natural', action='store_true', dest='use_natural_keys', default=False,
-            help='Use natural keys if they are available (deprecated: use --natural-foreign instead).')
         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,
@@ -51,11 +46,7 @@ class Command(BaseCommand):
         excludes = options.get('exclude')
         output = options.get('output')
         show_traceback = options.get('traceback')
-        use_natural_keys = options.get('use_natural_keys')
-        if use_natural_keys:
-            warnings.warn("``--natural`` is deprecated; use ``--natural-foreign`` instead.",
-                RemovedInDjango19Warning)
-        use_natural_foreign_keys = options.get('use_natural_foreign_keys') or use_natural_keys
+        use_natural_foreign_keys = options.get('use_natural_foreign_keys')
         use_natural_primary_keys = options.get('use_natural_primary_keys')
         use_base_manager = options.get('use_base_manager')
         pks = options.get('primary_keys')
diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py
index ed0cfa3c34..7f00e7147d 100644
--- a/django/core/serializers/base.py
+++ b/django/core/serializers/base.py
@@ -1,11 +1,8 @@
 """
 Module for abstract serializer/unserializer base classes.
 """
-import warnings
-
 from django.db import models
 from django.utils import six
-from django.utils.deprecation import RemovedInDjango19Warning
 
 
 class SerializerDoesNotExist(KeyError):
@@ -40,11 +37,7 @@ class Serializer(object):
 
         self.stream = options.pop("stream", six.StringIO())
         self.selected_fields = options.pop("fields", None)
-        self.use_natural_keys = options.pop("use_natural_keys", False)
-        if self.use_natural_keys:
-            warnings.warn("``use_natural_keys`` is deprecated; use ``use_natural_foreign_keys`` instead.",
-                RemovedInDjango19Warning)
-        self.use_natural_foreign_keys = options.pop('use_natural_foreign_keys', False) or self.use_natural_keys
+        self.use_natural_foreign_keys = options.pop('use_natural_foreign_keys', False)
         self.use_natural_primary_keys = options.pop('use_natural_primary_keys', False)
 
         self.start_serialization()
diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt
index 3a8f9b2c55..d29213c185 100644
--- a/docs/ref/django-admin.txt
+++ b/docs/ref/django-admin.txt
@@ -304,15 +304,6 @@ When this option is specified, Django will not provide the primary key in the
 serialized data of this object since it can be calculated during
 deserialization.
 
-.. django-admin-option:: --natural
-
-.. deprecated:: 1.7
-    Equivalent to the :djadminopt:`--natural-foreign` option; use that instead.
-
-Use :ref:`natural keys <topics-serialization-natural-keys>` to represent
-any foreign key and many-to-many relationship with a model that provides
-a natural key definition.
-
 .. django-admin-option:: --pks
 
 By default, ``dumpdata`` will output all the records of the model, but
diff --git a/docs/topics/serialization.txt b/docs/topics/serialization.txt
index aa56bc25d9..354aa9824d 100644
--- a/docs/topics/serialization.txt
+++ b/docs/topics/serialization.txt
@@ -479,19 +479,6 @@ line flags to generate natural keys.
     natural keys during serialization, but *not* be able to load those
     key values, just don't define the ``get_by_natural_key()`` method.
 
-.. versionchanged:: 1.7
-
-    Previously there was only a ``use_natural_keys`` argument for
-    ``serializers.serialize()`` and the `-n` or `--natural` command line flags.
-    These have been deprecated in favor of the ``use_natural_foreign_keys`` and
-    ``use_natural_primary_keys`` arguments and the corresponding
-    :djadminopt:`--natural-foreign` and :djadminopt:`--natural-primary` options
-    for :djadmin:`dumpdata`.
-
-The original argument and command line flags remain for backwards
-compatibility and map to the new ``use_natural_foreign_keys`` argument and
-`--natural-foreign` command line flag. They'll be removed in Django 1.9.
-
 Dependencies during serialization
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/tests/serializers_regress/tests.py b/tests/serializers_regress/tests.py
index 2c99ed77b3..375a6a30ac 100644
--- a/tests/serializers_regress/tests.py
+++ b/tests/serializers_regress/tests.py
@@ -23,9 +23,8 @@ from django.core.serializers.base import DeserializationError
 from django.core.serializers.xml_serializer import DTDForbidden
 from django.db import connection, models
 from django.http import HttpResponse
-from django.test import ignore_warnings, skipUnlessDBFeature, TestCase
+from django.test import skipUnlessDBFeature, TestCase
 from django.utils import six
-from django.utils.deprecation import RemovedInDjango19Warning
 from django.utils.functional import curry
 
 from .models import (BinaryData, BooleanData, CharData, DateData, DateTimeData, EmailData,
@@ -483,7 +482,6 @@ def serializerTest(format, self):
         self.assertEqual(count, klass.objects.count())
 
 
-@ignore_warnings(category=RemovedInDjango19Warning)  # for use_natural_keys
 def naturalKeySerializerTest(format, self):
     # Create all the objects defined in the test data
     objects = []
@@ -496,10 +494,9 @@ def naturalKeySerializerTest(format, self):
     for klass in instance_count:
         instance_count[klass] = klass.objects.count()
 
-    # use_natural_keys is deprecated and to be removed in Django 1.9
     # Serialize the test database
     serialized_data = serializers.serialize(format, objects, indent=2,
-        use_natural_keys=True)
+        use_natural_foreign_keys=True)
 
     for obj in serializers.deserialize(format, serialized_data):
         obj.save()