python3Packages.wandb: 0.25.1 -> 0.26.0

Diff: https://github.com/wandb/wandb/compare/v0.25.1...v0.26.0

Changelog: https://github.com/wandb/wandb/raw/0.26.0/CHANGELOG.md
This commit is contained in:
Gaetan Lepage
2026-04-18 09:41:19 +00:00
parent 4a981b1169
commit bd33f7b4dd
@@ -10,13 +10,12 @@
writableTmpDirAsHomeHook,
versionCheckHook,
## gpu-stats
## wandb-xpu
rustPlatform,
## wandb
buildPythonPackage,
replaceVars,
fetchpatch,
# build-system
hatchling,
@@ -76,26 +75,29 @@
}:
let
version = "0.25.1";
version = "0.26.0";
src = fetchFromGitHub {
owner = "wandb";
repo = "wandb";
tag = "v${version}";
hash = "sha256-jrHj+dNW/eUMcqT5XJbiAz1tlviVBhdtroJ8dA7GBr4=";
hash = "sha256-pN2vfrexu87202WLes4eIbkU1aVuLpqR676f7AxokT8=";
};
gpu-stats = rustPlatform.buildRustPackage {
pname = "gpu-stats";
version = "0.6.0";
wandb-xpu = rustPlatform.buildRustPackage {
pname = "wandb-xpu";
version = "0.7.0";
inherit src;
sourceRoot = "${src.name}/gpu_stats";
sourceRoot = "${src.name}/xpu";
cargoHash = "sha256-yzvXJYkQTNOScOI3yfVBH6IGZzcFduuXqW3pI5hEZGw=";
cargoHash = "sha256-h5kttUU1KsP+IaXTfqfgRf+7cooRZQzi5i5NmQ9YEA0=";
checkFlags = [
# fails in sandbox
"--skip=gpu_amd::tests::test_gpu_amd_new"
# tries to download libtpu wheel from PyPI
"--skip=tpu_libtpu::tests::test_libtpu_sdk"
];
nativeInstallCheckInputs = [
@@ -104,23 +106,50 @@ let
doInstallCheck = true;
meta = {
mainProgram = "gpu_stats";
mainProgram = "wandb-xpu";
};
};
inherit (stdenv.hostPlatform.extensions) sharedLibrary;
libRustParquet = "librust_parquet_ffi${sharedLibrary}";
parquet-rust-wrapper = rustPlatform.buildRustPackage {
pname = "arrow-rs-wrapper";
version = "0.1.0";
inherit src;
sourceRoot = "${src.name}/parquet-rust-wrapper";
cargoHash = "sha256-fOq1KoWJEDZnchE6ooTmUQZ3DLdlbr2/aYl1qbF2GH4=";
# The original build script renames the library:
# https://github.com/wandb/wandb/blob/v0.26.0/parquet-rust-wrapper/build.sh#L37-L68
postInstall = ''
mv $out/lib/libarrow_rs_wrapper${sharedLibrary} $out/lib/${libRustParquet}
'';
};
wandb-core = buildGoModule {
pname = "wandb-core";
inherit src version;
sourceRoot = "${src.name}/core";
# hardcode the `gpu_stats` binary path.
postPatch = ''
substituteInPlace internal/monitor/gpuresourcemanager.go \
--replace-fail \
'cmdPath, err := getGPUCollectorCmdPath()' \
'cmdPath, err := "${lib.getExe gpu-stats}", error(nil)'
'';
postPatch =
# hardcode the `wandb-xpu` binary path.
''
substituteInPlace internal/monitor/xpuresourcemanager.go \
--replace-fail \
'cmdPath, err := getXPUCmdPath()' \
'cmdPath, err := "${lib.getExe wandb-xpu}", error(nil)'
''
# hardcode the `parquet-rust-wrapper` library path.
+ ''
substituteInPlace internal/runhistoryreader/parquet/ffi/rustarrowreader.go \
--replace-fail \
"${libRustParquet}" \
"${lib.getLib parquet-rust-wrapper}/lib/${libRustParquet}"
'';
vendorHash = null;
@@ -163,20 +192,14 @@ buildPythonPackage (finalAttrs: {
(replaceVars ./hardcode-git-path.patch {
git = lib.getExe gitMinimal;
})
# https://github.com/wandb/wandb/pull/11552
(fetchpatch {
name = "add-protobuf-7-compatibility";
url = "https://github.com/wandb/wandb/commit/4ef09f3dd1ee408eb9194ea8b7feea2b1128839c.patch";
hash = "sha256-6weMJI51cWXz2mCxOGWYGrh0QCxtMGqz6HAVRF5b1xs=";
})
];
postPatch =
# Prevent hatch from building wandb-core
# Prevent hatch from building wandb-core and arrow-rs-wrapper
''
substituteInPlace hatch_build.py \
--replace-fail "artifacts.extend(self._build_wandb_core())" ""
--replace-fail "artifacts.extend(self._build_wandb_core())" "" \
--replace-fail "artifacts.extend(self._build_arrow_rs_wrapper())" ""
''
# Hard-code the path to the `wandb-core` binary in the code.
+ ''
@@ -187,11 +210,11 @@ buildPythonPackage (finalAttrs: {
'';
env = {
# Prevent the install script to try building and embedding the `gpu_stats` and `wandb-core`
# binaries in the wheel.
# Their path have been patched accordingly in the `wandb-core` and `wanbd` source codes.
# Prevent the install script from trying to build and embed native binaries in the wheel.
# Their paths have been patched accordingly in the `wandb-core` and `wandb` source codes.
# https://github.com/wandb/wandb/blob/v0.18.5/hatch_build.py#L37-L47
WANDB_BUILD_SKIP_GPU_STATS = true;
WANDB_BUILD_SKIP_WANDB_XPU = true;
WANDB_BUILD_SKIP_ORJSON = true;
WANDB_BUILD_UNIVERSAL = true;
};
@@ -199,11 +222,6 @@ buildPythonPackage (finalAttrs: {
hatchling
];
# Protobuf 7 is not compatible with the current version of wandb
pythonRelaxDeps = [
"protobuf"
];
dependencies = [
click
gitpython
@@ -281,6 +299,9 @@ buildPythonPackage (finalAttrs: {
# PermissionError: unable to write to .cache/wandb/artifacts
"tests/unit_tests/test_artifacts/test_wandb_artifacts.py"
# Requires kfp which is not packaged
"tests/unit_tests/test_kfp.py"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# Breaks in sandbox: "Timed out waiting for wandb service to start"
@@ -400,12 +421,20 @@ buildPythonPackage (finalAttrs: {
"test_watch_parameters_torch_jit"
];
passthru = {
inherit
wandb-core
wandb-xpu
parquet-rust-wrapper
;
};
meta = {
description = "CLI and library for interacting with the Weights and Biases API";
homepage = "https://github.com/wandb/wandb";
changelog = "https://github.com/wandb/wandb/raw/${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ samuela ];
broken = gpu-stats.meta.broken || wandb-core.meta.broken;
broken = wandb-xpu.meta.broken || wandb-core.meta.broken;
};
})