or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

tessl/pypi-apache-airflow-providers-common-compat

Common Compatibility Provider - providing compatibility code for previous Airflow versions

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/apache-airflow-providers-common-compat@1.7.x

To install, run

npx @tessl/cli install tessl/pypi-apache-airflow-providers-common-compat@1.7.0

0

# Apache Airflow Providers Common Compat

1

2

A compatibility provider package that provides backward compatibility utilities and shims for Apache Airflow to maintain compatibility across different Airflow versions. It includes compatibility modules for standard operators, triggers, utilities, asset/dataset handling, lineage tracking, security permissions, and OpenLineage integration to ensure smooth migrations between Airflow versions.

3

4

## Package Information

5

6

- **Package Name**: apache-airflow-providers-common-compat

7

- **Language**: Python

8

- **Installation**: `pip install apache-airflow-providers-common-compat`

9

- **Minimum Airflow Version**: 2.10.0+

10

11

## Core Imports

12

13

```python

14

from airflow.providers.common.compat import __version__

15

```

16

17

Common compatibility utilities:

18

19

```python

20

from airflow.providers.common.compat.version_compat import (

21

AIRFLOW_V_3_0_PLUS,

22

AIRFLOW_V_3_1_PLUS,

23

BaseOperator

24

)

25

```

26

27

Assets/Dataset compatibility:

28

29

```python

30

from airflow.providers.common.compat.assets import Asset, AssetAlias

31

```

32

33

## Basic Usage

34

35

```python

36

from airflow.providers.common.compat.version_compat import AIRFLOW_V_3_0_PLUS, BaseOperator

37

from airflow.providers.common.compat.assets import Asset

38

from airflow.providers.common.compat.check import require_provider_version

39

40

# Check Airflow version compatibility

41

if AIRFLOW_V_3_0_PLUS:

42

# Use Airflow 3.0+ features

43

pass

44

45

# Use version-compatible BaseOperator

46

class MyOperator(BaseOperator):

47

def execute(self, context):

48

pass

49

50

# Create assets with version compatibility

51

my_asset = Asset("s3://bucket/data.csv")

52

53

# Require minimum provider version

54

@require_provider_version("apache-airflow-providers-openlineage", "1.0.1")

55

def my_function():

56

pass

57

```

58

59

## Architecture

60

61

The package provides compatibility across Airflow versions through several key patterns:

62

63

- **Version Detection**: Runtime detection of Airflow version to conditionally import appropriate modules

64

- **Compatibility Wrappers**: Unified interfaces that work across different Airflow versions

65

- **Asset/Dataset Bridging**: Handles the renaming from "Dataset" to "Asset" in Airflow 3.0

66

- **Provider Version Enforcement**: Decorators to ensure minimum provider versions are met

67

- **Graceful Fallbacks**: No-op implementations when optional dependencies aren't available

68

69

## Capabilities

70

71

### Package Information

72

73

Package version and metadata constants.

74

75

```python { .api }

76

__version__: str

77

```

78

79

### Version Compatibility

80

81

Core utilities for detecting Airflow versions and importing version-appropriate modules, including version constants and compatible BaseOperator imports.

82

83

```python { .api }

84

def get_base_airflow_version_tuple() -> tuple[int, int, int]: ...

85

AIRFLOW_V_3_0_PLUS: bool

86

AIRFLOW_V_3_1_PLUS: bool

87

BaseOperator: type

88

```

89

90

[Version Compatibility](./version-compatibility.md)

91

92

### Asset Management

93

94

Version-compatible asset and dataset handling with support for asset aliases, collections, and authorization details that work across Airflow versions.

95

96

```python { .api }

97

class Asset: ...

98

class AssetAlias: ...

99

class AssetAll: ...

100

class AssetAny: ...

101

def expand_alias_to_assets(...): ...

102

```

103

104

[Asset Management](./asset-management.md)

105

106

### Provider Verification

107

108

Decorators and utilities for enforcing minimum version requirements of provider packages and optional dependencies like OpenLineage.

109

110

```python { .api }

111

def require_provider_version(provider_name: str, provider_min_version: str): ...

112

def require_openlineage_version(provider_min_version: str | None = None, client_min_version: str | None = None): ...

113

```

114

115

[Provider Verification](./provider-verification.md)

116

117

### Lineage Entities

118

119

Data lineage entities including files, users, tables, columns, and tags with template field support for dynamic content rendering.

120

121

```python { .api }

122

class File: ...

123

class User: ...

124

class Table: ...

125

class Column: ...

126

class Tag: ...

127

def default_if_none(arg: bool | None) -> bool: ...

128

```

129

130

Lineage collection utilities:

131

132

```python { .api }

133

def get_hook_lineage_collector(): ...

134

```

135

136

[Lineage Entities](./lineage-entities.md)

137

138

### Standard Components

139

140

Version-compatible standard Airflow operators, triggers, and utilities including PythonOperator, TimeDeltaTrigger, and virtualenv preparation functions.

141

142

```python { .api }

143

class PythonOperator(BaseOperator): ...

144

class ShortCircuitOperator(BaseOperator): ...

145

class TimeDeltaTrigger: ...

146

def get_current_context(): ...

147

```

148

149

[Standard Components](./standard-components.md)

150

151

### OpenLineage Integration

152

153

OpenLineage facets, utilities, and compatibility functions for data lineage tracking, including SQL and Spark integration utilities.

154

155

```python { .api }

156

class BaseFacet: ...

157

class Dataset: ...

158

class RunFacet: ...

159

def get_openlineage_facets_with_sql(...): ...

160

def inject_parent_job_information_into_spark_properties(...): ...

161

```

162

163

[OpenLineage Integration](./openlineage-integration.md)

164

165

### Security Permissions

166

167

Security resource constants for assets, backfills, and DAG versions that maintain compatibility across Airflow security model changes.

168

169

```python { .api }

170

RESOURCE_ASSET: str

171

RESOURCE_ASSET_ALIAS: str

172

RESOURCE_BACKFILL: str

173

RESOURCE_DAG_VERSION: str

174

```

175

176

[Security Permissions](./security-permissions.md)

177

178

### Notifier Compatibility

179

180

Version-compatible base notifier class for creating custom notification handlers that work across different Airflow versions.

181

182

```python { .api }

183

class BaseNotifier: ...

184

```

185

186

[Notifier Compatibility](./notifier-compatibility.md)