强制执行所有Airflow DAGs的最佳实践。 ⭐
项目描述
airflint
强制执行所有Airflow DAGs的最佳实践。 ⭐
⚠️ airflint仍处于alpha阶段,并且尚未与真实世界的Airflow DAGs进行测试。请通过GitHub Issues报告您遇到的问题,谢谢。🙏
🧑🏫 规则
- 使用函数级导入而不是顶层导入[^1][^2](参见顶层Python代码)
- 使用jinja模板语法而不是
Variable.get
(参见Airflow变量)
[^1]: 有关Lazy Imports的PEP,旨在Python 3.12中推出,将取代此规则。
[^2]: 运行UseFunctionLevelImports
规则后,使用如autoflake之类的工具删除顶层导入。
基于官方最佳实践
需求
airflint与以下内容进行测试
主版本(开发版) | 发布版本(0.3.1-alpha) | |
---|---|---|
Python | 3.9, 3.10, 3.11.0-alpha - 3.11.0 | 3.9, 3.10 |
Apache Airflow | >= 2.0.0 | >= 2.3.0 |
🚀 开始
要从PyPI安装它,请运行
pip install airflint
注意:建议将airflint安装到您的现有Airflow环境中,包括所有提供者。这样,
UseJinjaVariableGet
规则可以检测所有template_fields
,airflint可以按预期工作。
然后只需按如下方式调用即可
pre-commit
或者您可以将以下存储库添加到您的pre-commit-config.yaml
- repo: https://github.com/feluelle/airflint
rev: v0.3.1-alpha
hooks:
- id: airflint
args: ["-a"] # Use -a to apply the suggestions
additional_dependencies: # Add all package dependencies you have in your dags, preferable with version spec
- apache-airflow
- apache-airflow-providers-cncf-kubernetes
为了完成UseFunctionlevelImports
规则,请在airflint
钩子之后添加autoflake
钩子,如下所示
- repo: https://github.com/pycqa/autoflake
rev: v1.4
hooks:
- id: autoflake
args: ["--remove-all-unused-imports", "--in-place"]
这将删除未使用的导入。
❤️ 贡献
我在寻找对以下内容感兴趣的贡献者...
- 使用现实世界的Airflow DAGs测试airflint并立即报告遇到的问题
- 优化现有规则的AST遍历
- 根据最佳实践或您在编写Airflow DAGs过程中遇到的瓶颈添加新规则
- 说明每个规则特别支持的内容
- 定义支持Airflow版本,即某些规则绑定到特定的Airflow功能和版本
如有疑问,请随时在GitHub上打开一个问题。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
airflint-0.3.2a0.tar.gz (10.9 kB 查看哈希值)
构建分布
airflint-0.3.2a0-py3-none-any.whl (12.0 kB 查看哈希值)
关闭
airflint-0.3.2a0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 89f84564dc8169ac05838a121905c521a9a52088baf9f37f06dd2649c0d18411 |
|
MD5 | b9311fc0d11e66b008b1899bfc8cc0ea |
|
BLAKE2b-256 | c7e2a1ff24bdacc0c8446bb0fd78322336f3c2417ae7f520b7290eeb2703a367 |
关闭
airflint-0.3.2a0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6856ec403f1b053645b76fb4ce594239707c7e22179316eeabc73a335129135b |
|
MD5 | 65ce7c1d504f6ac6c1a860f055b06222 |
|
BLAKE2b-256 | fc06669a5abc62b585dc8404a63ff917a936ca7f8d6531fb55195d7e8dd63445 |