Skip to content

Conversation

@kevinjqliu
Copy link
Contributor

@kevinjqliu kevinjqliu commented Aug 30, 2025

Rationale for this change

This PR explicitly add poetry.lock to the source distribution artifact so that we can build and test RCs with pinned dependencies.

We want to pin dependencies because we verify a release candidate (RC) by re-building the project from source distribution. We unzip the artifact, install the dependencies with make install, and then run tests.

Since poetry.lock is not automatically added to the source distribution, make install will install packages only based on pyproject.toml. The resolver will pull in the latest version by default, which can lead to compatibility issues.
For example, in 0.10 RC2, we see that this pulled in the latest datafusion which caused an compatibility issue with pyiceberg-core. This is due to the breaking change in the FFI boundary, see apache/datafusion-python#1217

Alternatively, we can restrict the upperbound of the dependencies, but that since these are optional dependencies, we want to give users the freedom to choose.

Are these changes tested?

Are there any user-facing changes?

@kevinjqliu kevinjqliu requested a review from Fokko August 30, 2025 05:07
Copy link
Contributor

@Fokko Fokko left a comment

Choose a reason for hiding this comment

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

Thanks for raising this @kevinjqliu

Alternatively, we can restrict the upperbound of the dependencies, but that since these are optional dependencies, we want to give users the freedom to choose.

I think this is generally a good strategy if a library does proper symver, but some libraries have a major release every time like Arrow and Datafusion. So, in practice this isn't ideal.

{ path = "dev", format = "sdist" },
{ path = "pyiceberg/**/*.so", format = "wheel" },
{ path = "pyiceberg/**/*.pyd", format = "wheel" },
{ path = "poetry.lock", format = "sdist" },
Copy link
Contributor

Choose a reason for hiding this comment

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

We either have to add a ASv2 licence header to the file, or add it to the RAT ignore list.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

looks like its already added! :)

Copy link
Contributor

Choose a reason for hiding this comment

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

Nice, thanks for checking 👍

@kevinjqliu kevinjqliu requested a review from Fokko September 1, 2025 16:26
@Fokko Fokko merged commit 38c569b into apache:main Sep 1, 2025
10 checks passed
@kevinjqliu kevinjqliu deleted the kevinjqliu/include-poetry-lock-in-sdist branch September 1, 2025 20:41
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.

2 participants