Skip to content

Add Python version 3.13 to test matrix. #1377

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 54 commits into
base: main
Choose a base branch
from

Conversation

JE-Chen
Copy link
Contributor

@JE-Chen JE-Chen commented Nov 26, 2024

Fixes #1372
Add Python version 3.13 to matrix.

JE-Chen and others added 2 commits November 26, 2024 09:40
Add Python version 3.13 to matrix.
@JE-Chen
Copy link
Contributor Author

JE-Chen commented Nov 26, 2024

Python Rust binding maximum supported version (3.12)

error: the configured Python interpreter version (3.13) is newer than PyO3's maximum supported version (3.12)

@Fokko
Copy link
Contributor

Fokko commented Nov 26, 2024

@JE-Chen Thanks for checking. It looks like Py3O is already at 3.13: PyO3/pyo3#4636 I was hoping that maybe bumping the Poetry build might fix it #1379. Could you rebase? Otherwise we have to track which dependency is still locked at this older version of Py3O.

@JE-Chen
Copy link
Contributor Author

JE-Chen commented Nov 27, 2024

Done

@JE-Chen
Copy link
Contributor Author

JE-Chen commented Nov 27, 2024

Same error.

error: the configured Python interpreter version (3.13) is newer than PyO3's maximum supported version (3.12)

@JE-Chen
Copy link
Contributor Author

JE-Chen commented Nov 27, 2024

Currently, we are using pyo3 v0.20.3. I think only versions of pyo3 v0.21 or newer support Python 3.13.
Some dependencies require pyo3 v0.20.3, but I don't find pyo3 listed in the Poetry requirements.

kevinjqliu and others added 12 commits November 27, 2024 15:42
* Drop upper bounds for fsspec and it's implementations

* Run poetry lock
* Ignore tables without table_type parameters while loading all iceberg table from Glue and Hive catalog (apache#1331)

* Use TABLE_TYPE

---------

Co-authored-by: Wenzhuo Zhao <[email protected]>
* fix Table.name

* replace Table.identifier with Table.name

* add warning filter
* Update parser.py

Allow leading underscore in column name used in row filter.

* Update test_parser.py

* Update test_parser.py

* Update test_parser.py
* Remove Python 3.13 upper bound restriction

* Fix missing poetry.lock file

* Upgrading numpy on the poetry.lock file from v1.26.0 to v1.26.4
* initial update

* edits

* add gpg instructions

* verify artifacts

* add twine not

* grammar

* edits

* remove old artifacts

* update doc workflow action

* and name

* add docs on patch vs major/minor release
…olumn stats (apache#1354)

* fix KeyError, by switching del to pop

* added unit test

* update test

* fix python 3.9 compatibility, and refactor test

* update test
* add instruction for patch release

* create branch from tag
@Fokko
Copy link
Contributor

Fokko commented Dec 20, 2024

@JE-Chen I think it pulls pyo3 in when it can't find pre-build wheels for a combination of the Python version and architecture.

@Fokko
Copy link
Contributor

Fokko commented Dec 20, 2024

  at ~/.local/lib/python3.10/site-packages/poetry/installation/chef.py:164 in _prepare
      160│ 
      161│                 error = ChefBuildError("\n\n".join(message_parts))
      162│ 
      163│             if error is not None:
    → 164│                 raise error from None
      165│ 
      166│             return path
      167│ 
      168│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:

Note: This error originates from the build backend, and is likely not a problem with poetry but with cramjam (2.8.3) not supporting PEP 517 builds. You can verify this by running 'pip wheel --no-cache-dir --use-pep517 "cramjam (==2.8.3)"'.

Looks like we're still pinning on an older version of cramjam, as 2.9.1 is out already: https://pypi.org/project/cramjam/

dependabot bot and others added 6 commits December 23, 2024 13:00
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.4 to 7.6.5.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](nedbat/coveragepy@7.6.4...7.6.5)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) from 0.26.2 to 0.27.0.
- [Release notes](https://github.com/mkdocstrings/mkdocstrings/releases)
- [Changelog](https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md)
- [Commits](mkdocstrings/mkdocstrings@0.26.2...0.27.0)

---
updated-dependencies:
- dependency-name: mkdocstrings
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.6.5 to 7.6.7.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](nedbat/coveragepy@7.6.5...7.6.7)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [moto](https://github.com/getmoto/moto) from 5.0.20 to 5.0.21.
- [Release notes](https://github.com/getmoto/moto/releases)
- [Changelog](https://github.com/getmoto/moto/blob/master/CHANGELOG.md)
- [Commits](getmoto/moto@5.0.20...5.0.21)

---
updated-dependencies:
- dependency-name: moto
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Remove deprecated datetime functions

* remove all usage of deprecated methods

* readd utcnow filter because of boto3
@Fokko
Copy link
Contributor

Fokko commented Jan 15, 2025

Fixing conflicts to see where we are with 3.13 :)

@kevinjqliu kevinjqliu force-pushed the test_matrix branch 2 times, most recently from 8bb7745 to 7a78748 Compare January 19, 2025 20:44
@kevinjqliu
Copy link
Contributor

Blocked on Ray 3.13 ray-project/ray#49738

We can run poetry update after

@Fokko
Copy link
Contributor

Fokko commented Apr 2, 2025

It looks like there is some progress: ray-project/ray#49738 (comment)

We should also bump the upper bounds when generating the wheels: https://github.com/search?q=repo%3Aapache%2Ficeberg-python%20%3C3.13&type=code

@Fokko Fokko added this to the PyIceberg 0.10.0 milestone Apr 2, 2025
@Fokko
Copy link
Contributor

Fokko commented May 3, 2025

@JE-Chen Could you do another attempt? We've bumped to Ray 2.45, but the issue is still open 🤔

@kevinjqliu
Copy link
Contributor

yep ray 2.45 has artifacts for python 3.13 https://pypi.org/project/ray/2.45.0/#files

@JE-Chen
Copy link
Contributor Author

JE-Chen commented May 4, 2025

@kevinjqliu
Copy link
Contributor

You dont need to change the content of the poetry.lock file directly, its generated by running poetry lock after modifying the pyproject.toml file.

Take a look at #1068 as an example. This is how we added 3.12 to the project

@JE-Chen
Copy link
Contributor Author

JE-Chen commented May 4, 2025

You dont need to change the content of the poetry.lock file directly, its generated by running poetry lock after modifying the pyproject.toml file.

Take a look at #1068 as an example. This is how we added 3.12 to the project

Thanks for the information. So, I think I need to modify pyproject.toml.

https://github.com/JE-Chen/iceberg-python/blob/7768850d932a700a774719d1f4613ed9dc13ddf3/pyproject.toml#L68

I will run pre-commit and poetry lock later.

JE-Chen added 3 commits May 5, 2025 00:25
Add a new optional ray version:
- If the Python version is ≥ 3.13, use a ray version that is ≥ 2.45.0.
Fix format (space)
After running poetry lock command
Copy link
Contributor

@kevinjqliu kevinjqliu left a comment

Choose a reason for hiding this comment

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

looks like these are the last 2 changes we'd need to make
https://grep.app/search?f.repo.pattern=iceberg-python&q=3.13
i suggestion <3.13 -> <=3.13 so that its easier for us to change the next time around

JE-Chen added 3 commits May 5, 2025 14:51
make install and re-run poetry lock
Add python 3.13 to pyproject.toml classifiers:
"Programming Language :: Python :: 3.13",
Replace <3.13 with <=3.13
@kevinjqliu
Copy link
Contributor

Looks like 3.13 gave us some extra warnings

ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7f72ddf1ae30>
==== 52 failed, 2802 passed, 1093 deselected, 12 errors in 80.29s (0:01:20) ====

https://alexwlchan.net/til/2025/python3-13-sqlite-warnings/
pallets-eco/flask-sqlalchemy#1379
pola-rs/polars#20296

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add Python 3.13 to the test matrix
10 participants