Applied Black, refs #526, #525

This commit is contained in:
Simon Willison 2023-05-08 14:54:24 -07:00
commit fca3ef8cf2
3 changed files with 12 additions and 5 deletions

View file

@ -414,7 +414,9 @@ 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(f'Already registered function with name "{fn_name}" and identical arity') raise FunctionAlreadyRegistered(
f'Already registered function with name "{fn_name}" and identical arity'
)
kwargs = {} kwargs = {}
registered = False registered = False
if deterministic: if deterministic:
@ -2693,15 +2695,17 @@ class Table(Queryable):
return jsonify_if_needed(fn(v)) return jsonify_if_needed(fn(v))
fn_name = fn.__name__ fn_name = fn.__name__
if fn_name == '<lambda>': if fn_name == "<lambda>":
fn_name = f'lambda_{hash(fn)}' fn_name = f"lambda_{hash(fn)}"
self.db.register_function(convert_value, name=fn_name) self.db.register_function(convert_value, name=fn_name)
sql = "update [{table}] set {sets}{where};".format( sql = "update [{table}] set {sets}{where};".format(
table=self.name, table=self.name,
sets=", ".join( sets=", ".join(
[ [
"[{output_column}] = {fn_name}([{column}])".format( "[{output_column}] = {fn_name}([{column}])".format(
output_column=output or column, column=column, fn_name=fn_name output_column=output or column,
column=column,
fn_name=fn_name,
) )
for column in columns for column in columns
] ]

View file

@ -153,6 +153,6 @@ def test_convert_repeated(fresh_db):
table = fresh_db["table"] table = fresh_db["table"]
col = "num" col = "num"
table.insert({col: 1}) table.insert({col: 1})
table.convert(col, lambda x: x*2) table.convert(col, lambda x: x * 2)
table.convert(col, lambda _x: 0) table.convert(col, lambda _x: 0)
assert table.get(1) == {col: 0} assert table.get(1) == {col: 0}

View file

@ -5,6 +5,7 @@ from unittest.mock import MagicMock, call
from sqlite_utils.utils import sqlite3 from sqlite_utils.utils import sqlite3
from sqlite_utils.db import FunctionAlreadyRegistered from sqlite_utils.db import FunctionAlreadyRegistered
def test_register_function(fresh_db): def test_register_function(fresh_db):
@fresh_db.register_function @fresh_db.register_function
def reverse_string(s): def reverse_string(s):
@ -86,6 +87,7 @@ def test_register_function_replace(fresh_db):
# This will fail to replace the function: # This will fail to replace the function:
with pytest.raises(FunctionAlreadyRegistered): with pytest.raises(FunctionAlreadyRegistered):
@fresh_db.register_function() @fresh_db.register_function()
def one(): # noqa def one(): # noqa
return "two" return "two"
@ -103,6 +105,7 @@ def test_register_function_replace(fresh_db):
def test_register_function_duplicate(fresh_db): def test_register_function_duplicate(fresh_db):
def to_lower(s): def to_lower(s):
return s.lower() return s.lower()
fresh_db.register_function(to_lower) fresh_db.register_function(to_lower)
with pytest.raises(FunctionAlreadyRegistered): with pytest.raises(FunctionAlreadyRegistered):
fresh_db.register_function(to_lower) fresh_db.register_function(to_lower)