clan_lib: Move load_in_all_api_functions to clan_lib

This commit is contained in:
Qubasa
2025-07-04 14:22:40 +07:00
parent 18735a150f
commit aef1edf8e3
3 changed files with 67 additions and 42 deletions

View File

@@ -1,8 +1,11 @@
import importlib
import logging
import pkgutil
from collections.abc import Callable
from dataclasses import dataclass
from functools import wraps
from inspect import Parameter, Signature, signature
from types import ModuleType
from typing import (
Annotated,
Any,
@@ -289,4 +292,35 @@ API.register(open_file)
return None
def import_all_modules_from_package(pkg: ModuleType) -> None:
for _loader, module_name, _is_pkg in pkgutil.walk_packages(
pkg.__path__, prefix=f"{pkg.__name__}."
):
base_name = module_name.split(".")[-1]
# Skip test modules
if (
base_name.startswith("test_")
or base_name.endswith("_test")
or base_name == "conftest"
):
continue
importlib.import_module(module_name)
def load_in_all_api_functions() -> None:
"""
For the global API object, to have all functions available.
We have to make sure python loads every wrapped function at least once.
This is done by importing all modules from the clan_lib and clan_cli packages.
"""
import clan_cli
import clan_lib
import_all_modules_from_package(clan_lib)
import_all_modules_from_package(clan_cli)
API = MethodRegistry()