Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 20 additions & 44 deletions python/uv/__init__.py
Original file line number Diff line number Diff line change
@@ -1,48 +1,24 @@
from __future__ import annotations

import os

if os.environ.get("UV_PREVIEW"):
from ._build_backend import *
from ._build_backend import *
from ._find_uv import find_uv_bin

if os.environ.get("UV_PREVIEW"):
__all__ = [
"find_uv_bin",
# PEP 517 hook `build_sdist`.
"build_sdist",
# PEP 517 hook `build_wheel`.
"build_wheel",
# PEP 660 hook `build_editable`.
"build_editable",
# PEP 517 hook `get_requires_for_build_sdist`.
"get_requires_for_build_sdist",
# PEP 517 hook `get_requires_for_build_wheel`.
"get_requires_for_build_wheel",
# PEP 517 hook `prepare_metadata_for_build_wheel`.
"prepare_metadata_for_build_wheel",
# PEP 660 hook `get_requires_for_build_editable`.
"get_requires_for_build_editable",
# PEP 660 hook `prepare_metadata_for_build_editable`.
"prepare_metadata_for_build_editable",
]
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)
__all__ = [
"find_uv_bin",
# PEP 517 hook `build_sdist`.
"build_sdist",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this preclude us from moving these into a separate namespace later? (as discussed elsewhere)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Imo they are still preview and as such subject to change at any time, but we can also merge the PR #11478 -> #11446 first and start with uv_build directly.

# PEP 517 hook `build_wheel`.
"build_wheel",
# PEP 660 hook `build_editable`.
"build_editable",
# PEP 517 hook `get_requires_for_build_sdist`.
"get_requires_for_build_sdist",
# PEP 517 hook `get_requires_for_build_wheel`.
"get_requires_for_build_wheel",
# PEP 517 hook `prepare_metadata_for_build_wheel`.
"prepare_metadata_for_build_wheel",
# PEP 660 hook `get_requires_for_build_editable`.
"get_requires_for_build_editable",
# PEP 660 hook `prepare_metadata_for_build_editable`.
"prepare_metadata_for_build_editable",
]
8 changes: 8 additions & 0 deletions python/uv/_build_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,16 @@


def warn_config_settings(config_settings: "Mapping[Any, Any] | None" = None) -> None:
import os
import sys

if not os.environ.get("UV_PREVIEW"):
print(
"Warning: The uv build backend is in preview. "
"Set the `UV_PREVIEW` environment variable to `1` to acknowledge.",
file=sys.stderr,
)
Comment on lines 25 to +34
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's kind of weird to have this in warn_config_settings?


if config_settings:
print("Warning: Config settings are not supported", file=sys.stderr)

Expand Down