File size: 2,127 Bytes
3c98117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
"""Tests for the sage.data package boundary."""

from __future__ import annotations

import json
import subprocess
import sys
import textwrap


def _run_python(script: str) -> str:
    result = subprocess.run(
        [sys.executable, "-c", textwrap.dedent(script)],
        check=True,
        capture_output=True,
        text=True,
    )
    return result.stdout.strip()


def test_import_sage_data_is_lightweight():
    output = _run_python(
        """
        import json
        import sys

        import sage.data

        roots = {
            root: sum(
                1
                for name in sys.modules
                if name == root or name.startswith(root + ".")
            )
            for root in ("pandas", "numpy", "requests", "tqdm")
        }
        print(json.dumps(roots, sort_keys=True))
        """
    )

    assert json.loads(output) == {
        "numpy": 0,
        "pandas": 0,
        "requests": 0,
        "tqdm": 0,
    }


def test_data_root_has_no_convenience_exports():
    output = _run_python(
        """
        import sage.data

        print(sage.data.__all__)
        print("load_eval_cases" in dir(sage.data))
        print("prepare_data" in dir(sage.data))
        print(hasattr(sage.data, "load_eval_cases"))
        """
    )

    assert output.splitlines() == [
        "[]",
        "False",
        "False",
        "False",
    ]


def test_public_helpers_live_on_owning_modules():
    output = _run_python(
        """
        from sage.data.eval import load_eval_cases
        from sage.data.loader import prepare_data
        from sage.data.query_bank.sources.boundary import (
            DEFAULT_MANUAL_BOUNDARY_SELECTION_POLICY_VERSION,
            EVALUATION_SURFACE_RUNTIME_E2E,
        )

        print(load_eval_cases.__module__)
        print(prepare_data.__module__)
        print(DEFAULT_MANUAL_BOUNDARY_SELECTION_POLICY_VERSION)
        print(EVALUATION_SURFACE_RUNTIME_E2E)
        """
    )

    assert output.splitlines() == [
        "sage.data.eval",
        "sage.data.loader",
        "required_boundary_slice_v2",
        "runtime_e2e",
    ]