Rename functions to better cope with naming standards

This commit is contained in:
Konsta Vesterinen
2014-04-21 11:51:49 +03:00
parent c5918545e3
commit d541a77dc1
6 changed files with 48 additions and 43 deletions

View File

@@ -7,7 +7,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
0.25.3 (2014-04-21) 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 - Added get_columns utility function

View File

@@ -4,12 +4,6 @@ Model helpers
.. module:: sqlalchemy_utils.functions .. module:: sqlalchemy_utils.functions
declarative_base
^^^^^^^^^^^^^^^^
.. autofunction:: declarative_base
escape_like escape_like
^^^^^^^^^^^ ^^^^^^^^^^^
@@ -22,6 +16,18 @@ get_columns
.. autofunction:: get_columns .. autofunction:: get_columns
get_declarative_base
^^^^^^^^^^^^^^^^^^^^
.. autofunction:: get_declarative_base
get_primary_keys
^^^^^^^^^^^^^^^^
.. autofunction:: primary_keys
query_entities query_entities
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
@@ -46,12 +52,6 @@ naturally_equivalent
.. autofunction:: naturally_equivalent .. autofunction:: naturally_equivalent
primary_keys
^^^^^^^^^^^^
.. autofunction:: primary_keys
sort_query sort_query
^^^^^^^^^^ ^^^^^^^^^^

View File

@@ -3,21 +3,22 @@ from .batch import batch_fetch, with_backrefs
from .decorators import generates from .decorators import generates
from .exceptions import ImproperlyConfigured from .exceptions import ImproperlyConfigured
from .functions import ( from .functions import (
create_database,
create_mock_engine,
database_exists,
defer_except, defer_except,
drop_database,
escape_like, escape_like,
get_columns, get_columns,
get_declarative_base,
get_primary_keys,
identity, identity,
primary_keys,
naturally_equivalent,
render_statement,
render_expression,
create_mock_engine,
mock_engine, mock_engine,
naturally_equivalent,
render_expression,
render_statement,
sort_query, sort_query,
table_name, table_name,
database_exists,
create_database,
drop_database
) )
from .listeners import ( from .listeners import (
coercion_listener, coercion_listener,
@@ -76,12 +77,13 @@ __all__ = (
generates, generates,
generic_relationship, generic_relationship,
get_columns, get_columns,
get_declarative_base,
get_primary_keys,
identity, identity,
instrumented_list, instrumented_list,
merge, merge,
mock_engine, mock_engine,
naturally_equivalent, naturally_equivalent,
primary_keys,
proxy_dict, proxy_dict,
render_expression, render_expression,
render_statement, render_statement,

View File

@@ -12,14 +12,14 @@ from .database import (
non_indexed_foreign_keys, non_indexed_foreign_keys,
) )
from .orm import ( from .orm import (
declarative_base,
get_columns, get_columns,
get_declarative_base,
get_primary_keys,
getdotattr, getdotattr,
has_changes, has_changes,
identity, identity,
naturally_equivalent, naturally_equivalent,
query_entities, query_entities,
primary_keys,
table_name, table_name,
) )
@@ -27,11 +27,12 @@ __all__ = (
'create_database', 'create_database',
'create_mock_engine', 'create_mock_engine',
'database_exists', 'database_exists',
'declarative_base',
'defer_except', 'defer_except',
'drop_database', 'drop_database',
'escape_like', 'escape_like',
'get_columns', 'get_columns',
'get_declarative_base',
'get_primary_keys',
'getdotattr', 'getdotattr',
'has_changes', 'has_changes',
'identity', 'identity',
@@ -40,7 +41,6 @@ __all__ = (
'mock_engine', 'mock_engine',
'naturally_equivalent', 'naturally_equivalent',
'non_indexed_foreign_keys', 'non_indexed_foreign_keys',
'primary_keys',
'QuerySorterException', 'QuerySorterException',
'render_expression', 'render_expression',
'render_statement', 'render_statement',

View File

@@ -14,7 +14,7 @@ from sqlalchemy.orm.query import _ColumnEntity
from sqlalchemy.orm.util import AliasedInsp 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, Return an OrderedDict of all primary keys for given Table object,
declarative class or declarative class instance. 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 .. versionchanged: 0.25.3
Made the function return an ordered dictionary instead of generator. Made the function return an ordered dictionary instead of generator.
This change was made to support primary key aliases. This change was made to support primary key aliases.
Renamed this function to 'get_primary_keys', formerly 'primary_keys'
.. seealso:: :func:`get_columns` .. seealso:: :func:`get_columns`
""" """
columns = OrderedDict() columns = OrderedDict()
@@ -272,7 +274,7 @@ def get_expr_attr(expr, attr_name):
return getattr(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. Returns the declarative base for given model class.
@@ -281,7 +283,7 @@ def declarative_base(model):
for parent in model.__bases__: for parent in model.__bases__:
try: try:
parent.metadata parent.metadata
return declarative_base(parent) return get_declarative_base(parent)
except AttributeError: except AttributeError:
pass pass
return model return model
@@ -398,7 +400,7 @@ def identity(obj_or_class):
""" """
return tuple( return tuple(
getattr(obj_or_class, column_key) 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()
) )

View File

@@ -3,11 +3,11 @@ try:
except ImportError: except ImportError:
from ordereddict import OrderedDict from ordereddict import OrderedDict
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy_utils import primary_keys from sqlalchemy_utils import get_primary_keys
from tests import TestCase from tests import TestCase
class TestPrimaryKeys(TestCase): class TestGetPrimaryKeys(TestCase):
def create_models(self): def create_models(self):
class Building(self.Base): class Building(self.Base):
__tablename__ = 'building' __tablename__ = 'building'
@@ -17,27 +17,28 @@ class TestPrimaryKeys(TestCase):
self.Building = Building self.Building = Building
def test_table(self): 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 '_id': self.Building.__table__.c._id
}) })
def test_declarative_class(self): def test_declarative_class(self):
assert primary_keys(self.Building) == OrderedDict({ assert get_primary_keys(self.Building) == OrderedDict({
'id': self.Building.__table__.c._id 'id': self.Building.__table__.c._id
}) })
def test_declarative_object(self): def test_declarative_object(self):
assert primary_keys(self.Building()) == OrderedDict({ assert get_primary_keys(self.Building()) == OrderedDict({
'id': self.Building.__table__.c._id 'id': self.Building.__table__.c._id
}) })
def test_class_alias(self): 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 'id': self.Building.__table__.c._id
}) })
def test_table_alias(self): def test_table_alias(self):
alias = sa.orm.aliased(self.Building.__table__) alias = sa.orm.aliased(self.Building.__table__)
assert primary_keys(alias) == OrderedDict({ assert get_primary_keys(alias) == OrderedDict({
'_id': alias.c._id '_id': alias.c._id
}) })