Skip to content

feat: add sphinx-sitemap dependency and configuration for sitemap generation - #24332

Merged
Jefffrey merged 52 commits into
apache:mainfrom
imtherealnaska:sitemap-23258
Aug 16, 2026
Merged

feat: add sphinx-sitemap dependency and configuration for sitemap generation#24332
Jefffrey merged 52 commits into
apache:mainfrom
imtherealnaska:sitemap-23258

Conversation

@imtherealnaska

@imtherealnaska imtherealnaska commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

What changes are included in this PR?

There are 2 PR's for this issue. This one contains the changes for sitemap.xml

  • added the sphinx-sitemap build dependency.
  • enabled the sphinx_sitemap extension, set html_baseurl, and set sitemap_url_scheme = "{link}"

Are these changes tested?

Yes. Tested by building the docs and verifying the files getting generated in the build/

Are there any user-facing changes?

No.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Aug 13, 2026
@imtherealnaska
imtherealnaska marked this pull request as ready for review August 13, 2026 17:02
@codecov-commenter

codecov-commenter commented Aug 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.22%. Comparing base (3359eab) to head (d52cd98).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #24332      +/-   ##
==========================================
- Coverage   81.23%   81.22%   -0.01%     
==========================================
  Files        1111     1111              
  Lines      390012   390012              
  Branches   390012   390012              
==========================================
- Hits       316815   316794      -21     
- Misses      54578    54600      +22     
+ Partials    18619    18618       -1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Jefffrey Jefffrey left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be good once merge conflicts are resolved

Dandandan and others added 23 commits August 16, 2026 13:34
## Which issue does this PR close?

Adresses: apache#13814

First of four; see also apache#24326 (`datafusion-session`), apache#24329
(`datafusion` core)
and apache#24330 (`datafusion-catalog-listing`). All independent — different
crates, so
they can merge in any order.

## Rationale for this change

`datafusion-catalog` is only 4.9k lines of source, but it takes **42s**
of a cold
`cargo build -p datafusion` (measured with `cargo build --timings`).

`-Zself-profile` says ~90% of the crate's compile time is
`evaluate_obligation`,
and ~99% of that is proving `Send`/`Sync`:

| trait | time | goals |
|---|---|---|
| `Send` | 4.04s | 8245 |
| `Sync` | 3.97s | 8195 |
| everything else | 0.03s | 7355 |
51.8s of trait
solving:

| impl | trait solving |
|---|---|
| `MemTable` | 13.7s |
| `StreamTable` | 9.0s |
| `CteWorkTable` | 8.9s |
| `StreamWrite` | 6.9s |
| `StreamTableFactory` | 4.5s |
| `ViewTable` | 4.4s |
| `StreamingTable` | 4.4s |

## What changes are included in this PR?

For those impls, the future is now constructed in a small shim function
that has
**no** where-clauses, so its auto-trait obligations are proved in an
empty
`ParamEnv` and get cached globally. The trait method is left as a
hand-written
desugaring of what `#[async_trait]` would have generated, and only
forwards — it
never creates a coroutine of its own, so it does no auto-trait work.



Isolated probe confirming the shape is what matters (5 trivial impls of
a local
`#[async_trait]` trait taking `&[Expr]`, added to this crate):

| variant | crate build | cost of the 5 impls |
|---|---|---|
| no impls (baseline) | 8.31s | — |
| `#[async_trait]` + `async fn` | 11.64s | +3.33s |
| `async fn` delegating body to a boxed helper | 14.28s | +5.97s |
| desugared signature + boxed shim | 8.01s | ~0 |

Note the middle row: moving only the *body* out makes things worse. The
`async fn`
itself has to go, because its arguments are what the future captures.

## Are these changes tested?


The change is mechanical and the compiler checks each rewritten
signature against
the trait declaration.

Interleaved A/B of `cargo rustc -p datafusion-catalog --lib`,
alternating 3 times
so machine drift cancels out:

```
before: 8.08s  7.90s  7.63s
after:  1.77s  1.70s  1.69s
```

`evaluate_obligation` drops from **7.31s to 70ms**, and its goal count
from
25,811 to 14,934. In a full `cargo build -p datafusion` the crate's unit
goes from
42.3s to ~8s; since it sits alone on the critical path, that time comes
straight
off the build's wall clock.

## Are there any user-facing changes?

No. No public signature changes — after macro expansion the trait
methods have the
same signatures as before.



🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
## Which issue does this PR close?

Adresses: apache#13814

Third and largest instance of the problem from apache#24325
(`datafusion-catalog`),
apache#24326 (`datafusion-session`) and apache#24330 (`datafusion-catalog-listing`).
Independent of all of them — different crates, so they can merge in any
order.

## Rationale for this change

`datafusion` core is the last unit of a cold `cargo build -p datafusion`
and
compiles alone, so its cost lands directly on the build's wall clock.
**76% of
its compile time was the trait solver**: `-Zself-profile` reported 75.0s
of
`evaluate_obligation` out of 98.6s total, essentially all of it proving
`Send`/`Sync`.

`#[async_trait]` gives each `async fn` a `where 'life0: 'async_trait,
..`
clause. rustc only serves auto-trait obligations from its **global**
evaluation
cache when the `ParamEnv` is empty, so the `Send`/`Sync` proof for
everything
the returned future captures is redone per method. In this crate the
captured
sets include `SessionState`, `&LogicalPlan` and `ListingTableConfig`,
each of
which reaches a large fraction of the logical-plan type graph.

Grouping the goals by the `Self` type in their `ParamEnv` shows how
concentrated
this was — 14 impls, top 10 = 78% of the total:

| impl | trait solving | | impl | trait solving |
|---|---|---|---|---|
| `ParquetReadOptions` | 7.73s | | `DynamicListTableFactory` | 5.18s |
| `JsonReadOptions` | 7.54s | | `ListingTableFactory` | 4.56s |
| `DefaultPhysicalPlanner` | 7.07s | | `TestTableFactory` | 4.47s |
| `CsvReadOptions` | 6.59s | | `ListingTableConfig` | 4.30s |
| `DataFrameTableProvider` | 5.68s | | `DefaultQueryPlanner` | 4.28s |
| *(trait default bodies)* | 5.37s | | `DefaultTableFactory` | 4.15s |
| | | | `SessionState` | 4.11s |
| | | | `ArrowReadOptions` | 3.72s |

For contrast, in the same compile 31,818 goals with an **empty**
`ParamEnv` cost
0.19s in total — 6µs each, against ~1.3ms for the same kind of goal
under
`async_trait`'s bounds.

## What changes are included in this PR?

**First commit.** Each of those methods becomes the hand-written
desugaring of
`async fn`, which only forwards; the coroutine is built in a shim with
no
where-clauses, so its auto-trait obligations are proved in an empty
`ParamEnv`
and land in the global cache. Method bodies are moved verbatim into
inherent fns.

The `ReadOptions` family (25.6s across four impls, plus the 5.37s
default body)
collapses to a **single** proof: all five impls already delegated to the
`_get_resolved_schema` default body, which now hands the coroutine to a
free
`infer_schema_boxed`. Because that helper is a plain function with no
generics
and no where-clauses, its proof is cached once and shared by every impl.

**Second commit**, from re-profiling after the first. 11.15s of trait
solving
remained, in exactly two places:

1. `ListingTableConfigExt::infer` was still an `async fn` capturing
   `self: ListingTableConfig` (4.37s). It now uses the same shim as
   `infer_options` beside it.
2. `ReadOptions::_get_resolved_schema` still carried `Self: Sync`, which
`#[async_trait]` needed while its body was a coroutine capturing
`&self`.
After the first commit it is neither, so the bound is dead weight — and
it
forced every caller to prove its own type `Sync` structurally, through
arrow's `DataType`/`Schema`, in a non-empty `ParamEnv` (2.1–2.4s each
for
Csv/Json/Parquet; `ArrowReadOptions` was already cheap, having fewer
fields).

Two things worth noting for review:

- `DefaultPhysicalPlanner::create_initial_plan` already used exactly
this shape
(`-> BoxFuture<'a, _>` plus `Box::pin(async move ..)`) — there for
recursion
  rather than for compile time. The idiom is not new to this codebase.
- The second commit **relaxes a bound on a public trait method**.
Nothing in tree
  overrides `_get_resolved_schema` (all five impls only implement
`get_resolved_schema`) and the underscore prefix marks it as internal,
but an
external override written with `#[async_trait]` would generate `Self:
Sync` and
no longer match. Happy to drop that commit if you would rather not touch
it.

One body became eager: `TestTableFactory::create_inner` has no `.await`,
so it is
a plain fn wrapped in `ready(..)`. It builds a `TestTableProvider` and
has no side
effects. Everything that awaits stays lazy —
`Box::pin(self.m_inner(..))` polls
nothing.

## Are these changes tested?

- `cargo test -p datafusion --lib` — 442 passed
- `cargo check -p datafusion --all-targets` — clean (covers core's
integration
  tests and benches, heavy users of these APIs)
- `cargo clippy -p datafusion --lib` — clean
- `cargo doc` with `-D warnings` — clean
- `cargo fmt --check` — clean

The compiler checks each rewritten signature against its trait
declaration, and
every body is moved verbatim.

`cargo rustc -p datafusion --lib` with `-Ztime-passes`, alternated with
the base
so machine drift cancels out:

| | total | `evaluate_obligation` |
|---|---|---|
| base | 88.9s | 75.0s |
| after first commit | 18.6s | 11.15s |
| after second commit | **8.2s** | **234ms** |

234ms over 34,724 goals is 6.7µs each — the same rate as goals that
carry an
empty `ParamEnv`, i.e. the repeated proving is gone rather than merely
reduced.
What remains in this crate is LLVM: 7.6s emitting objects and 4.2s in
LLVM
passes.

An earlier interleaved wall-clock A/B of the first commit alone measured
74.4s/69.9s base against 16.6s/15.5s fixed.

## Are there any user-facing changes?

No, other than the relaxed `Self: Sync` bound described above. No public
signature changes — after macro expansion these methods have the same
signatures
as before.


🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…~4.4x (apache#24330)

## Which issue does this PR close?

Adresses: apache#13814

Fourth and last crate in the family from apache#24325 (`datafusion-catalog`),
apache#24326
(`datafusion-session`) and apache#24329 (`datafusion` core). Independent of
all three —
different crates, so they can merge in any order.

## Rationale for this change

`datafusion-catalog-listing` is 3,013 lines of source but spends
**20.5s** in the
frontend during a cold `cargo build -p datafusion` (`cargo build
--timings`), and
it sits on the critical path between `datafusion-catalog` and
`datafusion` core.

`-Zself-profile` puts 58% of the crate's compile time in
`evaluate_obligation`,
and grouping those goals by the `Self` type in their `ParamEnv` shows
all of it
in one impl:

| `Self` in `ParamEnv` | time | goals |
|---|---|---|
| `ListingTable` | 3.16s | 6,967 |
| *(empty `ParamEnv`)* | 0.04s | 8,443 |

Note the second row — the same kind of goals cost ~5µs each with an
empty
`ParamEnv` against ~450µs here.

The cause is the one from the earlier PRs: `#[async_trait]` gives each
`async fn`
a `where 'life0: 'async_trait, ..` clause, which makes the method's
`ParamEnv`
non-empty, and rustc only serves auto-trait obligations from its
**global**
evaluation cache when the `ParamEnv` is empty. So the `Send`/`Sync`
proof for
everything the future captures is redone per method.

All three async methods in this impl reach `Expr`:

- `scan` takes `&[Expr]`
- `scan_with_args` takes `ScanArgs<'a>`, which holds `&[Expr]`
- `insert_into` keeps `self.options` (`Vec<Vec<SortExpr>>`) live across
an await

so each one pays for a walk of the whole `Expr`/`LogicalPlan` graph.

## What changes are included in this PR?

Each method is now the hand-written desugaring of `async fn` and only
forwards;
the coroutine is built in a shim with no where-clauses, so its proofs
land in the
global cache. Bodies are moved verbatim into inherent fns and all three
stay
`async`, so nothing is evaluated any earlier than before —
`Box::pin(self.m_inner(..))` polls nothing.

Following the review on apache#24326, I measured each method's marginal
contribution
first, by reverting one at a time (together with its helpers) from the
all-converted state:

| state | crate build | `evaluate_obligation` |
|---|---|---|
| all three converted | 0.931s | 34.9ms |
| revert `insert_into` | 1.866s | 1.01s |
| revert `scan` | 1.943s | 1.05s |
| revert `scan_with_args` | 2.118s | 1.17s |
| none converted (base) | 4.201s | 3.25s |

Unlike apache#24326 — where two of the seven bodies I first converted turned
out to
gain nothing — all three pull their weight here. Converting all of them
leaves no
coroutine in the impl at all, so the graph is never walked in a
non-empty
`ParamEnv`, which is why the total drops by two orders of magnitude
rather than
by a third.

## Are these changes tested?

- `cargo test -p datafusion-catalog-listing` — 18 + 7 passed
- `cargo test -p datafusion --lib` — 442 passed
- `cargo check -p datafusion --all-targets` — clean (`ListingTable` is
used
  heavily by core's integration tests and benches)
- `cargo clippy -p datafusion-catalog-listing --all-targets` — clean
- `cargo fmt --check` — clean

The compiler checks each rewritten signature against the trait
declaration, and
every body is moved verbatim.

Interleaved A/B of `cargo rustc -p datafusion-catalog-listing --lib`,
alternating
3 times so machine drift cancels out:

```
base: 4.257s  4.189s  4.134s
fix:  0.984s  0.935s  0.980s
```

`evaluate_obligation` drops from 3.25s to 34.7ms.

## Are there any user-facing changes?

No. No public signature changes — after macro expansion these methods
have the
same signatures as before.

### Follow-up

With this, the four crates that made up the serial tail of a cold build
are done.
The general fix remains available and would cover downstream
implementors too:
drop `#[async_trait]` from these traits in favour of an explicit
`BoxFuture`
return with a single lifetime and no where-clauses, so that *every* impl
is cheap
without hand-desugaring. That is a breaking change to public traits, so
it is out
of scope here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
)

## Which issue does this PR close?

Adresses: apache#13814

## Rationale for this change

`datafusion-session` is 1,619 lines of source and spends **18.8s** in
the
frontend during a cold `cargo build -p datafusion` (`cargo build
--timings`) —
11.6ms per line, the worst ratio in the workspace, against
0.09–0.55ms/line for
crates like `datafusion-datasource` or `datafusion-physical-plan`.

`-Zself-profile` puts ~72% of the crate's compile time in
`evaluate_obligation`,
and 98% of that in `Send`/`Sync`.



## What changes are included in this PR?

`TableProvider::{delete_from, update, merge_into}` are one-line
`not_impl_err!`
stubs that nevertheless build a coroutine capturing `Vec<Expr>` / `Expr`
—
proving that coroutine `Send` walks the whole `Expr`/`LogicalPlan` type
graph.

They are now written as the desugaring of `async fn` returning
`ready(..)`, so
no coroutine is created and there is nothing expensive to prove. The
signatures
are exactly what `#[async_trait]` generates — verified against
`-Zunpretty=expanded` output of this crate — so implementors are
unaffected.

I originally converted seven bodies, but measuring each one's marginal
contribution (reverting one at a time; `evaluate_obligation` self time,
all-converted baseline 659ms) showed only the ones taking `Expr` matter:

| method left as `async fn` | trait solving | marginal cost |
|---|---|---|
| `delete_from` | 1.29s | +631ms |
| `update` | 1.30s | +641ms |
| `merge_into` | 1.29s | +631ms |
| `truncate` | 697ms | +38ms |
| `insert_into` | 665ms | ~0 |


## Are these changes tested?


Interleaved A/B of `cargo rustc -p datafusion-session --lib`
```
base: 1.582s  1.576s  1.590s
fix:  0.933s  0.938s  0.932s
```

`evaluate_obligation` drops from 1.28s to 0.646s.

Those are standalone-build numbers. In the feature-unified build this
crate's
frontend is 18.8s rather than ~1.6s (each obligation is several times
dearer
there), so the absolute saving on a real build should be larger — I have
not
measured that directly, since isolating one crate's unit in a full build
is hard
to do without confounding it with machine drift.

## Are there any user-facing changes?

No public signature changes
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…e#24338)

## Which issue does this PR close?

Adresses: apache#13814

Found while profiling compile times for apache#24325 / apache#24326 / apache#24329 /
apache#24330.

## Rationale for this change

`datafusion/core/src/bin/` holds three binaries that regenerate the docs
under
`docs/source/user-guide`: `print_config_docs`,
`print_runtime_config_docs` and
`print_functions_docs`. Cargo auto-discovers them and they have no
`required-features`, so **every `cargo build` links all three** — each
one
~174MB, since each links the whole `datafusion` rlib.

Nothing in normal development uses them. They are run by
`dev/update_config_docs.sh` and `dev/update_function_docs.sh`, and by
the CI job
that checks the committed docs are up to date.

Two places where this shows up:

**Cold builds.** The three binaries link *after* every other unit has
finished,
so they sit on the critical path with nothing to overlap with.
`cargo build --timings` shows them occupying the last **3.5s** of a
`cargo build -p datafusion` (~8.8s of CPU), after the last library unit
completes.

**The tightest inner loop** — touch a file in core, rebuild. All three
are
relinked every time:

```
before: 3.0s  2.4s
after:  1.3s  1.1s
```

## What changes are included in this PR?

The three binaries move behind a new non-default `docs_generation`
feature, and
the two `dev/` scripts pass `--features docs_generation`.

Using `required-features` means declaring the `[[bin]]` targets
explicitly, since
auto-discovered targets cannot carry it.

## Are these changes tested?

- `cargo build -p datafusion` no longer produces the three binaries
- `cargo build -p datafusion --features docs_generation` does
- `./dev/update_config_docs.sh` still regenerates
  `docs/source/user-guide/configs.md` byte-identically (empty `git diff`
  afterwards), which is what the CI doc check compares

`dev/update_function_docs.sh` uses the same invocation pattern and all
three of
its call sites were updated; CI exercises both scripts.

## Are there any user-facing changes?

The three binaries are no longer built by a default `cargo build`.
Anyone who
ran them directly needs `--features docs_generation` — same as the
`dev/` scripts
now do. No library API changes.

If you would rather these lived outside the published crate altogether,
moving
them to a small non-published `dev/` crate would have the same effect on
build
times; I went with the smaller change.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…ache#24339)

## Which issue does this PR close?

Adresses: apache#13814

Found while profiling compile times for apache#24325 / apache#24326 / apache#24329 /
apache#24330,
which removed the trait-solving cost from the four crates on the
critical path
and left LLVM as the dominant remaining cost.

## Rationale for this change

`dev` is the profile behind every `cargo build` and `cargo test`, so its
debug
info is generated over and over. `debug = "line-tables-only"` keeps file
and line
numbers — panics and `RUST_BACKTRACE` output stay just as useful — and
drops the
variable-level DWARF that only an interactive debugger consumes.

Measured per crate, **interleaved** with the baseline so machine drift
cancels
out. The flag is passed to the crate under test only, so cached
dependency
artifacts stay valid and nothing else moves between the two
measurements:

| crate | `debug = 2` | `line-tables-only` | |
|---|---|---|---|
| `datafusion-physical-plan` | 8.89s | 7.43s | −16% |
| `datafusion-functions-aggregate` | 5.86s | 4.63s | −21% |
| `datafusion-physical-expr` | 4.57s | 3.59s | −21% |
| `datafusion-functions` | 4.64s | 4.04s | −13% |
| `datafusion-expr` | 4.54s | 3.57s | −21% |
| `datafusion-functions-nested` | 4.37s | 3.06s | −30% |
| `datafusion-optimizer` | 3.91s | 3.12s | −20% |
| `datafusion-common` | 3.73s | 3.10s | −17% |
| `datafusion-sql` | 3.57s | 2.43s | −32% |
| `datafusion-datasource-parquet` | 3.27s | 2.44s | −25% |
| `datafusion-datasource` | 1.90s | 1.42s | −25% |
| `datafusion-physical-optimizer` | 1.22s | 0.99s | −19% |
| **sum** | **50.5s** | **39.8s** | **−21%** |

The saving is codegen-side, as you would expect: `datafusion-catalog`,
which
spends its time in the trait solver rather than in LLVM, moves only 7.4s
→ 7.0s.

Artifacts shrink as well — `libdatafusion_physical_plan.rlib` goes from
**141MB
to 100MB**.

## What changes are included in this PR?

One setting on `[profile.dev]`, plus an update to the profile
documentation block
above it, which currently advertises "full debug info" for `dev`.

## Are these changes tested?


## Are there any user-facing changes?

For anyone stepping through DataFusion in a debugger, local variable
inspection
needs `CARGO_PROFILE_DEV_DEBUG=2 cargo build` (or a local override in
`.cargo/config.toml`); the comment in `Cargo.toml` says so. Everything
else —
panic locations, backtraces, `#[test]` failures — is unchanged.


🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…oin (apache#24336)

## Which issue does this PR close?

- Closes apache#24335.

## Rationale for this change

A `RIGHT`/`FULL` `PiecewiseMergeJoin` with a range predicate drops an
unmatched right-side row whose join key is `NULL`. A `NULL` key never
matches (`NULL < x` is UNKNOWN), so in a `RIGHT`/`FULL` join the row is
unmatched and must still be emitted with NULLs on the left — but
`PiecewiseMergeJoinExec` omits it, diverging from `NestedLoopJoin`.

```sql
create table l(v int) as values (5);
create table r(v int) as values (10), (NULL);
select l.v, r.v from l right join r on l.v < r.v;   -- drops (NULL, NULL)
```

Root cause: `resolve_classic_join` starts the match scan past the
streamed side's `NULL`-keyed rows (they sort to the front under
`nulls_first`). Those rows are never revisited, so for `Right`/`Full`
they were never added to `unmatched_indices` and got dropped.

## What changes are included in this PR?

- In `resolve_classic_join`, when skipping the streamed side's leading
`NULL`-key rows, record them as unmatched for `Right`/`Full` joins so
they are emitted (with NULLs on the buffered side).

## Are these changes tested?

Yes.

- Regression test in `pwmj.slt`: a `RIGHT JOIN` over the existing
`null_join_*` tables now emits the `(NULL, NULL)` row. The test fails on
`main` (the row is dropped) and passes with this change.
- Verified more broadly with a differential fuzz against
`NestedLoopJoin` (same SQL, `enable_piecewise_merge_join` on vs off):
1200 checks over random `RIGHT JOIN` inputs with `<`/`<=`/`>`/`>=` and
high right-side NULL density, 0 mismatches.

## Are there any user-facing changes?

`RIGHT`/`FULL` range joins via `PiecewiseMergeJoin` (behind
`enable_piecewise_merge_join`, default off) now return unmatched right
rows with `NULL` keys, matching `NestedLoopJoin`. No API changes.
…ter skip (apache#24328)

## Which issue does this PR close?

- Part of apache#23696 — a benchmark that mechanistically exercises the per-RG
fully-matched `RowFilter` skip.

## Rationale for this change

apache#23696 adds a per-row-group fully-matched `RowFilter` skip, but **none
of the existing benchmarks exercise it**:

- `sort_tpch` / `tpch` don't enable `pushdown_filters` by default, so
there is no `RowFilter` to skip;
- ClickBench's `URL LIKE …` / equality predicates rarely make a row
group's min/max fall entirely inside the satisfying range, so
fully-matched RGs are rare.

As raised in review (we should verify the optimization improves
something mechanistically, otherwise add a benchmark first), this adds a
suite that **necessarily** triggers the skip.

## What changes are included in this PR?

A new `sql_benchmarks/parquet_row_filter_skip/` suite:

- The **load SQL** enables `pushdown_filters` and `COPY`s a clustered
Parquet file — a fixed-width, zero-padded, monotonically increasing
string key (`skey`) so each row group holds a disjoint, sorted range —
plus 14 payload columns.
- The **query** applies a low-selectivity range filter (`skey >=
'0000100000'`, `skey` not projected). The first row group straddles the
threshold; every later RG is fully matched by statistics, so the per-row
`RowFilter` is skipped on the fully-matched run (and `skey` isn't
decoded there).
- `bench.sh` integration: `./bench.sh run parquet_row_filter_skip`, data
generated inline by the load SQL. Knobs: `PRED_ROWS` (row count),
`RG_SIZE` (parquet row-group size).

## Are these changes tested?

Smoke-tested locally via `cargo bench --bench sql -- --test`.

Local A/B (main vs apache#23696, 10M rows / 10 RGs / `skey >= '0000100000'`):

- **9 of 10 row groups fully matched** →
`row_filter_skipped_fully_matched=9`;
- **~18% faster** with the optimization (main ~0.143s → branch ~0.117s);
an int64-key variant is ~12%.

Once this lands, `run benchmark parquet_row_filter_skip` will compare
any PR (e.g. apache#23696) against `main` in CI.

## Are there any user-facing changes?

No — benchmark only.

---------

Co-authored-by: Claude <noreply@anthropic.com>
…/actions/setup-macos-aarch64-builder (apache#24307)

Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from
2.8.1 to 2.9.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/swatinem/rust-cache/releases">Swatinem/rust-cache's
releases</a>.</em></p>
<blockquote>
<h2>v2.9.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Typofix by <a
href="https://github.com/23Skidoo"><code>@​23Skidoo</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/316">Swatinem/rust-cache#316</a></li>
<li>fix: include target names in build/ and .fingerprint/ cleanup by <a
href="https://github.com/eitsupi"><code>@​eitsupi</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/317">Swatinem/rust-cache#317</a></li>
<li>fix: include cdylib/rlib/dylib/staticlib targets in build and
fingerprint cleanup by <a
href="https://github.com/eitsupi"><code>@​eitsupi</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/320">Swatinem/rust-cache#320</a></li>
<li>Scan content of <code>$CARGO_HOME/bin</code> on restore instead of
relying on <code>cargo install</code> metadata by <a
href="https://github.com/clechasseur"><code>@​clechasseur</code></a> in
<a
href="https://redirect.github.com/Swatinem/rust-cache/pull/325">Swatinem/rust-cache#325</a></li>
<li>docs: Update checkout action version to latest by <a
href="https://github.com/sondrelg"><code>@​sondrelg</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/345">Swatinem/rust-cache#345</a></li>
<li>Fix Windows cache path validation after Rollup migration by <a
href="https://github.com/eitsupi"><code>@​eitsupi</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/355">Swatinem/rust-cache#355</a></li>
<li>fix: support Cargo V2 build dir layout by <a
href="https://github.com/claytonwramsey"><code>@​claytonwramsey</code></a>
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/371">Swatinem/rust-cache#371</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/23Skidoo"><code>@​23Skidoo</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/316">Swatinem/rust-cache#316</a></li>
<li><a href="https://github.com/eitsupi"><code>@​eitsupi</code></a> made
their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/317">Swatinem/rust-cache#317</a></li>
<li><a
href="https://github.com/clechasseur"><code>@​clechasseur</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/325">Swatinem/rust-cache#325</a></li>
<li><a href="https://github.com/sondrelg"><code>@​sondrelg</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/345">Swatinem/rust-cache#345</a></li>
<li><a
href="https://github.com/claytonwramsey"><code>@​claytonwramsey</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/371">Swatinem/rust-cache#371</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Swatinem/rust-cache/compare/v2.9.1...v2.9.2">https://github.com/Swatinem/rust-cache/compare/v2.9.1...v2.9.2</a></p>
<h2>v2.9.1</h2>
<p>Fix regression in hash calculation</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Swatinem/rust-cache/compare/v2.9.0...v2.9.1">https://github.com/Swatinem/rust-cache/compare/v2.9.0...v2.9.1</a></p>
<h2>v2.9.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add support for running rust-cache commands from within a Nix shell
by <a href="https://github.com/marc0246"><code>@​marc0246</code></a> in
<a
href="https://redirect.github.com/Swatinem/rust-cache/pull/290">Swatinem/rust-cache#290</a></li>
<li>Bump taiki-e/install-action from 2.62.57 to 2.62.60 in the actions
group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/291">Swatinem/rust-cache#291</a></li>
<li>Bump the actions group across 1 directory with 5 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/296">Swatinem/rust-cache#296</a></li>
<li>Bump the prd-major group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/294">Swatinem/rust-cache#294</a></li>
<li>Bump <code>@​types/node</code> from 24.10.1 to 25.0.2 in the
dev-major group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/295">Swatinem/rust-cache#295</a></li>
<li>Consider all installed toolchains in cache key by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/293">Swatinem/rust-cache#293</a></li>
<li>Compare case-insenitively for full cache key match by <a
href="https://github.com/kbriggs"><code>@​kbriggs</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/303">Swatinem/rust-cache#303</a></li>
<li>Migrate to <code>node24</code> runner by <a
href="https://github.com/rhysd"><code>@​rhysd</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/314">Swatinem/rust-cache#314</a></li>
<li>Bump the actions group across 1 directory with 7 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/312">Swatinem/rust-cache#312</a></li>
<li>Bump the prd-minor group across 1 directory with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/307">Swatinem/rust-cache#307</a></li>
<li>Bump <code>@​types/node</code> from 25.0.2 to 25.2.2 in the
dev-minor group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/309">Swatinem/rust-cache#309</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/marc0246"><code>@​marc0246</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/290">Swatinem/rust-cache#290</a></li>
<li><a href="https://github.com/tamird"><code>@​tamird</code></a> made
their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/293">Swatinem/rust-cache#293</a></li>
<li><a href="https://github.com/kbriggs"><code>@​kbriggs</code></a> made
their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/303">Swatinem/rust-cache#303</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Swatinem/rust-cache/compare/v2.8.2...v2.9.0">https://github.com/Swatinem/rust-cache/compare/v2.8.2...v2.9.0</a></p>
<h2>v2.8.2</h2>
<h2>What's Changed</h2>
<ul>
<li>ci: address lint findings, add zizmor workflow by <a
href="https://github.com/woodruffw"><code>@​woodruffw</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/262">Swatinem/rust-cache#262</a></li>
<li>feat: Implement ability to disable adding job ID + rust environment
hashes to cache names by <a
href="https://github.com/Ryan-Brice"><code>@​Ryan-Brice</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/279">Swatinem/rust-cache#279</a></li>
<li>Don't overwrite env for cargo-metadata call by <a
href="https://github.com/MaeIsBad"><code>@​MaeIsBad</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/285">Swatinem/rust-cache#285</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>2.9.2</h2>
<ul>
<li>Fix <code>credentials.toml</code> cleanup</li>
<li>Improvements to cleanup, preserving more valid targets</li>
<li>Improvements to <code>cargo install</code> handling</li>
<li>Correctly sort/dedupe Rust versions</li>
</ul>
<h2>2.9.1</h2>
<ul>
<li>Fix regression in hash calculation</li>
</ul>
<h2>2.9.0</h2>
<ul>
<li>Update to <code>node24</code></li>
<li>Support running from within a <code>nix</code> shell</li>
<li>Consider all installed toolchains for cache key</li>
<li>Use case-insensitive comparison to determine exact cache hit</li>
</ul>
<h2>2.8.2</h2>
<ul>
<li>Don't overwrite env for cargo-metadata call</li>
</ul>
<h2>2.8.1</h2>
<ul>
<li>Set empty <code>CARGO_ENCODED_RUSTFLAGS</code> when retrieving
metadata</li>
<li>Various dependency updates</li>
</ul>
<h2>2.8.0</h2>
<ul>
<li>Add support for <code>warpbuild</code> cache provider</li>
<li>Add new <code>cache-workspace-crates</code> feature</li>
</ul>
<h2>2.7.8</h2>
<ul>
<li>Include CPU arch in the cache key</li>
</ul>
<h2>2.7.7</h2>
<ul>
<li>Also cache <code>cargo install</code> metadata</li>
</ul>
<h2>2.7.6</h2>
<ul>
<li>Allow opting out of caching $CARGO_HOME/bin</li>
<li>Add runner OS in cache key</li>
<li>Adds an option to do lookup-only of the cache</li>
</ul>
<h2>2.7.5</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/6323deb102c322ba6fcbdcafc7e3dddab59af2b6"><code>6323deb</code></a>
2.9.2</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/b16e8d71b289c3b8fc03fc09764563df03712036"><code>b16e8d7</code></a>
bump rollup and rebuild</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/3bf42ac996de475743278f3187c4fd89f23b8630"><code>3bf42ac</code></a>
invert target/profile check in cleanup</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/6e5b278ead409e28cd5a784014d7ce55007a81d2"><code>6e5b278</code></a>
correctly sort and dedupe Rust versions</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/5adc05f6aaa7c92756cb2e2c9b7b3c1d0df9312b"><code>5adc05f</code></a>
Bump the actions group across 1 directory with 3 updates (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/368">#368</a>)</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/66b1e9526150e74ddd7e4190356facd783fb3b44"><code>66b1e95</code></a>
fix: support Cargo V2 build dir layout (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/371">#371</a>)</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/72d126e709cad40056a62344eee609d696d62d33"><code>72d126e</code></a>
Merge pull request <a
href="https://redirect.github.com/swatinem/rust-cache/issues/367">#367</a>
from Swatinem/dependabot/npm_and_yarn/dev-patch-2b495...</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/48968d2131215f1c516b89399d23900d554f71fa"><code>48968d2</code></a>
Bump the dev-patch group with 2 updates</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/9f151aca7c3990bab7afe2d82ac58088d3b01074"><code>9f151ac</code></a>
update dependencies, rebuild</li>
<li><a
href="https://github.com/Swatinem/rust-cache/commit/0e24e5dcecfbbdcea69e0f528cab00df34fbd231"><code>0e24e5d</code></a>
Bump the actions group across 1 directory with 6 updates (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/364">#364</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/swatinem/rust-cache/compare/f13886b937689c021905a6b90929199931d60db1...6323deb102c322ba6fcbdcafc7e3dddab59af2b6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Swatinem/rust-cache&package-manager=github_actions&previous-version=2.8.1&new-version=2.9.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…che#24306)

Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.85.10 to 2.85.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.85.11</h2>
<ul>
<li>
<p>Update <code>zola@latest</code> to 0.23.2.</p>
</li>
<li>
<p>Update <code>wasm-bindgen@latest</code> to 0.2.127.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.12.3.</p>
</li>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.5.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.8.3.</p>
</li>
<li>
<p>Update <code>kingfisher@latest</code> to 1.112.0.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.10.0.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.85.12] - 2026-08-12</h2>
<ul>
<li>
<p>Update <code>zola@latest</code> to 0.23.3.</p>
</li>
<li>
<p>Update <code>wasm-tools@latest</code> to 1.256.0.</p>
</li>
<li>
<p>Update <code>tombi@latest</code> to 1.2.10.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.51.0.</p>
</li>
<li>
<p>Update <code>prek@latest</code> to 0.4.13.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.8.4.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.11.1.</p>
</li>
<li>
<p>Update <code>cargo-tarpaulin@latest</code> to 0.37.1.</p>
</li>
<li>
<p>Update <code>cargo-rdme@latest</code> to 2.2.1.</p>
</li>
<li>
<p>Update <code>biome@latest</code> to 2.5.8.</p>
</li>
</ul>
<h2>[2.85.11] - 2026-08-09</h2>
<ul>
<li>
<p>Update <code>zola@latest</code> to 0.23.2.</p>
</li>
<li>
<p>Update <code>wasm-bindgen@latest</code> to 0.2.127.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.12.3.</p>
</li>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.5.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.8.3.</p>
</li>
<li>
<p>Update <code>kingfisher@latest</code> to 1.112.0.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.10.0.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/taiki-e/install-action/commit/7f4eb899022d8fe70b20c4f3de697aa85c309026"><code>7f4eb89</code></a>
Release 2.85.11</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/c17da6245a7fe549cefa05b31e3614ce0b16c2af"><code>c17da62</code></a>
Update <code>zola@latest</code> to 0.23.2</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/97e8291c2ba440a7119c03ebe3ed1e584a1f9b7f"><code>97e8291</code></a>
Update <code>wasm-bindgen@latest</code> to 0.2.127</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/91f9e5c61a2dc7936a8f404d01b7c1551b9c581a"><code>91f9e5c</code></a>
Update <code>uv@latest</code> to 0.12.3</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/bd0cb00440414f36db2f79bca8e27971bb63b2a3"><code>bd0cb00</code></a>
Update <code>osv-scanner@latest</code> to 2.5.0</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/4def957aa80c252e2d4c61387c6a429d377907d1"><code>4def957</code></a>
Update <code>mise@latest</code> to 2026.8.3</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/3d149dc3890afe4774d158d353b5a3e55fe90f60"><code>3d149dc</code></a>
Update <code>kingfisher@latest</code> to 1.112.0</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/20d4381a5cf6917520fde30f9ff52387410bfb6e"><code>20d4381</code></a>
Update <code>editorconfig-checker@latest</code> to 3.10.0</li>
<li><a
href="https://github.com/taiki-e/install-action/commit/583939ec0c8ee9c523cc60342d3d979ce6730f38"><code>583939e</code></a>
codegen: Ignore clippy::assert_is_empty lint</li>
<li>See full diff in <a
href="https://github.com/taiki-e/install-action/compare/6c6fd71fe4fb72c3697d269963d0e15df8adedad...7f4eb899022d8fe70b20c4f3de697aa85c309026">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.85.10&new-version=2.85.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…wasmtest/datafusion-wasm-app (apache#24302)

Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 5.1.4
to 7.2.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-cli/releases">webpack-cli's
releases</a>.</em></p>
<blockquote>
<h2>webpack-cli@7.2.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>perf: enable the Node.js compile cache
(<code>module.enableCompileCache</code>, available on Node.js &gt;=
22.8.0) to speed up CLI startup (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack-cli/pull/4818">#4818</a>)</li>
</ul>
<h2>webpack-cli@7.2.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>fix: <code>CLIPlugin</code> dynamic import interop under Bun (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4799">#4799</a>)</li>
</ul>
<h2>webpack-cli@7.2.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p>feat: allow <code>webpack-dev-server</code> v6 as an optional peer
dependency (<code>^5.0.0 || ^6.0.0</code>) (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack-cli/pull/4793">#4793</a>)</p>
</li>
<li>
<p>Support <code>tsx</code> as a fallback loader for TypeScript and JSX
configuration files (<code>.ts</code>, <code>.tsx</code>,
<code>.cts</code>, <code>.mts</code> and <code>.jsx</code>), used when
none of the loaders known to <code>interpret</code> (such as
<code>ts-node</code>) are installed. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4796">#4796</a>)</p>
</li>
</ul>
<h2>webpack-cli@7.1.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p>feat(cli): refresh the <code>--help</code> output using commander's
<code>configureHelp</code> API — branded headers, section dividers,
colorized terms and a clearer footer. Colors and chrome collapse to
plain text when output is piped or <code>--no-color</code> is used, so
scripts keep working. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4779">#4779</a>)</p>
</li>
<li>
<p>feat: support <code>.json5</code>,
<code>.yaml</code>/<code>.yml</code> and <code>.toml</code>
configuration files by parsing them directly, with the parser package
(<code>json5</code>, <code>js-yaml</code>, <code>toml</code>) installed
on demand by the user and declared as optional
<code>peerDependencies</code> so the parsers resolve correctly under
Yarn PnP (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4777">#4777</a>)</p>
</li>
</ul>
<h2>webpack-cli@7.0.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Improved CLI startup performance and reduced memory usage. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4765">#4765</a>)</p>
</li>
<li>
<p>Reduced CLI startup CPU and memory usage by caching schema-derived
argument metadata, registering only the options present in the
arguments, and reading config directories once during default-config
discovery. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4760">#4760</a>)</p>
</li>
<li>
<p>Replace the <code>fastest-levenshtein</code> dependency with a small
in-tree implementation used for command/option &quot;did you mean&quot;
suggestions. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4762">#4762</a>)</p>
</li>
</ul>
<h2>webpack-cli@7.0.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>Resolve configuration path for cache build dependencies. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4707">#4707</a>)</li>
</ul>
<h2>webpack-cli@7.0.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>The <code>file</code> protocol for configuration options
(<code>--config</code>/<code>--extends</code>) is supported. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4702">#4702</a>)</li>
</ul>
<h2>webpack-cli@7.0.0</h2>
<h3>Major Changes</h3>
<ul>
<li>
<p>The minimum supported version of Node.js is <code>20.9.0</code>. (by
<a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Use dynamic import to load <code>webpack.config.js</code>, fallback
to interpret only when configuration can't be load by dynamic import.
Using dynamic imports allows you to take advantage of Node.js's built-in
TypeScript support. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md">webpack-cli's
changelog</a>.</em></p>
<blockquote>
<h2>7.2.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>perf: enable the Node.js compile cache
(<code>module.enableCompileCache</code>, available on Node.js &gt;=
22.8.0) to speed up CLI startup (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack-cli/pull/4818">#4818</a>)</li>
</ul>
<h2>7.2.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>fix: <code>CLIPlugin</code> dynamic import interop under Bun (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4799">#4799</a>)</li>
</ul>
<h2>7.2.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p>feat: allow <code>webpack-dev-server</code> v6 as an optional peer
dependency (<code>^5.0.0 || ^6.0.0</code>) (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack-cli/pull/4793">#4793</a>)</p>
</li>
<li>
<p>Support <code>tsx</code> as a fallback loader for TypeScript and JSX
configuration files (<code>.ts</code>, <code>.tsx</code>,
<code>.cts</code>, <code>.mts</code> and <code>.jsx</code>), used when
none of the loaders known to <code>interpret</code> (such as
<code>ts-node</code>) are installed. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4796">#4796</a>)</p>
</li>
</ul>
<h2>7.1.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p>feat(cli): refresh the <code>--help</code> output using commander's
<code>configureHelp</code> API — branded headers, section dividers,
colorized terms and a clearer footer. Colors and chrome collapse to
plain text when output is piped or <code>--no-color</code> is used, so
scripts keep working. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4779">#4779</a>)</p>
</li>
<li>
<p>feat: support <code>.json5</code>,
<code>.yaml</code>/<code>.yml</code> and <code>.toml</code>
configuration files by parsing them directly, with the parser package
(<code>json5</code>, <code>js-yaml</code>, <code>toml</code>) installed
on demand by the user and declared as optional
<code>peerDependencies</code> so the parsers resolve correctly under
Yarn PnP (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4777">#4777</a>)</p>
</li>
</ul>
<h2>7.0.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Improved CLI startup performance and reduced memory usage. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4765">#4765</a>)</p>
</li>
<li>
<p>Reduced CLI startup CPU and memory usage by caching schema-derived
argument metadata, registering only the options present in the
arguments, and reading config directories once during default-config
discovery. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4760">#4760</a>)</p>
</li>
<li>
<p>Replace the <code>fastest-levenshtein</code> dependency with a small
in-tree implementation used for command/option &quot;did you mean&quot;
suggestions. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4762">#4762</a>)</p>
</li>
</ul>
<h2>7.0.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>Resolve configuration path for cache build dependencies. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4707">#4707</a>)</li>
</ul>
<h2>7.0.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>The <code>file</code> protocol for configuration options
(<code>--config</code>/<code>--extends</code>) is supported. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4702">#4702</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/webpack/webpack-cli/commit/191fa9ffdc82268e430c10824ac7ba3b8138e287"><code>191fa9f</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4820">#4820</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/1082235f97fecd77a716ac0cc3564669798729a8"><code>1082235</code></a>
chore(deps-dev): bump js-yaml from 5.2.1 to 5.2.2 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4821">#4821</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/e36ae82bf116c50fe6da341291c93d596fcb8bf2"><code>e36ae82</code></a>
chore: add publish workflow and script for pkg.pr.new integration (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4819">#4819</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/b0a2024a5790446ea07610ad27fd5abc65f5b875"><code>b0a2024</code></a>
perf: enable the Node.js compile cache (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4818">#4818</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/53f6d722c4093a387e23413d79e6cf67b5a867ba"><code>53f6d72</code></a>
chore(deps): bump actions/checkout in the dependencies group (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4816">#4816</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/8856346f50b472ba448c4e3a8f7f8f5781c69fb2"><code>8856346</code></a>
chore: add allowscripts to work with npm 12 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4811">#4811</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/0b0f1ee3d4a648e8d1679a73f511277d25bf47aa"><code>0b0f1ee</code></a>
chore(deps): bump fast-uri from 3.1.2 to 3.1.4 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4815">#4815</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/d60a777303fdd34eb1e5e6901ab39c7370ce5fef"><code>d60a777</code></a>
chore(deps-dev): bump postcss from 8.5.10 to 8.5.22 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4814">#4814</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/8c1719aeab0efe0a5f13649d407c425b14ba4216"><code>8c1719a</code></a>
chore(deps): bump shell-quote from 1.8.4 to 1.10.0 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4813">#4813</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/8c2473c23ff926772f8d7719777236ab113be591"><code>8c2473c</code></a>
chore(deps): bump immutable from 5.1.5 to 5.1.9 (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4812">#4812</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/webpack-cli/compare/webpack-cli@5.1.4...webpack-cli@7.2.2">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for webpack-cli since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=webpack-cli&package-manager=npm_and_yarn&previous-version=5.1.4&new-version=7.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

## Which issue does this PR close?

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax. For example
`Closes apache#123` indicates that this PR will close issue apache#123.
-->

- Part of apache#24246 .

## Rationale for this change

Bitwise XOR simplifications cancelled repeated nullable operands, which
could incorrectly produce a non-NULL result when the operand was NULL.

For example:

```sql
SELECT
  i XOR i,
  (i XOR 7) XOR i,
  i XOR (7 XOR i)
FROM (VALUES (NULL::INT)) AS t(i);
```

These expressions should all return NULL, but simplification could
replace them with 0, 7, and 7.

<!--
Why are you proposing this change? If this is already explained clearly
in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand
your changes and offer better suggestions for fixes.

Please explain the problem you are trying to solve in terms of the
user-visible
behavior, rather than the implementation.

For example, "The code in `foo.rs` doesn't handle nulls" is a symptom of
the
implementation. "COUNT(DISTINCT) returns wrong results when the column
contains
nulls" is the user-visible problem.
-->

## What changes are included in this PR?

Only cancel repeated XOR operands when the removed operand is
non-nullable.

<!--
There is no need to duplicate the description in the issue here, but it
is sometimes worth providing a summary of the individual changes in this
PR.
-->

## Are these changes tested?

<!--
We typically require tests for all PRs in order to:
1. Prevent the code from being accidentally broken by subsequent changes
2. Serve as another way to document the expected behavior of the code

If tests are not included in your PR, please explain why (for example,
are they covered by existing tests)?
-->

Yes. Added sqllogictests covering results.

## Are there any user-facing changes?

Yes. Bitwise XOR expressions with repeated nullable operands now
correctly preserve NULLs.

<!--
If there are user-facing changes then we may require documentation to be
updated before approving the PR.

If there are any breaking changes to public APIs, please add the `api
change` label.
-->
Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.8.1 to
2.9.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pygithub/pygithub/releases">pygithub's
releases</a>.</em></p>
<blockquote>
<h2>v2.9.1</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Fix getting release by tag in lazy mode by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3469">PyGithub/PyGithub#3469</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1">https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1</a></p>
<h2>v2.9.0</h2>
<h3>Notable changes</h3>
<h4>Lazy PyGithub objects</h4>
<p>The notion of lazy objects has been added to some PyGithub classes in
version 2.6.0. This release now makes all
<code>CompletableGithubObject</code>s optionally lazy (if useful). See
<a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3403">PyGithub/PyGithub#3403</a>
for a complete list.</p>
<p>In lazy mode, getting a PyGithub object does not send a request to
the GitHub API. Only accessing methods and properties sends the
necessary requests to the GitHub API:</p>
<pre lang="python"><code># Use lazy mode
g = Github(auth=auth, lazy=True)
<h1>these method calls do not send requests to the GitHub API</h1>
<p>user = g.get_user(&quot;PyGithub&quot;)    # get the user
repo = user.get_repo(&quot;PyGithub&quot;) # get the user's repo
pull = repo.get_pull(3403)       # get a known pull request
issue = pull.as_issue() # turn the pull request into an issue</p>
<h1>these method and property calls send requests to Github API</h1>
<p>issue.create_reaction(&quot;rocket&quot;)  # create a reaction
created = repo.created_at        # get property of lazy object repo</p>
<h1>once a lazy object has been fetched, all properties are available
(no more requests)</h1>
<p>licence = repo.license
</code></pre></p>
<p>All PyGithub classes that implement
<code>CompletableGithubObject</code> support lazy mode (if useful). This
is only useful for classes that have methods creating, changing, or
getting objects.</p>
<p>By default, PyGithub objects are not lazy.</p>
<h4>PyGithub objects with a paginated property</h4>
<p>The GitHub API has the &quot;feature&quot; of paginated properties.
Some objects returned by the API have a property that allows for
pagination. Fetching subsequent pages of that property means fetching
the entire object (with all other properties) and the specified page of
the paginated property. Iterating over the paginated property means
fetching all other properties multiple times. Fortunately, the allowed
size of each page (<code>per_page</code> is usually 300, in contrast to
the &quot;usual&quot; <code>per_page</code> maximum of 100).</p>
<p>Objects with paginated properties:</p>
<ul>
<li>Commit.files</li>
<li>Comparison.commits</li>
<li>EnterpriseConsumedLicenses.users</li>
</ul>
<p>This PR makes iterating those paginated properties use the configured
<code>per_page</code> setting.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PyGithub/PyGithub/blob/main/doc/changes.rst">pygithub's
changelog</a>.</em></p>
<blockquote>
<h2>Version 2.9.1 (April 14, 2026)</h2>
<p>Bug Fixes
^^^^^^^^^</p>
<ul>
<li>Fix getting release by tag in lazy mode
(<code>[apache#3469](PyGithub/PyGithub#3469)
&lt;https://github.com/PyGithub/PyGithub/pull/3469&gt;</code><em>)
(<code>7d1ba281e
&lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e&gt;</code></em>)</li>
</ul>
<h2>Version 2.9.0 (March 22, 2026)</h2>
<p>Notable changes
^^^^^^^^^^^^^^^</p>
<p>Lazy PyGithub objects

&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</p>
<p>The notion of lazy objects has been added to some PyGithub classes in
version 2.6.0.
This release now makes all <code>CompletableGithubObject</code>\s
optionally lazy (if useful).
See <code>[apache#3403](PyGithub/PyGithub#3403)
&lt;https://github.com/PyGithub/PyGithub/pull/3403&gt;</code>_ for a
complete list.</p>
<p>In lazy mode, getting a PyGithub object does not send a request to
the GitHub API.
Only accessing methods and properties sends the necessary requests to
the GitHub API:</p>
<p>.. code-block:: python</p>
<pre><code># Use lazy mode
g = Github(auth=auth, lazy=True)
<h1>these method calls do not send requests to the GitHub API</h1>
<p>user = g.get_user(&quot;PyGithub&quot;)    # get the user
repo = user.get_repo(&quot;PyGithub&quot;) # get the user's repo
pull = repo.get_pull(3403)       # get a known pull request
issue = pull.as_issue() # turn the pull request into an issue</p>
<h1>these method and property calls send requests to Github API</h1>
<p>issue.create_reaction(&quot;rocket&quot;)  # create a reaction
created = repo.created_at        # get property of lazy object repo</p>
<h1>once a lazy object has been fetched, all properties are available
(no more requests)</h1>
<p>licence = repo.license
</code></pre></p>
<p>All PyGithub classes that implement
<code>CompletableGithubObject</code> support lazy mode (if useful).
This is only useful for classes that have methods creating, changing, or
getting objects.</p>
<p>By default, PyGithub objects are not lazy.</p>
<p>PyGithub objects with a paginated property

&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</p>
<p>The GitHub API has the &quot;feature&quot; of paginated
properties.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af"><code>73742d4</code></a>
Release 2.9.1 (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3478">#3478</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8"><code>7d1ba28</code></a>
Fix getting release by tag in lazy mode (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3469">#3469</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88"><code>3a17ecf</code></a>
Release 2.9.0 (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3465">#3465</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e"><code>b1a9b7e</code></a>
Consider per-page settings when iterating paginated properties (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3377">#3377</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d"><code>24305f6</code></a>
Update test key pair (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3453">#3453</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82"><code>f2540db</code></a>
Deprecate <code>Reaction.delete</code> (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3435">#3435</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8"><code>19e1c50</code></a>
Add <code>throw</code> option to <code>Workflow.create_dispatch</code>
to raise exceptions (<a
href="https://redirect.github.com/pygithub/pygithub/issues/2966">#2966</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254"><code>6461909</code></a>
Add Secret Scanning Alerts and Improve Code Scan Alerts (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3307">#3307</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49"><code>95648db</code></a>
Add Python 3.14 to CI and tox (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3429">#3429</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88"><code>3716bab</code></a>
Use <code>GET</code> url or <code>_links.self</code> as object url (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3421">#3421</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pygithub&package-manager=uv&previous-version=2.8.1&new-version=2.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [setuptools](https://github.com/pypa/setuptools) from 83.0.0 to
84.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
re-exports the platform/macOS helpers from their new homes for backward
compatibility rather than keeping duplicate copies. (sysconfig lookups
still route through distutils pending its own decoupling.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>The MSVC linker now passes its arguments through a response file
when the command line would exceed the Windows maximum length, fixing
failures when linking a large number of objects. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=setuptools&package-manager=uv&previous-version=83.0.0&new-version=84.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [rich](https://github.com/Textualize/rich) from 14.3.2 to 15.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Textualize/rich/releases">rich's
releases</a>.</em></p>
<blockquote>
<h2>The So Long 3.8 Release</h2>
<p>A few fixes. The major version bump is to honor the passing of 3.8
support which reached its EOL in October 7, 2024</p>
<h2>[15.0.0] - 2026-04-12</h2>
<h3>Changed</h3>
<ul>
<li>Breaking change: Dropped support for Python3.8</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed empty print ignoring the <code>end</code> parameter <a
href="https://redirect.github.com/Textualize/rich/pull/4075">Textualize/rich#4075</a></li>
<li>Fixed <code>Text.from_ansi</code> removing newlines <a
href="https://redirect.github.com/Textualize/rich/pull/4076">Textualize/rich#4076</a></li>
<li>Fixed <code>FileProxy.isatty</code> not proxying <a
href="https://redirect.github.com/Textualize/rich/pull/4077">Textualize/rich#4077</a></li>
<li>Fixed inline code in Markdown tables cells <a
href="https://redirect.github.com/Textualize/rich/pull/4079">Textualize/rich#4079</a></li>
</ul>
<h2>The Faster Startup Release</h2>
<p>No new features in this release, but there should be improved startup
time for Rich apps, and potentially improved runtime if you have a lot
of links.</p>
<h2>[14.3.4] - 2026-04-11</h2>
<h3>Changed</h3>
<ul>
<li>Improved import time with lazy loading <a
href="https://redirect.github.com/Textualize/rich/pull/4070">Textualize/rich#4070</a></li>
<li>Changed link id generation to avoid random number generation at
runtime <a
href="https://redirect.github.com/Textualize/rich/pull/3845">Textualize/rich#3845</a></li>
</ul>
<h2>The infinite Release</h2>
<p>Fixed a infinite loop in split_graphemes</p>
<h2>[14.3.3] - 2026-02-19</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed infinite loop with <code>cells.split_graphemes</code> <a
href="https://redirect.github.com/Textualize/rich/pull/4006">Textualize/rich#4006</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Textualize/rich/blob/main/CHANGELOG.md">rich's
changelog</a>.</em></p>
<blockquote>
<h2>[15.0.0] - 2026-04-12</h2>
<h3>Changed</h3>
<ul>
<li>Breaking change: Dropped support for Python3.8</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed empty print ignoring the <code>end</code> parameter <a
href="https://redirect.github.com/Textualize/rich/pull/4075">Textualize/rich#4075</a></li>
<li>Fixed <code>Text.from_ansi</code> removing newlines <a
href="https://redirect.github.com/Textualize/rich/pull/4076">Textualize/rich#4076</a></li>
<li>Fixed <code>FileProxy.isatty</code> not proxying <a
href="https://redirect.github.com/Textualize/rich/pull/4077">Textualize/rich#4077</a></li>
<li>Fixed inline code in Markdown tables cells <a
href="https://redirect.github.com/Textualize/rich/pull/4079">Textualize/rich#4079</a></li>
</ul>
<h2>[14.3.4] - 2026-04-11</h2>
<h3>Changed</h3>
<ul>
<li>Improved import time with lazy loading <a
href="https://redirect.github.com/Textualize/rich/pull/4070">Textualize/rich#4070</a></li>
<li>Changed link id generation to avoid random number generation at
runtime <a
href="https://redirect.github.com/Textualize/rich/pull/3845">Textualize/rich#3845</a></li>
</ul>
<h2>[14.3.3] - 2026-02-19</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed infinite loop with <code>cells.split_graphemes</code> <a
href="https://redirect.github.com/Textualize/rich/pull/4006">Textualize/rich#4006</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Textualize/rich/commit/6ac483cbea39cab124dfd3483bba70ffafb71050"><code>6ac483c</code></a>
correction</li>
<li><a
href="https://github.com/Textualize/rich/commit/458a9109c8b7da81c17b2270ea8a88f3e8c0465a"><code>458a910</code></a>
Merge pull request <a
href="https://redirect.github.com/Textualize/rich/issues/4080">#4080</a>
from Textualize/bump1500</li>
<li><a
href="https://github.com/Textualize/rich/commit/82e06e0d9985fd8cce456dc3977e0d2d9e84b4d8"><code>82e06e0</code></a>
changelog</li>
<li><a
href="https://github.com/Textualize/rich/commit/d6556bc44881b9904f29f5d9d69a0812b30675d1"><code>d6556bc</code></a>
bump to 15.0.0</li>
<li><a
href="https://github.com/Textualize/rich/commit/ffe2edc5968eac19d5493c2d7b27965031a692e9"><code>ffe2edc</code></a>
Merge pull request <a
href="https://redirect.github.com/Textualize/rich/issues/4079">#4079</a>
from Textualize/inline-table-code</li>
<li><a
href="https://github.com/Textualize/rich/commit/cf3b5a16f7a76b2e8c4921d3314021bb72a6c5c1"><code>cf3b5a1</code></a>
changelog</li>
<li><a
href="https://github.com/Textualize/rich/commit/77f0edbdef71f2a895cd0ab1481e9a1fc79d42e6"><code>77f0edb</code></a>
remove comments</li>
<li><a
href="https://github.com/Textualize/rich/commit/7ef2d05ca8aa3cb405dab2fdf3282e69cf8089e3"><code>7ef2d05</code></a>
fix inline code in table cells</li>
<li><a
href="https://github.com/Textualize/rich/commit/19c67b9a3479841e9133bea94607c89ee931d3fc"><code>19c67b9</code></a>
Merge pull request <a
href="https://redirect.github.com/Textualize/rich/issues/4077">#4077</a>
from Textualize/isattry</li>
<li><a
href="https://github.com/Textualize/rich/commit/494b795031782c694297d2db78bd04fb8c82f590"><code>494b795</code></a>
changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/Textualize/rich/compare/v14.3.2...v15.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rich&package-manager=uv&previous-version=14.3.2&new-version=15.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…wasmtest/datafusion-wasm-app in the all-npm-deps group across 1 directory (apache#24300)

Bumps the all-npm-deps group with 1 update in the
/datafusion/wasmtest/datafusion-wasm-app directory:
[webpack](https://github.com/webpack/webpack).

Updates `webpack` from 5.105.0 to 5.109.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack/releases">webpack's
releases</a>.</em></p>
<blockquote>
<h2>v5.109.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Resolve aliases pointing at a package directory whose name ends with
<code>.js</code> again. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21542">#21542</a>)</p>
</li>
<li>
<p>Name CSS sources in source maps by their resource path, without the
<code>css </code> prefix. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21536">#21536</a>)</p>
</li>
<li>
<p>Delete no longer referenced files from the filesystem cache directory
after storing the cache, age them by recorded time so restored caches
are cleaned too, and collect every fully expired pack in one store
instead of one per build. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21528">#21528</a>)</p>
</li>
<li>
<p>Report <code>&quot;universal&quot;</code> as the loader context
target for the universal target. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21540">#21540</a>)</p>
</li>
<li>
<p>Skip <code>require().prop</code> in dead branches gated by inlined
imported constants. (by <a
href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21517">#21517</a>)</p>
</li>
<li>
<p>Annotate configuration options and public hooks in the generated
types with the <code>@SInCE</code> JSDoc tag. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21473">#21473</a>)</p>
</li>
</ul>
<h2>v5.109.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Fix stray semicolon emitted before an imported call following a
parenthesized sequence element. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21533">#21533</a>)</p>
</li>
<li>
<p>Make <code>require(esm)</code> <code>module.exports</code> re-export
analysis independent of module processing order. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21521">#21521</a>)</p>
</li>
<li>
<p>Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so
<code>compiler.close()</code> succeeds on Bun. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21521">#21521</a>)</p>
</li>
<li>
<p>Name the failing key when DefinePlugin fails to evaluate a
<code>typeof</code> value. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21503">#21503</a>)</p>
</li>
<li>
<p>Improve Deno compatibility: guard <code>setNoDelay</code> and
force-close connections on lazy-compilation backend dispose, and return
a real <code>ArrayBuffer</code> from the Node async/sync wasm loader so
<code>WebAssembly.instantiate</code> accepts it. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21524">#21524</a>)</p>
</li>
<li>
<p>Speed up the HTML parser and cut its peak memory: module-scope
helpers/state and tokenizer callbacks, plus exact AST column pre-sizing.
(by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21492">#21492</a>)</p>
</li>
<li>
<p>Track CommonJS build dependencies by parsing sources when
<code>require.cache</code> children are unavailable (e.g. Bun). (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21531">#21531</a>)</p>
</li>
<li>
<p>Cook common string-literal escapes on the JS parser fast path and own
the tokenizer's cold-path readers. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21500">#21500</a>)</p>
</li>
<li>
<p>Build the CSS <code>parseA*</code> AST on the SoA store instead of
node classes, cutting parse memory and time. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21498">#21498</a>)</p>
</li>
<li>
<p>Speed up and cut memory of the experimental CSS and HTML parsers:
drop two derivable AST node columns, and scan long string, url, comment,
and plaintext token bodies natively. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21504">#21504</a>)</p>
</li>
<li>
<p>Speed up non-modules CSS parsing: skip redundant token re-reads, drop
selector-prelude tokens without materializing nodes, allocate rule
preludes lazily, and fast-path empty list seals. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21511">#21511</a>)</p>
</li>
<li>
<p>Speed up stats generation and cut its peak memory: reuse cached sort
comparators instead of thrashing the comparator caches on every sort,
and drop redundant module-graph lookups and allocations in the
extractors. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21506">#21506</a>)</p>
</li>
<li>
<p>Speed up CSS parsing: byte-range function-name checks, indexed
sibling lookahead. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21520">#21520</a>)</p>
</li>
<li>
<p>Reduce allocations and redundant work across the code-generation,
module-concatenation, exports/usage-analysis, hashing, and
chunk-splitting hot paths. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21516">#21516</a>)</p>
</li>
<li>
<p>Enable the Node.js compile cache in the webpack CLI entry point. (by
<a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21523">#21523</a>)</p>
</li>
<li>
<p>Encode the persistent cache with V8's value serializer. (by <a
href="https://github.com/avivkeller"><code>@​avivkeller</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21514">#21514</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack/blob/main/CHANGELOG.md">webpack's
changelog</a>.</em></p>
<blockquote>
<h2>5.109.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Resolve aliases pointing at a package directory whose name ends with
<code>.js</code> again. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21542">#21542</a>)</p>
</li>
<li>
<p>Name CSS sources in source maps by their resource path, without the
<code>css </code> prefix. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21536">#21536</a>)</p>
</li>
<li>
<p>Delete no longer referenced files from the filesystem cache directory
after storing the cache, age them by recorded time so restored caches
are cleaned too, and collect every fully expired pack in one store
instead of one per build. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21528">#21528</a>)</p>
</li>
<li>
<p>Report <code>&quot;universal&quot;</code> as the loader context
target for the universal target. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21540">#21540</a>)</p>
</li>
<li>
<p>Skip <code>require().prop</code> in dead branches gated by inlined
imported constants. (by <a
href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/21517">#21517</a>)</p>
</li>
<li>
<p>Annotate configuration options and public hooks in the generated
types with the <code>@SInCE</code> JSDoc tag. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21473">#21473</a>)</p>
</li>
</ul>
<h2>5.109.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Fix stray semicolon emitted before an imported call following a
parenthesized sequence element. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21533">#21533</a>)</p>
</li>
<li>
<p>Make <code>require(esm)</code> <code>module.exports</code> re-export
analysis independent of module processing order. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21521">#21521</a>)</p>
</li>
<li>
<p>Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so
<code>compiler.close()</code> succeeds on Bun. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21521">#21521</a>)</p>
</li>
<li>
<p>Name the failing key when DefinePlugin fails to evaluate a
<code>typeof</code> value. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21503">#21503</a>)</p>
</li>
<li>
<p>Improve Deno compatibility: guard <code>setNoDelay</code> and
force-close connections on lazy-compilation backend dispose, and return
a real <code>ArrayBuffer</code> from the Node async/sync wasm loader so
<code>WebAssembly.instantiate</code> accepts it. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21524">#21524</a>)</p>
</li>
<li>
<p>Speed up the HTML parser and cut its peak memory: module-scope
helpers/state and tokenizer callbacks, plus exact AST column pre-sizing.
(by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21492">#21492</a>)</p>
</li>
<li>
<p>Track CommonJS build dependencies by parsing sources when
<code>require.cache</code> children are unavailable (e.g. Bun). (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21531">#21531</a>)</p>
</li>
<li>
<p>Cook common string-literal escapes on the JS parser fast path and own
the tokenizer's cold-path readers. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21500">#21500</a>)</p>
</li>
<li>
<p>Build the CSS <code>parseA*</code> AST on the SoA store instead of
node classes, cutting parse memory and time. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21498">#21498</a>)</p>
</li>
<li>
<p>Speed up and cut memory of the experimental CSS and HTML parsers:
drop two derivable AST node columns, and scan long string, url, comment,
and plaintext token bodies natively. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21504">#21504</a>)</p>
</li>
<li>
<p>Speed up non-modules CSS parsing: skip redundant token re-reads, drop
selector-prelude tokens without materializing nodes, allocate rule
preludes lazily, and fast-path empty list seals. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21511">#21511</a>)</p>
</li>
<li>
<p>Speed up stats generation and cut its peak memory: reuse cached sort
comparators instead of thrashing the comparator caches on every sort,
and drop redundant module-graph lookups and allocations in the
extractors. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21506">#21506</a>)</p>
</li>
<li>
<p>Speed up CSS parsing: byte-range function-name checks, indexed
sibling lookahead. (by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/webpack/webpack/pull/21520">#21520</a>)</p>
</li>
<li>
<p>Reduce allocations and redundant work across the code-generation,
module-concatenation, exports/usage-analysis, hashing, and
chunk-splitting hot paths. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21516">#21516</a>)</p>
</li>
<li>
<p>Enable the Node.js compile cache in the webpack CLI entry point. (by
<a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/21523">#21523</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/webpack/webpack/commit/6a24bd65b72c43207c36ce61b54e1f5833486906"><code>6a24bd6</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack/issues/21534">#21534</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/d1b5b6d1d75b6dc04248ed98420a838a00fda221"><code>d1b5b6d</code></a>
fix: resolve aliases pointing at a package directory ending in .js (<a
href="https://redirect.github.com/webpack/webpack/issues/21542">#21542</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/9cdcc577c7a1971fa07a2b38828d1c61145597a3"><code>9cdcc57</code></a>
fix(target): report &quot;universal&quot; as the loader target (<a
href="https://redirect.github.com/webpack/webpack/issues/21540">#21540</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/774e7e4b3d525e00bc7698c518b89e44eba7230d"><code>774e7e4</code></a>
feat: annotate schema options with added keywords (<a
href="https://redirect.github.com/webpack/webpack/issues/21473">#21473</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/ff07bdc72f875868dd33cd00dfeae61392c01ded"><code>ff07bdc</code></a>
fix(css): name CSS sources in source maps by their resource path (<a
href="https://redirect.github.com/webpack/webpack/issues/21536">#21536</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/d56d82dd2f98f7ed6dcb3b14260ea7c53ddf2145"><code>d56d82d</code></a>
fix(cache): reclaim stale filesystem cache files reliably (<a
href="https://redirect.github.com/webpack/webpack/issues/21539">#21539</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/ae67e2a9225115e998607e180e2ef226b255ca34"><code>ae67e2a</code></a>
chore(readme): add codspeed (<a
href="https://redirect.github.com/webpack/webpack/issues/21497">#21497</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/964bbfad0ea01916ae78ab7d81cb1b544bea90f0"><code>964bbfa</code></a>
fix: delete no longer referenced files from the filesystem cache
directory (#...</li>
<li><a
href="https://github.com/webpack/webpack/commit/075d0cd8fa989752014f20988d95116b5235b997"><code>075d0cd</code></a>
feat: skip <code>require().prop</code> in dead branches (<a
href="https://redirect.github.com/webpack/webpack/issues/21517">#21517</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/ec3908838175b79c004f61f9bf53d57a6d0e52f8"><code>ec39088</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack/issues/21493">#21493</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/webpack/compare/v5.105.0...v5.109.2">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [typing-extensions](https://github.com/python/typing_extensions)
from 4.15.0 to 4.16.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/python/typing_extensions/releases">typing-extensions's
releases</a>.</em></p>
<blockquote>
<h2>4.16.0</h2>
<p>No changes since 4.16.0rc2.</p>
<p>Changes since 4.15.0:</p>
<ul>
<li>Make <code>typing_extensions.TypeAliasType</code>'s
<code>__module__</code> attribute writable. Backport of CPython PR <a
href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li>
<li>Fix setting of <code>__required_keys__</code> and
<code>__optional_keys__</code> when inheriting keys with the same
name.</li>
<li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>,
<code>io.Writer</code> and <code>os.PathLike</code> protocols as bases
for other protocols.</li>
<li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant
that calling <code>isinstance</code> with
<code>typing_extensions.Concatenate[...]</code> or
<code>typing_extensions.Unpack[...]</code> as the first argument could
have a different result in some situations depending on whether or not a
profiling function had been set using <code>sys.setprofile</code>. This
affected both CPython and PyPy implementations. Patch by Brian
Schubert.</li>
<li>Fix <code>__init_subclass__()</code> behavior in the presence of
multiple inheritance involving an <code>@deprecated</code>-decorated
base class. Backport of CPython PR <a
href="https://redirect.github.com/python/cpython/pull/138210">#138210</a>
by Brian Schubert.</li>
<li>Raise <code>TypeError</code> when attempting to subclass
<code>typing_extensions.ParamSpec</code> on Python 3.9. The
<code>typing</code> implementation has always raised an error, and the
<code>typing_extensions</code> implementation has raised an error on
Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian
Schubert.</li>
<li>Add the <code>bound</code>, <code>covariant</code>,
<code>contravariant</code>, and <code>infer_variance</code> parameters
to <code>TypeVarTuple</code>.</li>
<li>Officially support the <code>bound</code>, <code>covariant</code>,
<code>contravariant</code> and <code>infer_variance</code> parameters to
<code>ParamSpec</code>. Improve the validation of these parameters at
runtime.</li>
<li>Rename <code>typing_extensions.Sentinel</code> to
<code>typing_extensions.sentinel</code>, following the name that has
been adopted for <code>builtins.sentinel</code> on Python 3.15.
<code>typing_extensions.Sentinel</code> is retained as a soft-deprecated
alias for backwards compatibility.</li>
<li>Add support for pickling sentinels.</li>
<li>Sentinels now preserve their identity when copied or
deep-copied.</li>
<li>Deprecate passing <code>name</code> as a keyword argument or
<code>repr</code> as a positional argument to the <code>sentinel</code>
constructor.</li>
<li>The default repr of a sentinel <code>X =
sentinel(&quot;X&quot;)</code> is now <code>X</code> rather than
<code>&lt;X&gt;</code>.</li>
<li>Deprecate arbitrary attribute assignments to sentinels.</li>
<li>Deprecate subclassing sentinels.</li>
<li>Add support for Python 3.15.</li>
<li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code>
is applied to a coroutine function on Python 3.14.0.</li>
</ul>
<h2>4.16.0rc2</h2>
<p>Changes since 4.16.0rc1:</p>
<ul>
<li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code>
is applied to a coroutine function on Python 3.14.0.</li>
</ul>
<p>Changes since 4.15.0:</p>
<ul>
<li>Make <code>typing_extensions.TypeAliasType</code>'s
<code>__module__</code> attribute writable. Backport of CPython PR <a
href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li>
<li>Fix setting of <code>__required_keys__</code> and
<code>__optional_keys__</code> when inheriting keys with the same
name.</li>
<li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>,
<code>io.Writer</code> and <code>os.PathLike</code> protocols as bases
for other protocols.</li>
<li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant
that calling <code>isinstance</code> with
<code>typing_extensions.Concatenate[...]</code> or
<code>typing_extensions.Unpack[...]</code> as the first argument could
have a different result in some situations depending on whether or not a
profiling function had been set using <code>sys.setprofile</code>. This
affected both CPython and PyPy implementations. Patch by Brian
Schubert.</li>
<li>Fix <code>__init_subclass__()</code> behavior in the presence of
multiple inheritance involving an <code>@deprecated</code>-decorated
base class. Backport of CPython PR <a
href="https://redirect.github.com/python/cpython/pull/138210">#138210</a>
by Brian Schubert.</li>
<li>Raise <code>TypeError</code> when attempting to subclass
<code>typing_extensions.ParamSpec</code> on Python 3.9. The
<code>typing</code> implementation has always raised an error, and the
<code>typing_extensions</code> implementation has raised an error on
Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian
Schubert.</li>
<li>Add the <code>bound</code>, <code>covariant</code>,
<code>contravariant</code>, and <code>infer_variance</code> parameters
to <code>TypeVarTuple</code>.</li>
<li>Officially support the <code>bound</code>, <code>covariant</code>,
<code>contravariant</code> and <code>infer_variance</code> parameters to
<code>ParamSpec</code>. Improve the validation of these parameters at
runtime.</li>
<li>Rename <code>typing_extensions.Sentinel</code> to
<code>typing_extensions.sentinel</code>, following the name that has
been adopted for <code>builtins.sentinel</code> on Python 3.15.
<code>typing_extensions.Sentinel</code> is retained as a soft-deprecated
alias for backwards compatibility.</li>
<li>Add support for pickling sentinels.</li>
<li>Sentinels now preserve their identity when copied or
deep-copied.</li>
<li>Deprecate passing <code>name</code> as a keyword argument or
<code>repr</code> as a positional argument to the <code>sentinel</code>
constructor.</li>
<li>The default repr of a sentinel <code>X =
sentinel(&quot;X&quot;)</code> is now <code>X</code> rather than
<code>&lt;X&gt;</code>.</li>
<li>Deprecate arbitrary attribute assignments to sentinels.</li>
<li>Deprecate subclassing sentinels.</li>
<li>Add support for Python 3.15.</li>
</ul>
<h2>4.16.0rc1</h2>
<ul>
<li>Make <code>typing_extensions.TypeAliasType</code>'s
<code>__module__</code> attribute writable. Backport of CPython PR <a
href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li>
<li>Fix setting of <code>__required_keys__</code> and
<code>__optional_keys__</code> when inheriting keys with the same
name.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/typing_extensions/blob/main/CHANGELOG.md">typing-extensions's
changelog</a>.</em></p>
<blockquote>
<h1>Release 4.16.0 (July 2, 2025)</h1>
<p>No user-facing changes since 4.16.0rc2.</p>
<h1>Release 4.16.0rc2 (June 25, 2026)</h1>
<ul>
<li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code>
is applied to a coroutine function on
Python 3.14.0.</li>
</ul>
<h1>Release 4.16.0rc1 (June 24, 2026)</h1>
<ul>
<li>Make <code>typing_extensions.TypeAliasType</code>'s
<code>__module__</code> attribute writable.
Backport of CPython PR
<a
href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li>
<li>Fix setting of <code>__required_keys__</code> and
<code>__optional_keys__</code> when inheriting
keys with the same name.</li>
<li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>,
<code>io.Writer</code> and <code>os.PathLike</code> protocols
as bases for other protocols.</li>
<li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant
that
calling <code>isinstance</code> with
<code>typing_extensions.Concatenate[...]</code> or
<code>typing_extensions.Unpack[...]</code> as the first argument could
have a different
result in some situations depending on whether or not a profiling
function had been
set using <code>sys.setprofile</code>. This affected both CPython and
PyPy implementations.
Patch by Brian Schubert.</li>
<li>Fix <code>__init_subclass__()</code> behavior in the presence of
multiple inheritance involving
an <code>@deprecated</code>-decorated base class. Backport of CPython PR
<a
href="https://redirect.github.com/python/cpython/pull/138210">#138210</a>
by Brian Schubert.</li>
<li>Raise <code>TypeError</code> when attempting to subclass
<code>typing_extensions.ParamSpec</code> on
Python 3.9. The <code>typing</code> implementation has always raised an
error, and the
<code>typing_extensions</code> implementation has raised an error on
Python 3.10+ since
<code>typing_extensions</code> v4.6.0. Patch by Brian Schubert.</li>
<li>Add the <code>bound</code>, <code>covariant</code>,
<code>contravariant</code>, and <code>infer_variance</code> parameters
to <code>TypeVarTuple</code>.</li>
<li>Officially support the <code>bound</code>, <code>covariant</code>,
<code>contravariant</code> and <code>infer_variance</code>
parameters to <code>ParamSpec</code>. Improve the validation of these
parameters at runtime.</li>
<li>Rename <code>typing_extensions.Sentinel</code> to
<code>typing_extensions.sentinel</code>, following the
name that has been adopted for <code>builtins.sentinel</code> on Python
3.15.
<code>typing_extensions.Sentinel</code> is retained as a soft-deprecated
alias for backwards
compatibility.</li>
<li>Add support for pickling sentinels.</li>
<li>Sentinels now preserve their identity when copied or
deep-copied.</li>
<li>Deprecate passing <code>name</code> as a keyword argument or
<code>repr</code> as a positional argument
to the <code>sentinel</code> constructor.</li>
<li>The default repr of a sentinel <code>X =
sentinel(&quot;X&quot;)</code> is now <code>X</code> rather than
<code>&lt;X&gt;</code>.</li>
<li>Deprecate arbitrary attribute assignments to sentinels.</li>
<li>Deprecate subclassing sentinels.</li>
<li>Add support for Python 3.15.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/typing_extensions/commit/f29cd28d8ed7642cafb1d18daf5aa41be6a5c0aa"><code>f29cd28</code></a>
Prepare relase 4.16.0 (<a
href="https://redirect.github.com/python/typing_extensions/issues/774">#774</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/43174610ec0c407ce05ad750077c4e62b9192b2b"><code>4317461</code></a>
Bump version to 4.16.0rc2.dev (<a
href="https://redirect.github.com/python/typing_extensions/issues/772">#772</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/4f71098e5be84798d36416bbca0e776223ee40f9"><code>4f71098</code></a>
Prepare release 4.16.0rc2 (<a
href="https://redirect.github.com/python/typing_extensions/issues/771">#771</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/37ed08a11f3b7c05234f8963ab97e3ebdbdc16a2"><code>37ed08a</code></a>
Remove use of <code>asyncio.coroutines.iscoroutinefunction()</code> (<a
href="https://redirect.github.com/python/typing_extensions/issues/769">#769</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/8dcc5594cbe5a4e348245fea6ce160ce93ed6601"><code>8dcc559</code></a>
Improve <code>TypedDict</code> documentation (<a
href="https://redirect.github.com/python/typing_extensions/issues/770">#770</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/224f8d50551d26f0d603093596c3a47a7302a46f"><code>224f8d5</code></a>
Post-release followups for 3.16.0rc1 (<a
href="https://redirect.github.com/python/typing_extensions/issues/767">#767</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/777de3eb5f4562e2054d1d7ce707f098b1f4fd2f"><code>777de3e</code></a>
Prepare release 4.16.0rc1 (<a
href="https://redirect.github.com/python/typing_extensions/issues/766">#766</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/890be90f1545e7d5fa904dfa3154d5f03c96782c"><code>890be90</code></a>
Type variable tuple variance (<a
href="https://redirect.github.com/python/typing_extensions/issues/741">#741</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/0e0545866d78458b668dc52d2edc411f6e39540d"><code>0e05458</code></a>
Pin SQLAlchemy third-party tests to pytest==9.0.3 (<a
href="https://redirect.github.com/python/typing_extensions/issues/765">#765</a>)</li>
<li><a
href="https://github.com/python/typing_extensions/commit/d2777468c274202ec290103b34313e50cf040229"><code>d277746</code></a>
docs: add version compatibility table (<a
href="https://redirect.github.com/python/typing_extensions/issues/733">#733</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python/typing_extensions/compare/4.15.0...4.16.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [requests](https://github.com/psf/requests) from 2.33.0 to 2.34.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/requests/releases">requests's
releases</a>.</em></p>
<blockquote>
<h2>v2.34.2</h2>
<h2>2.34.2 (2026-05-14)</h2>
<ul>
<li>Moved <code>headers</code> input type back to <code>Mapping</code>
to avoid invariance issues with <code>MutableMapping</code> and inferred
dict types. Users calling <code>Request.headers.update()</code> may need
to narrow typing in their code. (<a
href="https://redirect.github.com/psf/requests/issues/7441">#7441</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14">https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14</a></p>
<h2>v2.34.1</h2>
<h2>2.34.1 (2026-05-13)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Widened <code>json</code> input type from <code>dict</code> and
<code>list</code> to <code>Mapping</code>
and <code>Sequence</code>. (<a
href="https://redirect.github.com/psf/requests/issues/7436">#7436</a>)</li>
<li>Changed <code>headers</code> input type to MutableMapping and
removed <code>None</code> from
<code>Request.headers</code> typing to improve handling for users. (<a
href="https://redirect.github.com/psf/requests/issues/7431">#7431</a>)</li>
<li><code>Response.reason</code> moved from <code>str | None</code> to
<code>str</code> to improve handling
for users. (<a
href="https://redirect.github.com/psf/requests/issues/7437">#7437</a>)</li>
<li>Fixed a bug where some bodies with custom <code>__getattr__</code>
implementations
weren't being properly detected as Iterables. (<a
href="https://redirect.github.com/psf/requests/issues/7433">#7433</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/k223kim"><code>@​k223kim</code></a> made
their first contribution in <a
href="https://redirect.github.com/psf/requests/pull/7433">psf/requests#7433</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13">https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13</a></p>
<h2>v2.34.0</h2>
<h2>2.34.0 (2026-05-11)</h2>
<p><strong>Announcements</strong></p>
<ul>
<li>
<p>Requests 2.34.0 introduces inline types, replacing those provided by
typeshed. Public API types should be fully compatible with mypy,
pyright,
and ty. <strong>We believe types are comprehensive but if you find
issues, please
report them to the <a
href="https://redirect.github.com/psf/requests/issues/7271">pinned
tracking issue</a>.</strong></p>
<p>Special thanks to <a
href="https://github.com/bastimeyer"><code>@​bastimeyer</code></a>, <a
href="https://github.com/cthoyt"><code>@​cthoyt</code></a>, <a
href="https://github.com/edgarrmondragon"><code>@​edgarrmondragon</code></a>,
and <a href="https://github.com/srittau"><code>@​srittau</code></a> for
helping review and test the types ahead of the release. (<a
href="https://redirect.github.com/psf/requests/issues/7272">#7272</a>)</p>
</li>
</ul>
<p><strong>Improvements</strong></p>
<ul>
<li>Digest Auth hashing algorithms have added
<code>usedforsecurity=False</code> to clarify
security considerations. (<a
href="https://redirect.github.com/psf/requests/issues/7310">#7310</a>)</li>
<li>Requests added support for Python 3.15 based on beta1. Downstream
projects
should be able to start testing prior to its release in October. (<a
href="https://redirect.github.com/psf/requests/issues/7422">#7422</a>)</li>
<li>Requests added support for Python 3.14t. (<a
href="https://redirect.github.com/psf/requests/issues/7419">#7419</a>)</li>
</ul>
<p><strong>Bugfixes</strong></p>
<ul>
<li><code>Response.history</code> no longer contains a reference to
itself, preventing
accidental looping when traversing the history list. (<a
href="https://redirect.github.com/psf/requests/issues/7328">#7328</a>)</li>
<li>Requests no longer performs greedy matching on no_proxy domains.
The</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/requests/blob/main/HISTORY.md">requests's
changelog</a>.</em></p>
<blockquote>
<h2>2.34.2 (2026-05-14)</h2>
<ul>
<li>Moved <code>headers</code> input type back to <code>Mapping</code>
to avoid invariance issues
with <code>MutableMapping</code> and inferred dict types. Users calling
<code>Request.headers.update()</code> may need to narrow typing in their
code. (<a
href="https://redirect.github.com/psf/requests/issues/7441">#7441</a>)</li>
</ul>
<h2>2.34.1 (2026-05-13)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Widened <code>json</code> input type from <code>dict</code> and
<code>list</code> to <code>Mapping</code>
and <code>Sequence</code>. (<a
href="https://redirect.github.com/psf/requests/issues/7436">#7436</a>)</li>
<li>Changed <code>headers</code> input type to MutableMapping and
removed <code>None</code> from
<code>Request.headers</code> typing to improve handling for users. (<a
href="https://redirect.github.com/psf/requests/issues/7431">#7431</a>)</li>
<li><code>Response.reason</code> moved from <code>str | None</code> to
<code>str</code> to improve handling
for users. (<a
href="https://redirect.github.com/psf/requests/issues/7437">#7437</a>)</li>
<li>Fixed a bug where some bodies with custom <code>__getattr__</code>
implementations
weren't being properly detected as Iterables. (<a
href="https://redirect.github.com/psf/requests/issues/7433">#7433</a>)</li>
</ul>
<h2>2.34.0 (2026-05-11)</h2>
<p><strong>Announcements</strong></p>
<ul>
<li>
<p>Requests 2.34.0 introduces inline types, replacing those provided by
typeshed. Public API types should be fully compatible with mypy,
pyright,
and ty. We believe types are comprehensive but if you find issues,
please
report them to the pinned tracking issue.</p>
<p>Special thanks to <a
href="https://github.com/bastimeyer"><code>@​bastimeyer</code></a>, <a
href="https://github.com/cthoyt"><code>@​cthoyt</code></a>, <a
href="https://github.com/edgarrmondragon"><code>@​edgarrmondragon</code></a>,
and <a href="https://github.com/srittau"><code>@​srittau</code></a> for
helping review and test the types ahead of the release. (<a
href="https://redirect.github.com/psf/requests/issues/7272">#7272</a>)</p>
</li>
</ul>
<p><strong>Improvements</strong></p>
<ul>
<li>Digest Auth hashing algorithms have added
<code>usedforsecurity=False</code> to clarify
security considerations. (<a
href="https://redirect.github.com/psf/requests/issues/7310">#7310</a>)</li>
<li>Requests added support for Python 3.15 based on beta1. Downstream
projects
should be able to start testing prior to its release in October. (<a
href="https://redirect.github.com/psf/requests/issues/7422">#7422</a>)</li>
<li>Requests added support for Python 3.14t. (<a
href="https://redirect.github.com/psf/requests/issues/7419">#7419</a>)</li>
</ul>
<p><strong>Bugfixes</strong></p>
<ul>
<li><code>Response.history</code> no longer contains a reference to
itself, preventing
accidental looping when traversing the history list. (<a
href="https://redirect.github.com/psf/requests/issues/7328">#7328</a>)</li>
<li>Requests no longer performs greedy matching on no_proxy domains. The
proxy_bypass implementation has been updated with CPython's fix from
bpo-39057. (<a
href="https://redirect.github.com/psf/requests/issues/7427">#7427</a>)</li>
<li>Requests no longer incorrectly strips duplicate leading slashes in
URI paths. This should address user issues with specific presigned
URLs. Note the full fix requires urllib3 2.7.0+. (<a
href="https://redirect.github.com/psf/requests/issues/7315">#7315</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3"><code>6e83187</code></a>
v2.34.2</li>
<li><a
href="https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b"><code>84d10f0</code></a>
Move Request.headers back to Mapping (<a
href="https://redirect.github.com/psf/requests/issues/7441">#7441</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224"><code>b7b549b</code></a>
v2.34.1</li>
<li><a
href="https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe"><code>e511bc7</code></a>
Fix mutability issues with headers input types (<a
href="https://redirect.github.com/psf/requests/issues/7431">#7431</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61"><code>5691f59</code></a>
Update JsonType containers to read-based collections (<a
href="https://redirect.github.com/psf/requests/issues/7436">#7436</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035"><code>2144213</code></a>
Constrain Response.reason to str (<a
href="https://redirect.github.com/psf/requests/issues/7437">#7437</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232"><code>6404f34</code></a>
Fix <code>prepare_body</code> stream detection for
<code>__getattr__</code>-based file wrappers (<a
href="https://redirect.github.com/psf/requests/issues/7">#7</a>...</li>
<li><a
href="https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca"><code>0b401c7</code></a>
v2.34.0</li>
<li><a
href="https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4"><code>86b378d</code></a>
Align Session.get parameters with requests.get (<a
href="https://redirect.github.com/psf/requests/issues/7429">#7429</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f"><code>a4f9a59</code></a>
Port bpo-39057 to Requests (<a
href="https://redirect.github.com/psf/requests/issues/7427">#7427</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/psf/requests/compare/v2.33.0...v2.34.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=requests&package-manager=uv&previous-version=2.33.0&new-version=2.34.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Which issue does this PR close?

N/A — documentation-only correction; no open issue tracks it.

## Rationale for this change

The user guide for `signum` says "Zero and positive numbers return `1`",
but
`signum(0)` returns `0` — the documented return value for zero is the
opposite
of what the function does. The repository's own tests already pin the
real
behavior:

- `datafusion/sqllogictest/test_files/scalar.slt`:
  `select signum(-2), signum(0), signum(2);` → `-1 0 1`
- The unit tests in `signum.rs` assert `signum(±0.0) == 0.0`

That behavior is intentional: it matches PostgreSQL `sign()` and Spark
`signum()`, and was changed on purpose in apache#11580 (issue apache#11557). Only
the docs
were left describing the pre-apache#11580 behavior, so this PR updates the
docs, not
the code.

## What changes are included in this PR?

Documentation only:

- Update the `#[user_doc]` description in
`datafusion/functions/src/math/signum.rs`
  to state that zero returns `0`.
- Regenerate `docs/source/user-guide/sql/scalar_functions.md` via
  `dev/update_function_docs.sh`.

## Are these changes tested?

No new tests: the corrected wording describes behavior the existing
tests above
already assert, and those are what it was checked against.

- `cargo test -p datafusion-functions --lib math::signum` → 2 passed
- `cargo fmt --all -- --check` and `./ci/scripts/doc_prettier_check.sh`
→ clean

## Are there any user-facing changes?

Yes, documentation only. No API or runtime behavior change.

---

Prepared with AI assistance; every claim above was verified locally
against the
repository's existing tests before opening this PR.

Co-authored-by: codeAnqiang-ma <273298913+codeAnqiang-ma@users.noreply.github.com>
…apache#24279)

`datafusion-proto-models` now depends on `datafusion-common` and hosts
the `From` / `TryFrom` conversions between the generated proto types and
their `datafusion-common` counterparts, but the crate README still
claimed it had no DataFusion dependencies beyond
`datafusion-proto-common` and exposed only the generated structs.

Describe the conversions and why they live in this crate, and spell out
the narrowness that still holds: `datafusion-common` and
`datafusion-proto-common` are the only DataFusion dependencies.

---------

Co-authored-by: Claude <noreply@anthropic.com>
## Which issue does this PR close?

N/A

## Rationale for this change

`datafusion-spark` pulls unnecessary crates into its production
dependency graph, increasing compilation time and artifact size for
downstream users.

## What changes are included in this PR?

- Replace compatibility re-exports with the narrower crates that define
`TableFunction` and `FunctionRegistry`.
- Remove the unused `crypto_expressions` activation; Spark provides its
own SHA-1, SHA-2, and CRC32 implementations.
- Fix the `quote` import so builds without the optional `core` feature
continue to compile.

These changes reduce the production dependency graph from 279 to 257
packages. Cargo Machete does not report these dependencies because they
are referenced in source through re-exports or activated through Cargo
features.

## Are these changes tested?

Yes

## Are there any user-facing changes?

No. Public APIs and default behavior remain unchanged.
## Which issue does this PR close?

* Part of apache#23393

## Rationale for this change

`ArrowBytesViewMap::size()` can underreport memory retained by the map.
It previously omitted the initial allocation of the hash table, counted
`views` by length rather than capacity, counted completed buffers by
used length rather than retained capacity, and did not include the
backing allocation of the `completed` vector.

Because this value is used for memory accounting, it should reflect heap
allocations owned by the map while continuing to exclude `self` and
external input-array buffers.

## What changes are included in this PR?

* Initialize `map_size` from the hash table's initial allocated
capacity.
* Account for `views` and the in-progress buffer using their allocated
sizes.
* Include the allocation backing the `completed` vector.
* Account for each completed Arrow `Buffer` by retained capacity rather
than used length.
* Clarify that `size()` excludes both `self` and input-array buffers.

## Are these changes tested?

Yes. This PR adds:

* `test_size_counts_initial_hash_table_capacity`, which verifies that a
newly created map reports the initial hash table allocation.
* `test_size_counts_retained_buffer_capacities`, which verifies unused
`views` capacity, `completed` vector storage, retained completed-buffer
capacity, and that re-inserting duplicate values does not increase the
reported size.

## Are there any user-facing changes?

No public API or query-result behavior changes. This fixes internal
memory accounting so `ArrowBytesViewMap::size()` more accurately reports
allocations retained by the map.

## LLM-generated code disclosure

This PR includes LLM-generated code and comments. All LLM-generated
content has been manually reviewed.
…ts from re-reading already-delivered row groups (apache#24352) (apache#24354)

## Which issue does this PR close?

- Closes apache#24352.

## Rationale for this change

With `datafusion.execution.parquet.pushdown_filters = true` and TopK
dynamic filter pushdown (both on by default), a query of the shape
`SELECT b FROM t WHERE <predicate on a> ORDER BY b LIMIT k` can silently
return **wrong results** — one source row emitted several times and the
true tail of the top-k missing — with no error or warning.

Root cause (thanks to @hhhizzz's very detailed report + fixture in
apache#24352): a row group whose post-predicate selection is empty is silently
finished by arrow-rs **without handing back a reader**.
`PushDecoderStreamState` pops its `rg_plan` **only** when a reader is
returned, so after a silently-finished RG the plan trails the decoder by
one. When the runtime row-group pruner then rebuilds the decoder
(`into_builder().with_row_groups(...)`) from the stale `rg_plan`, it
re-includes an already-delivered row group, whose rows are emitted a
second time and displace the genuine top-k in the heap.

## What changes are included in this PR?

- `push_decoder.rs`: before each boundary prune/rebuild, `rg_plan` is
synced to the row group the decoder will actually emit next via
`peek_next_row_group()` (`sync_rg_plan_to_decoder_frontier` /
`advance_rg_plan_to`), dropping entries for silently-finished row groups
so a rebuild can never re-include a delivered group. A rebuild frontier
naming an RG not in the plan is now an internal error instead of a
silent plan drain.

## Are these changes tested?

- Adds @hhhizzz's fixture as an slt regression test in
`dynamic_row_group_pruning.slt` (filter column `search_phrase` differs
from the sort column `event_time`, one row group has an empty
post-predicate selection invisible to statistics). It now returns the
correct `p0 p4096 p4097 … p4104` (was the buggy `p0 p4096 p4096 …`).
- clippy clean; `datasource-parquet` unit tests and the sqllogictest
suite pass locally.

## Are there any user-facing changes?

Fixes silently-wrong query results; no API change.

## Note

This is the standalone bug fix extracted from apache#23696 (per review
discussion in apache#24352): the same `rg_plan` ↔ decoder-frontier sync, on
its own so it merges fast and is easy to backport. apache#23696 will rebase on
top so it carries only the fully-matched `RowFilter` skip performance
optimization.

cc @alamb @adriangb @hhhizzz
@github-actions github-actions Bot added datasource Changes to the datasource crate ffi Changes to the ffi crate physical-plan Changes to the physical-plan crate spark labels Aug 16, 2026
@github-actions github-actions Bot removed development-process Related to development process of DataFusion logical-expr Logical plan and expressions physical-expr Changes to the physical-expr crates optimizer Optimizer rules core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) catalog Related to the catalog crate common Related to common crate proto Related to proto crate functions Changes to functions implementation datasource Changes to the datasource crate ffi Changes to the ffi crate physical-plan Changes to the physical-plan crate spark labels Aug 16, 2026
@imtherealnaska

Copy link
Copy Markdown
Contributor Author

@Jefffrey Can you approve the workflows ? Sorry, I messed up the merging,

@Jefffrey
Jefffrey added this pull request to the merge queue Aug 16, 2026
@Jefffrey
Jefffrey removed this pull request from the merge queue due to a manual request Aug 16, 2026
@Jefffrey
Jefffrey added this pull request to the merge queue Aug 16, 2026
@Jefffrey

Copy link
Copy Markdown
Contributor

thanks @imtherealnaska

Merged via the queue into apache:main with commit 110a90a Aug 16, 2026
38 checks passed
@Jefffrey

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.