From 47927eb786f432cb069f0b00fd810c465a78fd71 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Wed, 16 Apr 2014 21:03:22 -0400 Subject: [PATCH] Revert "Fixed #22401 -- Deprecated regular expression parsing of initial SQL in favor of installing sqlparse." This reverts commit 071c9337750b296d198cced56f3ffad0e176afb6. This introduced a regression on MySQL and custom SQL is deprecated. --- django/core/management/sql.py | 35 +++++++------------ docs/howto/initial-data.txt | 8 ----- .../contributing/writing-code/unit-tests.txt | 2 -- docs/internals/deprecation.txt | 3 -- docs/releases/1.8.txt | 12 ------- tests/requirements/base.txt | 1 - 6 files changed, 13 insertions(+), 48 deletions(-) diff --git a/django/core/management/sql.py b/django/core/management/sql.py index 291743d6a4..c789701c47 100644 --- a/django/core/management/sql.py +++ b/django/core/management/sql.py @@ -10,7 +10,7 @@ from django.conf import settings from django.core.management.base import CommandError from django.db import models, router from django.utils import six -from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning +from django.utils.deprecation import RemovedInDjango19Warning def sql_create(app_config, style, connection): @@ -155,27 +155,18 @@ def sql_all(app_config, style, connection): def _split_statements(content): - try: - import sqlparse - except ImportError: - warnings.warn( - "Providing intial SQL data works better with sqlparse installed " - "and it will be required in Django 2.0.", RemovedInDjango20Warning - ) - comment_re = re.compile(r"^((?:'[^']*'|[^'])*?)--.*$") - statements = [] - statement = [] - for line in content.split("\n"): - cleaned_line = comment_re.sub(r"\1", line).strip() - if not cleaned_line: - continue - statement.append(cleaned_line) - if cleaned_line.endswith(";"): - statements.append(" ".join(statement)) - statement = [] - return statements - else: - return sqlparse.split(content.strip()) + comment_re = re.compile(r"^((?:'[^']*'|[^'])*?)--.*$") + statements = [] + statement = [] + for line in content.split("\n"): + cleaned_line = comment_re.sub(r"\1", line).strip() + if not cleaned_line: + continue + statement.append(cleaned_line) + if cleaned_line.endswith(";"): + statements.append(" ".join(statement)) + statement = [] + return statements def custom_sql_for_model(model, style, connection): diff --git a/docs/howto/initial-data.txt b/docs/howto/initial-data.txt index fc59132ccb..d003db6497 100644 --- a/docs/howto/initial-data.txt +++ b/docs/howto/initial-data.txt @@ -103,14 +103,6 @@ directories. Providing initial SQL data ========================== -.. deprecated:: 1.8 - - Historically this functionality has used regular expression parsing of the - initial SQL which is a bit buggy. This parsing is now deprecated in favor - of installing `sqlparse `_; doing so - will be required for this functionality in Django 2.0. You can install it - using ``pip install sqlparse``. - Django provides a hook for passing the database arbitrary SQL that's executed just after the CREATE TABLE statements when you run :djadmin:`migrate`. You can use this hook to populate default records, or you could also create SQL diff --git a/docs/internals/contributing/writing-code/unit-tests.txt b/docs/internals/contributing/writing-code/unit-tests.txt index 3571fb0c26..3edc588c18 100644 --- a/docs/internals/contributing/writing-code/unit-tests.txt +++ b/docs/internals/contributing/writing-code/unit-tests.txt @@ -166,7 +166,6 @@ dependencies: * memcached_, plus a :ref:`supported Python binding ` * gettext_ (:ref:`gettext_on_windows`) * selenium_ -* sqlparse_ You can find these dependencies in `pip requirements files`_ inside the ``tests/requirements`` directory of the Django source tree and install them @@ -198,7 +197,6 @@ associated tests will be skipped. .. _memcached: http://memcached.org/ .. _gettext: http://www.gnu.org/software/gettext/manual/gettext.html .. _selenium: https://pypi.python.org/pypi/selenium -.. _sqlparse: https://pypi.python.org/pypi/sqlparse .. _pip requirements files: http://www.pip-installer.org/en/latest/cookbook.html#requirements-files Code coverage diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index 7d440c428a..a0d3b8a80c 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -25,9 +25,6 @@ about each item can often be found in the release notes of two versions prior. * Using an incorrect count of unpacked values in the ``for`` template tag will raise an exception rather than fail silently. -* The regular expression parsing of SQL initial data will be removed and - ``sqlparse`` will be required for the feature. - .. _deprecation-removed-in-1.9: 1.9 diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index b206dcc4ce..35a2534792 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -128,9 +128,6 @@ Management Commands * :djadmin:`dumpdata` now has the option :djadminopt:`--output` which allows specifying the file to which the serialized data is written. -* :ref:`initial-sql` now works better if the `sqlparse - `_ Python library is installed. - Models ^^^^^^ @@ -281,12 +278,3 @@ Using an incorrect count of unpacked values in the :ttag:`for` template tag Using an incorrect count of unpacked values in :ttag:`for` tag will raise an exception rather than fail silently in Django 2.0. - -Regular expression parsing of initial SQL -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The somewhat buggy regular expression logic used for parsing :ref:`SQL initial -data ` has been deprecated. Install `sqlparse -`_ if you wish to use this feature. -Doing so will be required in Django 2.0 when the regular expression logic is -removed. diff --git a/tests/requirements/base.txt b/tests/requirements/base.txt index c3f77234fd..3d982bc00a 100644 --- a/tests/requirements/base.txt +++ b/tests/requirements/base.txt @@ -5,4 +5,3 @@ Pillow PyYAML pytz > dev selenium -sqlparse