跳转到主要内容

强制执行所有Airflow DAGs的最佳实践。 ⭐

项目描述

airflint

pre-commit.ci status test workflow codeql-analysis workflow codecov PyPI version License PyPI - Python Version PyPI version

强制执行所有Airflow DAGs的最佳实践。 ⭐

⚠️ airflint仍处于alpha阶段,并且尚未与真实世界的Airflow DAGs进行测试。请通过GitHub Issues报告您遇到的问题,谢谢。🙏

🧑‍🏫 规则

[^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可以按预期工作。

然后只需按如下方式调用即可

usage

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 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面