Skip to content

Commit 1361ed5

Browse files
committed
A bunch of fixes for Click sentinal stuff
1 parent bccd05c commit 1361ed5

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

sqlite_utils/cli.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -952,10 +952,14 @@ def insert_upsert_implementation(
952952
functions=None,
953953
strict=False,
954954
):
955+
convert = _value_or_none(convert)
956+
delimiter = _value_or_none(delimiter)
957+
quotechar = _value_or_none(quotechar)
958+
encoding = _value_or_none(encoding)
959+
bulk_sql = _value_or_none(bulk_sql)
955960
db = sqlite_utils.Database(path)
956961
_load_extensions(db, load_extension)
957-
if functions:
958-
_register_functions(db, functions)
962+
_maybe_register_functions(db, functions)
959963
if (delimiter or quotechar or sniff or no_headers) and not tsv:
960964
csv = True
961965
if (nl + csv + tsv) >= 2:
@@ -1790,8 +1794,7 @@ def query(
17901794
_load_extensions(db, load_extension)
17911795
db.register_fts4_bm25()
17921796

1793-
if functions:
1794-
_register_functions(db, functions)
1797+
_maybe_register_functions(db, functions)
17951798

17961799
_execute_query(
17971800
db,
@@ -1917,6 +1920,9 @@ def memory(
19171920
\b
19181921
sqlite-utils memory animals.csv --schema
19191922
"""
1923+
sql = _value_or_none(sql)
1924+
save = _value_or_none(save)
1925+
encoding = _value_or_none(encoding)
19201926
db = sqlite_utils.Database(memory=True)
19211927

19221928
# If --dump or --save or --analyze used but no paths detected, assume SQL query is a path:
@@ -1990,8 +1996,7 @@ def memory(
19901996
_load_extensions(db, load_extension)
19911997
db.register_fts4_bm25()
19921998

1993-
if functions:
1994-
_register_functions(db, functions)
1999+
_maybe_register_functions(db, functions)
19952000

19962001
if return_db:
19972002
return db
@@ -3286,3 +3291,17 @@ def _register_functions(db, functions):
32863291
for name, value in globals.items():
32873292
if callable(value) and not name.startswith("_"):
32883293
db.register_function(value, name=name)
3294+
3295+
3296+
def _value_or_none(value):
3297+
if getattr(value, "__class__", None).__name__ == "Sentinel":
3298+
return None
3299+
return value
3300+
3301+
3302+
def _maybe_register_functions(db, functions):
3303+
functions = _value_or_none(functions)
3304+
if isinstance(functions, (bytes, bytearray)):
3305+
functions = functions.decode("utf-8")
3306+
if isinstance(functions, str) and functions.strip():
3307+
_register_functions(db, functions)

0 commit comments

Comments
 (0)