Namespace Guide

Use zeroproofml as the canonical public namespace for package names, documentation, and new import examples. zeroproof is a deprecated compatibility namespace for existing code. It remains available through 0.8.x and may be removed no earlier than 1.0.0.

Short rule

  • New docs, notebooks, and user-facing examples should prefer zeroproofml.*.
  • Existing integrations that already import zeroproof.* do not need an immediate rename.
  • Within one file or example, pick one namespace family and stay consistent.

Canonical imports for new code

from zeroproofml.inference import InferenceConfig, strict_inference
from zeroproofml.training import SCMTrainer
from zeroproofml.metrics import tau_infer_sweep_from_q_abs

Compatibility imports remain supported:

from zeroproof.inference import InferenceConfig, strict_inference
from zeroproof.training import SCMTrainer

Both forms resolve to the same underlying SCM implementation modules. Compatibility imports emit DeprecationWarning; applications should migrate their own imports rather than suppressing the warning globally.

When zeroproofml.* is required

New surfaces live under zeroproofml.* and should be documented that way:

  • zeroproofml.benchmarks
  • zeroproofml.report
  • zeroproofml.reference_robotics_deployment

Those modules do not need a legacy zeroproof.* counterpart.

Maintainer rule for new modules

When adding future SCM implementation modules, put maintained implementations under zeroproofml.*:

  • add a thin zeroproof.* wrapper only for a historically public path
  • keep internal imports canonical
  • do not add a global import hook or meta-path finder

Current namespace layout

zeroproofml.* is both the canonical public import path and the physical implementation root. zeroproof.* contains explicit compatibility wrappers.

That keeps the public package name aligned with the published docs while preserving compatibility for the pre-existing import tree.