Skip to content

Commit 974fe2f

Browse files
committed
fix: defer plugin entrypoint loading until runtime
Fixes #713
1 parent 8d74ffc commit 974fe2f

3 files changed

Lines changed: 11 additions & 4 deletions

File tree

sqlite_utils/cli.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
NoTable,
1515
quote_identifier,
1616
)
17-
from sqlite_utils.plugins import pm, get_plugins
17+
from sqlite_utils.plugins import ensure_plugins_loaded, pm, get_plugins
1818
from sqlite_utils.utils import maximize_csv_field_size_limit
1919
from sqlite_utils import recipes
2020
import textwrap
@@ -3264,6 +3264,7 @@ def plugins_list():
32643264
click.echo(json.dumps(get_plugins(), indent=2))
32653265

32663266

3267+
ensure_plugins_loaded()
32673268
pm.hook.register_commands(cli=cli)
32683269

32693270

sqlite_utils/db.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
Tuple,
4141
)
4242
import uuid
43-
from sqlite_utils.plugins import pm
43+
from sqlite_utils.plugins import ensure_plugins_loaded, pm
4444

4545
try:
4646
from sqlite_dump import iterdump # type: ignore[import-not-found]
@@ -382,6 +382,7 @@ def __init__(
382382
self._registered_functions: set = set()
383383
self.use_counts_table = use_counts_table
384384
if execute_plugins:
385+
ensure_plugins_loaded()
385386
pm.hook.prepare_connection(conn=self.conn)
386387
self.strict = strict
387388

sqlite_utils/plugins.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@
66

77
pm: pluggy.PluginManager = pluggy.PluginManager("sqlite_utils")
88
pm.add_hookspecs(hookspecs)
9+
_plugins_loaded = False
910

10-
if not getattr(sys, "_called_from_test", False):
11-
# Only load plugins if not running tests
11+
12+
def ensure_plugins_loaded() -> None:
13+
global _plugins_loaded
14+
if _plugins_loaded or getattr(sys, "_called_from_test", False):
15+
return
1216
pm.load_setuptools_entrypoints("sqlite_utils")
17+
_plugins_loaded = True
1318

1419

1520
def get_plugins() -> List[Dict[str, Union[str, List[str]]]]:

0 commit comments

Comments
 (0)