Created PR https://github.com/apache/airflow/pull/36858 where I proposed a
separate document - with a bit more polished version of what I wrote above,
interlinked with the succinct README chapter we already have.

I also expanded there a bit "What's the purpose of patch-level release"
explaining the approach we take for classifying changes as breaking/not
breaking and adding comment on SemVer being "intentional" and not
"technically breaking non/breaking" - something that we discussed a lot at
many occasions in multiple PRs when we debated whether things are
breaking/not breaking.

And removed "how some people know/don't know" about it. I hope having that
FAQ will help us to get to the point where we all know it  - or at least
can easily find it when we are looking for it.

J.

On Thu, Jan 18, 2024 at 8:42 AM Jarek Potiuk <ja...@potiuk.com> wrote:

> I think if anything - that should be a separate page in our GitHub -
> which will be a) easier to do b) maybe indeed makes sense c) this is where
> we put "developer" docs.
>
> I think we agreed already quite some time ago that "airflow.apache.org"
> is generally for the users and all the docs for contributors/maintainers
> should go as .md/.rst files in our repository, but not into the airflow
> website.
>
> Yeah - I think it might be worth it if we keep it separate from README :).
> I think we had far too long README and (as mentioned above) over the last
> year or so it got shorter and shorter, while it gained only the "super
> important" information IMHO. So yeah having a separate FAQ taking my mail
> as context might be a good idea.
>
> I will open PR for that and if others agree it's a good idea (and help
> with reviewing it, we can merge it).
>
> J.
>
>
>
>
>
>
>
> On Thu, Jan 18, 2024 at 5:29 AM Amogh Desai <amoghdesai....@gmail.com>
> wrote:
>
>> Thanks @Jarek Potiuk <ja...@potiuk.com>!
>>
>> I vaguely knew the process but not in such detail, thanks for putting it
>> together in this email.
>> I will visit the document
>> https://github.com/apache/airflow?tab=readme-ov-file#what-goes-into-the-next-release
>> and if I find any clarifications, I will send it across as a PR.
>>
>> One suggestion: what if we put it together in a document and put it on
>> the airflow website under
>> https://airflow.apache.org/community/ where we mention "how we release"?
>>
>> Might be a bit too much given the context people will have while
>> visiting the airflow website..
>>
>> Thanks & Regards,
>> Amogh Desai
>>
>> On Wed, Jan 17, 2024 at 6:13 PM Jarek Potiuk <ja...@potiuk.com> wrote:
>>
>>> I separate it out, because it seems that despite the efforts to explain
>>> and
>>> document how our releases work It's not clear even for the PMC chair, so
>>> likely it warrants a separate thread - also it will be easier to find it
>>> in
>>> the archives this way.
>>>
>>> I think this is an important topic that all maintainers should be aware
>>> of,
>>> so let me take a task to explain it in a longer email (and separate
>>> thread).
>>>
>>> I created it in a form of FAQ, because it seems that similar questions
>>> might be asked by others.
>>>
>>> *Do we have a process defined here?*
>>>
>>> Answering Bolke's question - who was apparently confused what our process
>>> is:
>>>
>>> > I see that some improvements to Airflow.io (two weeks ago) were not
>>> included and some provider updates neither.  Haven't checked anything
>>> else
>>> yet.
>>>
>>> Apparently there is some confusion about the process, but yes we have a
>>> well defined and well tested (pretty much 4 years now) process that we
>>> follow., We follow it since I remember actually - it's been also done the
>>> same in 1.10 - but with some variations, Likely we do it the same way
>>> since
>>> the beginning of 2.0, but it has been refined and improved over time - by
>>> those who volunteered their time in the release process (a lot of ad-hoc
>>> discussion have been traditionally happening in #release-management slack
>>> channel) and as of few months ago we even documented it (It was in
>>> November
>>> 2023) - with this PR https://github.com/apache/airflow/pull/35245
>>>
>>> It is currently described in a prominent place in our most important (and
>>> over the last year or so the README, we made the README pretty short and
>>> contains only super-important information on how Airflow is developed)
>>> README.md under *"What goes into the next release?"* chapter:
>>>
>>>
>>> https://github.com/apache/airflow?tab=readme-ov-file#what-goes-into-the-next-release
>>> .
>>>
>>> *How does the selection process for cherry-picking work?*
>>>
>>> In short (and this is the most important thing that every maintainer
>>> should
>>> be aware of): *those maintainers who think that issue should be included
>>> should mark it with the next (in this case 2.8.1) milestone*. It's up to
>>> individual maintainers who want to include certain changes to take care
>>> about it and mark the issues they think are bug fixes, to go into the
>>> next
>>> release
>>>
>>> This is the only thing that the maintainer has to do to get the PR
>>> proposed
>>> to be considered in the next patchlevel release. Sometimes - if
>>> controversial - maintainers discuss the proposals in #release-management
>>> channel, sometimes in #development or in the PR itself (especially if the
>>> release manager decides to not include it and changes the milestone (and
>>> explains why).
>>>
>>> *What's the release manager's role ?*
>>>
>>> Release manager's job is purely mechanical (as also mandated by the
>>> Apache
>>> Software Foundation release manager role description) to assess
>>> cherry-pick
>>> ability of those changes. Release manager - at the sole discretion and
>>> individual decision (this is the only place in the whole ASF setup where
>>> a
>>> single person has such power to make individual decisions) can reject
>>> some
>>> of those who other maintainers think should be included. But the release
>>> manager on his own does not make proposals on what should be included.
>>>
>>> *Is this process following the ASF rules?*
>>>
>>> I believe yes, The release manager's role is nicely described here:
>>> https://infra.apache.org/release-publishing.html#releasemanager. And
>>> there
>>> is a far more complete description here that describes the whole process
>>> https://www.apache.org/legal/release-policy.html#management - also
>>> mentioning that it's the PMC's responsibility (and particularly PMC
>>> chair's) to adhere to the process.
>>>
>>> *What's the role of individual maintainers?*
>>>
>>> The role of maintainers (collectively) to propose things for the next
>>> release. In our case it happens with setting the milestone on a PR.
>>>
>>> *When proposed PRs are rejected?*
>>>
>>> There are various reasons to reject those - if too complex to cherry-pick
>>> or when the release manager assesses it's a new feature, not a bugfix.
>>> Essentially (according to semver) when it comes to the user-facing
>>> changes,
>>> the PATCHLEVEL release should contain only bugfixes. and may contain docs
>>> changes if they are fixing/improving docs (not about new features) and
>>> also
>>> environment/build script changes (so non-user-facing changes) as they are
>>> pretty much always needed to keep the things nicely building - those are
>>> usually skipped from the changelog as non-user facing).
>>>
>>> *Why are provider changes not cherry-picked?*
>>>
>>> In our case - basically none of the provider changes are cherry-picked -
>>> unless they are needed to make the builds work well (sometimes happen).
>>> Providers are ALWAYS released from the latest main code, not from the
>>> v2-8-stable branch. In fact all the tests and ci checks for providers are
>>> skipped in the non-main (v2* branches). So yes - not seeing provider
>>> changes cherry-picked is absolutely expected.
>>>
>>> *Do we skip over some changes when releasing a patchlevel release? What's
>>> the purpose of patch-level releases?*
>>>
>>> Answering Bolke's question:
>>>
>>> > Is that intentional? Ie. is that the purpose of this release. Other
>>> big(ger) and more recent changes have been included hence asking.
>>>
>>> The purpose of that release is as described in SemVer - to give the users
>>> bugfix-only release that has no new features. Of course it's sometimes
>>> debatable whether changes are features/bugfixes, but we usually use
>>> #release-management to quickly chat about it, and eventually the release
>>> manager always makes a comment in the PR when the milestone is changed
>>> and
>>> explains the reasoning.
>>>
>>> Skipping is not intentional because we never "skip" things when
>>> cherry-picking, It's *reverse* - those maintainer who think that certain
>>> bug fixes (or internal changes or sometimes even feature changes that we
>>> classify really as "bugfix" SHOULD intentionally mark those PRs they want
>>> with 2.8.1 (or basically next patch-level) to be *included. * So there is
>>> no skipping, if maintainer did not deliberately mark PR as upcoming
>>> milestone, it will just not be included
>>>
>>> *Where do some maintainers know about it **from ? *
>>>
>>> Because the maintainers who actively participate - either acting as
>>> release
>>> managers (those who raised their hand and acted as release managers
>>> generally speaking) and those who wanted their changes to be part of the
>>> past releases have been doing it for years. For years this has been
>>> simply
>>> followed and discussed in #release-management channel and #development
>>> (and
>>> in devlist whenever there were new releases) and generally the
>>> maintainers
>>> who took part in those discussions and release process are aware of that
>>> -
>>> also many maintainers know the process as it "soaked" in when they were
>>> just watching.
>>>
>>> However recently we've made an attempt to document it (the PR above). So
>>> you could learn it by reading it (even if it does not have the whole
>>> context above).
>>>
>>> *Why do some people not know about it?*
>>>
>>> Not sure. Maybe because they were not interested and never asked? Maybe
>>> because there was never a long email about it at our devlist, or the
>>> documentation about it in README was too succinct?
>>>
>>> Or maybe we need a better way of communicating it - I am not sure. But I
>>> hope this email will clarify a lot of it, and will prove valuable when
>>> searching in devlist.
>>>
>>> Maybe even someone who manages to read it all will update the README
>>> description of ours to explain it better :) and maybe create a nice FAQ
>>> that we can put in our docs?
>>>
>>> I really hope this mail - even if long - will make people a bit more
>>> aware
>>> of the process, and if someone has an idea how the "collective" awareness
>>> can be improved - I think it's a good idea to send PR or email (or maybe
>>> even record a video :) ??) that will be a better way of communicating it.
>>>
>>> J.
>>>
>>>
>>> On Wed, Jan 17, 2024 at 9:03 AM Bolke de Bruin <bdbr...@gmail.com>
>>> wrote:
>>>
>>> > Just checking:
>>> >
>>> > I see that some improvements to Airflow.io (two weeks ago) were not
>>> > included and some provider updates neither.  Haven't checked anything
>>> else
>>> > yet.
>>> >
>>> > Is that intentional? Ie. is that the purpose of this release. Other
>>> > big(ger) and more recent changes have been included hence asking.
>>> >
>>> > B.
>>> >
>>> > Sent from my iPhone
>>> >
>>> > > On 16 Jan 2024, at 20:18, Jarek Potiuk <ja...@potiuk.com> wrote:
>>> > >
>>> > > +1 (binding): Checked all my changes, I ran airflow in a few
>>> > combinations
>>> > > (MySQL / Postgres Local/Celery executor. It looks and works well -
>>> run a
>>> > > few dags and navigated through a number of screens. Checked licences,
>>> > > signatures, checksums, performed a "reproducible build" check and it
>>> > worked
>>> > > (with a small glitch explained below).
>>> > >
>>> > > BTW. The new "hatchling-built" package looks good and it nicely
>>> installs
>>> > > airflow + extras (and it has a far better and cleaner set of extras -
>>> > > finally you can reproducibly install airflow with `all` extra if you
>>> > > ***REALLY*** want :).
>>> > >
>>> > > Reproducibility (also for other PMC members doing the check): I
>>> found a
>>> > > small glitch in the "reproducible" part of verifying the packages.
>>> While
>>> > > wheel and sdist packages are exactly the same binary-wise, the
>>> > > source-tarball was binarry different for me. I decompressed it and
>>> > compared
>>> > > the content - they are identical - but there is one difference which
>>> I
>>> > > overlooked - the group permissions for files in Ephraim's tarball are
>>> > > different from mine. I have totally forgotten about the fact that
>>> umask
>>> > > might set different group/other permissions when checking out the
>>> files
>>> > > from git. Fix will be coming shortly - in the meantime I recommend
>>> anyone
>>> > > who will be doing the comparison to uncompress both tarballs and
>>> compare
>>> > > the contents with `diff -r`.
>>> > >
>>> > >
>>> > >
>>> > >> On Tue, Jan 16, 2024 at 11:30 AM Ephraim Anierobi <
>>> > >> ephraimanier...@apache.org> wrote:
>>> > >>
>>> > >> Hey fellow Airflowers,
>>> > >>
>>> > >> I have cut Airflow 2.8.1rc1. This email is calling a vote on the
>>> > release,
>>> > >> which will last at least 72 hours, from Tuesday, January 16, 2024 at
>>> > 10:30
>>> > >> am UTC
>>> > >> until Friday, January 19, 2024, at 10:30 am UTC
>>> > >> <
>>> > >>
>>> >
>>> https://www.timeanddate.com/worldclock/fixedtime.html?msg=8&iso=20240119T1030&p1=1440
>>> > >>> ,
>>> > >> and until 3 binding +1 votes have been received.
>>> > >>
>>> > >> Status of testing of the release is kept at
>>> > >> https://github.com/apache/airflow/issues/36808
>>> > >>
>>> > >> Consider this my (binding) +1.
>>> > >>
>>> > >> Airflow 2.8.1rc1 is available at:
>>> > >> https://dist.apache.org/repos/dist/dev/airflow/2.8.1rc1/
>>> > >>
>>> > >> *apache-airflow-2.8.1-source.tar.gz* is a source release that comes
>>> with
>>> > >> INSTALL instructions.
>>> > >> *apache-airflow-2.8.1.tar.gz* is the binary Python "sdist" release.
>>> > >> *apache_airflow-2.8.1-py3-none-any.whl* is the binary Python wheel
>>> > "binary"
>>> > >> release.
>>> > >>
>>> > >> Public keys are available at:
>>> > >> https://dist.apache.org/repos/dist/release/airflow/KEYS
>>> > >>
>>> > >> Please vote accordingly:
>>> > >>
>>> > >> [ ] +1 approve
>>> > >> [ ] +0 no opinion
>>> > >> [ ] -1 disapprove with the reason
>>> > >>
>>> > >> Only votes from PMC members are binding, but all members of the
>>> > community
>>> > >> are encouraged to test the release and vote with "(non-binding)".
>>> > >>
>>> > >> The test procedure for PMC members is described in:
>>> > >>
>>> > >>
>>> >
>>> https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md\#verify-the-release-candidate-by-pmc-members
>>> > >>
>>> > >> The test procedure for and Contributors who would like to test this
>>> RC
>>> > is
>>> > >> described in:
>>> > >>
>>> > >>
>>> >
>>> https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md\#verify-the-release-candidate-by-contributors
>>> > >>
>>> > >>
>>> > >> Please note that the version number excludes the `rcX` string, so
>>> it's
>>> > now
>>> > >> simply 2.8.1. This will allow us to rename the artifact without
>>> > modifying
>>> > >> the artifact checksums when we actually release.
>>> > >>
>>> > >> Release Notes:
>>> > >> https://github.com/apache/airflow/blob/2.8.1rc1/RELEASE_NOTES.rst
>>> > >>
>>> > >> Changes since 2.8.0:
>>> > >>
>>> > >> *Significant Changes*
>>> > >>
>>> > >> *Target version for core dependency ``pendulum`` package set to 3
>>> > >> (#36281).*
>>> > >> Support for pendulum 2.1.2 will be saved for a while, presumably
>>> until
>>> > the
>>> > >> next feature version of Airflow.
>>> > >> It is advised to upgrade user code to use pendulum 3 as soon as
>>> > possible.
>>> > >>
>>> > >> *Airflow packaging specification follows modern Python packaging
>>> > standards
>>> > >> (#36537).*
>>> > >> We standardized Airflow dependency configuration to follow latest
>>> > >> development in Python packaging by
>>> > >> using ``pyproject.toml``. Airflow is now compliant with those
>>> accepted
>>> > >> PEPs:
>>> > >>
>>> > >> * `PEP-440 Version Identification and Dependency Specification <
>>> > >> https://www.python.org/dev/peps/pep-0440/>`__
>>> > >> * `PEP-517 A build-system independent format for source trees <
>>> > >> https://www.python.org/dev/peps/pep-0517/>`__
>>> > >> * `PEP-518 Specifying Minimum Build System Requirements for Python
>>> > Projects
>>> > >> <https://www.python.org/dev/peps/pep-0518/>`__
>>> > >> * `PEP-561 Distributing and Packaging Type Information <
>>> > >> https://www.python.org/dev/peps/pep-0561/>`__
>>> > >> * `PEP-621 Storing project metadata in pyproject.toml <
>>> > >> https://www.python.org/dev/peps/pep-0621/>`__
>>> > >> * `PEP-660 Editable installs for pyproject.toml based builds (wheel
>>> > based)
>>> > >> <
>>> > >> https://www.python.org/dev/peps/pep-0660/>`__
>>> > >> * `PEP-685 Comparison of extra names for optional distribution
>>> > dependencies
>>> > >> <https://www.python.org/dev/peps/pep-0685/>`__
>>> > >>
>>> > >> Also we implement multiple license files support coming from Draft,
>>> not
>>> > yet
>>> > >> accepted (but supported by hatchling) PEP:
>>> > >> * `PEP 639 Improving License Clarity with Better Package Metadata <
>>> > >> https://peps.python.org/pep-0639/>`__
>>> > >>
>>> > >> This has almost no noticeable impact on users if they are using
>>> modern
>>> > >> Python packaging and development tools, generally
>>> > >> speaking Airflow should behave as it did before when installing it
>>> from
>>> > >> PyPI and it should be much easier to install
>>> > >> it for development purposes using ``pip install -e ".[devel]"``.
>>> > >>
>>> > >> The differences from the user side are:
>>> > >>
>>> > >> * Airflow extras now get extras normalized to ``-`` (following
>>> PEP-685)
>>> > >> instead of ``_`` and ``.``
>>> > >>  (as it was before in some extras). When you install airflow with
>>> such
>>> > >> extras (for example ``dbt.core`` or
>>> > >>  ``all_dbs``) you should use ``-`` instead of ``_`` and ``.``.
>>> > >>
>>> > >> In most modern tools this will work in backwards-compatible way,
>>> but in
>>> > >> some old version of those tools you might need to
>>> > >> replace ``_`` and ``.`` with ``-``. You can also get warnings that
>>> the
>>> > >> extra you are installing does not exist - but usually
>>> > >> this warning is harmless and the extra is installed anyway. It is,
>>> > however,
>>> > >> recommended to change to use ``-`` in extras in your dependency
>>> > >> specifications for all Airflow extras.
>>> > >>
>>> > >> * Released airflow package does not contain ``devel``, ``devel-*``,
>>> > ``doc``
>>> > >> and ``doc-gen`` extras.
>>> > >>  Those extras are only available when you install Airflow from
>>> sources
>>> > in
>>> > >> ``--editable`` mode. This is
>>> > >>  because those extras are only used for development and
>>> documentation
>>> > >> building purposes and are not needed
>>> > >>  when you install Airflow for production use. Those dependencies had
>>> > >> unspecified and varying behaviour for
>>> > >>  released packages anyway and you were not supposed to use them in
>>> > >> released packages.
>>> > >>
>>> > >> * The ``all`` and ``all-*`` extras were not always working correctly
>>> > when
>>> > >> installing Airflow using constraints
>>> > >>  because they were also considered as development-only dependencies.
>>> > With
>>> > >> this change, those dependencies are
>>> > >>  now properly handling constraints and they will install properly
>>> with
>>> > >> constraints, pulling the right set
>>> > >>  of providers and dependencies when constraints are used.
>>> > >>
>>> > >> *Graphviz dependency is now an optional one, not required one
>>> (#36647).*
>>> > >> The ``graphviz`` dependency has been problematic as Airflow required
>>> > >> dependency - especially for
>>> > >> ARM-based installations. Graphviz packages require binary graphviz
>>> > >> libraries - which is already a
>>> > >> limitation, but they also require to install graphviz Python
>>> bindings
>>> > to be
>>> > >> build and installed.
>>> > >> This does not work for older Linux installation but - more
>>> importantly -
>>> > >> when you try to install
>>> > >> Graphviz libraries for Python 3.8, 3.9 for ARM M1 MacBooks, the
>>> packages
>>> > >> fail to install because
>>> > >> Python bindings compilation for M1 can only work for Python 3.10+.
>>> > >>
>>> > >> This is not a breaking change technically - the CLIs to render the
>>> DAGs
>>> > is
>>> > >> still there and IF you
>>> > >> already have graphviz installed, it will continue working as it did
>>> > before.
>>> > >> The only problem when it
>>> > >> does not work is where you do not have graphviz installed it will
>>> raise
>>> > an
>>> > >> error and inform that you need it.
>>> > >>
>>> > >> Graphviz will remain to be installed for most users:
>>> > >>
>>> > >> * the Airflow Image will still contain graphviz library, because
>>> > >>  it is added there as extra
>>> > >> * when previous version of Airflow has been installed already, then
>>> > >>  graphviz library is already installed there and Airflow will
>>> > >>  continue working as it did
>>> > >>
>>> > >> The only change will be a new installation of new version of Airflow
>>> > from
>>> > >> the scratch, where graphviz will
>>> > >> need to be specified as extra or installed separately in order to
>>> enable
>>> > >> DAG rendering option.
>>> > >>
>>> > >> *Bug Fixes*
>>> > >> - Fix airflow-scheduler exiting with code 0 on exceptions (#36800)
>>> > >> - Fix Callback exception when a removed task is the last one in the
>>> > >> ``taskinstance`` list (#36693)
>>> > >> - Allow anonymous user edit/show resource when set
>>> > >> ``AUTH_ROLE_PUBLIC=admin`` (#36750)
>>> > >> - Better error message when sqlite URL uses relative path (#36774)
>>> > >> - Explicit string cast required to force integer-type run_ids to be
>>> > passed
>>> > >> as strings instead of integers (#36756)
>>> > >> - Add log lookup exception for empty ``op`` subtypes (#35536)
>>> > >> - Remove unused index on task instance (#36737)
>>> > >> - Fix check on subclass for ``typing.Union`` in
>>> > ``_infer_multiple_outputs``
>>> > >> for Python 3.10+ (#36728)
>>> > >> - Make sure ``multiple_outputs`` is inferred correctly even when
>>> using
>>> > >> ``TypedDict`` (#36652)
>>> > >> - Add back FAB constant in legacy security manager (#36719)
>>> > >> - Fix AttributeError when using ``Dagrun.update_state`` (#36712)
>>> > >> - Do not let ``EventsTimetable`` schedule past events if
>>> > ``catchup=False``
>>> > >> (#36134)
>>> > >> - Support encryption for triggers parameters (#36492)
>>> > >> - Fix the type hint for ``tis_query`` in
>>> ``_process_executor_events``
>>> > >> (#36655)
>>> > >> - Redirect to index when user does not have permission to access a
>>> page
>>> > >> (#36623)
>>> > >> - Avoid using dict as default value in ``call_regular_interval``
>>> > (#36608)
>>> > >> - Remove option to set a task instance to running state in UI
>>> (#36518)
>>> > >> - Fix details tab not showing when using dynamic task mapping
>>> (#36522)
>>> > >> - Raise error when ``DagRun`` fails while running ``dag test``
>>> (#36517)
>>> > >> - Refactor ``_manage_executor_state`` by refreshing TIs in batch
>>> > (#36502)
>>> > >> - Add flask config: ``MAX_CONTENT_LENGTH`` (#36401)
>>> > >> - Fix get_leaves calculation for teardown in nested group (#36456)
>>> > >> - Stop serializing timezone-naive datetime to timezone-aware
>>> datetime
>>> > with
>>> > >> UTC tz (#36379)
>>> > >> - Make ``kubernetes`` decorator type annotation consistent with
>>> operator
>>> > >> (#36405)
>>> > >> - Fix Webserver returning 500 for POST requests to
>>> ``api/dag/*/dagrun``
>>> > >> from anonymous user (#36275)
>>> > >> - Fix the required access for get_variable endpoint (#36396)
>>> > >> - Fix datetime reference in ``DAG.is_fixed_time_schedule`` (#36370)
>>> > >> - Fix AirflowSkipException message raised by BashOperator (#36354)
>>> > >> - Allow PythonVirtualenvOperator.skip_on_exit_code to be zero
>>> (#36361)
>>> > >> - Increase width of execution_date input in trigger.html (#36278)
>>> > >> - Fix logging for pausing DAG (#36182)
>>> > >> - Stop deserializing pickle when enable_xcom_pickling is False
>>> (#36255)
>>> > >> - Check DAG read permission before accessing DAG code (#36257)
>>> > >> - Enable mark task as failed/success always (#36254)
>>> > >> - Create latest log dir symlink as relative link (#36019)
>>> > >> - Fix Python-based decorators templating (#36103)
>>> > >>
>>> > >> *Miscellaneous*
>>> > >> - Rename concurrency label to max active tasks (#36691)
>>> > >> - Restore function scoped ``httpx`` import in file_task_handler for
>>> > >> performance (#36753)
>>> > >> - Add support of Pendulum 3 (#36281)
>>> > >> - Standardize airflow build process and switch to Hatchling build
>>> > backend
>>> > >> (#36537)
>>> > >> - Get rid of ``pyarrow-hotfix`` for ``CVE-2023-47248`` (#36697)
>>> > >> - Make ``graphviz`` dependency optional (#36647)
>>> > >> - Announce MSSQL support end in Airflow 2.9.0, add migration script
>>> > hints
>>> > >> (#36509)
>>> > >> - Set min ``pandas`` dependency to 1.2.5 for all providers and
>>> airflow
>>> > >> (#36698)
>>> > >> - Bump follow-redirects from 1.15.3 to 1.15.4 in ``/airflow/www``
>>> > (#36700)
>>> > >> - Provide the logger_name param to base hook in order to override
>>> the
>>> > >> logger name (#36674)
>>> > >> - Fix run type icon alignment with run type text (#36616)
>>> > >> - Follow BaseHook connection fields method signature in FSHook
>>> (#36444)
>>> > >> - Remove redundant ``docker`` decorator type annotations (#36406)
>>> > >> - Straighten typing in workday timetable (#36296)
>>> > >> - Use ``batch_is_authorized_dag`` to check if user has permission to
>>> > read
>>> > >> DAGs (#36279)
>>> > >> - Replace deprecated get_accessible_dag_ids and use
>>> get_readable_dags in
>>> > >> get_dag_warnings (#36256)
>>> > >>
>>> > >> *Doc Only Changes*
>>> > >> - Metrics tagging documentation (#36627)
>>> > >> - In docs use logical_date instead of deprecated execution_date
>>> (#36654)
>>> > >> - Add section about live-upgrading Airflow (#36637)
>>> > >> - Replace ``numpy`` example with practical exercise demonstrating
>>> > top-level
>>> > >> code (#35097)
>>> > >> - Improve and add more complete description in the architecture
>>> diagrams
>>> > >> (#36513)
>>> > >> - Improve the error message displayed when there is a webserver
>>> error
>>> > >> (#36570)
>>> > >> - Update ``dags.rst`` with information on DAG pausing (#36540)
>>> > >> - Update installation prerequisites after upgrading to Debian
>>> Bookworm
>>> > >> (#36521)
>>> > >> - Add description on the ways how users should approach DB
>>> monitoring
>>> > >> (#36483)
>>> > >> - Add branching based on mapped task group example to
>>> > >> dynamic-task-mapping.rst (#36480)
>>> > >> - Add further details to replacement documentation (#36485)
>>> > >> - Use cards when describing priority weighting methods (#36411)
>>> > >> - Update ``metrics.rst`` for param ``dagrun.schedule_delay``
>>> (#36404)
>>> > >> - Update admonitions in Python operator doc to reflect sentiment
>>> > (#36340)
>>> > >> - Improve audit_logs.rst (#36213)
>>> > >> - Remove Redshift mention from the list of managed Postgres backends
>>> > >> (#36217)
>>> > >>
>>> > >> Cheers,
>>> > >> Ephraim
>>> > >>
>>> >
>>> > ---------------------------------------------------------------------
>>> > To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
>>> > For additional commands, e-mail: dev-h...@airflow.apache.org
>>> >
>>> >
>>>
>>

Reply via email to