Thanks for the context. I figured there was likely a reason. ________________________________ From: Jarek Potiuk <[email protected]> Sent: Wednesday, May 13, 2026 3:36 PM To: [email protected] <[email protected]> Subject: RE: [EXT] A new approach for version_compat.py?
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe. AVERTISSEMENT: Ce courrier électronique provient d’un expéditeur externe. Ne cliquez sur aucun lien et n’ouvrez aucune pièce jointe si vous ne pouvez pas confirmer l’identité de l’expéditeur et si vous n’êtes pas certain que le contenu ne présente aucun risque. Hi Dennis, The constants do not grow infinitely; they roll. When we bump the min_version, we remove the lowest constants to force the removal of all obsolete compatibility code. This approach ensures no "harness" is left behind, preventing us from forgetting to delete code for unsupported versions. This standard was established after extensive discussion in December 2024 ( https://lists.apache.org/thread/px36w3ph2mf0pmv377dtfc2nhpq8dqw1) and is documented here: https://github.com/apache/airflow/blob/main/contributing-docs/testing/unit_tests.rst#implementing-compatibility-for-provider-tests-for-older-airflow-versions The main drawback of using helpers is losing the compilation errors that mandate removing old compatibility logic when constants are deleted. Best, Jarek On Wed, May 13, 2026 at 10:03 PM Ferruzzi, Dennis <[email protected]> wrote: > RE: > https://github.com/apache/airflow/blob/main/providers/common/compat/src/airflow/providers/common/compat/version_compat.py > > > Curious if there is a reason we went with the constants like this? > There's likely a reason, but if not, we are now adding a constant for 3.3 > and that will continue to grow. I'm wondering if there is a reason not to > replace those constants with a helper like > > def airflow_version_at_least(major: int, minor:int, patch:int = 0) -> > bool: > return get_base_airflow_version_tuple() >= (major, minor, patch) > > > Then in code instead of importing the constant it would be `if > airflow_version_at_least(3, 3):` which seems just as clear and easy. > > - ferruzzi >
