Repository: conda-forge/zarr-feedstock
Pull request #127: Update to 2.18.5
Author: login: jakirkham
Labels: name: automerge
description: Merge the PR when CI passes
Created: 2025-04-10T04:59:59Z | Merged: 2025-04-10T05:07:39Z

<!--
Thank you for your pull request.
Below are a few things we ask you kindly to self-check before getting a review. Remove checks that are not relevant.
-->
Checklist
* [x] Used a [personal fork of the feedstock to propose changes](https://conda-forge.org/docs/maintainer/updating_pkgs.html#forking-and-pull-requests)
* [ ] Bumped the build number (if the version is unchanged)
* [x] Reset the build number to `0` (if the version changed)
* [x] [Re-rendered]( https://conda-forge.org/docs/maintainer/updating_pkgs.html#rerendering-feedstocks ) with the latest `conda-smithy` (Use the phrase <code>@<space/>conda-forge-admin, please rerender</code> in a comment in this PR for automated rerendering)
* [x] Ensured the license file is being packaged.

<!--
Please note any issues this fixes using [closing keywords]( https://help.github.com/articles/closing-issues-using-keywords/ ):
-->

<!--
Please add any other relevant info below:
-->



Diff:
diff --git a/.gitignore b/.gitignore
index 179afe5..47b5408 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,8 @@
 /build_artifacts
 
 *.pyc
+
+# Rattler-build's artifacts are in `output` when not specifying anything.
+/output
+# Pixi's configuration
+.pixi
diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh
index 00f377a..6ee04aa 100755
--- a/.scripts/run_docker_build.sh
+++ b/.scripts/run_docker_build.sh
@@ -12,7 +12,7 @@ source .scripts/logging_utils.sh
 set -xeo pipefail
 
 THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )"
-PROVIDER_DIR="$(basename $THISDIR)"
+PROVIDER_DIR="$(basename "$THISDIR")"
 
 FEEDSTOCK_ROOT="$( cd "$( dirname "$0" )/.." >/dev/null && pwd )"
 RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe"
diff --git a/build-locally.py b/build-locally.py
index c4a56c6..02c2374 100755
--- a/build-locally.py
+++ b/build-locally.py
@@ -10,6 +10,7 @@
 import os
 import platform
 import subprocess
+import sys
 from argparse import ArgumentParser
 
 
@@ -44,10 +45,19 @@ def run_osx_build(ns):
     subprocess.check_call([script])
 
 
+def run_win_build(ns):
+    script = ".scripts/run_win_build.bat"
+    subprocess.check_call(["cmd", "/D", "/Q", "/C", f"CALL {script}"])
+
+
 def verify_config(ns):
+    choices_filter = ns.filter or "*"
     valid_configs = {
-        os.path.basename(f)[:-5] for f in glob.glob(".ci_support/*.yaml")
+        os.path.basename(f)[:-5]
+        for f in glob.glob(f".ci_support/{choices_filter}.yaml")
     }
+    if choices_filter != "*":
+        print(f"filtering for '{choices_filter}.yaml' configs")
     print(f"valid configs are {valid_configs}")
     if ns.config in valid_configs:
         print("Using " + ns.config + " configuration")
@@ -60,30 +70,37 @@ def verify_config(ns):
         selections = list(enumerate(sorted(valid_configs), 1))
         for i, c in selections:
             print(f"{i}. {c}")
-        s = input("\n> ")
+        try:
+            s = input("\n> ")
+        except KeyboardInterrupt:
+            print("\nno option selected, bye!", file=sys.stderr)
+            sys.exit(1)
         idx = int(s) - 1
         ns.config = selections[idx][1]
         print(f"selected {ns.config}")
     else:
         raise ValueError("config " + ns.config + " is not valid")
-    # Remove the following, as implemented
-    if ns.config.startswith("win"):
-        raise ValueError(
-            f"only Linux/macOS configs currently supported, got {ns.config}"
+    if (
+        ns.config.startswith("osx")
+        and platform.system() == "Darwin"
+        and not os.environ.get("OSX_SDK_DIR")
+    ):
+        raise RuntimeError(
+            "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' "
+            "to download the SDK automatically to '$PWD/SDKs/MacOSX<ver>.sdk'. "
+            "Note: OSX_SDK_DIR must be set to an absolute path. "
+            "Setting this variable implies agreement to the licensing terms of the SDK by Apple."
         )
-    elif ns.config.startswith("osx"):
-        if "OSX_SDK_DIR" not in os.environ:
-            raise RuntimeError(
-                "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' "
-                "to download the SDK automatically to '$PWD/SDKs/MacOSX<ver>.sdk'. "
-                "Note: OSX_SDK_DIR must be set to an absolute path. "
-                "Setting this variable implies agreement to the licensing terms of the SDK by Apple."
-            )
 
 
 def main(args=None):
     p = ArgumentParser("build-locally")
     p.add_argument("config", default=None, nargs="?")
+    p.add_argument(
+        "--filter",
+        default=None,
+        help="Glob string to filter which build choices are presented in interactive mode.",
+    )
     p.add_argument(
         "--debug",
         action="store_true",
@@ -104,6 +121,8 @@ def main(args=None):
             run_docker_build(ns)
         elif ns.config.startswith("osx"):
             run_osx_build(ns)
+        elif ns.config.startswith("win"):
+            run_win_build(ns)
     finally:
         recipe_license_file = os.path.join(
             "recipe", "recipe-scripts-license.txt"
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index fc3597e..b14785f 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -1,7 +1,7 @@
 {% set python_min = "3.11" %}
 {% set name = "zarr" %}
-{% set version = "2.18.4" %}
-{% set sha256 = "37790ededd0683ae1abe6ff90aa16c22543b3436810060f53d72c15e910c24bb" %}
+{% set version = "2.18.5" %}
+{% set sha256 = "c965bf25b5825fcfcf339bda6c329a56c90997df1232435e27b64aa136f142c7" %}
 
 package:
   name: {{ name|lower }}
@@ -20,14 +20,14 @@ requirements:
   host:
     - python {{ python_min }}
     - pip
-    - setuptools >=64.0.0
-    - setuptools-scm >1.5.4
+    - setuptools >=64
+    - setuptools-scm >8
   run:
     - python >={{ python_min }}
     - asciitree
     - numpy >=1.24
     - fasteners
-    - numcodecs >=0.10.0,!=0.14.0,!=0.14.1
+    - numcodecs >=0.10.0,!=0.14.0,!=0.14.1,<0.16.0a0
   run_constrained:
     # Add `zarr[jupyter]` dependencies to `run_constrained`.
     # That way the correct versions of these will be installed


Reviews:
user: login: jakirkham
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-10T05:03:50Z
user: login: jakirkham
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-10T05:26:08Z

Review comments:
diff_hunk: @@ -20,14 +20,14 @@ requirements:
   host:
     - python {{ python_min }}
     - pip
-    - setuptools >=64.0.0
-    - setuptools-scm >1.5.4
+    - setuptools >=64
+    - setuptools-scm >8
   run:
     - python >={{ python_min }}
     - asciitree
     - numpy >=1.24
     - fasteners
-    - numcodecs >=0.10.0,!=0.14.0,!=0.14.1
+    - numcodecs >=0.10.0,!=0.14.0,!=0.14.1,<0.16.0a0
path: recipe/meta.yaml
user: login: jakirkham
body: Adding the upperbound to Numcodecs to address issue: https://github.com/zarr-developers/zarr-python/issues/2963
created_at: 2025-04-10T05:03:50Z
author_association: MEMBER
diff_hunk: @@ -20,14 +20,14 @@ requirements:
   host:
     - python {{ python_min }}
     - pip
-    - setuptools >=64.0.0
-    - setuptools-scm >1.5.4
+    - setuptools >=64
+    - setuptools-scm >8
   run:
     - python >={{ python_min }}
     - asciitree
     - numpy >=1.24
     - fasteners
-    - numcodecs >=0.10.0,!=0.14.0,!=0.14.1
+    - numcodecs >=0.10.0,!=0.14.0,!=0.14.1,<0.16.0a0
path: recipe/meta.yaml
user: login: jakirkham
body: Also added a repodata patch for older Zarr 2 versions with PR: https://github.com/conda-forge/conda-forge-repodata-patches-feedstock/pull/1009
created_at: 2025-04-10T05:26:08Z
author_association: MEMBER

PR comments:
user: login: conda-forge-admin
created_at: 2025-04-10T05:01:35Z
body: Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (```recipe/meta.yaml```) and found it was in an excellent condition.

author_association: CONTRIBUTOR
user: login: conda-forge-admin
created_at: 2025-04-10T05:07:42Z
body: Hi! This is the friendly conda-forge automerge bot!

I considered the following status checks when analyzing this PR:
 - **linter**: passed
 - **azure**: passed


Thus the PR was passing and merged! Have a great day!
author_association: CONTRIBUTOR