From 5ce1fb4f935e082ba2c493ca48235c0fb368bb05 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 2 Jul 2026 17:09:55 +0000 Subject: [PATCH] Add public API exports to link_predictor module Export LinkPredictor, LinkPredictionSaver, and NoLinksFoundError from predictor; export PredictedLink and LinkPredictionResult from models. Add module docstring and __all__ for explicit public API. Add regression tests verifying package-level imports work correctly. Fixes Intugle/data-tools#127 --- src/intugle/link_predictor/__init__.py | 22 +++++++++++++++++ tests/link_predictor/test_public_api.py | 32 +++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 tests/link_predictor/test_public_api.py diff --git a/src/intugle/link_predictor/__init__.py b/src/intugle/link_predictor/__init__.py index 139597f..2e1fb3b 100644 --- a/src/intugle/link_predictor/__init__.py +++ b/src/intugle/link_predictor/__init__.py @@ -1,2 +1,24 @@ +""" +Link Predictor Module +This module provides functionality for predicting relationships between datasets +based on column profiling, data type analysis, and LLM-based inference. +""" +from intugle.link_predictor.models import ( + LinkPredictionResult, + PredictedLink, +) +from intugle.link_predictor.predictor import ( + LinkPredictionSaver, + LinkPredictor, + NoLinksFoundError, +) + +__all__ = [ + "LinkPredictor", + "LinkPredictionSaver", + "PredictedLink", + "LinkPredictionResult", + "NoLinksFoundError", +] diff --git a/tests/link_predictor/test_public_api.py b/tests/link_predictor/test_public_api.py new file mode 100644 index 0000000..c140054 --- /dev/null +++ b/tests/link_predictor/test_public_api.py @@ -0,0 +1,32 @@ +"""Tests for link_predictor public API exports in __init__.py.""" + + +def test_public_api_imports_from_package(): + """Users can import main classes directly from intugle.link_predictor.""" + from intugle.link_predictor import ( + LinkPredictionResult, + LinkPredictionSaver, + LinkPredictor, + NoLinksFoundError, + PredictedLink, + ) + + assert LinkPredictor is not None + assert LinkPredictionSaver is not None + assert PredictedLink is not None + assert LinkPredictionResult is not None + assert NoLinksFoundError is not None + + +def test_all_exports_match_public_api(): + """__all__ should expose exactly the documented public API.""" + import intugle.link_predictor as link_predictor + + expected = { + "LinkPredictor", + "LinkPredictionSaver", + "PredictedLink", + "LinkPredictionResult", + "NoLinksFoundError", + } + assert set(link_predictor.__all__) == expected