diff --git a/docs/lite/api/source_en/conf.py b/docs/lite/api/source_en/conf.py index d407601c2359cfc57ef4d0a2e69ce2a17bafa803..761b49102147e755b4a2115890f639c7950d8c50 100644 --- a/docs/lite/api/source_en/conf.py +++ b/docs/lite/api/source_en/conf.py @@ -334,6 +334,39 @@ try: except: print('lite替换安装包内容失败') +# 发版本时这里启用 +# modify urls +# re_url = r"(((gitee.com/mindspore/docs/mindspore-lite)|(github.com/mindspore-ai/(mindspore|docs))|" + \ +# r"(mindspore.cn/(docs|tutorials|lite))|(obs.dualstack.cn-north-4.myhuaweicloud)|" + \ +# r"(mindspore-website.obs.cn-north-4.myhuaweicloud))[\w\d/_.-]*?)/(master)" + +# re_url2 = r"(gitee.com/mindspore/mindspore[\w\d/_.-]*?)/(master)" + +# re_url3 = r"(((gitee.com/mindspore/mindformers)|(mindspore.cn/mindformers))[\w\d/_.-]*?)/(dev)" + +# with open(os.path.join('./mindspore_lite.rst'), 'r+', encoding='utf-8') as f: +# content = f.read() +# new_content = re.sub(re_url, r'\1/r2.7.0rc1', content) +# new_content = re.sub(re_url2, r'\1/v2.7.0-rc1', new_content) +# new_content = re.sub(re_url4, r'\1/r1.6.0', new_content) +# if new_content != content: +# f.seek(0) +# f.truncate() +# f.write(new_content) + +# for cur, _, files in os.walk(os.path.join(base_path, 'mindspore_lite')): +# for i in files: +# if i.endswith('.py'): +# with open(os.path.join(cur, i), 'r+', encoding='utf-8') as f: +# content = f.read() +# new_content = re.sub(re_url, r'\1/r2.7.0rc1', content) +# new_content = re.sub(re_url2, r'\1/v2.7.0-rc1', new_content) +# new_content = re.sub(re_url3, r'\1/r1.6.0', new_content) +# if new_content != content: +# f.seek(0) +# f.truncate() +# f.write(new_content) + # modify urls import json diff --git a/docs/lite/api/source_zh_cn/conf.py b/docs/lite/api/source_zh_cn/conf.py index 6f9409f5d26993e99b7c947f1fee960c27e1beee..38393a47aef26c509ae6c561be135946bc6d2d80 100644 --- a/docs/lite/api/source_zh_cn/conf.py +++ b/docs/lite/api/source_zh_cn/conf.py @@ -233,8 +233,35 @@ docs_branch = [version_inf[i]['branch'] for i in range(len(version_inf)) if vers re_view = f"\n.. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/{docs_branch}/" + \ f"resource/_static/logo_source.svg\n :target: https://gitee.com/mindspore/{copy_repo}/blob/{branch}/" +# 发版本时这里启用 +# modify urls +# re_url = r"(((gitee.com/mindspore/docs/mindspore-lite)|(github.com/mindspore-ai/(mindspore|docs))|" + \ +# r"(mindspore.cn/(docs|tutorials|lite))|(obs.dualstack.cn-north-4.myhuaweicloud)|" + \ +# r"(mindspore-website.obs.cn-north-4.myhuaweicloud))[\w\d/_.-]*?)/(master)" + +# re_url2 = r"(gitee.com/mindspore/mindspore[\w\d/_.-]*?)/(master)" + +# re_url3 = r"(((gitee.com/mindspore/mindformers)|(mindspore.cn/mindformers))[\w\d/_.-]*?)/(dev)" + for cur, _, files in os.walk(present_path): for i in files: + # 发版本时这里启用 + # if i.endswith('.rst') or i.endswith('.md') or i.endswith('.ipynb'): + # try: + # with open(os.path.join(cur, i), 'r+', encoding='utf-8') as f: + # content = f.read() + # new_content = re.sub(re_url, r'\1/r2.7.0rc1', content) + # new_content = re.sub(re_url3, r'\1/r1.6.0', new_content) + # if i.endswith('.rst'): + # new_content = re.sub(re_url2, r'\1/v2.7.0-rc1', new_content) + # if new_content != content: + # f.seek(0) + # f.truncate() + # f.write(new_content) + # except Exception: + # print(f'打开{i}文件失败') + + # master使用 flag_copy = 0 if i.endswith('.rst'): for j in copy_list: diff --git a/docs/mindspore/_ext/generate_ops_mint_rst.py b/docs/mindspore/_ext/generate_ops_mint_rst.py index 1df70dc41881286c6da00a21ae0ebdc354b80fab..17b8d65a2020577dcb0a1634284c2eff1af7ceae 100644 --- a/docs/mindspore/_ext/generate_ops_mint_rst.py +++ b/docs/mindspore/_ext/generate_ops_mint_rst.py @@ -42,6 +42,7 @@ def generate_ops_mint_rst(repo_path, ops_path, mint_path, pr_need='all'): two_p = [i[1] for i in one_p] # 从导入处获取接口名,分为直接导入接口名,as别名,import导入多个 for i in two_p: + # as别名 if ' as ' in i: name1 = re.findall('(.*?) as (.*)', i)[0][0] name2 = re.findall('(.*?) as (.*)', i)[0][1] @@ -49,8 +50,10 @@ def generate_ops_mint_rst(repo_path, ops_path, mint_path, pr_need='all'): mint_ops_dict[modulename].append([name1, name2]) else: continue + # 直接导入接口名 elif i in reg_all: mint_ops_dict[modulename].append(i) + # import导入多个 else: for j in i.split(','): if j.strip() in reg_all: diff --git a/docs/mindspore/_ext/myautosummary.py b/docs/mindspore/_ext/myautosummary.py index bbb05df75aa3e520011f8f7edb5d800dea214648..bca7ac0714c027c972abaac1eeccf42c1da7600b 100644 --- a/docs/mindspore/_ext/myautosummary.py +++ b/docs/mindspore/_ext/myautosummary.py @@ -3,6 +3,7 @@ import os import re import inspect import importlib +from functools import reduce from typing import List, Tuple from docutils.nodes import Node from sphinx.locale import __ @@ -203,6 +204,7 @@ class MsAutosummary(Autosummary): except: display_name_path = "" if 'mindspore/ops/auto_generate/' in display_name_path: + # 处理注释是代码块对比的ops.primitive接口 env_sum = self.get_refer_platform(display_name) summary = self.extract_ops_summary(self.bridge.result.data[:]) if not summary: @@ -492,7 +494,7 @@ class MsCnAutoSummary(Autosummary): max_item_chars = 50 origin_rst_files = self.env.config.rst_files all_rst_files = self.env.found_docs - generated_files = all_rst_files.difference(origin_rst_files) + generated_en_files = all_rst_files.difference(origin_rst_files) for name in names: display_name = name @@ -503,7 +505,7 @@ class MsCnAutoSummary(Autosummary): dir_name = self.options['toctree'] file_path = os.path.join(doc_path, dir_name, display_name+'.rst') spec_path = os.path.join('api_python', dir_name, display_name) - if os.path.exists(file_path) and spec_path not in generated_files: + if os.path.exists(file_path) and spec_path not in generated_en_files: summary_re_tag = re.compile( rf'\.\. \w+:\w+::\s+{display_name}.*?\n\s+:.*?:\n\n\s+((?:.|\n|)+?)(\n\n|。)') summary_re_wrap = re.compile(rf'\.\. \w+:\w+::\s+{display_name}(?:.|\n|)+?\n\n\s+((?:.|\n|)+?)(\n\n|。)') @@ -743,17 +745,19 @@ class MsCnAutoSummary(Autosummary): return [table_spec, table] def get_api(fullname): - """Get the api module.""" + """ + 获取接口对象。 + + :param fullname: 接口名全称 + :return: 属性对象或None(如果不存在) + """ + main_module = fullname.split('.')[0] + main_import = importlib.import_module(main_module) + try: - module_name, api_name = ".".join(fullname.split('.')[:-1]), fullname.split('.')[-1] - # pylint: disable=unused-variable - module_import = importlib.import_module(module_name) - except ModuleNotFoundError: - module_name, api_name = ".".join(fullname.split('.')[:-2]), ".".join(fullname.split('.')[-2:]) - module_import = importlib.import_module(module_name) - # pylint: disable=eval-used - api = getattr(module_import, api_name, '') - return api + return reduce(getattr, fullname.split('.')[1:], main_import) + except AttributeError: + return None class MsCnPlatformAutoSummary(MsCnAutoSummary): """definition of mscnplatformautosummary.""" diff --git a/docs/mindspore/_ext/overwrite_autodoc.txt b/docs/mindspore/_ext/overwrite_autodoc.txt index d4f1513ab500aa37b55ce218267004a46251da32..acbad745367b0a711c5bfe9d3f3c4c06bf7c9bd4 100644 --- a/docs/mindspore/_ext/overwrite_autodoc.txt +++ b/docs/mindspore/_ext/overwrite_autodoc.txt @@ -1788,8 +1788,11 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type: spec_tp = [('nn.HShrink', 'mint.nn.Hardshrink'), ('nn.SoftShrink', 'mint.nn.Softshrink'), ('nn.HSigmoid', 'mint.nn.Hardsigmoid'), ('nn.HSwish', 'mint.nn.Hardswish')] if docstrings and '.mint.' in self.fullname: + # mint.xxx 中的 xxx b_name = self.fullname.split('.')[-1] + # mint.xxx usename = self.fullname.replace('mindspore.', '') + # 获取接口源文件路径 try: py_source_rel = get_full_modname(self.modname, b_name).replace('.', '/') + '.py' except: diff --git a/docs/mindspore/source_en/conf.py b/docs/mindspore/source_en/conf.py index 2f8f1dfbe79b1b9bc99be4a6485b64dadfd46151..198c99a2f2543c2c9cb18300a52bbe0e89a3100f 100644 --- a/docs/mindspore/source_en/conf.py +++ b/docs/mindspore/source_en/conf.py @@ -223,32 +223,33 @@ with open(autodoc_source_path, "r", encoding="utf8") as f: exec(code_str, sphinx_autodoc.__dict__) # Repair error decorators defined in mindspore. -try: - decorator_list = [("mindspore/common/_decorator.py", "deprecated", - " def decorate(func):", - " def decorate(func):\n\n import functools\n\n @functools.wraps(func)"), - ("mindspore/nn/optim/optimizer.py", "deprecated", - "def opt_init_args_register(fn):\n \"\"\"Register optimizer init args.\"\"\"\n", - "def opt_init_args_register(fn):\n \"\"\"Register optimizer init args.\"\"\"\n\n import functools\n\n @functools.wraps(fn)"), - ("mindspore/log.py", "deprecated", - " def __call__(self, func):\n", - " def __call__(self, func):\n import functools\n\n @functools.wraps(func)\n"), - ("mindspore/ops/primitive.py", "fix for `shard`", - " @_LogActionOnce(logger=logger, key='Primitive')", " # The decorator has been deleted."), - ("mindspore/dataset/engine/datasets.py","generate api", - " @deprecated(\"1.5\")"," # The decorator has been deleted(id1)."), - ("mindspore/dataset/engine/datasets.py","generate api", - " @check_bucket_batch_by_length"," # The decorator has been deleted(id2)."), - ("mindspore/train/summary/summary_record.py", "summary_record", - " value (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo,\n LossLandscape]): The value to store.\n\n", - " value (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo, LossLandscape]): The value to store.\n\n"), - ("mindspore/nn/cell.py","generate api", - " @jit_forbidden_register"," # generate api by del decorator."), - ("mindspore/profiler/dynamic_profiler.py","generate api", - " @no_exception_func()"," # generate api by del decorator.")] - - base_path = os.path.dirname(os.path.dirname(sphinx.__file__)) - for i in decorator_list: + +decorator_list = [("mindspore/common/_decorator.py", "deprecated", + " def decorate(func):", + " def decorate(func):\n\n import functools\n\n @functools.wraps(func)"), + ("mindspore/nn/optim/optimizer.py", "deprecated", + "def opt_init_args_register(fn):\n \"\"\"Register optimizer init args.\"\"\"\n", + "def opt_init_args_register(fn):\n \"\"\"Register optimizer init args.\"\"\"\n\n import functools\n\n @functools.wraps(fn)"), + ("mindspore/log.py", "deprecated", + " def __call__(self, func):\n", + " def __call__(self, func):\n import functools\n\n @functools.wraps(func)\n"), + ("mindspore/ops/primitive.py", "fix for `shard`", + " @_LogActionOnce(logger=logger, key='Primitive')", " # The decorator has been deleted."), + ("mindspore/dataset/engine/datasets.py","generate api", + " @deprecated(\"1.5\")"," # The decorator has been deleted(id1)."), + ("mindspore/dataset/engine/datasets.py","generate api", + " @check_bucket_batch_by_length"," # The decorator has been deleted(id2)."), + ("mindspore/train/summary/summary_record.py", "summary_record", + " value (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo,\n LossLandscape]): The value to store.\n\n", + " value (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo, LossLandscape]): The value to store.\n\n"), + ("mindspore/nn/cell.py","generate api", + " @jit_forbidden_register"," # generate api by del decorator."), + ("mindspore/profiler/dynamic_profiler.py","generate api", + " @no_exception_func()"," # generate api by del decorator.")] + +base_path = os.path.dirname(os.path.dirname(sphinx.__file__)) +for i in decorator_list: + try: with open(os.path.join(base_path, os.path.normpath(i[0])), "r+", encoding="utf8") as f: content = f.read() if i[3] not in content: @@ -256,18 +257,18 @@ try: f.seek(0) f.truncate() f.write(content) -except: - print('mindspore替换安装包内容失败') + except: + print(f'替换{i[0]}下内容失败') # Repair error content defined in mindspore. -try: - decorator_list = [("mindspore/common/dtype.py","del decorator", - "@enum.unique","# generate api by del decorator."), - ("mindspore/common/dtype.py","del class", - "class QuantDtype(enum.Enum):","class QuantDtype():")] +decorator_list = [("mindspore/common/dtype.py","del decorator", + "@enum.unique","# generate api by del decorator."), + ("mindspore/common/dtype.py","del class", + "class QuantDtype(enum.Enum):","class QuantDtype():") + ] - base_path = os.path.dirname(os.path.dirname(sphinx.__file__)) - for i in decorator_list: +for i in decorator_list: + try: with open(os.path.join(base_path, os.path.normpath(i[0])), "r+", encoding="utf8") as f: content = f.read() if i[2] in content: @@ -275,14 +276,13 @@ try: f.seek(0) f.truncate() f.write(content) -except: - print('mindspore删除安装包装饰器内容失败') + except: + print(f'替换{i[0]}下内容失败') # add @functools.wraps try: decorator_list = [("mindspore/common/_tensor_overload.py", ".*?_mint")] - base_path = os.path.dirname(os.path.dirname(sphinx.__file__)) for i in decorator_list: with open(os.path.join(base_path, os.path.normpath(i[0])), "r+", encoding="utf8") as f: content = f.read() @@ -299,6 +299,28 @@ except: sys.path.append(os.path.abspath('../../../resource/search')) import search_code +# 发版本时这里启用 +# re_url = r"(((gitee.com/mindspore/docs/mindspore-lite)|(github.com/mindspore-ai/(mindspore|docs))|" + \ +# r"(mindspore.cn/(docs|tutorials|lite))|(obs.dualstack.cn-north-4.myhuaweicloud)|" + \ +# r"(mindspore-website.obs.cn-north-4.myhuaweicloud))[\w\d/_.-]*?)/(master)" + +# re_url2 = r"(gitee.com/mindspore/mindspore[\w\d/_.-]*?)/(master)" + +# re_url4 = r"(((gitee.com/mindspore/mindformers)|(mindspore.cn/mindformers))[\w\d/_.-]*?)/(dev)" + +# for cur, _, files in os.walk(os.path.join(base_path, 'mindspore')): +# for i in files: +# if i.endswith('.py'): +# with open(os.path.join(cur, i), 'r+', encoding='utf-8') as f: +# content = f.read() +# new_content = re.sub(re_url, r'\1/r2.7.0rc1', content) +# new_content = re.sub(re_url2, r'\1/v2.7.0-rc1', new_content) +# new_content = re.sub(re_url4, r'\1/r1.6.0', new_content) +# if new_content != content: +# f.seek(0) +# f.truncate() +# f.write(new_content) + # Copy source files of en python api from mindspore repository. copy_path = 'docs/api/api_python_en' repo_path = os.getenv("MS_PATH") @@ -340,7 +362,7 @@ if os.path.exists(dataset_list_path): def ops_interface_name(): src_target_path = os.path.join(src_dir_en, 'mindspore.ops.primitive.rst') - with open(src_target_path,'r+',encoding='utf8') as f: + with open(src_target_path,'r',encoding='utf8') as f: content = f.read() primi_list = re.findall(" (mindspore\.ops\.\w*?)\n", content) @@ -349,7 +371,7 @@ def ops_interface_name(): def mint_interface_name(): mint_p = 'mindspore.mint.rst' src_target_path = os.path.join(src_dir_en, mint_p) - with open(src_target_path,'r+',encoding='utf8') as f: + with open(src_target_path,'r',encoding='utf8') as f: content = f.read() mint_list = re.findall(r" (mindspore\.mint\..*)\n", content+'\n') @@ -420,13 +442,23 @@ for cur, _, files in os.walk(des_sir): for i in files: if os.path.join(cur, i) in no_viewsource_list: continue - if i.endswith('.md'): + if i.endswith('.rst') or i.endswith('.md') or i.endswith('.ipynb'): with open(os.path.join(cur, i), 'r+', encoding='utf-8') as f: content = f.read() new_content = content - md_view = f'[![View Source On Gitee](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/{docs_branch}/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/{copy_repo}/blob/{branch}/' + copy_path + cur.split('api_python')[-1] + '/' + i + ')\n\n' - if 'resource/_static/logo_source' not in new_content: - new_content = re.sub('(# .*\n\n)', r'\1'+ md_view, new_content, 1) + + # 发版本时这里启用 + # new_content = re.sub(re_url, r'\1/r2.7.0rc1', new_content) + # new_content = re.sub(re_url4, r'\1/r1.6.0', new_content) + # if i.endswith('.rst'): + # new_content = re.sub(re_url2, r'\1/v2.7.0-rc1', new_content) + + # master使用 + if i.endswith('.md'): + md_view = f'[![View Source On Gitee](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/{docs_branch}/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/{copy_repo}/blob/{branch}/' + copy_path + cur.split('api_python')[-1] + '/' + i + ')\n\n' + if 'resource/_static/logo_source' not in new_content: + new_content = re.sub('(# .*\n\n)', r'\1'+ md_view, new_content, 1) + if new_content != content: f.seek(0) f.truncate() @@ -614,5 +646,8 @@ else: content = content[0] with open(des_release, "w", encoding="utf-8") as p: + # 发版本时这里启用 + # content = re.sub(re_url, r'\1/r2.7.0rc1', content) + # content = re.sub(re_url2, r'\1/v2.7.0-rc1', content) p.write("# Release Notes" + "\n\n" + release_source) p.write(content) diff --git a/docs/mindspore/source_zh_cn/conf.py b/docs/mindspore/source_zh_cn/conf.py index 85ad9bfa0b764ec91f5b21b7381247135267c772..b0bf72bde006038b3d54f88a0988d8501acec9af 100644 --- a/docs/mindspore/source_zh_cn/conf.py +++ b/docs/mindspore/source_zh_cn/conf.py @@ -101,6 +101,7 @@ with open(autodoc_source_path, "r", encoding="utf8") as f: exec(get_param_func_str, sphinx_autodoc.__dict__) exec(code_str, sphinx_autodoc.__dict__) +# 排除已写中文接口名 with open("../_ext/customdocumenter.txt", "r", encoding="utf8") as f: code_str = f.read() exec(code_str, sphinx_autodoc.__dict__) @@ -126,7 +127,7 @@ with open(sphinx_mathjax.__file__, "r", encoding="utf-8") as f: project = 'MindSpore' copyright = 'MindSpore' author = 'MindSpore' -# language = 'cn' + # The full version, including alpha/beta/rc tags release = 'master' @@ -163,8 +164,6 @@ source_suffix = { # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] -# locale_dirs = ['locale/'] - # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. @@ -352,7 +351,7 @@ for root, dirs, files in os.walk(api_file_dir, topdown=True): if '.rst' in file_ or '.txt' in file_: convert2utf8(os.path.join(root, file_)) -# Rename .rst file to .txt file for include directive. +# Rename .rst file to .txt file for include directive. master使用 from rename_include import rename_include rename_include('api_python') @@ -361,6 +360,15 @@ rename_include('migration_guide') # modify urls import json +# 发版本时这里启用 +# re_url = r"(((gitee.com/mindspore/docs/mindspore-lite)|(github.com/mindspore-ai/(mindspore|docs))|" + \ +# r"(mindspore.cn/(docs|tutorials|lite))|(obs.dualstack.cn-north-4.myhuaweicloud)|" + \ +# r"(mindspore-website.obs.cn-north-4.myhuaweicloud))[\w\d/_.-]*?)/(master)" + +# re_url2 = r"(gitee.com/mindspore/mindspore[\w\d/_.-]*?)/(master)" + +# re_url3 = r"(((gitee.com/mindspore/mindformers)|(mindspore.cn/mindformers))[\w\d/_.-]*?)/(dev)" + if os.path.exists('../../../tools/generate_html/version.json'): with open('../../../tools/generate_html/version.json', 'r+', encoding='utf-8') as f: version_inf = json.load(f) @@ -391,6 +399,13 @@ for cur, _, files in os.walk(des_sir): with open(os.path.join(cur, i), 'r+', encoding='utf-8') as f: content = f.read() new_content = content + # 发版本时这里启用 + # new_content = re.sub(re_url, r'\1/r2.7.0rc1', new_content) + # new_content = re.sub(re_url4, r'\1/r1.6.0', new_content) + # if i.endswith('.rst'): + # new_content = re.sub(re_url2, r'\1/v2.7.0-rc1', new_content) + + # master使用 if i.endswith('.md'): md_view = f'[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/{docs_branch}/resource/_static/logo_source.svg)](https://gitee.com/mindspore/{copy_repo}/blob/{branch}/' + copy_path + cur.split('api_python')[-1] + '/' + i + ')\n\n' if 'resource/_static/logo_source' not in new_content: @@ -399,8 +414,11 @@ for cur, _, files in os.walk(des_sir): f.seek(0) f.truncate() f.write(new_content) + except Exception: print(f'打开{i}文件失败') + + # master使用 if i.endswith('.rst'): try: with open(os.path.join(cur, i), 'r+', encoding='utf-8') as f: @@ -418,6 +436,12 @@ for cur, _, files in os.walk(des_sir): except Exception: print(f'打开{i}文件失败') +# # Rename .rst file to .txt file for include directive. (发版本时这里启用) +# from rename_include import rename_include + +# rename_include('api_python') +# rename_include('migration_guide') + # rename file name to solve Case sensitive. rename_list = [("./api_python/ops/", "func_", ""), @@ -433,7 +457,7 @@ try: except Exception as e: print(e) -del_redundant_api_file(des_sir, ['mindspore.ops.rst', 'mindspore.ops.primitive.rst'], f'ops', 'mindspore.ops.', ops_del+primi_del, 'ops.silent_check.') +del_redundant_api_file(des_sir, ['mindspore.ops.rst', 'mindspore.ops.primitive.rst'], 'ops', 'mindspore.ops.', ops_del+primi_del, 'ops.silent_check.') del_redundant_api_file(des_sir, ['mindspore.nn.rst'], 'nn', 'mindspore.nn.', nn_del, 'optim_') del_redundant_api_file(des_sir, ['mindspore.mint.rst'], 'mint', 'mindspore.mint.', mint_del) del_redundant_api_file(des_sir, ['mindspore.numpy.rst'], 'numpy', 'mindspore.numpy.', numpy_del) @@ -665,5 +689,7 @@ else: content = content[0] with open(des_release, "w", encoding="utf-8") as p: + # content = re.sub(re_url, r'\1/r2.7.0rc1', content) + # content = re.sub(re_url2, r'\1/v2.7.0-rc1', content) p.write("# Release Notes" + "\n\n" + release_source) p.write(content)