From eb61f9729c0ecec4634ea7676e822d67174b0b79 Mon Sep 17 00:00:00 2001 From: Brendan Collins Date: Mon, 15 Jun 2026 12:25:46 -0700 Subject: [PATCH 1/2] Scope 'performance' labeler to benchmarked modules (#3356) The labeler matched xrspatial/**/*.py, so nearly every code PR got the 'performance' label. That label triggers the ASV benchmark job in benchmarks.yml, so the benchmarks ran on almost every PR. Limit the label to the eight modules the PR-time benchmark filter actually measures (Slope, Proximity, Zonal, CostDistance, Focal, Rescale/Standardize, Diffusion, Dasymetric). --- .github/labeler.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 072b65df5..33a77a385 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,6 +1,18 @@ +# Applying the `performance` label triggers the ASV benchmark job in +# benchmarks.yml. The old `xrspatial/**/*.py` glob matched almost every +# source file, so the benchmarks ran on nearly every PR. Limit the label to +# the modules the PR-time benchmarks actually measure (the asv `continuous` +# filter in benchmarks.yml: Slope, Proximity, Zonal, CostDistance, Focal, +# Rescale/Standardize, Diffusion, Dasymetric). Add a module here when it +# gains a benchmark in that filter. performance: - changed-files: - any-glob-to-any-file: - - 'xrspatial/*.py' - - 'xrspatial/**/*.py' - - '!xrspatial/tests/**' + - 'xrspatial/slope.py' + - 'xrspatial/proximity.py' + - 'xrspatial/zonal.py' + - 'xrspatial/cost_distance.py' + - 'xrspatial/focal.py' + - 'xrspatial/normalize.py' + - 'xrspatial/diffusion.py' + - 'xrspatial/dasymetric.py' From 5c3dd7ef29260d75d36bd876b5b8739694d2529a Mon Sep 17 00:00:00 2001 From: Brendan Collins Date: Mon, 15 Jun 2026 12:27:27 -0700 Subject: [PATCH 2/2] Add convolution.py and geodesic.py to performance labeler (#3356) Address review: the Focal and Slope benchmarks run through these shared kernels, so a regression in them should trigger the benchmark job. utils.py stays out to avoid re-broadening the label. --- .github/labeler.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 33a77a385..10bad1e9a 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -3,8 +3,12 @@ # source file, so the benchmarks ran on nearly every PR. Limit the label to # the modules the PR-time benchmarks actually measure (the asv `continuous` # filter in benchmarks.yml: Slope, Proximity, Zonal, CostDistance, Focal, -# Rescale/Standardize, Diffusion, Dasymetric). Add a module here when it -# gains a benchmark in that filter. +# Rescale/Standardize, Diffusion, Dasymetric), plus the hot compute kernels +# those benchmarks run through (convolution.py drives Focal; geodesic.py +# drives Slope). utils.py is deliberately left out: it is shared infra +# touched by almost every PR, so including it would re-broaden the label +# back toward the original problem. Add a module here when it gains a +# benchmark in that filter or becomes a kernel the benchmarks exercise. performance: - changed-files: - any-glob-to-any-file: @@ -16,3 +20,5 @@ performance: - 'xrspatial/normalize.py' - 'xrspatial/diffusion.py' - 'xrspatial/dasymetric.py' + - 'xrspatial/convolution.py' + - 'xrspatial/geodesic.py'