-
Notifications
You must be signed in to change notification settings - Fork 724
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ci] 添加监测中文 apilabel 的 ci #6226
Merged
Merged
Changes from all commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
a9e4c0c
make a try
ooooo-create 5d5bf27
first fix
ooooo-create 214eb63
unify path with pathlib
ooooo-create 7a23c00
fix
ooooo-create 8e3fe34
test ci
ooooo-create fb359a0
fix bugs
ooooo-create 2a741cc
fix
ooooo-create aaf2827
fix
ooooo-create d5dd8a5
fix
ooooo-create e8d4806
fix args
ooooo-create 936a71a
try
ooooo-create 19bd302
fix
ooooo-create 9cb0ef7
fix
ooooo-create b455ebc
test_00
ooooo-create d9aedac
fix
ooooo-create bd74f6a
fix
ooooo-create b9419fa
fix
ooooo-create 62e02a9
test1
ooooo-create 8f150ef
fix
ooooo-create 6d0567d
fix
ooooo-create a3217f0
update
ooooo-create ad8ead8
fix
ooooo-create f1f23d6
fix
ooooo-create 8ba9ab0
test
ooooo-create 06b04a3
test2
ooooo-create e81b9a6
change checking location and test
ooooo-create b52661f
finally test
ooooo-create f433b52
fix
ooooo-create cfb90f3
label
ooooo-create File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
import sys | ||
import os | ||
import re | ||
import logging | ||
import argparse | ||
from pathlib import Path | ||
|
||
logger = logging.getLogger() | ||
if logger.handlers: | ||
# we assume the first handler is the one we want to configure | ||
console = logger.handlers[0] | ||
else: | ||
console = logging.StreamHandler() | ||
logger.addHandler(console) | ||
console.setFormatter( | ||
logging.Formatter( | ||
"%(asctime)s - %(funcName)s:%(lineno)d - %(levelname)s - %(message)s" | ||
) | ||
) | ||
logger.setLevel(logging.INFO) | ||
|
||
# check file's api_label | ||
def check_api_label(rootdir, file): | ||
real_file = Path(rootdir) / file | ||
with open(real_file, 'r', encoding='utf-8') as f: | ||
first_line = f.readline().strip() | ||
return first_line == generate_en_label_by_path(file) | ||
|
||
|
||
# path -> api_label (the first line's style) | ||
def generate_en_label_by_path(file): | ||
result = file.removesuffix('_cn.rst') | ||
result = result.replace('/', '_') | ||
result = f'.. _cn_{result}:' | ||
return result | ||
|
||
|
||
# traverse doc/api to append api_label in list | ||
def find_all_api_labels_in_dir(rootdir): | ||
all_api_labels = [] | ||
for root, dirs, files in os.walk(rootdir + API): | ||
for file in files: | ||
real_path = Path(root) / file | ||
path = str(real_path).removeprefix(rootdir) | ||
if not should_test(path): | ||
continue | ||
for label in find_api_labels_in_one_file(real_path): | ||
all_api_labels.append(label) | ||
return all_api_labels | ||
|
||
|
||
# api_labels in a file | ||
def find_api_labels_in_one_file(file_path): | ||
api_labels_in_one_file = [] | ||
with open(file_path, 'r', encoding='utf-8') as f: | ||
lines = f.readlines() | ||
for line in lines: | ||
line = re.search(".. _([a-zA-Z0-9_]+)", line) | ||
if not line: | ||
continue | ||
api_labels_in_one_file.append(line.group(1)) | ||
return api_labels_in_one_file | ||
|
||
|
||
# api doc for checking | ||
def should_test(file): | ||
return ( | ||
file.endswith("_cn.rst") | ||
and not file.endswith("Overview_cn.rst") | ||
and not file.endswith("index_cn.rst") | ||
and file.startswith(API) | ||
) | ||
|
||
|
||
def run_cn_api_label_checking(rootdir, files): | ||
for file in files: | ||
if should_test(file) and not check_api_label(rootdir, file): | ||
logger.error( | ||
f"The first line in {rootdir}/{file} is not avaiable, please re-check it!" | ||
) | ||
sys.exit(1) | ||
valid_api_labels = find_all_api_labels_in_dir(rootdir) | ||
for file in files: | ||
if not file.endswith('.rst'): | ||
continue | ||
with open(Path(rootdir) / file, 'r', encoding='utf-8') as f: | ||
pattern = f.read() | ||
matches = re.findall(r":ref:`([^`]+)`", pattern) | ||
for match in matches: | ||
api_label = match | ||
if api_label_match := re.match( | ||
r".+<(?P<api_label>.+?)>", api_label | ||
): | ||
api_label = api_label_match.group("api_label") | ||
if ( | ||
api_label.startswith('cn_api_paddle') | ||
and api_label not in valid_api_labels | ||
): | ||
logger.error( | ||
f"Found api label {api_label} in {rootdir}/{file}, but it is not a valid api label, please re-check it!" | ||
) | ||
sys.exit(1) | ||
print("All api_label check success in PR !") | ||
|
||
|
||
def parse_args(): | ||
""" | ||
Parse input arguments | ||
""" | ||
parser = argparse.ArgumentParser(description='cn api_label checking') | ||
parser.add_argument( | ||
'rootdir', | ||
help='the dir DOCROOT', | ||
type=str, | ||
default='/FluidDoc/docs/', | ||
) | ||
|
||
parser.add_argument( | ||
'apiroot', | ||
type=str, | ||
help='the dir APIROOT', | ||
default='/FluidDoc/docs/api/', | ||
) | ||
parser.add_argument( | ||
'all_git_files', | ||
type=str, | ||
nargs='+', | ||
help='files need to check', | ||
) | ||
args = parser.parse_args() | ||
return args | ||
|
||
|
||
if __name__ == "__main__": | ||
args = parse_args() | ||
API = args.apiroot.removeprefix(args.rootdir + '/') | ||
run_cn_api_label_checking(args.rootdir, args.all_git_files) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
#!/bin/bash | ||
set -x | ||
|
||
FLUIDDOCDIR=${FLUIDDOCDIR:=/FluidDoc} | ||
|
||
DOCROOT=${FLUIDDOCDIR}/docs/ | ||
APIROOT=${DOCROOT}/api/ | ||
|
||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" | ||
source ${SCRIPT_DIR}/utils.sh | ||
|
||
if [ -z ${BRANCH} ]; then | ||
BRANCH="develop" | ||
fi | ||
|
||
all_git_files=`git diff --name-only --diff-filter=ACMR upstream/${BRANCH} | sed 's#docs/##g'` | ||
echo $all_git_files | ||
echo "Run API_LABEL Checking" | ||
python check_api_label_cn.py ${DOCROOT} ${APIROOT} $all_git_files | ||
|
||
if [ $? -ne 0 ];then | ||
echo "ERROR: api_label is not correct, please check api_label in the above files" | ||
exit 1 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
没关系,咱代码风格可以慢慢锻炼,这个多写写就好了,而且还有我来把控~而且比某些写了一坨还不自知的人强太多了(这个 repo 能成这样,所有代码 reviewer 都有责任)