diff --git a/CHANGES.rst b/CHANGES.rst index a3c12cc..b144c37 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,12 @@ Changelog Here you can see the full list of changes between each SQLAlchemy-Utils release. +0.29.2 (2015-01-xx) +^^^^^^^^^^^^^^^^^^^ + +- Removed deprecated defer_except (SQLAlchemy's own load_only should be used from now on) + + 0.29.1 (2015-01-03) ^^^^^^^^^^^^^^^^^^^ diff --git a/sqlalchemy_utils/__init__.py b/sqlalchemy_utils/__init__.py index 170d0df..c5e048b 100644 --- a/sqlalchemy_utils/__init__.py +++ b/sqlalchemy_utils/__init__.py @@ -15,7 +15,6 @@ from .functions import ( create_database, create_mock_engine, database_exists, - defer_except, dependent_objects, drop_database, escape_like, @@ -102,7 +101,6 @@ __all__ = ( create_database, create_mock_engine, database_exists, - defer_except, dependent_objects, drop_database, escape_like, diff --git a/sqlalchemy_utils/functions/__init__.py b/sqlalchemy_utils/functions/__init__.py index df5b12a..e399671 100644 --- a/sqlalchemy_utils/functions/__init__.py +++ b/sqlalchemy_utils/functions/__init__.py @@ -1,4 +1,3 @@ -from .defer_except import defer_except from .mock import create_mock_engine, mock_engine from .render import render_expression, render_statement from .sort_query import ( @@ -47,7 +46,6 @@ __all__ = ( 'create_database', 'create_mock_engine', 'database_exists', - 'defer_except', 'dependent_objects', 'drop_database', 'escape_like', diff --git a/sqlalchemy_utils/functions/defer_except.py b/sqlalchemy_utils/functions/defer_except.py deleted file mode 100644 index dd2f328..0000000 --- a/sqlalchemy_utils/functions/defer_except.py +++ /dev/null @@ -1,25 +0,0 @@ -from sqlalchemy import inspect -from sqlalchemy.orm import defer -from sqlalchemy.orm.properties import ColumnProperty - - -def defer_except(query, columns): - """ - Deferred loads all columns in given query, except the ones given. - - This function is very useful when working with models with myriad of - columns and you want to deferred load many columns. - - >>> from sqlalchemy_utils import defer_except - >>> query = session.query(Article) - >>> query = defer_except(Article, [Article.id, Article.name]) - - :param columns: columns not to deferred load - """ - model = query._entities[0].entity_zero.class_ - for property_ in inspect(model).attrs: - if isinstance(property_, ColumnProperty): - column = property_.columns[0] - if column.name not in columns: - query = query.options(defer(property_.key)) - return query diff --git a/tests/test_defer_except.py b/tests/test_defer_except.py deleted file mode 100644 index e63e4c0..0000000 --- a/tests/test_defer_except.py +++ /dev/null @@ -1,9 +0,0 @@ -from sqlalchemy_utils import defer_except -from tests import TestCase - - -class TestDeferExcept(TestCase): - def test_supports_properties_as_strings(self): - query = self.session.query(self.Article) - query = defer_except(query, ['id']) - assert str(query) == 'SELECT article.id AS article_id \nFROM article'