Makes sense. Maybe we should then mention that in the
https://github.com/astral-sh/uv/issues/14422 ? I do not want to "spoil"
relationship with Astral, and while I strongly believe that they should not
make such decisions unilaterally and forcing people to change their
choices, having a `pip` maintainer saying that this is a good idea, and
even pointing that ~3.10 should really be replaced by >=3.10 and that it
makes little sense to use ~3.10, is turning that into a "community
decision" - and I will be more than happy to simply follow it.

J.

On Mon, Jul 7, 2025 at 3:08 PM Tzu-ping Chung <t...@astronomer.io.invalid>
wrote:

> You don’t find anyone actively saying it’s bad, but you also would not
> find anyone recommending it with a good reason. With Python’s versioning
> scheme, having <4 makes as much sense as (random example) <3.10.
>
> I believe the trend was started by Poetry having all version range
> specifications to use ^ by default when you do “poetry add.” It’s a
> reasonable default across the board, but unless you’re using a similar
> automated tool, adding an upper cap to the supported Python version is
> cargo cult. Extra characters without any reasoning behind them.
>
> --
> Sent from my iPhone
>
> > On 7 Jul 2025, at 13:39, Jarek Potiuk <ja...@potiuk.com> wrote:
> >
> > 
> >>
> >> Note that while, as mentioned, ~= is a standard and well-supported
> > operator, it is generally NOT RECOMMENDED to be used for Python version
> > specification. It is also not recommended to use the equivalent
> expression
> > composed with >= and <.
> >
> > Interesting - could you point where it is specified that it is not
> > recommended ?  (Not that I am complaining, I understand that Python does
> > not follow SemVer, but I look hard and have not found any place where
> > anyone would say it's not recommended - that was the first time I hear
> it,
> > but If I know that Python Packaging actually made that recommendation, I
> > would be more than happy to just switch and not make any fuss about it.
> >
> >> On Mon, Jul 7, 2025 at 1:12 PM Tzu-ping Chung <t...@astronomer.io.invalid
> >
> >> wrote:
> >>
> >> Note that while, as mentioned, ~= is a standard and well-supported
> >> operator, it is generally NOT RECOMMENDED to be used for Python version
> >> specification. It is also not recommended to use the equivalent
> expression
> >> composed with >= and <.
> >>
> >> Python does not use semantic versioning, and backward incompatible
> changes
> >> are made in x.y releases (e.g. 3.10 can contain incompatibilities to
> 3.9).
> >> Setting <4 (or any single-segment version) is therefore arbitrary and
> >> divorced of any practicality.
> >>
> >> I would highly suggest Airflow to simply change ~= to a simple >=
> without
> >> an upper limit.
> >>
> >> TP
> >>
> >> --
> >> Sent from my iPhone
> >>
> >>>> On 7 Jul 2025, at 12:22, Amogh Desai <amoghdesai....@gmail.com>
> wrote:
> >>>
> >>> Thanks Jarek.
> >>>
> >>> I do not have a strong objection to either form. Both the ways are
> >>> functionally the same and valid per PEP 440.
> >>>
> >>> If I had to slightly lean one way, I’d prefer ~=3.10 for its brevity
> and
> >>> simplicity. That said, I would also understand why
> >>> some might prefer the more explicit >=3.10,<4, especially in a big
> >> project
> >>> like ours where there are lot of newcomers
> >>> coming in all the time.
> >>>
> >>> I am ok to go with whatever the community prefers here. I am more
> >>> interested in consistency in one way or another.
> >>>
> >>> Thanks & Regards,
> >>> Amogh Desai
> >>>
> >>>
> >>>> On Mon, Jul 7, 2025 at 3:22 PM Pavankumar Gopidesu <
> >> gopidesupa...@gmail.com>
> >>>> wrote:
> >>>>
> >>>> Thanks Jarek,
> >>>>
> >>>> I am just catching up with this discussion. I agree that this is
> >>>> unilaterally forcing us to make changes, though the one (~=3.10) is
> also
> >>>> the standard one we have been using.
> >>>>
> >>>> I am in favour of using our existing convention ~=3.10.
> >>>>
> >>>> Pavan
> >>>>
> >>>>> On Mon, Jul 7, 2025 at 10:12 AM Jarek Potiuk <ja...@potiuk.com>
> wrote:
> >>>>>
> >>>>> Hello here,
> >>>>>
> >>>>> If you have not noticed - we have a little bit of drama because in
> the
> >>>>> latest `uv` version, Astral unilaterally decided to make the `~=3.10`
> >>>>> de-facto invalid specification.
> >>>>>
> >>>>> The `~=3.10`  is a perfectly valid specification widely recognized as
> >>>>> `>=3.10,<4` and specified like that (named "Compatible Release") in
> >>>>> https://peps.python.org/pep-0440/#compatible-release  and even if
> the
> >>>>> wording in the PEP is slightly ambiguous for the semantics of it - it
> >> is
> >>>>> widely recognized, quite heavily used and all Python tooling properly
> >>>>> interpret it in the way described above.
> >>>>>
> >>>>> Yet the Astral team decided - unilaterally, that this is an ambiguous
> >> and
> >>>>> misleading specification and started issuing a warning about it.
> >>>> Initially,
> >>>>> the warning was pretty mysterious for workspace, because it did not
> >> tell
> >>>>> which pyproject.toml it came from (we had it in all providers and
> >>>> breeze) -
> >>>>> so after they implemented a fix, this turned into about a 100
> >>>> unsilenceable
> >>>>> warnings every time you run `uv sync`. This happened after I
> complained
> >>>>> about this in the PR and proposed that there should be both - better
> >>>>> message and a way to silence the warning for maintainers that they
> know
> >>>>> what they are doing) - yet uv 7.9.19 just made the situation worse by
> >>>>> ballooning the number of warnings and still not allowing to silence
> it.
> >>>>>
> >>>>> We are still waiting on a decision what Astral team will do in
> >>>>> https://github.com/astral-sh/uv/issues/14422, Unfortunately there is
> >> no
> >>>>> community to make decisions there - this is a unilateral decision of
> >>>> Astral
> >>>>> team what they do, even if ~=3.10 is perfectly valid and recognized
> >>>>> specification, that IMHO is not up to Astral team to make people
> change
> >>>>> their way.
> >>>>>
> >>>>> So for now we are literally being forced by Astral to change the way
> we
> >>>>> declare python compatibility - PR is here
> >>>>> https://github.com/apache/airflow/pull/52967 . The way how `uv`
> >> workflow
> >>>>> works makes it impossible to keep `~=3.10` - because every time you
> run
> >>>> `uv
> >>>>> sync` - in our case literally several times a day you have 1.5 pages
> of
> >>>>> warnings in your terminal. So it's not a "recommendation" - we are
> >> forced
> >>>>> to change it.
> >>>>>
> >>>>> I do not particularly like being forced like that - for the "PEP
> >>>> compliant"
> >>>>> and "standard" feature by the Astral team - but for now I created the
> >>>>> temporary fix - and hopefully the decision will be reversed and we
> will
> >>>> be
> >>>>> able to silence the warning - if we choose to do so.
> >>>>>
> >>>>> Speaking of which:
> >>>>>
> >>>>> Assuming that we have a choice (we do not have it now) - what would
> be
> >>>> your
> >>>>> preference:
> >>>>>
> >>>>> * Should we continue using ~3.10 ?
> >>>>> * Or should we switch to >=3.10,<4 ?
> >>>>>
> >>>>> I'd love to hear - regardless of the forceful change now - what is
> the
> >>>>> preference of the community members. I have no "strong" preferences,
> I
> >>>>> slightly prefer the `~3.10` as it is more concise. But I know others
> >>>> might
> >>>>> have a different preference. And assuming that the Astral team will
> >> stop
> >>>>> forcing us to "voluntarily choose" the latter, I would love that our
> >>>>> community makes that choice on their own.
> >>>>>
> >>>>> What do you prefer?
> >>>>>
> >>>>> J.
> >>>>>
> >>>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
> >> For additional commands, e-mail: dev-h...@airflow.apache.org
> >>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
> For additional commands, e-mail: dev-h...@airflow.apache.org
>
>

Reply via email to