diff --git a/python/uv/__init__.py b/python/uv/__init__.py index 5ad0fde7c..5f18152af 100644 --- a/python/uv/__init__.py +++ b/python/uv/__init__.py @@ -28,3 +28,21 @@ if os.environ.get("UV_PREVIEW"): ] else: __all__ = ["find_uv_bin"] + + +def __getattr__(attr_name: str) -> object: + if attr_name in { + "build_sdist", + "build_wheel", + "build_editable", + "get_requires_for_build_sdist", + "get_requires_for_build_wheel", + "prepare_metadata_for_build_wheel", + "get_requires_for_build_editable", + "prepare_metadata_for_build_editable", + }: + err = f"Using `uv.{attr_name}` is not allowed. The uv build backend requires preview mode to be enabled, e.g., via the `UV_PREVIEW=1` environment variable." + raise AttributeError(err) + + err = f"module 'uv' has no attribute '{attr_name}'" + raise AttributeError(err)