1387 Commits
Author SHA1 Message Date
Raúl Cumplido 4ecdfe046e GH-54902: [C++] Move GCS and google-cloud-cpp to its own libarrow_gcs.so (#54905)
### Rationale for this change

Trying to reduce the size of libarrow.so and remove google-cloud-cpp SDK on some builds. Allow for users to plug and play based on requirements and divide our functionality into cleaner modules.

### What changes are included in this PR?

Unconditionally build GCS and the google-cloud-cpp SDK into a different module libarrow_gcs.so outside of libarrow.so.
Update bindings to link against the new libarrow_gcs.so library.
Update the Linux Package jobs to have the new module into a different package.

### Are these changes tested?

Yes via CI

### Are there any user-facing changes?

Yes, users will need to either link against libarrow_s3.so or register using LoadFileSystemFactories

### Was AI used for this PR?

In accordance to the [AI generation guidelines](https://arrow.apache.org/docs/dev/developers/overview.html#ai-generated-code), please disclose below whether and how AI was used in this PR.

**PR code and description written by:**

- [x] Human
- [x] AI

**Reviewed before submission by:**

- [x] Human
- [ ] AI
- [ ] Not reviewed

* GitHub Issue: #54902

Authored-by: Raúl Cumplido <raulcd@apache.org>
Signed-off-by: Raúl Cumplido <raulcd@apache.org>
2026-10-27 10:16:21 +01:00
Antoine Pitrou 96207d75fa GH-49760: [Doc][C++] Elaborate on what constitutes a vulnerability (#55271)
### Rationale for this change

We often get private security reports for some issues which don't threaten confidentiality or integrity.

For these kinds of issues, we would rather have them reported through the usual public means, as it follows our open development principles more closely, and lessens the required paperwork (no CVE, etc.).

### What changes are included in this PR?

Add a paragraph in the C++ security model about what should be reported as a security vulnerability vs. a regular bug.

### Are these changes tested?

N/A.

### Are there any user-facing changes?

No.

### Was AI used for this PR?

In accordance to the [AI generation guidelines](https://arrow.apache.org/docs/dev/developers/overview.html#ai-generated-code), please disclose below whether and how AI was used in this PR.

**PR code and description written by:**

- [x] Human
- [ ] AI

**Reviewed before submission by:**

- [x] Human
- [ ] AI
- [ ] Not reviewed

* GitHub Issue: #49760

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-10-27 09:48:54 +01:00
Rok Mihevc 4a6ebc06dc GH-49153: [Python] Remove APIs deprecated before 15.0.0 (#53543)
### Rationale for this change

We have many deprecated APIs in Python we should slowly remove.

### What changes are included in this PR?

Several deprecation messages are acted on.

### Are these changes tested?

By the existing test suite.

### Are there any user-facing changes?

Yes, some deprecated user-facing APIs are.removed.

### Was AI used for this PR?

In accordance to the [AI generation guidelines](https://arrow.apache.org/docs/dev/developers/overview.html#ai-generated-code), please disclose below whether and how AI was used in this PR.

**PR code and description written by:**

- [ ] Human
- [x] AI

**Reviewed before submission by:**

- [x] Human
- [x] AI
- [ ] Not reviewed

* GitHub Issue: #49153

Authored-by: Rok Mihevc <rok@mihevc.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-10-26 20:04:24 +01:00
Raúl Cumplido e304e13b68 MINOR: [Release] Update versions for 27.0.0-SNAPSHOT 2026-10-13 12:43:24 +02:00
875cd2ed9b GH-48701: [C++][Parquet] Add ALPpd encoding (#48345)
Co-authored-by: Dhirhan Kanesalingam <[dhirhan17@ gmail.com](mailto:dhirhan17@ gmail.com)>

With help from :  @ emkornfield, @ wgtmac

### Rationale for this change

  [Adaptive Lossless Floating-Point (ALP)](https://docs.google.com/document/d/1PlyUSfqCqPVwNt8XA-CfRqsbc0NKRG0Kk1FigEm3JOg/edit?tab=t.0#heading=h.5xf60mx6q7xk)
  is designed for floating-point data that commonly represents decimal values.
  For these workloads, ALP can provide better compression and faster decoding
  than general-purpose compression or existing Parquet encodings.

  This PR adds ALP support for Parquet `FLOAT` and `DOUBLE` columns in the Arrow
  C++ implementation.

  ### Specification

  - [Original ALP specification](https://docs.google.com/document/d/1xz2cudDpN2Y1ImFcTXh15s-3fPtD_aWt/edit)
  - [Parquet `AlpEncoding.md`](https://github.com/apache/parquet-format/blob/main/AlpEncoding.md)
    (merged through apache/parquet-format#539; currently in Preview)

  ### What changes are included in this PR?

  This PR adds:

  - The core ALP compression and decompression implementation.
  - Sampling logic for selecting encoding parameters.
  - Page metadata serialization, validation, and decoding.
  - Parquet encoders and decoders for `FLOAT` and `DOUBLE`.
  - Incremental decoding of ALP pages one vector at a time.
  - CMake and Meson build integration.
  - C++ documentation describing how to use the encoding.

  ALP is opt-in on the write path. It is used only when the writer explicitly
  selects `Encoding::ALP` and dictionary encoding is disabled. Arrow does not
  currently select ALP automatically based on the input data.

  ### Are these changes tested?

  Yes. Test coverage includes:

  - Interoperability with the ALP conformance file in `parquet-testing`.
  - `FLOAT` and `DOUBLE` round trips.
  - Decimal-like, constant, random, and exception-heavy inputs.
  - Empty and all-null pages.
  - Configurable vector sizes.
  - Truncated or malformed page metadata.
  - Invalid offsets, element counts, bit widths, and exception positions.
  - Batched and incremental decoding.

  ### Are there any user-facing changes?

  Yes. Arrow C++ can read Parquet pages encoded with ALP. Writers can explicitly
  select ALP for supported floating-point columns.

  ALP requires reader support and is not selected automatically, so existing
  writer behavior remains unchanged unless users opt in.

* GitHub Issue: #48701

Lead-authored-by: Prateek Gaur <prateek.gaur@snowflake.com>
Co-authored-by: Gang Wu <ustcwg@gmail.com>
Signed-off-by: Gang Wu <ustcwg@gmail.com>
2026-10-13 13:33:02 +08:00
Eric WangandAntoine Pitrou fcf8f30142 GH-22342: [Format][Documentation] Clarify Union type ids (#50839)
### Rationale for this change

The Union layout documentation does not explain that the type IDs stored in the types buffer can differ from the child array indices, or how the optional `typeIds` metadata maps children to physical type IDs.

### What changes are included in this PR?

- Document the relationship between Union child array indices, physical type IDs, and the optional `typeIds` metadata.
- Clarify that the types buffer stores the type ID for each slot.

Fixes #22342.

### Are these changes tested?

`git diff --check` passes and the RST change was reviewed against `Schema.fbs` and the existing Union layout documentation. A local Sphinx/RST checker is not installed in this environment.

### Are there any user-facing changes?

No.

* GitHub Issue: #22342

Lead-authored-by: erichanwang <ericwang559@gmail.com>
Co-authored-by: Antoine Pitrou <pitrou@free.fr>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-10-06 11:25:12 +02:00
5183e21386 GH-46901: [C++][Compute] Add remainder and modulo kernels (#48914)
### Rationale for this change
Arrow is currently missing remainder and modulo kernels.

### What changes are included in this PR?
Add the kernels `remainder`, `remainder_checked`, `modulo`, and `modulo_checked`, following the terminology in the [divmod proposal](https://lists.apache.org/thread/h3t6nz1ys2k2hnbrjvwyoxkf70cps8sh):

* `remainder` uses truncated (C/C++) semantics — the result has the sign of the dividend, e.g. `remainder(-7, 3) == -1`.
* `modulo` uses floored (Python/R) semantics — the result has the sign of the divisor, e.g. `modulo(-7, 3) == 2`.

Both are supported for integer, floating-point and decimal inputs, and are exposed as `compute::Remainder` / `compute::Modulo` in `api_scalar.h`.

Decimal arguments are promoted to a common scale like `add`, but the result type is resolved by a dedicated resolver rather than reusing `ResolveDecimalAdditionOrSubtractionOutput`: a remainder is always smaller in magnitude than the divisor, so no extra digit is needed for a carry, and the result is `precision = max(p1, p2)`, `scale = s1`. This keeps maximum-precision inputs (`decimal128(38, 0)`, `decimal256(76, 0)`) from overflowing the decimal precision range.

Left as follow-ups: combined divmod #27909, floor division #39386, and duration support.

### Are these changes tested?
Yes. New tests cover truncated vs. floored semantics across signed/unsigned integer, floating-point and decimal types, division by zero, `INT_MIN % -1` overflow, and decimal result-type resolution (same type in/out, mixed precisions and scales, Decimal128/Decimal256 promotion, decimal/integer promotion, and maximum-precision decimals).

### Are there any user-facing changes?
Yes — four new compute functions (`remainder`, `remainder_checked`, `modulo`, `modulo_checked`), the corresponding `compute::Remainder` / `compute::Modulo` C++ APIs, and a new `BasicDecimal256 operator%`. These are additions only; no existing API is changed or removed.

* GitHub Issue: #46901
* xref: https://github.com/apache/arrow/pull/46902,
* xref: https://github.com/apache/arrow/pull/28497

Lead-authored-by: Fangchen Li <fangchen.li@outlook.com>
Co-authored-by: Rok Mihevc <54589+rok@users.noreply.github.com>
Co-authored-by: tadeja <864005+tadeja@users.noreply.github.com>
Signed-off-by: Rok Mihevc <rok@mihevc.org>
2026-10-01 16:41:16 +02:00
tadeja f0d043cd2d MINOR: [Docs][C++] Fix doxygenfile path for arrow/flight/transport.h (#51677)
### Rationale for this change
- Empty [26.0 dev implementing-custom-transports](https://arrow.apache.org/docs/dev/cpp/api/flight.html#implementing-custom-transports) `Warning: doxygenfile: Cannot find file “arrow/flight/transport.h`
(and Sphinx building html shows the same [warning at flight.rst:207](https://github.com/apache/arrow/actions/runs/36746074972/job/109992487223?pr=51661#step:6:4145))
- While [25.0 docs](https://arrow.apache.org/docs/cpp/api/flight.html#implementing-custom-transports) renders "Implementing Custom Transports" OK.

New Breathe version 5.0.0 (breathe-doc/breathe#967, breathe-doc/breathe#1029) checks `doxygenfile` against Doxygen's index (file name transport.h) and no longer full path.

### What changes are included in this PR?
Use path `transport.h` which works both with Breathe 4.x and 5.x

### Are these changes tested?
Yes.

### Are there any user-facing changes?
No.

### Was AI used for this PR?

**PR code and description written by:**

- [X] Human
- [X] AI, only for analysis

**Reviewed before submission by:**

- [X] Human
- [ ] AI
- [ ] Not reviewed

Authored-by: Tadeja Kadunc <tadeja.kadunc@gmail.com>
Signed-off-by: Rok Mihevc <rok@mihevc.org>
2026-10-01 16:33:23 +02:00
17be9c7caa GH-51652: [Python] Add NumPy StringDType to Arrow conversion (#51157)
### Rationale for this change

NumPy 2.0 added `StringDType`, a variable-width UTF-8 string dtype. `pa.array` currently rejects it with `Unsupported numpy type 2056`. Now that pyarrow requires NumPy 2.0 the conversion can use the public `NpyString_*` C API.

This supersedes #50951. The first commit is @ alippai's first commit from that PR, unchanged. His later commits added batching and new bulk builder APIs in Arrow C++; those can come later in their own PR with benchmarks, as discussed there. Nothing outside the NumPy conversion code changes here.

### What changes are included in this PR?

- `NumPyDtypeToArrow` maps `StringDType` to `string`, so it is also the inferred type for `pa.array`, `pa.infer_type`, `pa.from_numpy_dtype` and lists of such arrays. `large_string` and `string_view` can be requested with `type`. Any other type raises a `TypeError` naming the requested type.
- The conversion holds the dtype's allocator lock for the whole array and never holds the GIL while taking it.
- A null entry in a StringDType array becomes an Arrow null unless the dtype's `na_object` is a `str`. NumPy reports such entries as that string from `__getitem__`, in ufuncs and comparisons, and in casts, and there is no way to tell them apart from a regular entry holding the same string, so the conversion writes the string too. NaN-like sentinels such as `np.nan` and `pd.NA`, `None`, and arbitrary objects all become arrow nulls.
- A short section in `docs/source/python/numpy.rst` describing the support and the semantics for converting missing data.

If left unfixed, https://github.com/apache/arrow/issues/51156 also becomes possible to trigger from Python by creating a StringDType array with a very large entry.

### Are these changes tested?

Yes. Tests cover the three target types, strings crossing NumPy's short, medium and long storage thresholds, non-ASCII input, strided input, `mask`, `None`, NaN and string sentinels, the rejected target type, and list inference. I also ran a threaded test that converts an array while other threads hit NumPy's null-comparison error path on the same array to check the lock ordering.

### Are there any user-facing changes?

Yes. `pa.array` and the inference functions accept `StringDType` arrays.

AI disclosure: I used an AI model to work on the follow-up commits on top of @ alippai's first commit and for code review.

* GitHub Issue: #42018

* GitHub Issue: #51652

Lead-authored-by: Nathan Goldbaum <nathan.goldbaum@gmail.com>
Co-authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com>
Co-authored-by: Adam Lippai <adam@rigo.sk>
Signed-off-by: Joris Van den Bossche <jorisvandenbossche@gmail.com>
2026-10-01 15:24:28 +02:00
Narendra 1998ed3556 GH-51007: [C++] Make uriparser an external dependency (#51244)
### Rationale for this change

The vendored uriparser in `cpp/src/arrow/vendored/uriparser/` is 0.9.3, which is old and misses upstream security fixes. Instead of refreshing the vendored copy, this makes uriparser an external dependency like our other third-party dependencies.

### What changes are included in this PR?

- Add `uriparser` to `ARROW_THIRDPARTY_DEPENDENCIES`
- Add `build_uriparser()` that builds uriparser 1.0.2 with `FetchContent` for `uriparser_SOURCE=BUNDLED` (static; docs, tests, tools and `wchar_t` support are disabled). The built library is bundled into `arrow_bundled_dependencies`.
- Require uriparser 0.9.6 or later for `uriparser_SOURCE=SYSTEM`. All uriparser APIs used by Arrow are available in 0.9.6, so supported platforms such as Ubuntu 22.04 can use their distribution package.
- Add `cmake_modules/FinduriparserAlt.cmake`. It tries uriparser's CMake package configuration first and falls back to pkg-config (`liburiparser.pc`), because Debian and Ubuntu's `liburiparser-dev` provides only the pkg-config file.
- Add `uriparser::uriparser` to `ARROW_STATIC_INSTALL_INTERFACE_LIBS` for `uriparser_SOURCE=SYSTEM`, so that static library users link uriparser.
- meson: Use the system uriparser 0.9.6 or later if available. Otherwise, build uriparser 1.0.2 via `subprojects/uriparser.wrap` with the CMake subproject support.
- Remove `cpp/src/arrow/vendored/uriparser/` and its section in `LICENSE.txt`.
- Packaging: Install uriparser in our Docker images, conda environment, `Brewfile`, vcpkg manifests, MSYS2 setup and Linux packages build environments.
- Packaging: Pass `-Duriparser_SOURCE` in `ci/scripts/cpp_build.sh`.
- Packaging: Add uriparser to the dependency list in `docs/source/developers/cpp/building.rst`.

***NOTICE*** : The floor is 0.9.6 rather than 1.0.2, so supported platforms such as Ubuntu 22.04 can use their distro package and CI does not have to build uriparser from source. 

### Are these changes tested?

All existing tests pass. 

### Are there any user-facing changes?

Now Arrow requires uriparser or builds it . No user facing changes as such because no API changes . 

**This PR contains a "Critical Fix".** It has security fixes that has gone in uriparser. 

**AI Usage**:
- Used for testing <-> building loop. 

* GitHub Issue: #51007

Authored-by: Narendra <naskastark11@gmail.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-10-01 08:54:40 +02:00
Alenka Frim 05c1723d94 GH-47472: [Doc] List third-party implementations (#51390)
### Rationale for this change
We only list the official Arrow implementations in our docs though there are a number of third-party open source implementations existing.

### What changes are included in this PR?

- Third-party open source implementations are added to the docs,
- `nanoarrow` is moved under the _Official Implementations_ list.

### Are these changes tested?
Via docs preview.

### Are there any user-facing changes?
No.

### Was AI used for this PR?

In accordance to the [AI generation guidelines](https://arrow.apache.org/docs/dev/developers/overview.html#ai-generated-code), please disclose below whether and how AI was used in this PR.

**PR code and description written by:**

- [x] Human
- [ ] AI

**Reviewed before submission by:**

- [x] Human
- [ ] AI
- [ ] Not reviewed

* GitHub Issue: #47472

Authored-by: AlenkaF <frim.alenka@gmail.com>
Signed-off-by: AlenkaF <frim.alenka@gmail.com>
2026-10-01 06:11:35 +02:00
Kalyanam Dewri 7538742292 GH-30800: [Python][Docs] Document partition fields with explicit dataset schemas (#50352)
Summary:
- Document that explicit dataset schemas for partitioned datasets must include partition fields used in filters or projections.
- Add a doctest-backed example showing a Hive partition field used with `count_rows`.

Validation:
- `/tmp/arrow-doccheck-30800/bin/python -m pytest --doctest-glob="*.rst" docs/source/python/dataset.rst -q` — passed, `1 passed`
- `git diff --check HEAD~1 HEAD` — passed

* GitHub Issue: #30800

Authored-by: kalyanamdewri <kalyanampriyam@gmail.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
2026-09-30 12:22:36 +01:00
Jonas Dedden c75bc9aa9f GH-50988: [C++][Python] Substrait: add mappings for starts_with, ends_with and match_substring (#50989)
### Rationale for this change

`starts_with`, `ends_with` and `match_substring` have no Substrait mapping, so any expression using them fails to serialize:

```python
import pyarrow as pa
import pyarrow.compute as pc
from pyarrow.substrait import serialize_expressions

schema = pa.schema([pa.field("cat", pa.string())])
serialize_expressions([pc.starts_with(pc.field("cat"), "al")], ["f"], schema)
# ArrowNotImplementedError: No conversion function exists to convert the
# Arrow function starts_with to a Substrait call
```

Comparisons, `isin` and arithmetic serialize fine, so this is a per-function gap. It matters for engines that ingest a PyArrow filter through Substrait, where an unmappable function becomes a hard failure rather than a fallback.

See #50988.

### What changes are included in this PR?

Map the three kernels onto `starts_with`, `ends_with` and `contains` from Substrait's `functions_string.yaml`, in both directions.

The signatures do not line up. Substrait passes the pattern as a second argument, while the Arrow kernels are unary and carry it in `MatchSubstringOptions`. So:

* encoding lifts `MatchSubstringOptions::pattern` out into a literal argument
* decoding requires that argument to be a non-null string literal, and returns `NotImplemented` otherwise

Substrait's `case_sensitivity` option maps onto `ignore_case`. `CASE_INSENSITIVE_ASCII` has no Arrow equivalent and returns `NotImplemented`.

Both caveats are documented in `docs/source/cpp/acero/substrait.rst`.

### Are these changes tested?

Yes.

`Substrait.StringMatchExpressionSerialization` round-trips all three functions with and without `ignore_case`. `Substrait.StringMatchExpressionDeserialization` deserializes hand-written Substrait JSON to cover the default (no option) case and the two rejection paths. `test_serializing_string_match_expressions` round-trips each function through `pyarrow.substrait`.

### Are there any user-facing changes?

Yes. `pc.starts_with`, `pc.ends_with` and `pc.match_substring` can now be serialized to Substrait and consumed back, and Acero can consume plans using Substrait's `starts_with`, `ends_with` and `contains`. No existing behaviour changes: these previously raised.

* GitHub Issue: #50988

Authored-by: Jonas Dedden <mail@jonas-dedden.de>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2026-09-28 15:54:19 +09:00
Adam Reeve 911a7cbf1f GH-51349: [C++][Parquet] Add flag to control pass-through of KMS URLs from key material (#51350)
### Rationale for this change

Addresses #51349

### What changes are included in this PR?

* Adds a new `read_kms_url` member to `DecryptionConfiguration` and a parameter with the same name to `rotate_master_keys`. Both are false by default.
* Adds these to the PyArrow bindings.

### Are these changes tested?

Yes, this includes new unit tests.

### Are there any user-facing changes?

Yes, this adds a new user-facing option. Users that relied on this behaviour previously will now need to opt-in and enable the flag.
* GitHub Issue: #51349

Authored-by: Adam Reeve <adreeve@gmail.com>
Signed-off-by: Adam Reeve <adreeve@gmail.com>
2026-09-22 08:50:25 +12:00
f3b46fb7d4 GH-49677 [Python][C++][Compute] Add search sorted compute kernel (#49679)
### Rationale for this change
Add the implemenation of the search sorted compute kernel based on the numpy function: https://numpy.org/doc/stable/reference/generated/numpy.searchsorted.html

### What changes are included in this PR?
Implementation of the C++ kernel + Python API.
Tests in C++ and Python

### Are these changes tested?
Yes

### Are there any user-facing changes?
No breaking change

* GitHub Issue: #49677

Lead-authored-by: Alexis Placet <2400067+Alex-PLACET@users.noreply.github.com>
Co-authored-by: Alexis Placet <alexis.placet.dev@pm.me>
Co-authored-by: Antoine Pitrou <antoine@python.org>
Co-authored-by: Copilot <copilot@github.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-09-21 12:35:41 +02:00
Kosta Tarasov 808338ea5a GH-50622: [Docs][Format] Align Variant typed_value primitive type mappings with the Parquet shredding spec (#50810)
### Rationale for this change

The existing Arrow spec is misleading and allows certain Arrow types to
be typed value Variant fields. The Parquet Shredding spec specifically
rejects them - Unsigned integers, Null.

Decimal mapping needs clarification about precision. 

### What changes are included in this PR?

Change the Primitive Type Mappings table for Parquet Variant extension
type.

Rendered version -
https://github.com/sdf-jkl/arrow/blob/gh50622-variant-typed-value-mappings/docs/source/format/CanonicalExtensions.rst#primitive-type-mappings

### Are these changes tested?

N/A

### Are there any user-facing changes?

Changes to the Arrow docs

Closes #50622

* GitHub Issue: #50622
2026-09-21 06:23:20 -04:00
Nic CraneandCopilot Autofix powered by AI 43751939f2 GH-51232: [CI] Remove the "take" comment bot for self-assigning issues (#51233)
### Rationale for this change

Anyone could assign themselves an issue by commenting "take", including issues already assigned to someone else. Assignment should be handled by committers and collaborators instead.

### What changes are included in this PR?

Removes the `issue_assign` job from the comment bot workflow and updates the contributor docs to say that a committer or collaborator will assign issues on request.

### Are these changes tested?

No. Docs were checked with sphinx-lint via pre-commit.

### Are there any user-facing changes?

No. Contributors can no longer self-assign issues by commenting "take".
* GitHub Issue: #51232

Lead-authored-by: Nic Crane <thisisnic@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
2026-09-17 15:22:31 -05:00
Raúl Cumplido 275b44b0cd GH-50194: [C++] Move S3 and AWS-SDK to its own libarrow_s3.so (#50195)
### Rationale for this change

Trying to reduce the size of `libarrow.so` and remove AWS SDK on some builds. Allow for users to plug and play based on requirements and divide our functionality into cleaner modules.

### What changes are included in this PR?

Unconditionally build S3 and the AWS SDK into a different module `libarrow_s3.so` outside of `libarrow.so`.
Update bindings to link against the new `libarrow_s3.so` library.
Update the Linux Package jobs to have the new module into a different package.

### Are these changes tested?

Yes via CI

### Are there any user-facing changes?

Yes, users will need to either link against `libarrow_s3.so` or register using `LoadFileSystemFactories`
* GitHub Issue: #50194

Authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-09-17 11:48:51 +02:00
Aaditya SrinivasanandRaúl Cumplido 40067d77eb GH-51331: [CI] Exempt collaborators from concurrent PR limit (#51332)
### Rationale for this change

Exempt contributors with repository collaborator access from the concurrent pull request limit.

The workflow comments and documentation are updated accordingly.

### Are these changes tested?

Not yet.

### Are there any user-facing changes?

No.

Closes: #51331 

* GitHub Issue: #51331

Lead-authored-by: Aaditya Srinivasan <aadityasri03@gmail.com>
Co-authored-by: Aaditya Srinivasan <156181482+Reranko05@users.noreply.github.com>
Co-authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2026-09-16 06:22:55 +09:00
Nic CraneandCopilot Autofix powered by AI 20373450d9 GH-51199: [CI] Limit concurrent PRs from new contributors (#51200)
### Rationale for this change

Too many low-quality or drive-by AI-generated PRs from non-committers blocking up review capacity

### What changes are included in this PR?

Prevent non-committers opening more than 3 concurrent PRs.  This may be a little annoying for those who are engaging with effort, but PRs can be reopened later and so is an overall net positive.

Committers can reopen closed PRs on behalf of non-committers without this triggering.

### Are these changes tested?

I'll test on my fork

### Are there any user-facing changes?

No

### AI Usage

Generated this, but asked questions about security etc

* GitHub Issue: #51199

Lead-authored-by: Nic Crane <thisisnic@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
2026-09-14 14:09:31 -04:00
Ritika shrestha cd304b22da MINOR: [Python][Docs] Remove reference to removed pyarrow.HdfsFile (#50397)
### Rationale for this change

The Python memory/IO docs list `pyarrow.HdfsFile` as a `NativeFile` subclass, but that class no longer exists (legacy HDFS was deprecated in 2.0 and later removed). The `:class:` reference has no target, and HDFS access now uses `pyarrow.fs.HadoopFileSystem`, which returns regular `NativeFile` objects. It's the only unresolved pyarrow cross-reference on the page.

### What changes are included in this PR?

Removes the stale `pyarrow.HdfsFile` bullet in docs/source/python/memory.rst. One line, docs only.

### Are these changes tested?

Confirmed `pyarrow.HdfsFile` isn't in pyarrow, the ref appears only once, and all remaining `:class:` refs on the page resolve after removal.

### Are there any user-facing changes?

Documentation only.

Authored-by: Ritika shrestha <87307821+ritsth@users.noreply.github.com>
Signed-off-by: AlenkaF <frim.alenka@gmail.com>
2026-09-11 12:18:21 +02:00
Antoine ProuvostandAntoine Pitrou 39706ed061 GH-39295: [C++][Python] ConsumingDLPack on Arrays and Tensor (#51122)
### Rationale for this change
There are already utilities to import tensor data from NumPy.
With DLPack standard, it will work across many tensor providers.

### What changes are included in this PR?
- Bind `FixedShapedTensorArray::FromTensor` in Python
- Add `ImportArrayVersionedFromDLPack` and `ImportTensorVersionedFromDLPack` in C++
- Add in Python `Array.from_dlpack` and `Tensor.from_dlpack`
   Similar to the export, multidimensional tensor import require an explicit step through `Tensor`.
- No `Array::FromTensor` or even `FixedSizeListArray::FromTensor`. IMHO it does not feel as necessary in this direction but open to anyone's take one it.

### Are these changes tested?
Yes.

### Are there any user-facing changes?
Yes, new APIs.

* GitHub Issue: #39295

Lead-authored-by: AntoinePrv <AntoinePrv@users.noreply.github.com>
Co-authored-by: Antoine Pitrou <pitrou@free.fr>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-09-10 17:04:57 +02:00
Antoine Pitrou 926885f1b1 GH-51100: [C++][Format] Deprecate IPC tensor/sparse tensor messages (#51102)
### Rationale for this change

Deprecate Tensor and SparseTensor messages in the IPC specification.

Deprecate C++ APIs for reading and writing Tensor and SparseTensor IPC messages.

Deprecating IPC support for Tensor and SparseTensor was decided in https://lists.apache.org/thread/w7nvhjyks3p3smw5kq4ylv0nkwxq2s2q

### Are these changes tested?

By existing CI tests.

### Are there any user-facing changes?

No.

* GitHub Issue: #51100

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-09-10 10:26:59 +02:00
Jeffrey Vo e0cf4184dd MINOR: [Docs] Fix reference to int8 runs type in canonical extensions (#51010)
run types are 16, 32 & 64 bit only; looks to just be a typo from copying
from dictionary above
2026-09-04 11:56:32 -04:00
meher745 287c749468 MINOR: [Docs][C++] Clarify ARROW_TEST_DATA requirement for tests (#48789)
### Rationale for this change

While setting up the C++ build on macOS, I encountered an IOError during testing because ARROW_TEST_DATA and PARQUET_TEST_DATA were not set. The current documentation lacks a clear warning that these exports are mandatory for a successful test pass.

### What changes are included in this PR?

I added a .. note:: block to building.rst clarifying the need to initialize submodules and export absolute paths for test data folders.

### Are these changes tested?

Yes, I built the documentation locally using Sphinx (make html) to verify the formatting renders correctly.

### Are there any user-facing changes?

Yes, this updates the developer-facing documentation for C++ building.

Authored-by: Meher <mehergupta06@gmail.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
2026-09-04 13:00:30 +01:00
alexeyroytman 5d26062e39 MINOR: [C++][Parquet][Doc] pointer dereference instead of dot in parquet.rst (#49932)
### Rationale for this change
Example code did not compile because it used dot (`.`) instead of arrow (`->`) in C++ code.

### What changes are included in this PR?
One C++ example code in a documentation to have dot (`.`) replaced by arrow (`->`).

### Are these changes tested?
Manually, when I've tried to copy-and-paste example, and it did not compile.

### Are there any user-facing changes?
One external example will change.

Authored-by: alexeyroytman <33158117+alexeyroytman@users.noreply.github.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
2026-09-04 12:58:54 +01:00
Roshan Ramani 8eadad7073 GH-51148: [Docs] Repoint three dead links (#51149)
### Rationale for this change

Three links in the docs return 404. Each one is the reference target for advice the page is giving, so following it leaves the reader with nothing:

- the checkstyle config a Java contributor is told to follow,
- the conda install guide in the Crossbow setup instructions,
- the ROCm reference in the C device data interface spec.

### What changes are included in this PR?

Three URL strings.

- `developers/java/development.rst`: `apache/arrow/blob/main/java/dev/checkstyle/checkstyle.xml` becomes `apache/arrow-java/blob/main/dev/checkstyle/checkstyle.xml`. The file moved with the Java split and the `java/` path segment went with it; it is 10,851 bytes on `arrow-java@ main`. This was the last remaining `apache/arrow/.../java/...` link under `docs/source`.
- `developers/continuous_integration/crossbow.rst`: `conda.io/docs/user-guide/install/index.html` becomes `docs.conda.io/projects/conda/en/latest/user-guide/install/index.html`.
- `format/CDeviceDataInterface.rst`: the `_ROCm:` target becomes `amd.com/en/products/software/rocm.html`, since AMD retired `en/graphics/servers-solutions-rocm`.

### Are these changes tested?

Not by the test suite; nothing outside `docs/source` changed and no code is touched. Each old URL was requested and returns 404, each new one returns 200, and the two GitHub paths were checked through the contents API rather than the HTML pages, because github.com rate-limits a bulk sweep and a 429 is indistinguishable from a 404. I did not build the docs locally.

### Are there any user-facing changes?

Documentation only. Three links that were broken now resolve.

Disclosure: prepared with AI assistance (Claude, via Claude Code), per the AI-generated Code Guidance in the contributing overview. I reviewed the diff; it introduces no third-party material.
* GitHub Issue: #51148

Authored-by: Roshan Ramani <roshanramani.dev@gmail.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
2026-09-03 15:09:06 +01:00
b12755a1cc GH-47686: [Docs][Python] Split the Python Parquet docs into separate items (#50419)
### Rationale for this change
The current parquet section is one-page and covering lots of topics. As per https://github.com/apache/arrow/issues/46601 the parquet section is most visited and would therefore need a bit of maintenance/content update.

### What changes are included in this PR?

- Parquet documentation is split in 4 different subpages (index.rst, parquet.rst, parquet_datasets.rst and parquet_encryption.rst). 
- Some additional content is added

### Are these changes tested?
Via the docs preview

### Are there any user-facing changes?
No
* GitHub Issue: #47686

Lead-authored-by: AlenkaF <frim.alenka@gmail.com>
Co-authored-by: Alenka Frim <AlenkaF@users.noreply.github.com>
Co-authored-by: Adam Reeve <adreeve@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: AlenkaF <frim.alenka@gmail.com>
2026-08-26 16:01:00 +02:00
Ian Cook 515410b2a1 MINOR: [Docs] Update nanoarrow implementation status (#50928) 2026-08-21 23:49:56 -04:00
b60d43701b GH-48473: [CI][Python] Require numpy 2.0 (#50769)
### Rationale for this change
Require Numpy 2.0 to support newer features, allow newer numpy API/ABI

### What changes are included in this PR?

- Numpy 2.0+ requirement
- Pandas 2.2.2+ requirement (first wheel compatible with numpy 2.0)
- Pyodide 0.27.1 usage (numpy 2.0 api)

### Are there any user-facing changes?
Yes, in contrast to pyarrow 25, after merging this PR pyarrow 26 can't be used with Numpy 1.x or pandas 2.0-2.2.1 

**This PR includes breaking changes to public APIs.**

This PR was created using GPT-5.6-Sol-xhigh, every line read & reviewed by me.
* GitHub Issue: #48473

Lead-authored-by: Adam Lippai <adam@rigo.sk>
Co-authored-by: Ádám Lippai <adam@rigo.sk>
Co-authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Co-authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-08-21 19:16:28 +02:00
Joris Van den Bossche 71c98fcbd1 GH-46646: [dev][R] Replace linr with jarl for R linting / pre-commit check (#50851)
### Rationale for this change

Fix #46646 by replacing the `lintr` pre-commit hook (which requires system R/Rscript to bootstrap, causing hard failures when R isn't installed, end even if installed still gives errors when using conda (https://github.com/apache/arrow/issues/47997)) with jarl (https://jarl.etiennebacher.com/, a Rust-native R linter distributed as a standalone binary or as a python package).

### What changes are included in this PR?

- `.pre-commit-config.yaml`: swapped the local `lintr` hook for `etiennebacher/jarl-pre-commit` (jarl-check, rev 0.5.0)
- `r/jarl.toml`: new config file, excludes the same generated files that `r/.lintr` and `r/air.toml` already exclude
  - NOTE: for now I did not remove `r/.lintr` in case people would use that locally or through their IDE, so it might be useful to keep. But for our CI it could be removed.
- `.github/workflows/dev.yml`: dropped r-base from the CI apt install and the now-unused `~/.local/share/renv/cache` from the pre-commit cache path, since no pre-commit hook needs R anymore
- `r/vignettes/developers/workflow.Rmd` and `docs/source/developers/guide/step_by_step/styling.rst`: updated references from lintr to jarl

At the moment, running `jarl check` gives 42 pre-existing errors (13 auto-fixable), so CI will be failing at the moment. 
Those should be fixed (or temporarily suppressed) in a next commit. EDIT: for now I added those to the configuration as ignored rules, so CI would be green. Those can be fixed as a follow-up issue.

Also note the differences between lintr and jarl listed at https://github.com/apache/arrow/issues/46646#issuecomment-5253845795. Especially no cyclocomp (complexity) or object_length equivalent exists in jarl, so we have to see if we are fine with dropping those checks.

Code changes are largely generated by Claude, I did review everything, but I am no R developer ..

### Are these changes tested?

pre-commit runs on CI

### Are there any user-facing changes?

No

* GitHub Issue: #47937
* GitHub Issue: #46646

Authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
2026-08-21 08:31:30 +01:00
Kalyanam Dewri 18f86efaee GH-46853: [Python][Docs] Document preserving leading zeros in CSV (#50477)
Summary:
- Document that quoted numeric CSV values are still subject to type inference.
- Add a doctest-backed example showing how `ConvertOptions.column_types` preserves leading zeros.
- AI assistance was used for issue triage and drafting this documentation example.

Validation:
- `/tmp/arrow-doccheck-46853/bin/python -m pytest --doctest-glob="*.rst" docs/source/python/csv.rst -q` — passed, `1 passed`
- `git diff --check HEAD~1 HEAD` — passed

* GitHub Issue: #46853

Authored-by: kalyanamdewri <kalyanampriyam@gmail.com>
Signed-off-by: AlenkaF <frim.alenka@gmail.com>
2026-08-19 19:04:27 +02:00
You-Cheng LinandYou-Cheng Lin 7128c9c262 GH-50801: [Python] Expose the record_batch_reader_source Acero node (RecordBatchReaderSourceNodeOptions) (#50802)
### Rationale for this change
Closes #50801
As title, this exposes RecordBatchReaderSourceNodeOptions to Python. With it, a hash join can build its hash table once and stream the probe side through as a generator-backed RecordBatchReader, releasing each input chunk as it is consumed, instead of materializing the full probe table up front (table_source) or pinning all fragments for the plan's lifetime (dataset scan).

### Are these changes tested?
Yes
### Are there any user-facing changes?
Yeah, users can pass RecordBatchReaderSourceNodeOptions into Declaration, but its not a breaking change

* GitHub Issue: #50801

Lead-authored-by: You-Cheng Lin <106612301+owenowenisme@users.noreply.github.com>
Co-authored-by: You-Cheng Lin <mses010108@gmail.com>
Signed-off-by: Rossi Sun <zanmato1984@gmail.com>
2026-08-12 19:30:06 -07:00
Raúl Cumplidoandtadeja 4070a2fb98 GH-50811: [Release] Use maint-Major.Minor.x for patch releases as the maintenance branch on required release scripts (#50813)
### Rationale for this change

When working with patch releases currently the maintenance branch used is not correct and the scripts for 02-source and 03-binary fail to create the PR or find it.

### What changes are included in this PR?

Use the correct maintenance branch format taking into account the differences between major releases and patch releases.
Updated release documentation to make it clearer that only the `maint-X.Y.x` branch is used for patch releases.

### Are these changes tested?

Yes, as I had to cut RC1 for the 25.0.1 release I've been able to validate that they work as expected now.

### Are there any user-facing changes?

No

* GitHub Issue: #50811

Lead-authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Co-authored-by: tadeja <tadeja@users.noreply.github.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-08-06 09:50:58 +02:00
tadejaandRok Mihevc 7ef5982635 GH-50808: [Python] Narrow Feather deprecation to V1 format (#50685)
### Rationale for this change
Follow-up to https://github.com/apache/arrow/issues/49232#issuecomment-5105290467 / #49590

### What changes are included in this PR?
Remove warnings from `write_feather()`, `read_feather()`, `read_table()`, and `FeatherDataset`.
Warn **only** on writing with `version=1` / reading Feather V1 file.
Update docs to V1-only and keep IPC migration guide.
Additionally corrected notes like `deprecated as of 24.0.0` to `25.0.0` instead.

`DeprecationWarning` in place of current `FutureWarning`.

### Are these changes tested?
Yes, by CI.

### Are there any user-facing changes?
Yes!
Feather V2 APIs no longer emit deprecation warnings.
Reading/writing the legacy Feather V1 format emits `DeprecationWarning` in place of `FutureWarning`.

* GitHub Issue: #50808

Lead-authored-by: Tadeja Kadunc <tadeja.kadunc@gmail.com>
Co-authored-by: tadeja <tadeja@users.noreply.github.com>
Co-authored-by: Rok Mihevc <rok@mihevc.org>
Signed-off-by: Rok Mihevc <rok@mihevc.org>
2026-08-04 19:39:55 +02:00
Sutou Kouhei 0cac818ea8 GH-50674: [Release] Add support for recovering Yum repositories (#50681)
### Rationale for this change

We need this when we break our Yum repositories.

### What changes are included in this PR?

We can recover Yum repositories too by `dev/release/binary-recover.sh`.

### Are these changes tested?

Yes. I recovered our Yum repositories with this.

### Are there any user-facing changes?

No.
* GitHub Issue: #50674

Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-07-30 09:27:27 +02:00
Matt Topol d300aa9fda docs: updating Go impl status (#50580)
Adding checkmarks for TimestampWithOffset (v18.7.0 release) and updating
other status to be correct.
2026-07-21 15:15:36 -04:00
Raúl Cumplido 179ff561d5 MINOR: [Release] Update versions for 26.0.0-SNAPSHOT 2026-07-10 10:49:40 +02:00
Raúl Cumplido b0b792ac88 GH-48808: [Python] Drop support for Pandas < 2.0.3 (#50444)
### Rationale for this change

[Pandas 2.0.0](https://pypi.org/project/pandas/2.0.0/) was released on April 3rd 2023.
The last version of Pandas 1 was [Pandas 1.5.3](https://pypi.org/project/pandas/1.5.3/) and it was released on January 19th 2023. That version only supports up to Python 3.11.

We are currently supporting up to Pandas 1.5.2 (first version supporting 3.11).

On the issue we discussed to bump our Pandas support to 2.0.0 but given 2.0.3 is the latest in the 2.0.x, was released on June 2023, only supports up to Python 3.11 and bumping to it allows use to improve even further some of the conditionals we are bumping to Pandas >= 2.0.3 

### What changes are included in this PR?

Update minimal support check to Version(2.0.3) and remove all test skips, conditionals and scenarios where we are checking for Pandas < 2.0.3.

We found a couple of minor things

### Are these changes tested?

Yes via CI

### Are there any user-facing changes?

Yes, Pandas < 2 won't be supported.

* GitHub Issue: #48808

Authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-07-09 19:30:12 +02:00
Raúl Cumplido 934fa870a7 GH-50410: [Python][Packaging] Drop Python 3.10 support (#50411)
### Rationale for this change

Python 3.10 is End of Support on October 2026. We can drop support on PyArrow 26.0.0.
See: https://endoflife.date/python

### What changes are included in this PR?

Remove support for 3.10. Update minimum required Python version and update some CI jobs to use the minimum Python supported version.
Some CI jobs using default Python 3.10 (Ubuntu 20.04) have been bumped.

### Are these changes tested?

They will be tested via CI and Archery

### Are there any user-facing changes?

Yes in terms of not supporting older versions of Python. This will be a breaking change for some users but not for the API itself

* GitHub Issue: #50410

Authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-07-09 12:33:32 +02:00
6d06317ab1 GH-50313: [C++][Docs] Add guidance about memory bombs (#50408)
### Rationale for this change

Add guidance about handling or avoiding memory bombs in file formats that involve optional compression.

### Are these changes tested?

N/A.

### Are there any user-facing changes?

No.

* GitHub Issue: #50313

Lead-authored-by: Antoine Pitrou <pitrou@free.fr>
Co-authored-by: Antoine Pitrou <antoine@python.org>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Co-authored-by: Dewey Dunnington <dewey@dunnington.ca>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-07-08 09:54:45 +02:00
Om Biradar 43e2bbe541 GH-50087: [Docs][C++] Fix sentence structure in memory.rst regarding MemoryManager (#50324)
In file `docs/source/cpp/memory.rst`:
* Removes a duplicate line
* Minor grammar fix

### Rationale for this change

I believe the statement 

>  The associated class :class:`arrow::MemoryManager` specifies how to allocate on a given device.

was repeated twice and there was some grammatical mistake in the same paragraph 
* GitHub Issue: #50087

Authored-by: OmBiradar <ombiradar04@gmail.com>
Signed-off-by: Bryce Mecum <petridish@gmail.com>
2026-07-03 13:51:08 -07:00
Emil Sadek e183ea96bf MINOR: [Docs] Add Timestamp With Offset to canonical extension types status (#50309)
### Rationale for this change

The [Timestamp With Offset](https://arrow.apache.org/docs/format/CanonicalExtensions.html#timestamp-with-offset) canonical extension type is missing from the [Implementation Status](https://arrow.apache.org/docs/status.html) documentation page.

### What changes are included in this PR?

This PR adds a row for Timestamp With Offset to the Canonical Extension types table of the Implementation Status documentation page. It shows that the extension type is implemented only in Rust: https://github.com/apache/arrow-rs/pull/8743.

### Are these changes tested?

Screenshot from docs running locally:

<img width="919" height="422" alt="SCR-20260630-npnr" src="https://github.com/user-attachments/assets/748a1279-4c3c-4f41-aebf-f6e9b3dc7aa1" />

### Are there any user-facing changes?

This is a documentation change.

Authored-by: Emil Sadek <esadek@users.noreply.github.com>
Signed-off-by: Rok Mihevc <rok@mihevc.org>
2026-07-01 15:36:11 +02:00
piyushka-allyandIsaac 65244af1ff GH-49232: [Python] deprecate feather python (#49590)
### Rationale for this change

Arrow C++ is deprecating the Feather reader/writer (#49231) so we should update the Python functions too. Feather V2 is exactly the Arrow IPC file format, making the separate `pyarrow.feather` module redundant. Users should migrate to `pyarrow.ipc`.

### What changes are included in this PR?

- Added `FutureWarning` deprecation warnings to all four public APIs in `pyarrow.feather`: `write_feather()`, `read_feather()`, `read_table()`, and `FeatherDataset`
- Extracted `_read_table_internal()` so that `read_feather()` calling `read_table()` internally does not produce double warnings
- Updated `FeatherDataset.read_table()` to use the internal function for the same reason
- Added `.. deprecated:: 24.0.0` directives to all four public API docstrings
- Added module-level `pytestmark` filter in `test_feather.py` to suppress warnings in existing tests
- Added 5 new tests verifying deprecation warnings are emitted correctly (including a no-double-warning test)
- Added `@ pytest.mark.filterwarnings` to 5 test functions in `test_dataset.py` that use feather as a utility
- Updated `feather.rst` with a deprecation notice and migration guide (including a note that `pyarrow.ipc` does not compress by default unlike `feather.write_feather`)
- Updated `formats.rst` to mark the Feather API section as deprecated

### Are these changes tested?

Yes. Five new tests verify that each deprecated function emits exactly one `FutureWarning`, and existing tests continue to pass with module/function-level warning filters.

### Are there any user-facing changes?

Yes — calling `pyarrow.feather.write_feather()`, `read_feather()`, `read_table()`, or `FeatherDataset()` now emits a `FutureWarning` directing users to `pyarrow.ipc` equivalents. Existing functionality is unchanged.

* GitHub Issue: #49232

Lead-authored-by: Piyush Kanti Chanda <piyush.chanda@databricks.com>
Co-authored-by: Isaac
Signed-off-by: AlenkaF <frim.alenka@gmail.com>
2026-07-01 09:37:16 +02:00
Shrivas ShankarandRok Mihevc 5d2a8fa709 GH-50197: [C++][Python] Add "hypot" compute kernel (#50198)
### Rationale for this change
Arrow has `atan2` and `logb` but no `hypot`. Computing a Euclidean norm currently needs `sqrt(add(multiply(x, x), multiply(y, y)))`, which can overflow at the `multiply` step even when the result is representable.
### What changes are included in this PR?
Add a `hypot` kernel backed by `std::hypot` (float32/float64, with integer/decimal inputs promoted to float64), the `Hypot()` C++ function, a `FunctionDoc` and `compute.rst` entry, and a Python expression test. `pc.hypot` is auto-exposed from the registry.
### Are these changes tested?
Yes, C++ tests for the basic cases, null/NaN/Inf handling, and an overflow case confirming it doesn't fall back to a naive `sqrt(x*x + y*y)`.
### Are there any user-facing changes?
Yes, a new `hypot` function in C++ and Python. Additive only.
* GitHub Issue: #50197

Lead-authored-by: Shrivas Shankar <shrivasshankar2019@gmail.com>
Co-authored-by: Shrivas Shankar <86219405+shrivasshankar@users.noreply.github.com>
Co-authored-by: Rok Mihevc <rok@mihevc.org>
Signed-off-by: Rok Mihevc <rok@mihevc.org>
2026-07-01 03:12:36 +02:00
Curt HagenlocherandCopilot Autofix powered by AI d40ace0805 GH-50285: [Docs] Update documentation to reflect C# improvements (#50286)
### What changes are included in this PR?

Updates documentation and integration tests to reflect improvements in
the dotnet implementation.

### Are these changes tested?

N/A

### Are there any user-facing changes?

N/A
* GitHub Issue: #50285

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-29 08:57:45 -07:00
Antoine Pitrou 6b4c524812 GH-50172: [Doc][Format] Clarify that variadic buffers can also be null (#50255)
### Rationale for this change

Some implementations are known to produce null variadic buffers in BinaryView arrays, and expose them on the C Data Interface.

Since Arrow C++, and perhaps other implementations, make the wrong assumption that imported variadic buffers cannot be null, clarify the docs.

### Are these changes tested?

N/A.

### Are there any user-facing changes?

No.

* GitHub Issue: #50172

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-06-29 10:49:05 +02:00
tadeja 9e47fbb05f GH-50227: [Docs][Python][Parquet] Update parquet default version text in parquet.rst (#50228)
### Rationale for this change
See #50227 - Python Parquet section [Storing timestamps](https://arrow.apache.org/docs/dev/python/parquet.html#storing-timestamps) mentions version 1.0 is the default write version but the actual [default has been 2.6 ](https://github.com/apache/arrow/blame/98ee71ec2be85d3ac535be367c6edacc0bc09c7c/python/pyarrow/parquet/core.py#L1996) for some time.
(Replace old pr #37227)

### What changes are included in this PR?
Update the default Parquet version text 1.0 -> 2.6 in `docs/source/python/parquet.rst`.

### Are these changes tested?
Docs build fine locally.

### Are there any user-facing changes?
No.
* GitHub Issue: #50227

Authored-by: Tadeja Kadunc <tadeja.kadunc@gmail.com>
Signed-off-by: AlenkaF <frim.alenka@gmail.com>
2026-06-29 06:10:58 +02:00
Zehua Zou cffe22d6fe GH-38849: [C++][Parquet] Add support for list view and large list view (#50160)
### Rationale for this change

Allow us to write an arrow list view array into a parquet file and read list view type from parquet.

### What changes are included in this PR?

We will sort the list views based on the offsets before inserting the array in Parquet writer, and generate a size array in Parquet reader.

### Are these changes tested?

Yes.

### Are there any user-facing changes?

No.
* GitHub Issue: #38849

Authored-by: Zehua Zou <zehuazou2000@gmail.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2026-06-25 14:25:31 +02:00
4fce185a1a GH-50115: [Dev] Adjust GitHub Copilot configuration for preliminary reviews (#50117)
### Rationale for this change

We tried auto GitHub Copilot reviews recently and discussed our experience for them:
https://lists.apache.org/thread/thq0dz19shxbrjypb81q5ltx8h0w54ob

We want to tune auto GitHub Copilot reviews:
* We don't need auto GitHub Copilot reviews for draft PR: https://lists.apache.org/thread/y7yc4yg9n4mdqd1y00w7s498y8m6yold
* GitHub Copilot review is too verbose: https://github.com/apache/arrow/pull/50023#issuecomment-4535261566
* We need to document the expectation for contributors responding to GitHub Copilot reviews: https://lists.apache.org/thread/wvhdqqtq2ndxxjnqwnj39xfcys21tpc4

### What changes are included in this PR?

* Disable auto GitHub Copilot reviews for draft PR
* Add code review instructions for GitHub Copilot
  * Base text is generated by Gemini 3 Flash Preview and I adjusted it

### Are these changes tested?

No. We need to merge this to test this.

### Are there any user-facing changes?

No.
* GitHub Issue: #50115

Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2026-06-14 17:40:42 +09:00