airflow common_precommit_utils 源码
airflow common_precommit_utils 代码
文件路径:/scripts/ci/pre_commit/common_precommit_utils.py
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from __future__ import annotations
import hashlib
import os
import re
from pathlib import Path
AIRFLOW_SOURCES_ROOT = Path(__file__).parents[3].resolve()
def insert_documentation(file_path: Path, content: list[str], header: str, footer: str):
text = file_path.read_text().splitlines(keepends=True)
replacing = False
result: list[str] = []
for line in text:
if line.strip().startswith(header.strip()):
replacing = True
result.append(line)
result.extend(content)
if line.strip().startswith(footer.strip()):
replacing = False
if not replacing:
result.append(line)
src = "".join(result)
file_path.write_text(src)
def get_directory_hash(directory: Path, skip_path_regexp: str | None = None) -> str:
files = [file for file in directory.rglob("*")]
files.sort()
if skip_path_regexp:
matcher = re.compile(skip_path_regexp)
files = [file for file in files if not matcher.match(os.fspath(file.resolve()))]
sha = hashlib.sha256()
for file in files:
if file.is_file() and not file.name.startswith('.'):
sha.update(file.read_bytes())
return sha.hexdigest()
相关信息
相关文章
airflow pre_commit_base_operator_partial_arguments 源码
airflow pre_commit_boring_cyborg 源码
airflow pre_commit_breeze_cmd_line 源码
airflow pre_commit_build_providers_dependencies 源码
airflow pre_commit_changelog_duplicates 源码
airflow pre_commit_chart_schema 源码
airflow pre_commit_check_2_2_compatibility 源码
airflow pre_commit_check_lazy_logging 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦