diff --git a/src/huggingface_inference_toolkit/utils.py b/src/huggingface_inference_toolkit/utils.py index 64304d38..af6a984c 100644 --- a/src/huggingface_inference_toolkit/utils.py +++ b/src/huggingface_inference_toolkit/utils.py @@ -185,6 +185,8 @@ def check_and_register_custom_pipeline_from_directory(model_dir): logger.info(f"Found custom pipeline at {custom_module}") spec = importlib.util.spec_from_file_location(HF_MODULE_NAME, custom_module) if spec: + # add the whole directory to path for submodlues + sys.path.insert(0, model_dir) # import custom handler pipeline = importlib.util.module_from_spec(spec) sys.modules[HF_MODULE_NAME] = pipeline diff --git a/tests/resources/custom_handler/custom_utils.py b/tests/resources/custom_handler/custom_utils.py new file mode 100644 index 00000000..30d73a8b --- /dev/null +++ b/tests/resources/custom_handler/custom_utils.py @@ -0,0 +1,3 @@ +def test_method(input): + """reverse string""" + return input[::-1] \ No newline at end of file diff --git a/tests/resources/custom_handler/pipeline.py b/tests/resources/custom_handler/pipeline.py index 51f04887..d3adeb4a 100644 --- a/tests/resources/custom_handler/pipeline.py +++ b/tests/resources/custom_handler/pipeline.py @@ -1,6 +1,8 @@ +from custom_utils import test_method class PreTrainedPipeline: def __init__(self, path): self.path = path def __call__(self, data): - return data + res = test_method(data) + return res diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index cf827a5f..feecd3bb 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -154,7 +154,7 @@ def test_local_custom_pipeline(): pipeline = check_and_register_custom_pipeline_from_directory(model_dir) payload = "test" assert pipeline.path == model_dir - assert pipeline(payload) == payload + assert pipeline(payload) == payload[::-1] def test_remote_custom_pipeline():