diff --git a/pyproject.toml b/pyproject.toml index 6eff96e..3b7727c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,14 @@ packages = ["src/microplex_us"] [tool.hatch.metadata] allow-direct-references = true +[tool.uv] +required-environments = [ + "sys_platform == 'darwin' and platform_machine == 'x86_64'", +] +override-dependencies = [ + "torch; sys_platform != 'darwin' or platform_machine != 'x86_64'", +] + [tool.hatch.build.targets.wheel.force-include] "src/microplex_us/pipelines/pe_native_scores.py" = "microplex_us/pipelines/pe_native_scores.py" "src/microplex_us/pipelines/ecps_export_contract.json" = "microplex_us/pipelines/ecps_export_contract.json" diff --git a/tests/test_project_metadata.py b/tests/test_project_metadata.py new file mode 100644 index 0000000..4f59751 --- /dev/null +++ b/tests/test_project_metadata.py @@ -0,0 +1,20 @@ +from __future__ import annotations + +from pathlib import Path + +import tomllib + +REPO_ROOT = Path(__file__).resolve().parents[1] + + +def test_uv_lock_requires_macos_x86_64_environment() -> None: + pyproject = tomllib.loads((REPO_ROOT / "pyproject.toml").read_text()) + + uv_config = pyproject["tool"]["uv"] + + assert "sys_platform == 'darwin' and platform_machine == 'x86_64'" in ( + uv_config["required-environments"] + ) + assert "torch; sys_platform != 'darwin' or platform_machine != 'x86_64'" in ( + uv_config["override-dependencies"] + ) diff --git a/uv.lock b/uv.lock index 8dc040d..4197aa6 100644 --- a/uv.lock +++ b/uv.lock @@ -9,6 +9,12 @@ resolution-markers = [ "python_full_version < '3.14' and sys_platform == 'emscripten'", "python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", ] +required-markers = [ + "platform_machine == 'x86_64' and sys_platform == 'darwin'", +] + +[manifest] +overrides = [{ name = "torch", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }] [[package]] name = "accessible-pygments" @@ -955,7 +961,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "scipy" }, - { name = "torch" }, + { name = "torch", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/2a/fe/3929e39c6e30b7b22730a2021cc108f00d0da611b48854eb67b0d49be94e/l0_python-0.6.1.tar.gz", hash = "sha256:8fbea10059813ef408255c93dcd5a61dfdd893612efb7e62c934a93f5701d45a", size = 37782, upload-time = "2026-02-25T16:59:39.84Z" } wheels = [ @@ -1101,7 +1107,7 @@ dependencies = [ { name = "numpy" }, { name = "optuna" }, { name = "pandas" }, - { name = "torch" }, + { name = "torch", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b7/11/dc170c33ab42a1c6437c9094696c149ec780161a2cdb2630b6a70c8234dc/microcalibrate-0.22.0.tar.gz", hash = "sha256:360eb241156f3731902a9aa73aea1d39437d97a6a40db1ddd0ab85ef636596ea", size = 216545, upload-time = "2026-04-18T15:21:59.591Z" } @@ -1163,7 +1169,7 @@ dependencies = [ { name = "quantile-forest" }, { name = "scikit-learn" }, { name = "scipy" }, - { name = "torch" }, + { name = "torch", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] [package.optional-dependencies]