### 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>
### Rationale for this change
pandas 3.0.0 deprecated constructing or casting to a `Categorical` with
non-NA values that are not present in the specified `dtype.categories`.
This surfaces as DeprecationWarnings in the PyArrow
test suite when run against pandas >= 3.0 (GH-49255), in test_category
and test_category_implicit_from_pandas.
### What changes are included in this PR?
- test_category: remove the `cat_strings_with_na` column (relied on
silent 'qux' -> NaN; redundant, cat_strings already carries nulls).
- test_category_implicit_from_pandas: use explicit None
(['a','b',None]) instead of out-of-category 'c'.
### Are these changes tested?
Yes - test-only. Verified no DeprecationWarning under pandas 3.0.3.
### Are there any user-facing changes?
No.
Closes#49255.
* GitHub Issue: #49255
Authored-by: GujaLomsadze <lomsadze.guja@gmail.com>
Signed-off-by: Rok Mihevc <rok@mihevc.org>
### Rationale for this change
See: https://github.com/apache/arrow/issues/49227#issue-3926177634
### What changes are included in this PR?
Deprecation warnings for `pyarrow.gandiva` added for version 24.0.0
### Are these changes tested?
Yes, tested locally that warnings are raised on import. CI tests verify the warnings are filtered in out test suite.
### Are there any user-facing changes?
Yes, `pyarrow.gandiva` is deprecated and will be removed in a feature PyArrow version.
* GitHub Issue: #49227
Authored-by: AlenkaF <frim.alenka@gmail.com>
Signed-off-by: AlenkaF <frim.alenka@gmail.com>
### Rationale for this change
When building locally, I get many errors along the lines of
```
Please ensure the files specified are contained by the root
of the Python package (normally marked by `pyproject.toml`).
By 2026-Mar-20, you need to update your project and remove deprecated calls
or your builds will no longer be supported.
See https://packaging.python.org/en/latest/specifications/glob-patterns/ for details.
```
<img width="958" height="755" alt="terminal demo" src="https://github.com/user-attachments/assets/67f0e261-c4d2-403c-b004-688dfaaccda6" />
### What changes are included in this PR?
- Make the licence [SPDX compliant](https://spdx.org/licenses)
- Remove the licence classifier
- Move the licence files from `setup.cfg` to `pyproject.toml`
- Fix the [disallowed glob patterns](https://packaging.python.org/en/latest/specifications/glob-patterns) via symlinks
- Bumped the minimum version of `setuptools` due to macOS CI failures (don't know why this happened, caching maybe?)
I appreciate the symlink change might prove controversial. See discussions in https://github.com/apache/arrow/issues/45867, fixes https://github.com/apache/arrow/issues/45867.
### Are these changes tested?
When I rebuild locally, I get no errors any more.
### Are there any user-facing changes?
Yes. The minimum required version of `setuptools` is now `77`. However, this is available on `>=3.9` so won't affect anyone really.
* GitHub Issue: #45867
Authored-by: Patrick J. Roddy <patrickjamesroddy@gmail.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Checked locally on a Ubuntu 20.04 host with:
```
archery docker run ubuntu-cuda-python
```
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
`archery lint --flake8` becomes `archery lint --python` and now recognizes the `--fix` option.
Reformatting involves running `autopep8`.
Closes#7215 from pitrou/ARROW-8846-archery-autopep8
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Follow-up on https://issues.apache.org/jira/browse/ARROW-6556 / https://github.com/apache/arrow/pull/5377.
We were a bit fast with merging the other PR, as pandas changed the removal slightly (it added back a dummy SparseDataFrame object which triggers a warning upon access, but this means that `hasattr(pd, 'SparseDataFrame)` or try/except on import is not a good check to know if the actual class still exists or not).
Using pytests warnings filter I now ensure no such warning is raised in our test suite.
Closes#5438 from jorisvandenbossche/ARROW-6556-fix-warning and squashes the following commits:
06a073806 <Joris Van den Bossche> ARROW-6556: Fix warning for pandas SparseDataFrame removal
Authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com>
Signed-off-by: Wes McKinney <wesm+git@apache.org>
Author: Phillip Cloud <cpcloud@gmail.com>
Closes#689 from cpcloud/ARROW-1033 and squashes the following commits:
60a3bc3 [Phillip Cloud] ARROW-1033: [Python] pytest discovers scripts/test_leak.py
This reintroduces `setuptools_scm` versioning for git clones and sdists/wheels. git-archives are handled by a separate chunk of code that will infer the version from the `pom.xml`
As in the Maven world, always the next to-be-released version is specified and Python PEP 440 development versions are based on the previous release, it used the most minimal pre-release version specified there.
I would suggest to keep the conda package versioning as it is currently, i.e. manually set it to 0.1.0postX.
Also: I would rather not parse the Maven XML but that is the most simple way currently to ensure that the versioning system is in a state where we can still make releases with the Maven release plugin.
Author: Uwe L. Korn <uwelk@xhochy.com>
Closes#248 from xhochy/ARROW-430 and squashes the following commits:
39753f8 [Uwe L. Korn] Infer version from java/pom.xml
05c44ea [Uwe L. Korn] Get rid of setuptools_scm_git_archive
14b8136 [Uwe L. Korn] Revert "ARROW-429: Revert ARROW-379 until git-archive issues are resolved"
Change-Id: I4f6d291e63b2518af47c2a81049aa24a38c92821
These changes are resulting in GitHub producing archive tarballs with non-deterministic contents.
Author: Wes McKinney <wes.mckinney@twosigma.com>
Closes#243 from wesm/ARROW-429 and squashes the following commits:
49f6edb [Wes McKinney] Revert "ARROW-379: Use setuptools_scm for Python versioning"
Author: Uwe L. Korn <uwelk@xhochy.com>
Closes#224 from xhochy/ARROW-379 and squashes the following commits:
3a68d9f [Uwe L. Korn] Remove deprecated version import
15fe9b2 [Uwe L. Korn] Add license header
aa9bd49 [Uwe L. Korn] ARROW-379: Use setuptools_scm for Python versioning