lcert_build.boundary

The moat boundary, expressed as code that runs rather than a paragraph.

This package assembles certificates from numbers you supply. It does not model anything, and that is the property that makes the whole toolkit safe to publish: checking is cheap and public; producing a physically meaningful bound is the part that is hard, and it stays yours.

assert_no_analysis() walks the package's own source and fails if it has grown a numerical model. A test runs it, so the boundary is enforced on every commit rather than remembered.

ANALYSIS_MODULES = {'cv2', 'sklearn', 'numba', 'sympy', 'skimage', 'torch', 'cupy', 'scipy', 'opt_einsum', 'tensorflow', 'pandas', 'numpy', 'jax'}
ANALYSIS_NAMES = {'solve_ivp', 'point_spread', 'regress', 'convolve', 'fft', 'simulate', 'ifft', 'odeint', 'curve_fit', 'interpolate', 'aerial_image', 'eigvals', 'kernel_matrix', 'eigh', 'gaussian'}
def scan(package_dir) -> List[str]:

Return every violation found in package_dir. Empty means clean.

def assert_no_analysis(package_dir=None) -> None:

Raise if this package has grown a numerical model.