Skip to content

Conversation

@potiuk
Copy link
Member

@potiuk potiuk commented Mar 24, 2025

The setuptools 78.0.1 started to fail old packages that had dash
metadata keys and had only .sdist installation. This caused failures
of three of our dependencies:

  • json-merge-patch
  • pykylin
  • pyspark

The josn-merge-patch is a library released in 2017 (v 0.2) that implements
the RFC7386 standard
of patching json. It has been used in only one place in our repo
in google provider, in order to merge json patches (well - obvious :).
Seems like the best approach is to vendor-in the code (70 lines or so)
rather than rely on 2017-released package

The change also revealed that in two places we could use --no-dev
flag to skip installing development dependencies, because in both cases
we only care about the actual deps (codegen in case of task-sdk module
and only PyPI / production dependencies for constraint generation


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

Ok. Seems that limiting setuptools in devel deps is not enough - I will add it to main airlfow deps for now

@potiuk potiuk force-pushed the workaround-setuptools-mayhem branch from 7cb9d34 to b53d0b6 Compare March 24, 2025 18:16
@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

Let's see this time

@potiuk potiuk force-pushed the workaround-setuptools-mayhem branch from b53d0b6 to d7cd6fb Compare March 24, 2025 18:18
@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

And .. note to self .. naming both your module and function as merge is a bad idea.

@bugraoz93
Copy link
Contributor

Thanks for the fix, Jarek! I'm just catching up with the mayhem.

Copy link
Contributor

@amoghrajesh amoghrajesh left a comment

Choose a reason for hiding this comment

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

My goodness!

@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

Unfortunately more fixes needed

@potiuk potiuk force-pushed the workaround-setuptools-mayhem branch from d7cd6fb to 98451a0 Compare March 24, 2025 19:09
@potiuk potiuk requested a review from gopidesupavan as a code owner March 24, 2025 19:09
@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

Another attempt

@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

Geeee.. also python-jenkins and mysqlclient are affected :(

@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

What a buuuuuuumer

@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

ok. Setuptools 78.0.2 is out 3 minutes ago. Reverting the limits but leaving the json-merge-patch vendoring

@bugraoz93
Copy link
Contributor

ok. Setuptools 78.0.2 is out 3 minutes ago. Reverting the limits but leaving the json-merge-patch vendoring

Great news!

@potiuk potiuk force-pushed the workaround-setuptools-mayhem branch from 98451a0 to 91001c0 Compare March 24, 2025 20:13
@potiuk potiuk changed the title Workaround setuptools 78.0.1 mayhem Vendor-in json-merge-patch and add --no-dev to direct uv tool install Mar 24, 2025
@potiuk
Copy link
Member Author

potiuk commented Mar 24, 2025

Updated the description/title to reflect the actual scope. Actually it's been an interesting case and few small fixes were applied after it :)

The setuptools 78.0.1 started to fail old packages that had dash
metadata keys and had only .sdist installation. This caused failures
of three of our dependencies:

* json-merge-patch
* pykylin
* pyspark

The `josn-merge-patch` is a library released in 2017 (v 0.2) that implements
the [RFC7386](https://datatracker.ietf.org/doc/html/rfc7386) standard
of patching json. It has been used in only one place in our repo
in google provider, in order to merge json patches (well - obvious :).
Seems like the best approach is to vendor-in the code (70 lines or so)
rather than rely on 2017-released package

The change also revealed that in pre-commit we could use `--no-dev`
flag to skip installing development dependencies, because
we only care about the codegen deps.
@potiuk potiuk force-pushed the workaround-setuptools-mayhem branch from 91001c0 to 63dec40 Compare March 24, 2025 20:47
@potiuk
Copy link
Member Author

potiuk commented Mar 25, 2025

Random k8s issue. Merging

@potiuk potiuk merged commit dfb6a89 into apache:main Mar 25, 2025
147 of 148 checks passed
@potiuk potiuk deleted the workaround-setuptools-mayhem branch March 25, 2025 11:49
abhishekbhakat pushed a commit to abhishekbhakat/my_airflow that referenced this pull request Mar 25, 2025
…ll (apache#48210)

The setuptools 78.0.1 started to fail old packages that had dash
metadata keys and had only .sdist installation. This caused failures
of three of our dependencies:

* json-merge-patch
* pykylin
* pyspark

The `josn-merge-patch` is a library released in 2017 (v 0.2) that implements
the [RFC7386](https://datatracker.ietf.org/doc/html/rfc7386) standard
of patching json. It has been used in only one place in our repo
in google provider, in order to merge json patches (well - obvious :).
Seems like the best approach is to vendor-in the code (70 lines or so)
rather than rely on 2017-released package

The change also revealed that in pre-commit we could use `--no-dev`
flag to skip installing development dependencies, because
we only care about the codegen deps.
pankajkoti pushed a commit to astronomer/airflow that referenced this pull request Mar 28, 2025
…ll (apache#48210)

The setuptools 78.0.1 started to fail old packages that had dash
metadata keys and had only .sdist installation. This caused failures
of three of our dependencies:

* json-merge-patch
* pykylin
* pyspark

The `josn-merge-patch` is a library released in 2017 (v 0.2) that implements
the [RFC7386](https://datatracker.ietf.org/doc/html/rfc7386) standard
of patching json. It has been used in only one place in our repo
in google provider, in order to merge json patches (well - obvious :).
Seems like the best approach is to vendor-in the code (70 lines or so)
rather than rely on 2017-released package

The change also revealed that in pre-commit we could use `--no-dev`
flag to skip installing development dependencies, because
we only care about the codegen deps.
shubham-pyc pushed a commit to shubham-pyc/airflow that referenced this pull request Apr 2, 2025
…ll (apache#48210)

The setuptools 78.0.1 started to fail old packages that had dash
metadata keys and had only .sdist installation. This caused failures
of three of our dependencies:

* json-merge-patch
* pykylin
* pyspark

The `josn-merge-patch` is a library released in 2017 (v 0.2) that implements
the [RFC7386](https://datatracker.ietf.org/doc/html/rfc7386) standard
of patching json. It has been used in only one place in our repo
in google provider, in order to merge json patches (well - obvious :).
Seems like the best approach is to vendor-in the code (70 lines or so)
rather than rely on 2017-released package

The change also revealed that in pre-commit we could use `--no-dev`
flag to skip installing development dependencies, because
we only care about the codegen deps.
nailo2c pushed a commit to nailo2c/airflow that referenced this pull request Apr 4, 2025
…ll (apache#48210)

The setuptools 78.0.1 started to fail old packages that had dash
metadata keys and had only .sdist installation. This caused failures
of three of our dependencies:

* json-merge-patch
* pykylin
* pyspark

The `josn-merge-patch` is a library released in 2017 (v 0.2) that implements
the [RFC7386](https://datatracker.ietf.org/doc/html/rfc7386) standard
of patching json. It has been used in only one place in our repo
in google provider, in order to merge json patches (well - obvious :).
Seems like the best approach is to vendor-in the code (70 lines or so)
rather than rely on 2017-released package

The change also revealed that in pre-commit we could use `--no-dev`
flag to skip installing development dependencies, because
we only care about the codegen deps.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants