mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-21 08:02:07 -04:00
Do not register the GenericFunction in sql.functions._registry
Fixed that the :class:`.GenericFunction` class was inadvertently registering itself as one of the named functions. Pull request courtesy Adrien Berchet. Fixes: #4653 Closes: #4654 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/4654 Pull-request-sha:1112b89f0dChange-Id: Ia0d366d3bff44a763aa496287814278dff732a19 (cherry picked from commit61c47cbdc6)
This commit is contained in:
committed by
Mike Bayer
parent
b058e7ae99
commit
bb07dc17bd
@@ -1057,3 +1057,43 @@ def exec_sorted(statement, *args, **kw):
|
||||
return sorted(
|
||||
[tuple(row) for row in statement.execute(*args, **kw).fetchall()]
|
||||
)
|
||||
|
||||
|
||||
class RegisterTest(fixtures.TestBase, AssertsCompiledSQL):
|
||||
__dialect__ = "default"
|
||||
|
||||
def setup(self):
|
||||
self._registry = deepcopy(functions._registry)
|
||||
|
||||
def teardown(self):
|
||||
functions._registry = self._registry
|
||||
|
||||
def test_GenericFunction_is_registered(self):
|
||||
assert 'GenericFunction' not in functions._registry['_default']
|
||||
|
||||
def test_register_function(self):
|
||||
|
||||
# test generic function registering
|
||||
class registered_func(GenericFunction):
|
||||
_register = True
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
GenericFunction.__init__(self, *args, **kwargs)
|
||||
|
||||
class registered_func_child(registered_func):
|
||||
type = sqltypes.Integer
|
||||
|
||||
assert 'registered_func' in functions._registry['_default']
|
||||
assert isinstance(func.registered_func_child().type, Integer)
|
||||
|
||||
class not_registered_func(GenericFunction):
|
||||
_register = False
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
GenericFunction.__init__(self, *args, **kwargs)
|
||||
|
||||
class not_registered_func_child(not_registered_func):
|
||||
type = sqltypes.Integer
|
||||
|
||||
assert 'not_registered_func' not in functions._registry['_default']
|
||||
assert isinstance(func.not_registered_func_child().type, Integer)
|
||||
|
||||
Reference in New Issue
Block a user