mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-09-22 00:14:15 +02:00
parent
fca3ef8cf2
commit
eebd1a26ae
2 changed files with 5 additions and 24 deletions
|
|
@ -219,11 +219,6 @@ class AlterError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class FunctionAlreadyRegistered(Exception):
|
|
||||||
"A function with this name and arity was already registered"
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class NoObviousTable(Exception):
|
class NoObviousTable(Exception):
|
||||||
"Could not tell which table this operation refers to"
|
"Could not tell which table this operation refers to"
|
||||||
pass
|
pass
|
||||||
|
|
@ -414,9 +409,7 @@ class Database:
|
||||||
fn_name = name or fn.__name__
|
fn_name = name or fn.__name__
|
||||||
arity = len(inspect.signature(fn).parameters)
|
arity = len(inspect.signature(fn).parameters)
|
||||||
if not replace and (fn_name, arity) in self._registered_functions:
|
if not replace and (fn_name, arity) in self._registered_functions:
|
||||||
raise FunctionAlreadyRegistered(
|
return fn
|
||||||
f'Already registered function with name "{fn_name}" and identical arity'
|
|
||||||
)
|
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
registered = False
|
registered = False
|
||||||
if deterministic:
|
if deterministic:
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ import pytest
|
||||||
import sys
|
import sys
|
||||||
from unittest.mock import MagicMock, call
|
from unittest.mock import MagicMock, call
|
||||||
from sqlite_utils.utils import sqlite3
|
from sqlite_utils.utils import sqlite3
|
||||||
from sqlite_utils.db import FunctionAlreadyRegistered
|
|
||||||
|
|
||||||
|
|
||||||
def test_register_function(fresh_db):
|
def test_register_function(fresh_db):
|
||||||
|
|
@ -85,12 +84,10 @@ def test_register_function_replace(fresh_db):
|
||||||
|
|
||||||
assert "one" == fresh_db.execute("select one()").fetchone()[0]
|
assert "one" == fresh_db.execute("select one()").fetchone()[0]
|
||||||
|
|
||||||
# This will fail to replace the function:
|
# This will silently fail to replaec the function
|
||||||
with pytest.raises(FunctionAlreadyRegistered):
|
@fresh_db.register_function()
|
||||||
|
def one(): # noqa
|
||||||
@fresh_db.register_function()
|
return "two"
|
||||||
def one(): # noqa
|
|
||||||
return "two"
|
|
||||||
|
|
||||||
assert "one" == fresh_db.execute("select one()").fetchone()[0]
|
assert "one" == fresh_db.execute("select one()").fetchone()[0]
|
||||||
|
|
||||||
|
|
@ -100,12 +97,3 @@ def test_register_function_replace(fresh_db):
|
||||||
return "two"
|
return "two"
|
||||||
|
|
||||||
assert "two" == fresh_db.execute("select one()").fetchone()[0]
|
assert "two" == fresh_db.execute("select one()").fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
def test_register_function_duplicate(fresh_db):
|
|
||||||
def to_lower(s):
|
|
||||||
return s.lower()
|
|
||||||
|
|
||||||
fresh_db.register_function(to_lower)
|
|
||||||
with pytest.raises(FunctionAlreadyRegistered):
|
|
||||||
fresh_db.register_function(to_lower)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue