From d541a77dc1ea14a9a88bf4f81ccc9cfdc48c2e24 Mon Sep 17 00:00:00 2001 From: Konsta Vesterinen Date: Mon, 21 Apr 2014 11:51:49 +0300 Subject: [PATCH] Rename functions to better cope with naming standards --- CHANGES.rst | 2 +- docs/model_helpers.rst | 24 +++++++++---------- sqlalchemy_utils/__init__.py | 20 +++++++++------- sqlalchemy_utils/functions/__init__.py | 8 +++---- sqlalchemy_utils/functions/orm.py | 22 +++++++++-------- ...imary_keys.py => test_get_primary_keys.py} | 15 ++++++------ 6 files changed, 48 insertions(+), 43 deletions(-) rename tests/functions/{test_primary_keys.py => test_get_primary_keys.py} (67%) diff --git a/CHANGES.rst b/CHANGES.rst index 032eb46..92551b0 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,7 +7,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release. 0.25.3 (2014-04-21) ^^^^^^^^^^^^^^^^^^^ -- Added support for primary key aliases in primary_keys function +- Added support for primary key aliases in get_primary_keys function - Added get_columns utility function diff --git a/docs/model_helpers.rst b/docs/model_helpers.rst index 43ae050..4a4df52 100644 --- a/docs/model_helpers.rst +++ b/docs/model_helpers.rst @@ -4,12 +4,6 @@ Model helpers .. module:: sqlalchemy_utils.functions -declarative_base -^^^^^^^^^^^^^^^^ - -.. autofunction:: declarative_base - - escape_like ^^^^^^^^^^^ @@ -22,6 +16,18 @@ get_columns .. autofunction:: get_columns +get_declarative_base +^^^^^^^^^^^^^^^^^^^^ + +.. autofunction:: get_declarative_base + + +get_primary_keys +^^^^^^^^^^^^^^^^ + +.. autofunction:: primary_keys + + query_entities ^^^^^^^^^^^^^^ @@ -46,12 +52,6 @@ naturally_equivalent .. autofunction:: naturally_equivalent -primary_keys -^^^^^^^^^^^^ - -.. autofunction:: primary_keys - - sort_query ^^^^^^^^^^ diff --git a/sqlalchemy_utils/__init__.py b/sqlalchemy_utils/__init__.py index 5263630..ea20e17 100644 --- a/sqlalchemy_utils/__init__.py +++ b/sqlalchemy_utils/__init__.py @@ -3,21 +3,22 @@ from .batch import batch_fetch, with_backrefs from .decorators import generates from .exceptions import ImproperlyConfigured from .functions import ( + create_database, + create_mock_engine, + database_exists, defer_except, + drop_database, escape_like, get_columns, + get_declarative_base, + get_primary_keys, identity, - primary_keys, - naturally_equivalent, - render_statement, - render_expression, - create_mock_engine, mock_engine, + naturally_equivalent, + render_expression, + render_statement, sort_query, table_name, - database_exists, - create_database, - drop_database ) from .listeners import ( coercion_listener, @@ -76,12 +77,13 @@ __all__ = ( generates, generic_relationship, get_columns, + get_declarative_base, + get_primary_keys, identity, instrumented_list, merge, mock_engine, naturally_equivalent, - primary_keys, proxy_dict, render_expression, render_statement, diff --git a/sqlalchemy_utils/functions/__init__.py b/sqlalchemy_utils/functions/__init__.py index a60d6ce..b414d5c 100644 --- a/sqlalchemy_utils/functions/__init__.py +++ b/sqlalchemy_utils/functions/__init__.py @@ -12,14 +12,14 @@ from .database import ( non_indexed_foreign_keys, ) from .orm import ( - declarative_base, get_columns, + get_declarative_base, + get_primary_keys, getdotattr, has_changes, identity, naturally_equivalent, query_entities, - primary_keys, table_name, ) @@ -27,11 +27,12 @@ __all__ = ( 'create_database', 'create_mock_engine', 'database_exists', - 'declarative_base', 'defer_except', 'drop_database', 'escape_like', 'get_columns', + 'get_declarative_base', + 'get_primary_keys', 'getdotattr', 'has_changes', 'identity', @@ -40,7 +41,6 @@ __all__ = ( 'mock_engine', 'naturally_equivalent', 'non_indexed_foreign_keys', - 'primary_keys', 'QuerySorterException', 'render_expression', 'render_statement', diff --git a/sqlalchemy_utils/functions/orm.py b/sqlalchemy_utils/functions/orm.py index 6f6451e..eb4febe 100644 --- a/sqlalchemy_utils/functions/orm.py +++ b/sqlalchemy_utils/functions/orm.py @@ -14,7 +14,7 @@ from sqlalchemy.orm.query import _ColumnEntity from sqlalchemy.orm.util import AliasedInsp -def primary_keys(mixed): +def get_primary_keys(mixed): """ Return an OrderedDict of all primary keys for given Table object, declarative class or declarative class instance. @@ -24,23 +24,25 @@ def primary_keys(mixed): :: - primary_keys(User) + get_primary_keys(User) - primary_keys(User()) + get_primary_keys(User()) - primary_keys(User.__table__) + get_primary_keys(User.__table__) - primary_keys(User.__mapper__) + get_primary_keys(User.__mapper__) - primary_keys(sa.orm.aliased(User)) + get_primary_keys(sa.orm.aliased(User)) - primary_keys(sa.orm.alised(User.__table__)) + get_primary_keys(sa.orm.alised(User.__table__)) .. versionchanged: 0.25.3 Made the function return an ordered dictionary instead of generator. This change was made to support primary key aliases. + Renamed this function to 'get_primary_keys', formerly 'primary_keys' + .. seealso:: :func:`get_columns` """ columns = OrderedDict() @@ -272,7 +274,7 @@ def get_expr_attr(expr, attr_name): return getattr(expr, attr_name) -def declarative_base(model): +def get_declarative_base(model): """ Returns the declarative base for given model class. @@ -281,7 +283,7 @@ def declarative_base(model): for parent in model.__bases__: try: parent.metadata - return declarative_base(parent) + return get_declarative_base(parent) except AttributeError: pass return model @@ -398,7 +400,7 @@ def identity(obj_or_class): """ return tuple( getattr(obj_or_class, column_key) - for column_key in primary_keys(obj_or_class).keys() + for column_key in get_primary_keys(obj_or_class).keys() ) diff --git a/tests/functions/test_primary_keys.py b/tests/functions/test_get_primary_keys.py similarity index 67% rename from tests/functions/test_primary_keys.py rename to tests/functions/test_get_primary_keys.py index d86fe2f..c5fadab 100644 --- a/tests/functions/test_primary_keys.py +++ b/tests/functions/test_get_primary_keys.py @@ -3,11 +3,11 @@ try: except ImportError: from ordereddict import OrderedDict import sqlalchemy as sa -from sqlalchemy_utils import primary_keys +from sqlalchemy_utils import get_primary_keys from tests import TestCase -class TestPrimaryKeys(TestCase): +class TestGetPrimaryKeys(TestCase): def create_models(self): class Building(self.Base): __tablename__ = 'building' @@ -17,27 +17,28 @@ class TestPrimaryKeys(TestCase): self.Building = Building def test_table(self): - assert primary_keys(self.Building.__table__) == OrderedDict({ + assert get_primary_keys(self.Building.__table__) == OrderedDict({ '_id': self.Building.__table__.c._id }) def test_declarative_class(self): - assert primary_keys(self.Building) == OrderedDict({ + assert get_primary_keys(self.Building) == OrderedDict({ 'id': self.Building.__table__.c._id }) def test_declarative_object(self): - assert primary_keys(self.Building()) == OrderedDict({ + assert get_primary_keys(self.Building()) == OrderedDict({ 'id': self.Building.__table__.c._id }) def test_class_alias(self): - assert primary_keys(sa.orm.aliased(self.Building())) == OrderedDict({ + alias = sa.orm.aliased(self.Building) + assert get_primary_keys(alias) == OrderedDict({ 'id': self.Building.__table__.c._id }) def test_table_alias(self): alias = sa.orm.aliased(self.Building.__table__) - assert primary_keys(alias) == OrderedDict({ + assert get_primary_keys(alias) == OrderedDict({ '_id': alias.c._id })