Unverified Commit 4306b90a authored by Yt's avatar Yt Committed by GitHub
Browse files

python3Packages.wandb: 0.25.1 -> 0.26.0 (#509750)

parents 01ca72d3 bd33f7b4
Loading
Loading
Loading
Loading
+65 −36
Original line number Diff line number Diff line
@@ -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,22 +106,49 @@ 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 \
    postPatch =
      # hardcode the `wandb-xpu` binary path.
      ''
        substituteInPlace internal/monitor/xpuresourcemanager.go \
          --replace-fail \
          'cmdPath, err := getGPUCollectorCmdPath()' \
          'cmdPath, err := "${lib.getExe gpu-stats}", error(nil)'
            '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;
  };
})